前言
在打靶場的程序中使用Nmap時發現點小問題,借此機會詳細分析下情況,于是有了這篇文章,
本文包含以下內容:
-
Nmap抓包分析
-
內網下繞過Windows防火墻掃描存活主機
這里主要是針對Nmap進行討論,實戰中當然哪個快用哪個,不過萬變不離其宗,哪怕稍微了解下其原理都受益無窮,
防火墻
這里的防火墻值得是Windows server自帶的防火墻,主要繞過其兩個防御規則:
1.禁止ICMP回顯
2.隱藏模式
具體見Stealth Mode in Windows Firewall with Advanced Security,大意為:不會使用ICMP不可達回應UDP查詢,不使用RST回應TCP查詢,默認開啟,
https://shamsher-khan-404.medium.com/understanding-nmap-scan-with-wireshark-5144d68059f7
-sn:禁用埠掃描
-P*用于選擇不同的PING方法,用于存活掃描
Nmap抓包分析
拓撲圖
關閉防火墻便于查看資料包
主機發現(Ping)
-PS(TCP SYN)
TCP SYN Ping:發送單個TCP SYN包到指定埠檢測主機是否存活,默認80埠,該掃描就是經典的半開放掃描,
請求局域網主機135埠(開啟)
nmap -sn -PS135 172.16.1.128 -vvv -n --disable-arp-ping
#-n 禁用dns決議
注意nmap掃局域網存活主機都會預先進行arp掃描,在這里禁用了埠掃描,意味著nmap只會進行存活掃描,當nmap進行arp掃描后發現主機存活就不會進行后續操作,wireshark也就抓不到包,所以使用
--disable-arp-ping禁用arp掃描,
【----幫助網安學習,以下所有學習資料免費領!加vx:yj009991,備注 “博客園” 獲取!】
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC漏洞分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)
請求局域網主機666埠(關閉)
nmap -sn -PS666 172.16.1.128 -vvv -n --disable-arp-ping
請求遠程主機135埠(開啟):
還是這里會發現,和掃局域網比起來多了很多包,為什么和掃局域網情況不一樣?
還是fofa隨便找個開啟135埠的IP:
這里會發現,和掃局域網比起來多了很多包,
請求遠程主機6666埠(關閉):
奇怪的是,明明遠程主機回傳了RST/ACK包,但nmap沒有接收到,
為什么會有這樣的差別?翻了翻nmap官方檔案,其中有這樣一句話:
The RST packet is sent by the kernel of the machine running Nmap in response to the unexpected SYN/ACK, not by Nmap itself
RST報文是運行Nmap的機器的內核為回應意外的SYN/ACK而發送的,而不是Nmap本身,
突然想到,我的kali是放在vmware,以nat形式接入網路,這樣偶爾會出現點小問題,
于是我在windows上裝了個nmap再進行測驗:
再看下抓包
發現這里沒發RST包
關掉防火墻再試,還一下發倆RST……
接下來將vmware網路模式換為橋接,發現正常了,說明是NAT網路的問題,
-PA(TCP ACK)
TCP ACK Ping:發送單個TCP ACK包到指定埠檢測主機是否存活,默認80埠
請求局域網主機135埠(開啟)
一般ACK包是雙方建立起連接發送的,但實際上不存在連接,無論埠是否開啟,遠程主機都會用RST包來回應,以此來判斷主機存活,當然很多防御策略都會丟棄無效包防止被檢測,
nmap -sn -PA135 172.16.1.128 -vvv -n --disable-arp-ping
請求局域網主機666埠(關閉)
nmap -sn -PA666 172.16.1.128 -vvv -n --disable-arp-ping
-PU(UDP)
UDP Ping:發送UDP包到指定埠檢測主機是否存活,默認40125埠,特定埠會發送特定的UDP包以便于獲取更好的回應,
按照最新官方檔案解釋,該包發送大概有以下幾種情況:
埠關閉->回傳ICMP埠不可達包->判斷主機存活,
回傳其他ICMP錯誤,如主機/網路不可達或TTL超標等->判斷停機,
埠開啟且該服務不回應—>nmap未接收到回傳包->判斷停機,
埠關閉且協議不匹配->回傳ICMP埠不可達包->判斷主機存活,
這就是為什么默認要用40125這么冷門的埠,避免有服務使用該埠,
nmap -sn -PA135 172.16.1.128 -vvv -n --disable-arp-ping
回傳ICMP埠不可達,仍舊判斷出主機存活,
局域網沒什么問題,掃外網的話同樣有前文說的Vmware Nat網路問題,注意一下就好,
-PY(SCTP INIT)
SCTP INIT Ping:發送包含最小INIT塊的SCTP包到指定埠檢測主機是否存活,默認80埠,SCTP可看做TCP協議的改版,
nmap -sn -PY135 172.16.1.128 -vvv -n --disable-arp-ping
回傳協議不可達,以此判斷出主機存活,
-PR(ARP)
ARP Ping:ARP掃描,Nmap掃內網最常用的方式,
nmap -sn -PR 172.16.1.128 -vvv -n
接收到arp回傳包,判斷主機存活,
-PE/PP/PM(ICMP)
ICMP Ping:三種ICMP標準請求,如果防火墻關掉ICMP回顯則收不到reply,
第一個就是常說的Ping,
第二個是時間戳請求
第三個是地址掩碼請求
ICMP標準還有個資訊請求,但目前未被廣泛支持,所以Nmap沒有做相關功能,
-PO(IP Protocol)
IP Protocol Ping:默認發送ICMP(協議1)、IGMP(協議2)和IP-in-IP(協議4),更改協議需要改nmap.h檔案中的DEFAULT_PROTO_PROBE_PORT_SPEC,目前意義不大,
nmap -sn -PO -vv 172.16.1.128 -n --disable-arp-ping
埠掃描(Scan)
其實埠掃描(Scan)很多引數和主機發現(Ping)的前期抓包情況是一樣的,Ping相當于點到為止,根據回顯發現主機存活即可,而Scan還需要進一步分析,判斷埠是否開啟、判斷什么服務等,
由于大部分Scan引數與Ping引數請求包一致,而部分Scan引數在本文中并未體現,所以暫且貼出三個引數抓包情況,
-sS(TCP SYN)
TCP SYN scan:經典的半開放掃描,
nmap -Pn -sS -p 135 -vvv 172.16.1.128 -n
可見發送的請求包和-PS是一樣的,至于Nmap如何判斷如何分析,這里就不關心了,
-sT(TCP connect)
TCP connect scan:TCP連接掃描,三次握手確認目標后直接發送RST結束當前連接,跳過四次揮手階段,
埠開啟
nmap -Pn -sT -p 135 172.16.1.128 -vvv -n --disable-arp-ping
# -Pn 不進行主機存活探測
埠關閉
可以發現,-sT和-PS兩個掃描的抓包情況十分接近,只有收到SYN/ACK回傳包后應答的不同,這也是-PS被稱為半開放掃描的原理,
-sU(UDP)
UDP scans:發送UDP包進行掃描
nmap -Pn -sU -p 135 172.16.1.128 -vvv -n --disable-arp-ping
這里顯示open|filtered,為什么呢?
因為UDP包請求到開放的埠,經常沒有回顯,而且這里使用-Pn跳過了主機存活探測,默認主機存活,又因為收不到回顯,所以nmap無法判斷該埠是開啟還是被防御規則過濾,
抓包情況和-PU基本一致:
繞防火墻測驗
拓撲圖
測驗
nmap -sn -PS135 172.16.1.128 -vvv -n --disable-arp-ping
未收到[SYN, ACK]回傳包,判斷主機離線,
nmap -sn -PA135 172.16.1.128 -vvv -n --disable-arp-ping
未收到[RST, ACK]回傳包,判斷主機離線,
nmap -sn -PU135 172.16.1.128 -vvv -n --disable-arp-ping
nmap -sn -PY135 172.16.1.128 -vvv -n --disable-arp-ping
nmap -sn -PR 172.16.1.128 -vvv -n
成功收到ARP回顯,判斷主機存活:
這樣一圈測驗下來,發現只有ARP掃描可以,原因也很簡單,ARP掃描不會走靶機防火墻,而是以廣播的形式進行掃描;而其他引數不是被禁ICMP回顯規則攔截就是被隱身模式過濾,
后面又嘗試了常用的nbt掃描、smb掃描、以及Nmap其他引數,仍然繞不過防火墻,
WINRM
難道就止步于此了嗎?突然想到,之前用Ladon插件掃的時候,沒見什么防火墻攔截,
于是拿Ladon測驗了下,選多協議探測存活主機,一掃,果真有:
WIMRM,很熟悉,這也能拿來掃內網?
簡單概述下:WIMRM是windows自帶的服務,開啟服務后防火墻默認放心5985(HTTP)/5986(HTTPS)埠,平常拿來橫向移動,
由于沒搜到Ladon原始碼怎么實作該掃描,谷歌找了找WINRM的文章:WinRM Penetration Testing
其中有一行代碼:
test-wsman -computername "172.16.1.128"
很快就有回顯:
隨便輸了個其他IP,報錯:
顯然,使用該服務也可以繞過Windows防火墻進行存活主機掃描,
結語
總結一下:
-
arp掃描
可以使用工具,但到了掃內網的情況,都是拿shell了,所以直接cmd命令:
arp/a即可, -
WINRM
test-wsman -computername "172.16.1.128"
至于如何繞防火墻進行埠掃描,留到以后再說吧,
更多靶場實驗練習、網安學習資料,請點擊這里>>
合天智匯:合天網路靶場、網安實戰虛擬環境
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514190.html
標籤:其他
