TCP掃描
- TCP協定允許不需完成聯繫,TCP掃描就可以判斷哪些TCP port上有應用程式在偵聽
- 三段式交握由SYN封包、SYN/ACK封包、ACK封包所組成
- 掃描器將TCP SYN封包傳送到目標主機port上並且等待回應
- SYN/ACK封包被回傳,代表port被認為開啟
- RST封包被回傳,port被認為是關閉
- 一段時間後沒有封包被回傳,port被認為被過濾掉,或者沒有主機在那個IP上
- SYN/ACK封包被回傳,代表port被認為開啟
UDP掃描
- UDP應用程式傾向於丟棄他們無法解析的封包,因此,雖然應用程式正在特定的port上偵聽,也可能看不到掃描器封包被回應
- 如果UDP封包被傳送到一個沒有應用程式聯繫於其上port的,IP stack會回傳一個ICMP Port Unreachable封包
- 掃描器會假設任何回傳的ICMP錯誤(ex:Port Unreachable)的port都是關閉的,而不回傳答案的port可能是開啟,或者是被防火牆過濾掉的
- Unicornscan(也是一種Scan)透過大多數常見的UDP協定發出有效的應用程式封包,改善無法釐清開啟或被過濾掉的port,提供更準確的的結果
主機探測
- 預設上,Nmap將ICMP Echo Request(也稱為ping)封包以及TCP SYN封包傳送到port 80,判斷特定IP位址上是否有電腦正在偵聽
- 如果被掃描的IP位址是在與掃描器相同的子網路上,就改用ARP封包代替
$ sudo nmap -n -sP 10.150.9.1-20 #-sP選項提供主機掃瞄 #-n 請Nmap不要針對他所掃描的IP位址進行名稱查詢,加速掃描速度,並增加隱蔽性 #-20 掃瞄子網路前20個IP位址
處理被封鎖的Ping
- -PSportlist:指名要將TCP SYN封包送到哪些port
- -PAportlist:指名要將TCP ACK封包送到哪些port,當有簡單防火牆位於你和被掃描主機之間時,可以提供更好的結果
- -PUportlist:指名要將空的UDP封包送到哪些port,類似TCP SYN,但用來探查UDP應用程式
- -PE:指示Nmap傳送ICMP Echo Request (ping)封包;假如沒有-P選項被指名,這些封包在預設上會被傳送
- -PP:指示Nmap傳送ICMP Timestamp封包,在防火牆封鎖ping的情況下,這些可被用來做為ping封包的替代方案
- -PM:指示Nmap傳銃ICMP Netmask Request封包,以相同於-PP的方式運作
$ sudo nmap -sP -PS21,22,23,25,80,139,445,3389 10.150.10.250-254 #會增加掃描時間 $ sudo nmap -sP -PS21,22,23,25,80,139,445,3389 -PU53,67,68,69,111,161,445,517 \ -PE -PP -PM 10.150.9.1-254
選擇合適的port
- Windows:TCP/135,TCP/139,TCP/445,TCP/1025-1030,TCP/3389,UDP/137,UDP/445,UDP/1025-1030
- Unix:TCP/21,TCP/22,TCP/23,TCP/25,TCP/80,TCP/111,UDP/53,UDP/67-69,UDP/111,UDP/161,UDP/,514
- switch,router,防火牆:
- 提供網路管理機制:TCP/22(SSH),TCP/23(Telnet),TCP/80(HTTP),TCP/443(HTTPS),UDP/161(SNMP)
- 作為DHCP和DNS伺服器:UDP/53(DN),UDP/67-68(DHCP)
- 提供網路管理機制:TCP/22(SSH),TCP/23(Telnet),TCP/80(HTTP),TCP/443(HTTPS),UDP/161(SNMP)
自訂port
$ sudo nmap -p 21-25,80, taeget $ sudo nmap -pT:21-25,80,U:5000-6000 taeget #掃描21-25,80的TCP port和從5000-6000的UDP port #如果在範圍的左邊是空白的,則Nmap假設為1,右邊是空白的,則假設為65535 #-p-100 表示-p1-100
指定要掃描的主機
CIDR(Classless Inter-Domain Routing)表示法
- 讓你指定IP位址或網域名稱,隨後接正斜線(forward-slash,/)以及子網路遮罩(subnet mask)的位元數
- 192.0.0.1/24:掃描192.0.0.1所在的C級網路(256個位址)
- 192.0.0.1/16:掃描192.0.0.1所在的B級網路(65535個位址)
- 192.0.0.1/8:掃描192.0.0.1所在的A級網路(1600萬個位址)
- Nmap接受 /1,約有20億個位址
IP位址範圍
- 192.0.0.1-254:掃描192.0.0.1所在的C級網路的有效IP,把192.0.0.0和192.0.0.255排除
- 較複雜的表示方法:10.1,3,5,7,9.50-100,150-200.1-5,250-254
- 對於使用BGP(使用port 179的常見路由器協定)的路由器來說,要迅速掃描整個10.0.0.0/8網路,可能會使用:
$ sudo nmap -p 179 10.0-254.0-254.1,254
不同的掃描類型
UDP掃描類型
- 空封包(empty packet)掃描:傳送不含任何資料的UDP封包給port,並且等待看看是否有結果被回傳,Nmap可區分port是被開啟或是被防火牆過濾
$ sudo nmap -p -sU target
- 協定資料(protocol data)掃描:更複雜的UDP掃描方式,牽涉到UDP封包傳送有效的應用程式協定資料到port,看看是否能得到回應
- 只有在port確實以非錯誤(nonerror)的回應回覆協定資料封包,port才會被認定為開啟
- 涉及對偵聽中的應用程式發出信號,很可能被記錄下來,或甚至引起未預期的行為,像是把敏感的應用程式弄當掉等
- 混合UDP和應用程式鑑別的Nmap掃描會導致速度極慢的掃描
- 只有在port確實以非錯誤(nonerror)的回應回覆協定資料封包,port才會被認定為開啟
$ sudo nmap -sU -sV target #-sV為應用程式鑑別(application fingerprinting功能)
資料出處:O'REILLY 防駭超級工具
沒有留言:
張貼留言