上帝之眼-Nmap【含超多常用命令】

★特別說明★

使用Nmap命令做測試時,不要掃描未經授權的IP或網站,避免給自己帶來一些不必要的麻煩。請使用自己搭建的虛擬機環境進行測試。

1、Nmap簡介

Nmap是一款開源免費的網絡發現(Network Discovery)和安全審計(Security Auditing)工具。Nmap是一個網絡連接端掃描軟件,用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端,並且推斷計算機運行哪個操作系統(也稱fingerprinting)。它是網絡管理員必用的軟件之一,可以用來評估網絡系統安全。

官網爲:www.nmap.org。

一般情況下,Nmap用於列舉網絡主機清單、管理服務升級調度、監控主機或服務運行狀況。Nmap可以檢測目標機是否在線、端口開放情況、偵測運行的服務類型及版本信息、偵測操作系統與設備類型等信息。

1.1、Nmap優點

  • 靈活:支持數十種不同的掃描方式,支持多種目標對象的掃描

  • 強大:Nmap可以用於掃描互聯網上大規模的計算機

  • 可移植:支持主流操作系統:Windows/Linux/Unix/MacOS等等;源碼開放,方便移植

  • 簡單:提供默認的操作能覆蓋大部分功能,基本端口掃描nmap targetip,全面的掃描nmap –A targetip

  • 自由:Nmap作爲開源軟件,在GPL License的範圍內可以自由的使用

  • 文檔豐富:Nmap官網提供了詳細的文檔描述。Nmap作者及其他安全專家編寫了多部Nmap參考書籍

  • 社區支持:Nmap背後有強大的社區團隊支持

2、基本功能

Nmap包含四項基本功能:

  • 主機發現 (Host Discovery)

  • 端口掃描 (Port Scanning)

  • 版本偵測 (Version Detection)

  • 操作系統偵測 (Operating System Detection)

而這四項功能之間,又存在大致的依賴關係(通常情況下的順序關係,但特殊應用另外考慮),首先需要進行主機發現,隨後確定端口狀態,然後確定端口上運行的具體應用程序和版本信息,然後可以進行操作系統的偵測。而在這四項功能的基礎上,nmap還提供防火牆和 IDS 的規避技巧,可以綜合運用到四個基本功能的各個階段。另外nmap還提供強大的NSE(Nmap Scripting Language)腳本引擎功能,腳本可以對基本功能進行補充和擴展。

3、掃描原理

3.1、TCP SYN掃描(-sS)

Nmap默認掃描方式,通常被稱爲半開放掃描。發送SYN包到目標端口,若收到SYN/ACK回覆,則端口被認爲開放狀態;若收到RST回覆,則端口被認爲關閉狀態;若沒有收到回覆,則認爲該端口被屏蔽。因爲僅發送SYN包對目標主機的特定端口,但不建立完整的TCP連接,所以相對比較隱蔽,而且效率比較高,適用範圍廣。

3.2. TCP connect掃描(-sT)

使用系統網絡API connect向目標主機的端口發起連接,如果無法連接,說明該端口關閉。該方式掃描速度比較慢,而且由於建立完整的TCP連接會在目標主機上留下記錄信息,不夠隱蔽。

3.3. TCP ACK 掃描(-sA)

向目標主機的端口發送ACK包,如果收到RST包,說明該端口沒有被防火牆屏蔽;沒有收到RST包,說明被屏蔽。該方式只能用於確定防火牆是否屏蔽某個端口,可以輔助TCP SYN的方式來判斷目標主機防火牆的狀況。

3.4. TCP FIN/Xmas/NULL掃描(sF/sX/-sN)

這三種掃描方式被稱爲祕密掃描,因爲相對比較隱蔽。FIN掃描向目標主機的端口發送的TCP FIN 包括Xmas tree包或NULL包,如果收到對方的RST回覆包,那麼說明該端口是關閉的;沒有收到RST包說明該端口可能是開放的或被屏蔽了。其中Xmas tree包是指flags中FIN URG PUSH被置爲1的TCP包;NULL包是指所有的flags都爲0的TCP包。

3.5. UDP掃描(-sU)

UDP掃描用於判斷UDP端口的情況,向目標主機的UDP端口發送探測包,如果收到回覆ICMP port unreachable就說明該端口是關閉的;如果沒有收到回覆,那說明該UDP端口可能是開放的或者屏蔽的。因此,通過反向排除法的方式來判斷哪些UDP端口是可能處於開放狀態的。

3.6. 其他方式(-sY/-sZ)

除了以上幾種常用的方式外,Nmap還支持多種其他的探測方式。例如使用SCTP INIT/Cookie-ECHO方式是來探測SCTP的端口開放情況;使用IP protocol方式來探測目標主機支持的協議類型(tcp/udp/icmp/sctp等等);使用idle scan方式藉助殭屍主機來掃描目標主機,以達到隱蔽自己的目的;或使用FTP bounce scan,藉助FTP允許的代理服務掃描其他的主機,同樣達到隱蔽自己的目的。

4、常用命令操作

4.1、工具使用說明

在kali系統,我提供的虛擬機環境默認是自帶nmap工具,如果自己安裝的系統可能是需要自己安裝。在kali系統使用時記得切換管理員權限。

# 切換管理員權限,需要輸入密碼
sudo su

# 輸入正確密碼後,切換成功
┌──(root💀kali)-[/home/kali]
└─# 

4.2、常見參數解讀

