您好,登錄后才能下訂單哦!
這篇文章主要介紹nmap軟件常見用法有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
二、常見用法
1、使用nslookup 解析出域名的IP地址
2、使用 nmap -sL 查詢該IP網段中包含的ip地址(不檢測存活狀態,僅列表)
3、使用nmap -sn 查詢網段中關注主機或者整個網段的IP存活狀態
nmap -sn
nmap針對局域網和廣域網(會根據源目的是否在同一網段進行判斷)有兩種不同的掃描方式
當目標主機與源主機不在同一網段時:
Nmap會發送四種不同類型的數據包來探測目標主機是否在線。
1) ICMP echo request
2) a TCP SYN packet to port 443
3) a TCP ACK packet to port 80
4) an ICMP timestamp request
舉例:以掃描某個公網IP為例
nmap -sn IP
當目標主機與源主機在同一網段時
nmap -sn 192.168.1.103
Nmap 將通過發送arp請求,來檢查ip是否在線
4、掃描感興趣主機的端口
需要注意,nmap在端口掃描前,首先會自動對ip的存活狀態掃描,如果發現目標ip不存活,將不再進行端口掃描。在進行ip存活掃描時(同-sn時的掃描,不過是nmap自動的),會發送2次掃描,以判斷ip的存活。
下面是對未存活ip的掃描抓包,使用的nmap -sS -p 80 [ip] 來掃描80端口,但實際nmap先進行了ip存活的掃描
nmap -sS -p 80 [ip] #掃描TCP 80端口
這是返回的結果,針對這種未存活的ip,nmap建議 使用 -Pn ,即不進行主機存活判斷,直接掃描端口。
下圖是使用-Pn 選項來掃描80端口
nmap -Pn -sS -p 80 113.11.*.*
從nmap的掃描結果看,該端口被過濾,即不確定是否存活,但該主機是存活的。
但從抓包來看,該主機沒有任何回包,說明該端口被過濾或未開啟,同時,也無該ip的其他回包信息,所以,判斷nmap的主機存活結論是錯誤的(個人認為)。從抓包來看,nmap當未受到數據包時,默認都發送2次請求包。當未收到回復包時,說明發送過去的數據包被防火墻等設備過濾掉了,如果沒有被過濾,應該回復rest包,nmap顯示的端口則是關閉。
nmap端口掃描結果的說明:
Nmap通過探測將端口劃分為6個狀態: open: 端口是開放的。 closed: 端口是關閉的。 filtered: 端口被防火墻IDS/IPS屏蔽,無法確定其狀態。 unfiltered: 端口沒有被屏蔽,但是否開放需要進一步確定。 open|filtered: 端口是開放的或被屏蔽。 closed|filtered : 端口是關閉的或被屏蔽。
nmap常見的端口掃描方式有以下幾種:
-P 指定端口號,如果不指定端口,默認是掃描1000個常用的tcp或udp端口(根據掃描項) -F 快速模式,當不指定端口時,僅掃描TOP 100的端口 -sS TCP端口掃描,使用SYN 方式掃描,不建立TCP連接 -sT TCP端口掃描,tcp connect 通過3次握手,建立tcp連接 -sU UDP端口掃描 其他端口掃描方式: -sA/sW/sM:指定使用 ACK/Window/Maimon scans的方式來對目標主機進行掃描。 -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密掃描方式來協助探測對方的TCP端口狀態。 --scanflags <flags>: 定制TCP包的flags。 -sI <zombiehost[:probeport]>: 指定使用idle scan方式來掃描目標主機(前提需要找到合適的zombie host) -sY/sZ: 使用SCTP INIT/COOKIE-ECHO來掃描SCTP協議端口的開放的情況。 -sO: 使用IP protocol 掃描確定目標機支持的協議類型。 -b <FTP relay host>: 使用FTP bounce scan掃描方式
端口掃描原理
這是Nmap默認的掃描方式,通常被稱作半開放掃描(Half-open scanning)。該方式發送SYN到目標端口,如果收到SYN/ACK回復,那么判斷端口是開放的;如果收到RST包,說明該端口是關閉的。如果沒有收到回復,那么判斷該端口被屏蔽(Filtered)。因為該方式僅發送SYN包對目標主機的特定端口,但不建立的完整的TCP連接,所以相對比較隱蔽,而且效率比較高,適用范圍廣。
TCP SYN探測到端口關閉:
TCP SYN探測到端口開放:
TCP connect scanning
TCP connect方式使用系統網絡API connect向目標主機的端口發起連接,如果無法連接,說明該端口關閉。該方式掃描速度比較慢,而且由于建立完整的TCP連接會在目標機上留下記錄信息,不夠隱蔽。所以,TCP connect是TCP SYN無法使用才考慮選擇的方式。
TCP connect探測到端口關閉:
TCP connect探測到端口開放:
向目標主機的端口發送ACK包,如果收到RST包,說明該端口沒有被防火墻屏蔽;沒有收到RST包,說明被屏蔽。該方式只能用于確定防火墻是否屏蔽某個端口,可以輔助TCP SYN的方式來判斷目標主機防火墻的狀況。
TCP ACK探測到端口被屏蔽:
TCP ACK探測到端口未被屏蔽:
這三種掃描方式被稱為秘密掃描(Stealthy Scan),因為相對比較隱蔽。FIN掃描向目標主機的端口發送的TCP FIN包或Xmas tree包/Null包,如果收到對方RST回復包,那么說明該端口是關閉的;沒有收到RST包說明端口可能是開放的或被屏蔽的(open|filtered)。
其中Xmas tree包是指flags中FIN URG PUSH被置為1的TCP包;NULL包是指所有flags都為0的TCP包。
TCP FIN探測到主機端口是關閉的:
TCP FIN探測到主機端口是開放或屏蔽的:
UDP掃描方式用于判斷UDP端口的情況。向目標主機的UDP端口發送探測包,如果收到回復“ICMP port unreachable”就說明該端口是關閉的;如果沒有收到回復,那說明UDP端口可能是開放的或屏蔽的。因此,通過反向排除法的方式來斷定哪些UDP端口是可能出于開放狀態。
UDP端口關閉:
UDP端口開放或被屏蔽:
隱藏自身IP的掃描
使用idle scan方式借助僵尸主機(zombie host,也被稱為idle host,該主機處于空閑狀態并且它的IPID方式為遞增。詳細實現原理參見:http://nmap.org/book/idlescan.html)來掃描目標在主機,達到隱蔽自己的目的;
或者使用FTP bounce scan,借助FTP允許的代理服務掃描其他的主機,同樣達到隱藏自己的身份的目的。
5、版本偵測
版本偵測,用于確定目標主機開放端口上運行的具體的應用程序及版本信息。
Nmap提供的版本偵測具有如下的優點:
高速。并行地進行套接字操作,實現一組高效的探測匹配定義語法。
盡可能地確定應用名字與版本名字。
支持TCP/UDP協議,支持文本格式與二進制格式。
支持多種平臺服務的偵測,包括Linux/Windows/Mac OS/FreeBSD等系統。
如果檢測到SSL,會調用openSSL繼續偵測運行在SSL上的具體協議(如HTTPS/POP3S/IMAPS)。
如果檢測到SunRPC服務,那么會調用brute-force RPC grinder進一步確定RPC程序編號、名字、版本號。
支持完整的IPv6功能,包括TCP/UDP,基于TCP的SSL。
通用平臺枚舉功能(CPE)
廣泛的應用程序數據庫(nmap-services-probes)。目前Nmap可以識別幾千種服務的簽名,包含了180多種不同的協議。
簡要的介紹版本的偵測原理。
版本偵測主要分為以下幾個步驟:
首先檢查open與open|filtered狀態的端口是否在排除端口列表內。如果在排除列表,將該端口剔除。
如果是TCP端口,嘗試建立TCP連接。嘗試等待片刻(通常6秒或更多,具體時間可以查詢文件nmap-services-probes中Probe TCP NULL q||對應的totalwaitms)。通常在等待時間內,會接收到目標機發送的“WelcomeBanner”信息。nmap將接收到的Banner與nmap-services-probes中NULL probe中的簽名進行對比。查找對應應用程序的名字與版本信息。
如果通過“Welcome Banner”無法確定應用程序版本,那么nmap再嘗試發送其他的探測包(即從nmap-services-probes中挑選合適的probe),將probe得到回復包與數據庫中的簽名進行對比。如果反復探測都無法得出具體應用,那么打印出應用返回報文,讓用戶自行進一步判定。
如果是UDP端口,那么直接使用nmap-services-probes中探測包進行探測匹配。根據結果對比分析出UDP應用服務類型。
如果探測到應用程序是SSL,那么調用openSSL進一步的偵查運行在SSL之上的具體的應用類型。
如果探測到應用程序是SunRPC,那么調用brute-force RPC grinder進一步探測具體服務。
5.2 版本偵測的用法
版本偵測方面的命令行選項比較簡單
-sV: 指定讓Nmap進行版本偵測 --version-intensity <level>: 指定版本偵測強度(0-9),默認為7。數值越高,探測出的服務越準確,但是運行時間會比較長。 --version-light: 指定使用輕量偵測方式 (intensity 2) --version-all: 嘗試使用所有的probes進行偵測 (intensity 9) --version-trace: 顯示出詳細的版本偵測過程信息。
下面以掃描80端口的版本為例,顯示snmp的掃描結果和抓包結果
snmp -sV -p 80 113.11.*.* #指定掃描80端口
從抓包可以看出,在未指定 -Pn 參數時,默認限制性的ip存活性檢測,只有當確認主機存活后才進行版本檢測。
使用snmp -sV 113.11.*.* 時,默認檢查存活狀態,根據存活狀態再掃描TCP常見的1000端口,根據端口狀態再掃描版本(在http版本確認中,首先建立了tcp連接,然后關閉tcp連接,再建立連接3次握手,并發出get請求后進行4次揮手)
6、OS偵測
命令nmap -O 113.11.*.*
nmap首先檢測主機存活狀態,然后掃描常見的1000端口,最后判斷OS系統,下圖是運行后的結果。根據結果,里面的端口都能夠掃描出是開啟或是關閉,說明未架設防火墻等安全防護設備。
7、Nmap 高級用法
防火墻與IDS規避為用于繞開防火墻與IDS(***檢測系統)的檢測與屏蔽,以便能夠更加詳細地發現目標主機的狀況。
Nmap提供了多種規避技巧,通常可以從兩個方面考慮規避方式:數據包的變換(Packet Change)與時序變換(Timing Change)。
7.1 分片(Fragmentation)
將可疑的探測包進行分片處理(例如將TCP包拆分成多個IP包發送過去),某些簡單的防火墻為了加快處理速度可能不會進行重組檢查,以此避開其檢查。
-f; --mtu <val>: 指定使用分片、指定數據包的MTU.
nmap -sn -f --mtu 16 113.11.*.* #注意 mtu后的數值必須是8的倍數,如下圖提示
下圖中,首先是正常命令時的抓包,然后是采用分片后的抓包:
nmap -sn 113.11.*.* nmap -sn -f --mtu 16 113.11.*.*
從抓包中,可以看出data的數據包為16byte,與分片設定的字節是一致的,同時抓包中也有提示分片包"Reassembled in #878"
7.2 IP誘騙(IP decoys)
在進行掃描時,將真實IP地址和其他主機的IP地址(其他主機需要在線,否則目標主機將回復大量數據包到不存在的主機,從而實質構成了拒絕服務***)混合使用,以此讓目標主機的防火墻或IDS追蹤檢查大量的不同IP地址的數據包,降低其追查到自身的概率。注意,某些高級的IDS系統通過統計分析仍然可以追蹤出掃描者真實IP地址。
-D <decoy1,decoy2[,ME],...>: 用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。 nmap -sn -D 1.1.1.1 113.11.*.* #這里如果不添加[ME]自己的地址也會使用自己的地址,同時也會發送誘騙的地址,即2個地址都將作為源地址
下圖是抓包截圖,可以看出源地址有兩個,一個是誘騙的地址,另一個是自己的真實地址,利用偽裝地址可以發動反射形dos***
這是源地址為內網地址,當源地址為公網地址時,不填寫源地址是否可行,需要驗證。
7.3 指定源端口
某些目標主機只允許來自特定端口的數據包通過防火墻。例如FTP服務器配置為:允許源端口為21號的TCP包通過防火墻與FTP服務端通信,但是源端口為其他端口的數據包被屏蔽。所以,在此類情況下,可以指定Nmap將發送的數據包的源端口都設置特定的端口。
-g/--source-port <portnum>: 使用指定源端口 nmap -sn -g 11111 113.11.*.* #指定源端口為11111,向外發送
下圖是抓包,從中可以看出tcp的源端口都是51111,這個可以通過指定源端口來符合防火墻的ACL訪問列表,從而躲避防火墻的檢測。
7.4 掃描延時
某些防火墻針對發送過于頻繁的數據包會進行嚴格的偵查,而且某些系統限制錯誤報文產生的頻率(例如,Solaris 系統通常會限制每秒鐘只能產生一個ICMP消息回復給UDP掃描),所以,定制該情況下發包的頻率和發包延時可以降低目標主機的審查強度、節省網絡帶寬。
<待補實例>
7.5 IP偽裝(IP Spoofing)
顧名思義,IP偽裝即將自己發送的數據包中的IP地址偽裝成其他主機的地址,從而目標機認為是其他主機在與之通信。需要注意,如果希望接收到目標主機的回復包,那么偽裝的IP需要位于統一局域網內。另外,如果既希望隱蔽自己的IP地址,又希望收到目標主機的回復包,那么可以嘗試使用idle scan或匿名代理(如TOR)等網絡技術。
-S <IP_Address>: 偽裝成其他IP地址 nmap -sn -S 1.1.1.1 113.11.*.* #當源地址偽裝成其他ip時,目標機認為是其他主機在與之通信。
<實例不成功>,下面是未成功的抓圖,如有知曉的同學,請指點
提示如果是偽裝的源ip地址,必須要使用-Pn 和 -e 選項
當使用了-Pn 和 -e 選項后,依然提示報錯,不能夠分配地址。
nmap -sn -Pn -e wlan0 -S 1.1.1.1 113.11.*.* nmap -sn -Pn -e eth0 -S 1.1.1.1 113.11.*.*
7.6 其他技術
Nmap還提供多種規避技巧,比如指定使用某個網絡接口來發送數據包、指定發送包的最小長度、指定發包的MTU、指定TTL、指定偽裝的MAC地址、使用錯誤檢查和(badchecksum)。
更多信息http://nmap.org/book/man-bypass-firewalls-ids.html
-f; --mtu <val>: 指定使用分片、指定數據包的MTU. -D <decoy1,decoy2[,ME],...>: 用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。 -S <IP_Address>: 偽裝成其他IP地址 -e <iface>: 使用特定的網絡接口 -g/--source-port <portnum>: 使用指定源端口 --data-length <num>: 填充隨機數據讓數據包長度達到Num。 --ip-options <options>: 使用指定的IP選項來發送數據包。 --ttl <val>: 設置time-to-live時間。 --spoof-mac <mac address/prefix/vendor name>: 偽裝MAC地址 --badsum: 使用錯誤的checksum來發送數據包(正常情況下,該類數據包被拋棄,如果收到回復,說明回復來自防火墻或IDS/IPS)。
<待補充>
NSE腳本引擎(Nmap Scripting Engine)是Nmap最強大最靈活的功能之一,允許用戶自己編寫腳本來執行自動化的操作或者擴展Nmap的功能。
NSE使用Lua腳本語言,并且默認提供了豐富的腳本庫,目前已經包含14個類別的350多個腳本。
NSE的設計初衷主要考慮以下幾個方面:
網絡發現(Network Discovery)
更加復雜的版本偵測(例如skype軟件)
漏洞偵測(Vulnerability Detection)
后門偵測(Backdoor Detection)
漏洞利用(Vulnerability Exploitation)
以上是“nmap軟件常見用法有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。