Nmap:Network Mapper,網絡掃描和嗅探的工具包
基本功能有3個:
1.掃描主機端口,嗅探所提供的網絡服務
2.探測一組主機是否在線
3.推斷主機所用的操作系統,到達主機經過的路由,系統已開放端口的軟件版本
首先需要溫習一下tcp包頭的相關基礎知識
TCP Header:
Source port:源端口 占16位 2個字節,計算機一共65536個端口。0端口保留,1-1024為系統服務端口,如果掃描時不指定端口范圍,nmap默認掃描1-1024端口。
Destination port :目的端口 16位 2個字節
Sequence number:序列號 4個字節,用來標識從TCP源端向TCP目的端
Acknowledgment number:確認號
Data offset:數據偏移
Reserved:保留位
TCP標志位:
1.ACK Acknowledgment 確認標志
2.RST Reset 復位標志
3.URG Urgent 緊急標志
4.SYN Synchronize 建立連接標志
5.PSH Push 推標志
6.FIN Finish 結束標志
Window Size:TCP窗口,用於流量控制,滑動窗口控制機制。每次只能接受一定量的數據
Checksum:校驗和
三次握手,一般先發送SYN請求,再發RST重設就斷開
ICMP協議屬於IP協議的一部分,主要診斷網絡的問題
ping 用的是 -0類型 Echo Reply
-3 目標不可達,或者到了那回不來,路由過不去
下面是一個ping的包,可以看到code參數和 Echo replay
下面是常見端口對應的服務,Telnet主要用於路由器交換機遠程調試,在設備上開啟Telnet服務,可以遠程登錄進行調試。Telnet是明文協議,可以用抓包抓到密碼,很多現在用ssh,可以用xshell登錄。但是Telnet登錄需要有這個命令,現在win10基本沒有了telnet命令。如果想在win10使用telnet需要自己設置。
SMTP郵件服務器。
DNS發送請求的時候用udp協議
SNMP:網絡管理協議
HTTPS:會在鏈路中對數據加密 443或者8433
RDP:遠程桌面協議
1.如果用wireshark抓包分析,會發現幾乎所有的情況都是在使用UDP,使用TCP的情況非常罕見,神秘兮兮。其實當解析器發出一個request后,返回的response中的tcp刪節標志比特位被置1時,說明反饋報文因為超長而有刪節。這是因為UDP的報文最大長度為512字節。解析器發現后,將使用TCP重發request,TCP允許報文長度超過512字節。既然TCP能將data stream分成多個segment,它就能用更多的segment來傳送任意長度的數據。
2. 另外一種情況是,當一個域的輔助域名服務器啟動時,將從該域的主域名服務器primary DNS server執行區域傳送。除此之外,輔域名服務器也會定時(一般時3小時)向PDS進行查詢以便了解SOA的數據是否有變動。如有變動,也會執行一次區域傳送。區域傳送將使用TCP而不是UDP,因為傳送的數據量比一個request或response多得多。
發現主機是否存活,有些時候防火牆存在我們掃描不到主機是否存活,-p0或者-pn參數可以跳過發現主機直接掃描端口。局域網掃描時會經常抓到ARP的包,默認先發送ARP請求,如果有ARP的包說明這個主機就已經存在了。
Nmap端口掃描常用命令:
1.進行ping掃描,打印出對掃描做出響應的主機,不做進一步測試(如端口掃描或者操作系統探測):
nmap -sP 192.168.1.0/24
2.僅列出指定網絡上的每台主機,不發送任何報文到目標主機:
nmap -sL 192.168.1.0/24
3.探測目標主機開放的端口,可以指定一個以逗號分隔的端口列表(如-PS22,23,25,80):
nmap -PS 192.168.1.234
4.使用UDP ping探測主機:
nmap -PU 192.168.1.0/24
5.使用頻率最高的掃描選項:SYN掃描,又稱為半開放掃描,它不打開一個完全的TCP連接,執行得很快:
nmap -sS 192.168.1.0/24
6.當SYN掃描不能用時,TCP Connect()掃描就是默認的TCP掃描:
nmap -sT 192.168.1.0/24
7.UDP掃描用-sU選項,UDP掃描發送空的(沒有數據)UDP報頭到每個目標端口:
nmap -sU 192.168.1.0/24
8.確定目標機支持哪些IP協議 (TCP,ICMP,IGMP等):
nmap -sO 192.168.1.19
9.探測目標主機的操作系統:
nmap -O 192.168.1.19
nmap -A 192.168.1.19
另外,nmap官方文檔中的例子:
1.nmap -v scanme.
這個選項掃描主機scanme中 所有的保留TCP端口。選項-v啟用細節模式。
2.nmap -sS -O scanme./24
進行秘密SYN掃描,對象為主機Scanme所在的“C類”網段 的255台主機。同時嘗試確定每台工作主機的操作系統類型。因為進行SYN掃描 和操作系統檢測,這個掃描需要有根權限。
3.nmap -sV -p 22,53,110,143,4564 188.116.0-255.1-127
進行主機列舉和TCP掃描,對象為B類188.116網段中255個8位子網。這 個測試用於確定系統是否運行了sshd、DNS、imapd或4564端口。如果這些端口 打開,將使用版本檢測來確定哪種應用在運行。
其他選項:
-p (只掃描指定的端口)
單個端口和用連字符表示的端口范 圍(如 1-1023)都可以。當既掃描TCP端口又掃描UDP端口時,可以通過在端口號前加上T: 或者U:指定協議。 協議限定符一直有效直到指定另一個。 例如,參數 -p U:53,111,137,T:21-25,80,139,8080 將掃描UDP 端口53,111,和137,同時掃描列出的TCP端口。
-F (快速 (有限的端口) 掃描)
其他
比如探測操作系統,利用ping命令,去觀察TTL的值 Linux和windows對應的TTL值是不同的,可依此判斷操作系統類型。
防火牆/IDS躲避和哄騙
Nmap保存和輸出
漏洞掃描:根據版本信息可以上網查詢已知的其存在的漏洞並進行滲透測試。