nmap(Network Mapper)是一款用於網絡掃描和安全審計軟件開源軟件,支持Windows、Mac、Linux等多個平台。同時,很多網絡管理員也用它來進行網絡設備管理、服務升級和主機監控。NMAP使用原始的IP包來探測網絡上存活的主機、服務、操作系統等各種信息。NMAP被設計用來進行大型網絡的掃描,但也可以用來對單個目標進行掃描。Nmap還曾在20部電影大屏幕上出現過。
一、下載安裝。
Windows下有exe安裝包以及圖形界面,我感覺使用起來最方便。Linux和Mac下也都有RPM和DMG安裝包,安裝相對簡單,使用上可能命令行的場景比較多,具體使用哪個版本就看各人喜好了。
二、主機發現
2.1 常規掃描
簡單的在命令后加ip地址,可以進行常規掃描,查看主機是否存活以及開放的端口。
nmap 11.133.171.200
2.2 Ping 掃描
類似於Ping命令,僅執行Ping掃描,可以快速發現主機是否存活。
nmap -sn 11.133.171.1-254
如果想看具體的過程,可以加上 --packet-trace
參數,這樣在返回結果之前,可以看到每一步的交互過程。
2.3 TCP SYN Ping 掃描
通常情況下,Nmap默認Ping掃描是使用TCP ACK和ICMP Echo請求對目標進行是否存活的響應,當目標主機的防火牆阻止這些請求時,可以使用TCP Syn Ping掃描。
TCP協議是TCP/IP協議族中的面向連接的、可靠的傳輸層協議,允許發送和接收字節流形式的數據。為了使服務器和客戶端以不同的速度產生和消費數據,TCP提供了發送和接收兩個緩沖區。TCP提供全雙工服務,數據同時能雙向流動。通信的每一方都有發送和接收兩個緩沖區,可以雙向發送數據。
nmap -PS -v 11.133.171.1-254
2.4 TCP ACK Ping 掃描
nmap -PA -v 11.133.171.1-254
使用 -PA
選項可以進行 TCP ACK Ping 掃描,它與 TCP Syn Ping 是非常類似的,唯一的區別是設置TCP的標志位是ACK而不是SYN,使用這種方式掃描可以探測組織SYN包或ICMP Echo請求的主機。
2.5 UDP Ping 掃描
nmap -PU -v 11.133.171.1-254
-PU
選項是發送一個空的UDP報文到指定端口,如果目標主機響應則返回一個ICMP端口不可達錯誤,如果目標主機不是存活狀態則會返回各種ICMP報錯信息。
2.6 ICMP Ping Types 掃描
ICMP (Internet Control Message Protocol)是Internet控制報文協議。它是TCP/IP協議族的一個子協議用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要作用。
ICMP Echo 方式掃描
nmap -PE -v 11.133.171.1-254
使用ICMP時間戳Ping掃描
nmap -PP -v 163.com
使用ICMP地址掩碼Ping掃描
nmap -PM -v 11.133.171.1-254
2.7 ARP Ping 掃描
nmap -PR 11.133.171.1-254
這個選項通常用在掃描局域網時,在本地局域網中防火牆不會禁止ARP請求,這就使它的掃描更加高效。
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議,其功能:主機將ARP請求廣播到網絡上的所有主機,並接收返回消息,確定目標IP地址的物理地址,同時將IP地址和硬件地址存入本機ARP緩存中,下次請求時直接查詢ARP緩存。
三、端口掃描
端口是指接口電路中的一些寄存器,這些寄存器分別用來存放數據信息、控制信息和狀態信息,相應的端口分別稱為數據端口、控制端口和狀態端口。
端口狀態。NMAP提供了6個端口狀態,分別是Open、Closed、Filtered、Unfiltered、Open|Filtered、Closed|Filtered。
時序選項。NMAP提供了T0-T5幾個時序選項,分別是從慢到快的掃描方式。
3.1 常用掃描方式
nmap -p 445 11.133.171.1-254
-p
用來指定端口或端口范圍。-F
選項可以快速的掃描端口,但並不是所有的端口都掃描。NMAP默認是使用隨機的順序對端口進行掃描,使用 -r
選項則可以使用排序順序進行掃描。
四、服務識別與探測
Nmap通過Nmap-service可以探測主機的端口,以及該端口對應的服務,甚至可以進一步探索版本號、主機名、設備類型等信息。
4.1 版本探測
使用 nmap -sV 11.133.171.141
可以啟用版本探測,這並不僅僅是端口探測,而是通過相應的端口對應相應的服務,根據服務指紋識別出相應的版本。
使用 nmap -sV -A 11.133.171.141
可以看到更加詳細的信息和更加直觀的方式。
4.2 操作系統探測
在網絡掃描過程中,對操作系統版本的探測非常重要。最常見的操作系統探測方法是利用TTL也就是數據包的存活時間,不同的操作系統的TTL也是不同的,可以根據這些TTL進行操作系統探測。
使用 nmap -O 11.133.171.141
可以啟用操作系統探測。Nmap在掃描過程中,經常會發送一系列報文,--version-intensity
選項可以為每個報文賦予1-9之間的值,表示掃描時的強度,強度越高准確度越高速度相應就慢,強度越低准確度越低速度就快。
五、定時掃描
這里的定時掃描區別於Linux系統的Crontab定時任務,是一系列Nmap提供的可配置的定時選項,通過這些選項我們可加快或者減慢掃描速度,也可以延時、定時掃描,其提供的這些選項更多的是用來逃逸防火牆、IDS(入侵檢測系統)。
並行掃描組。
放棄緩慢的目標主機。可以通過--host-timeout
參數指定對主機的掃描時間。
nmap --host-timeout 100ms 11.133.171.122
六、防火牆與IDS
網絡防火牆就是一個位於計算機和它所連接的網絡之間的軟件(或硬件)。防火牆可以關閉不使用的端口,而且還能禁止特定端口的流出通信。
IDS是英文“Intrusion Detection Systems”的縮寫,意思是入侵檢測系統。主要是依照一定的安全策略,通過軟件、硬件,對網絡、系統的運行狀況進行監視,盡可能發現各種攻擊企圖、攻擊行為或攻擊結果,以保證網絡系統資源的機密性、完整性和可用性。
6.1 報文分段
選項 | 解釋 |
---|---|
-f | 報文分段 |
--mtu number | 指定偏移大小 |
-D ip,ip,ip | RND:number |
-sI | 源地址欺騙 |
--source-port port-number | 源端口欺騙 |
--data-length number | 指定發包長度 |
--randomize-hosts | 目標主機隨機排序 |
--spoof-mac 0 | MAC地址欺騙 |
七、使用NSE腳本進行信息收集
NMAP使用--script
參數可以調用NSE腳本。
NMAP的NSE腳本是用Lua程序創作,提供強大的信息搜集功能。
搜集的信息主要包括:IP信息(地理位置、開放端口)、WHOIS信息、EMAIL信息、IP反查、DNS信息搜集(A記錄、CNAME記錄等)、系統信息、后台打印機服務漏洞、系統漏洞掃描、WEB漏洞掃描等。