NMAP學習筆記

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漏洞掃描等。