[滲透測試] 埠掃描
為區別通訊的程式,在所有IP資料報文中不僅有源地址和目的地址,而且也有源埠號與目的埠號。
特定埠被指定用於特定的服務,而地址和埠一起組成一個套接字地址,在網路上唯一標識該服務。
埠號在0~1023的埠為知名埠(又稱標準埠)
經常使用的命令樣式:nmap -sS -A -P0 xxx.xxx.xxx.xxx
埠掃描向目標地址的TCP/IP服務埠傳送探測資料包,並記錄目標主機的響應。
在埠掃描時,防火牆有四種類型的響應:
Open (開放的,目標機器上的應用程式正在該埠監聽連線/報文)
Filtered (被過濾的,意味著防火牆、過濾器或者其它網路障礙阻止了該埠被訪問,Nmap無法得知它是open還是closed)
Closed (關閉的,埠沒有應用程式在它上面監聽,但是他們隨時可能開放)
Unfiltered(未被過濾的,埠對Nmap的探測做出響應,但是Nmap無法確定他們是關閉還是開放的)
常見埠掃描技術
1 TCP connect掃描
這是最基本的TCP埠掃描,也是最直接的埠掃描方法,只需要在軟體程式設計中呼叫Socket API的connect()去連線目標主機的指定埠。如果埠處於偵聽狀態,那麼connect()就能成功。否則,這個埠是不能用的,即沒有提供服務。這個技術的缺點是會在目標主機的日誌記錄中留下痕跡,很容易被發覺,讓資料包被過濾掉。
nmap -sT 127.0.0.1
2 TCP SYN掃描
這種技術通常被認為是“半開放”掃描,經歷的過程是SYN->SYN/ACK->RST
掃描資訊不會被記入系統日誌,一般不會在目標計算機上留下記錄。是nmap的預設掃描方式。
nmap -sS 127.0.0.1
3 祕密掃描
這種技術是不被審計工具所檢測的掃描技術。能躲避IDS,防火牆,包過濾器和日誌審計,從而獲取目標埠開放或關閉的資訊。
優點是因為不包含TCP三次握手協議的任何部分,所以無法被記錄,比TCP SYN掃描更隱蔽。
缺點是掃描結果的不可靠性會增加,而且掃描主機也需要自己構造IP包。
3.1 TCP FIN掃描
掃描主機向目標主機發送FIN資料包來探聽埠,若FIN資料報到達的埠是開放的,資料包則被簡單丟掉,並不返回任何資訊。反之,則返回一個RST資料包。
nmap -sF 127.0.0.1
3.2 TCP NULL掃描
掃描主機向目標主機發送所有標誌位都為空的TCP資料包,如果埠是關閉的,則回覆RST資料包。否則不回覆。
nmap -sN 127.0.0.1
3.3 TCP Xmas Tree掃描
掃描主機向目標主機發送FIN,URG和PSH標誌位都置位的資料包,如果埠是關閉的,則返回一個RST資料包。否則不回覆。
nmap -sX 127.0.0.1
3.4 TCP ACK掃描
掃描主機向目標主機發送ACK資料報來探聽埠,若ACK資料報到達的埠是開放的,資料包則返回一個RST資料包。反之則不回覆。
nmap -sA 127.0.0.1
4其他
4.1 -A (激烈掃描模式選項)
目前,這個選項啟用了作業系統檢測(-O) 和版本掃描(-sV),以後會增加更多的功能。
4.2 -p <port ranges> (只掃描指定的埠)
預設情況掃描1到1024以及nmap-services檔案中列出的更高的埠在掃描, -p-從埠1掃描到65535
Nmap預設掃描主機1000個高危埠,若需要全面檢測埠,則需要加入“-p 1-65535”或者“-p-”
4.3 -sU (UDP掃描)
可以和-sS結合使用。速度慢
--scanflags (定製的TCP掃描)
URG:緊急標誌;ACK:確認標誌;PSH:推標誌;RST:復位標誌;SYN:同步標誌;FIN:結束標誌
4.4 -f (報文分段); --mtu (使用指定的MTU)
-f選項要求掃描時(包挺ping掃描)使用小的IP包分段。其思路是將TCP頭分段在幾個包中,使得包過濾器、 IDS以及其它工具的檢測更加困難。
使用--mtu選項可以自定義偏移的大小,使用時不需要-f,偏移量必須是8的倍數。
4.5 -Pn
若某個網站禁止用ping,Nmap的一些常用選項無法再起作用,這時可以利用“-Pn”引數,來穿越防火牆:nmap -Pn -A www.example.com
4.6
-P0:掃描之前不需要用ping命令,有些防火牆禁止用ping命令。可以使用此選項進行掃描。
-v:顯示掃描過程,推薦使用。
5 nmap指令碼引擎
nmap安裝目錄下存在Script資料夾,在Script資料夾中存在許多以“.nse”字尾結尾的文字檔案,即nmap自帶的指令碼引擎。
使用Nmap指令碼引擎時,只需要新增命令“--script=指令碼名稱”
5.1 掃描Web敏感目錄
nmap -p 80 --script=http-enum.nse www.xxser.com
5.2 掃描Sqllnjection
此指令碼需要到官網上下載,nmap -p 80 --script=sql-injection.nse www.xxser.com
5.3 使用所有的指令碼進行掃描
此命令很耗時,nmap --script all 127.0.0.1
5.4 使用萬用字元掃描
使用所有以“http-”開頭的指令碼掃描,nmap --script "http-*" 127.0.0.1
5.5 漏洞掃描
《Metasploit滲透測試指南》中的例子:nmap -sT -A --script=smb-check-vulns -P0 192.168.33.130
更新指令碼的資料庫:--script-updatedb
備註:
目標計算機中所安裝的防火牆可能有兩種:
(1)基於主機的防火牆(一個執行在單獨目標計算機上的防火牆,比如,你的計算機中現在執行的防火牆)
(2)基於網路的防火牆(一個用於保護整個網路,並且被部署在網路節點上的防火牆)
通過ping命令可以判斷目標主機是否線上,並且可以判斷目標主機和本機之間的網路鏈路是否連通,或者資料報從傳送到返回需要多少時間。ping命令構造一個ICMP的請求資料包,echo request發給遠端計算機。遠端計算機收到後,構造一個ICMP應答包echo reply傳送回主機。有時,目標主機做了限制,比如安裝了防火牆,因此ping不通。
Tracert命令,是windows作業系統中進行路由追蹤的工具,源主機的tracert命令通過該資訊中的IP資訊就獲得了第一個路由裝置的IP,然後在隨後的每次傳送過程將TTL一次遞增1,知道目標響應或TTL達到最大值,從而確定從源主機到目標主機中間的路由。