Intro

前篇有提到Nmap主要功能有二,並在前篇簡單介紹幾種常見的在線主機搜索的方法,那麼本篇就繼續介紹如何使用Nmap進行端口搜索以及在端口搜索的同時我們還能做些什麼事情:

  • Live Host Discovery(在線主機搜索)
  • Port Scan (端口搜索)
    • Typical Scan: -sS/-sT/-sU
    • TCP Flag Related: -sN/-sF/-sX/-sM
    • Firewall Stateless/Stateful: -sA
    • Idel/Zombie Scan: -sI

Typical Port Scan

-sS (TCP SYN scan)

有root權限下默認的掃描方式,又稱Stealth-Scan/Half-Scan,因為不同於正常的TCP三次握手,-sS 在發送SYN封包後等待對方回應,在接受到回應/或timeout後回傳RST而不是ACK,表示不想建立連接。也由於這個特性,-sS被稱為隱蔽掃描(Stealth)就是由於沒有主動建立連接對方不容易察覺,再加上由於發送的都是正常的封包和flag,除非是非常嚴格的防火牆否則大多-sS都會有效 Stealth Scan

-sT (TCP connect scan)

沒有root權限下默認的掃描方式,又稱Full-Scan,也就是通過建立TCP communication的方式對每一個要掃描的端口去嘗試連接。但官方也推薦說若有root權限下最好使用-sS而非-sT(性能/隱蔽性) Connect Scan

-sU (UDP scan)

發送UDP封包到目標主機端口,但由於UDP協議的特性無狀態,需要一點特殊技巧來判斷端口是否開放:

  • 如果接收到ICMP port unreachable error(type 3, code 3): closed
  • 如果接收到ICMP port unreachable error(type 3, code 0, 1, 2, 9, 10, or 13): filtered
  • 如果接收到其他正常封包: open
  • 如果沒有接收到任何回覆: open | filtered

這種UDP掃描方式由於判斷依據主要來自ICMP unreachable封包,因此常要執行很久(因為多數主機都會對ICMP unreachable封包設置頻率限制,例如Linux 2.4.20就設置1/sec。在這種情況下若要掃描全部65535端口則需要18hr)

Other Port Scan

-sN,-sF,-sX,-sM

-sN, -sF, -sX, -sM都是對TCP Flag UAPRSF中設置不同的Flag組合,下面就介紹一下它們分別都是設置什麼TCP Flag作封包:

  • -sN(Null scan): 什麼TCP Flag都沒有設置
  • -sF(FIN scan): FIN
  • -sX(Xmas scan): FIN, PSH, URG
  • -sM(Maimon scan): FIN, ACK

-sA (TCP ACK scan)

是一種較特殊的掃描方式,目的並不是查看端口是否開放而是用來 偵測防火牆是stateless/stateful (stateless防火牆不會紀錄連線狀態),通過發送ACK封包來判別。因此當目標主機中間的防火牆是stateless的話,並不會過濾掉此封包並最終由目標主機回傳RST封包給偵測者(因為目標主機沒有該連線紀錄所以回傳RST);若是防火牆是stateful的話會過濾並drop掉此封包,因此若使用-sA進行掃描會得到下面兩種情況:

  • unfiltered: 有收到RST封包,表示防火牆是stateless
  • filtered: 沒有回覆表示防火牆是stateful TCP ACK scan

-sI (Idle scan/Zombie scan)

是一種特殊的掃描方式,藉由找到的代理(殭屍)替代自己來執行掃描,在目標主機中隱匿自己的IP。通過對IPID來判斷目標主機端口是否開放,但就現在來說這個方法的難點在於找到合適的殭屍,因為殭屍必須滿足以下三個條件:

  • IPID為全域遞增(incremental),即每發送一個封包,IPID增加1
  • 殭屍主機對攻擊主機可ping
  • 殭屍主機必須處於閒置狀態,否則IPID判斷不了

可以通過執行以下Nmap腳本來判斷該主機能否當殭屍主機:

nmap -Pn -p80 --script=ipidseq <ZOMBIE_IP>

之後使用類似指令執行Idle Scan:

nmap -sI 192.168.1.100 192.168.1.200    # .100是zombie; .200是要探測的目標主機

小結

至此,Nmap基本用法及其介紹到這邊就結束了,後面若是再介紹可能就是相關的NSE的應用場景了。

謝謝各位看到這邊,如有任何疑問或文章有任何錯漏,歡迎來信與我討論,謝謝!

學習資料

  1. Nmap Port Scanning Techniques