端口扫描
一、常用端口
有一些服務(wù)使用固定的端口號,比如如下的:
21 FTP文件傳輸協(xié)議的命令端口
22 SSH較安全的遠(yuǎn)程連接協(xié)議
23 Telnet 早期的連接服務(wù)器軟件
25 SMTP郵件傳輸協(xié)議
53 DNS域名解析服務(wù)器
80 www服務(wù)器
110 pop3郵件接受協(xié)議
443 https有加密安全的www服務(wù)器
3306 mysql
二、端口掃描工具
常見的端口掃描工具有nmap,nmap,Metasploit。nmap更慢更全面,zmap則更快更粗略,Metasploit提供多種掃描。
為什么zmap掃描更快一些,關(guān)鍵性的問題出現(xiàn)在對回復(fù)的SYN-ACK進(jìn)行seq number的校驗。傳統(tǒng)上就需要記錄狀態(tài)。而ZMap是將對方receiver ip地址進(jìn)行hash,將其處理保存到了sender port和seq number兩個字段中,當(dāng)SYN-ACK回來的時候,就可以根據(jù)sender ip、receiver port、ack number這些字段進(jìn)行校驗。因此避免了狀態(tài)存儲,接近了網(wǎng)絡(luò)帶寬極限。
nmap使用
默認(rèn)使用SYN方式掃描
掃描單個主機(jī)或IP地址
|
1 |
//IP地址 |
掃描多個IP或子網(wǎng)
|
1 |
//掃描多個IP |
掃描IP地址范圍:
|
1 |
$nmap192.168.1.1-20 |
掃描IP地址范圍,使用通配符:
|
1 |
$nmap192.168.1.* |
掃描整個子網(wǎng):
|
1 |
$nmap192.168.1.0/24 |
在文件中讀取主機(jī)/IP
使用-iL允許nmap從文件中讀取主機(jī)/IP,在掃描很多主機(jī)時很有用。創(chuàng)建一個文件文件,如下:
|
1 |
$vimhost.list |
|
1 |
blog.topspeedsnail.com |
掃描文件中的主機(jī):
|
1 |
$nmap-iL host.list |
三、端口掃描種類
3.1 ICMP掃描
ICMP報文格式如下;
ICMP報文分為兩種,差錯報文和詢問報文。很具報文的作用不同,選項數(shù)據(jù)也不同。
可用于ICMP掃描的有如下:
ICMP時間戳請求報文,可以向其他機(jī)器請求時間
ICMP地址掩碼請求報文,用于無盤機(jī)請求掩碼
ICMP端口不可達(dá)報文,如果收到一份UDP數(shù)據(jù)報而目的端口與正在使用的端口不符合,則UDP返回一個端口不可達(dá)報文
ICMP回顯請求報文,ping使用的就是這個,也是最常用的
異常IP包,比如偽造IP包的頭部長度和IP選項,則會返回ICMP parameter problem error,不同系統(tǒng)和路由器的返回不同,可用于檢測OS或網(wǎng)絡(luò)
超長包,但設(shè)置禁止分片,則會收到差錯報文
對于目標(biāo)主機(jī)在防火墻內(nèi)部,則可以構(gòu)造可能的IP地址列表,逐個發(fā)送數(shù)據(jù)包。對不在其服務(wù)范圍內(nèi)的則對方路由器會返回ICMP Host Unreachable或ICMP Time Exceeded,沒有收到則被認(rèn)為IP地址在網(wǎng)絡(luò)中
3.2 TCP掃描
TCP掃描速度慢,且容易留下審計數(shù)據(jù),TCP掃描主要有以下幾種實現(xiàn),
直接建立TCP連接
SYN掃描,如果發(fā)送SYN包的時候,返回RST包,則表示端口不開
ACK掃描,不管端口是否打開,都會返回RST,所以不能測試端口是否打開,但是可以用來測試防火墻的策略,時有狀態(tài)還是無狀態(tài),那些端口時被過濾的
FIN掃描,如果端口關(guān)閉,則收到RST,如果端口打開,則無回復(fù),如果收到ICMP差錯報文,則端口狀態(tài)未知
NULL掃描,發(fā)送沒有任何位的TCP包,如果沒有回復(fù),則端口打開,如果有RST包則表示端口關(guān)閉
x-mas掃描發(fā)送一個URG、FIN、PUSH位全部打開的包,同樣時沒有意義的數(shù)據(jù)包,結(jié)果同NULL
3.3 UDP掃描
一般是構(gòu)造空的UDP包,如果返回ICMP端口不可達(dá),則表示端口時關(guān)閉的,如果沒有反應(yīng),則表示端口可能時開放的
3.4 空閑掃描
在IP頭中,有一個16位的標(biāo)識,表示IP的ID,標(biāo)識(identification)的用途是讓目標(biāo)主機(jī)確定一個新到達(dá)的分段是哪一個數(shù)據(jù)流的。同一個數(shù)據(jù)流所有包都是一個相同的標(biāo)識。他是可以預(yù)測的,增量是固定的(是每次偵聽到一個包就增加1嗎?)。
首先找一個空閑機(jī)器,不發(fā)出或接受任何流量。先和它通信,獲得IP的ID增長值,然后假冒空閑機(jī)器,想目的機(jī)器發(fā)出SYN包,則有以下兩種情況:
端口打開,則目的機(jī)器回復(fù)SYN/ACK,然后空閑機(jī)器回復(fù)RST包
端口關(guān)閉,目的主機(jī)就不回復(fù)SYN/ACK,空閑機(jī)器也不回復(fù)RST包
最后檢測空閑機(jī)器的IP的ID值,如果增長1,則表示后一種情況,增長2表示第一種情況。
3.5 隱秘掃描
不容易留下掃描信息,包括了FIN掃描、XMAS掃描、NULL掃描、UDP掃描等。
四、端口掃描的實現(xiàn)
原生套接字可以實現(xiàn)。
總結(jié)
- 上一篇: 集腋成裘(聚沙成塔,集腋成裘)
- 下一篇: 笔记本也可以分享热点如何分享热点给电脑用