如果輸入命令後,一直沒有響應,可以按Enter鍵看請求百分比。查詢過程中如果想終止,可按Ctrl + C。

4.2.1、目標規格
# 掃描一個IP
nmap 192.168.1.1
# 掃描IP段
nmap 192.168.1.1 192.168.2.1       
# 掃描一個範圍
nmap 192.168.1.1-254  
# 掃描一個域名
nmap nmap.org      
# 使用CIDR表示法掃描,/24表示子網掩碼,掃描整個網段
nmap 192.168.1.0/24     
# 掃描文件中的目標
nmap -iL target.txt      
# 掃描100個隨機主機
nmap -iR 100      
# 排除列出的主機
nmap --exclude 192.168.1.1 
4.2.2、掃描手法
# TCP SYN半開放掃描,端口掃描 (有root權限默認)
nmap 192.168.1.1 -sS      
# TCP連接掃描,建立完整的TCP連接掃描端口(沒有root權限默認)
nmap 192.168.1.1 -sT      
# UDP端口掃描
nmap 192.168.1.1 -sU    
# TCP ACK端口掃描
nmap 192.168.1.1 -sA    
# 滑動窗口掃描
nmap 192.168.1.1 -sW   
# TCP Maimon掃描
nmap 192.168.1.1 -sM
# 不掃描,僅列出目標
nmap 192.168.1.1-3 -sL     
# 只進行主機發現,禁用端口掃描
nmap 192.168.1.1/24 -sn    
# 跳過主機發現,直接掃描端口
nmap 192.168.1.1-5 -Pn     
# 端口X上的TCP SYN發現,默認80
nmap 192.168.1.1-5 -PS22-25,80 
# 端口X上的TCP ACK發現,默認80
nmap 192.168.1.1-5 -PA22-25,80  
# 端口X上的UDP發現,默認40125
nmap 192.168.1.1-5 -PU53      
# 本地網絡上的ARP發現
nmap 192.168.1.1/24 -PR       
# 不做DNS解析
nmap 192.168.1.1 -n  
4.2.3、端口規格
# 掃描特定端口
nmap 192.168.1.1 -p 21     
# 掃描端口範圍
nmap 192.168.1.1 -p 21-100   
# 掃描多個TCP和UDP端口
nmap 192.168.1.1 -p U:53,T:21-25,80  
# 掃描所有端口
nmap 192.168.1.1 -p-     
# 基於服務名稱的端口掃描
nmap 192.168.1.1 -p http,https  
# 快速掃描(100個端口)
nmap 192.168.1.1 -F    
# 掃描前2000個端口
nmap 192.168.1.1 --top-ports 2000 
# 從端口1開始掃描
nmap 192.168.1.1 -p-65535 
4.2.4、時間和性能
# 非常非常慢,用於IDS逃逸
nmap 192.168.1.1 -T0 
# 相當慢,用於IDS逃逸
nmap 192.168.1.1 -T1   
# 降低速度以up消耗更小的帶寬,比默認慢十倍
nmap 192.168.1.1 -T2 
# 正常的,默認,根據目標的反應自動調整時間模式
nmap 192.168.1.1 -T3    
# 在一個很好的網絡環境,請求可能會淹沒目標
nmap 192.168.1.1 -T4 
# 很可能會淹沒目標端口或是漏掉一些開放端口
nmap 192.168.1.1 -T5 
4.2.5、NSE腳本
# 使用默認的NSE腳本進行掃描
nmap 192.168.1.1 -sC    
# 使用單個腳本掃描,banner示例
nmap 192.168.1.1 --script=banner     
# 使用兩個腳本掃描
nmap 192.168.1.1 --script=http,banner 
# 使用通配符掃描,http示例
nmap 192.168.1.1 --script=http*     
# 掃描默認值,刪除侵入性腳本
nmap 192.168.1.1 --script "not intrusive"   
#  掃描所有smb漏洞
nmap 192.168.1.1 --script=smb-vuln*  
# 掃描常見漏洞
nmap 192.168.1.1 --script=vuln 
4.2.6、輸出
# 增加詳細程度,-vv效果更好
nmap 192.168.1.1 -v  
# 標準輸出寫入到指定文件中
nmap 192.168.1.1 -oN test.txt    
# 將輸入寫成xml的形式
nmap 192.168.1.1 -oX test.xml   
# 將輸出寫成特殊格式
nmap 192.168.1.1 -oG grep.txt  
# 將輸出所有格式,有三種 .xml/.gnmap/.nmap
nmap 192.168.1.1 -oA results    
# 僅顯示開放的端口
nmap 192.168.1.1 --open 
# 顯示所有發送和接收的數據包
nmap 192.168.1.1 -T4 --packet-trace  
# 恢復掃描,配合-oG等命令使用
nmap --resume test.txt   

5、掃描結果端口狀態

  • open:端口是開放的

  • closed:端口是關閉的

  • filtered:端口被防火牆IDS/IPS屏蔽,無法確定其狀態

  • unfiltered:端口沒有被屏蔽,但是否開放需要進一步確定

  • open|filtered:端口是開放的或被屏蔽

  • closed|filtered :端口是關閉的或被屏蔽

6、資料獲取

如果需要kali和win7系統虛擬機,進行測試(如果在滲透測試實戰已有下載過,不需要再下載了),請關注我的公衆號:大象只爲你,後臺回覆:虛擬機。文件有些大下載耗時會比較久。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章