滲透測(cè)試之端口掃描

端口掃描:端口對(duì)應(yīng)網(wǎng)絡(luò)服務(wù)及應(yīng)用端程序

服務(wù)端程序的漏洞通過(guò)端口攻入

發(fā)現(xiàn)開(kāi)放的端口

更具體的攻擊面

UDP端口掃描:

如果收到ICMP端口不可達(dá),表示端口關(guān)閉

如果沒(méi)有收到回包,則證明端口是開(kāi)放的

和三層掃描IP剛好相反

Scapy端口開(kāi)發(fā)掃描

命令:sr1(IP(dst="192.168.45.129")/UDP(dport=53),timeout=1,verbose=1)

nmap -sU 192.168.45.129

TCP掃描:基于連接的協(xié)議

三次握手:基于正常的三次握手發(fā)現(xiàn)目標(biāo)是否在線

隱蔽掃描:發(fā)送不完整的數(shù)據(jù)包,不建立完整的連接,如ACK包,SYN包,不會(huì)在應(yīng)用層訪問(wèn),

僵尸掃描:不和目標(biāo)系統(tǒng)產(chǎn)生交互,極為隱蔽

全連接掃描:建立完整的三次握手

所有的TCP掃描方式都是基于三次握手的變化來(lái)判斷目標(biāo)系統(tǒng)端口狀態(tài)

隱蔽掃描:發(fā)送SYN數(shù)據(jù)包,如果收到對(duì)方發(fā)來(lái)的ACK數(shù)據(jù)包,證明其在線,不與其建立完整的三次握手連接,在應(yīng)用層日志內(nèi)不記錄掃描行為,十分隱蔽,網(wǎng)絡(luò)層審計(jì)會(huì)被發(fā)現(xiàn)跡象

僵尸掃描:是一種極其隱蔽的掃描方式,實(shí)施條件苛刻,對(duì)于掃描發(fā)起方和被掃描方之間,必須是需要實(shí)現(xiàn)地址偽造,必須是僵尸機(jī)(指的是閑置系統(tǒng),并且系統(tǒng)使用遞增的IPID)早期的win xp,win 2000都是遞增的IPID,如今的LINUX,WINDOWS都是隨機(jī)產(chǎn)生的IPID


1,掃描者向僵尸機(jī)發(fā)送SYN+ACY,僵尸機(jī)判斷未進(jìn)行三次握手,所以返回RST包,在RST數(shù)據(jù)包內(nèi)有一個(gè)IPID,值記為X,那么掃描者就會(huì)知道被掃描者的IPID

2,掃描者向目標(biāo)服務(wù)器發(fā)送SYN數(shù)據(jù)包,并且偽裝源地址為僵尸機(jī),如果目標(biāo)服務(wù)器端口開(kāi)放,那么就會(huì)向僵尸機(jī)發(fā)送SYN+ACK數(shù)據(jù)包,那么僵尸機(jī)也會(huì)發(fā)送RST數(shù)據(jù)包,那么其IPID就是X+1(因?yàn)榻┦瑱C(jī)足夠空閑,這個(gè)就為其收到的第二個(gè)數(shù)據(jù)包)

3,掃描者再向僵尸機(jī)發(fā)送SYN+ACK,那么僵尸機(jī)再次發(fā)送RST數(shù)據(jù)包,IPID為X+2,如果掃描者收到僵尸機(jī)的IPID為X+2,那么就可以判斷目標(biāo)服務(wù)器端口開(kāi)放

使用scapy發(fā)送數(shù)據(jù)包:首先開(kāi)啟三臺(tái)虛擬機(jī),

kali虛擬機(jī):192.168.45.128

Linux虛擬機(jī):192.168.45.129

windows虛擬機(jī):192.168.45.132

發(fā)送SYN數(shù)據(jù)包:


通過(guò)抓包可以查看kali給linux發(fā)送syn數(shù)據(jù)包


linux虛擬機(jī)返回Kali虛擬機(jī)SYN+ACK數(shù)據(jù)包


kali系統(tǒng)并不知道使用者發(fā)送了SYN包,而其莫名其妙收到了SYN+ACK數(shù)據(jù)包,便會(huì)發(fā)RST包斷開(kāi)連接


也可以使用下列該命令查看收到的數(shù)據(jù)包的信息,收到對(duì)方相應(yīng)的SYN+ACK數(shù)據(jù)包,scapy默認(rèn)從本機(jī)的80端口往目標(biāo)系統(tǒng)的20號(hào)端口發(fā)送,當(dāng)然也可以修改

如果向目標(biāo)系統(tǒng)發(fā)送一個(gè) 隨機(jī)端口:

通過(guò)抓包的獲得:1,kali向linux發(fā)送SYN數(shù)據(jù)包,目標(biāo)端口23456,

2,Linux系統(tǒng)由自己的23456端口向kali系統(tǒng)的20號(hào)端口返回RST+ACK數(shù)據(jù)包,表示系統(tǒng)端口未開(kāi)放會(huì)話結(jié)束

使用python腳本去進(jìn)行scapy掃描

nmap做隱蔽端口掃描:

nmap -sS? 192.168.45.129 -p 80,21,110,443 #掃描固定的端口

nmap -sS 192.168.45.129 -p 1-65535 --open? #掃描該IP地址下1-65535端口掃描,并只顯示開(kāi)放的端口

nmap -sS 192.168.45.129 -p --open? #參數(shù)--open表示只顯示開(kāi)放的端口

nmap -sS -iL iplist.txt -p 80

由抓包可知,nmap默認(rèn)使用-sS掃描,發(fā)送SYN數(shù)據(jù)包,即nmap=nmap? -sS

hping3做隱蔽端口掃描:

hping3 192.168.45.129 --scan 80 -S? #參數(shù)--scan后面接單個(gè)端口或者多個(gè)端口.-S表示進(jìn)行SYN掃描

hping3 192.168.45.129 --scan 80,21,25,443 -S

hping3 192.168.45.129 --scan 1-65535 -S

由抓包可得:

hping3 -c 100? -S? --spoof 192.168.45.200 -p ++1 192.168.45.129

參數(shù)-c表示發(fā)送數(shù)據(jù)包的數(shù)量

參數(shù)-S表示發(fā)送SYN數(shù)據(jù)包

--spoof:偽造源地址,后面接偽造的地址,

參數(shù)-p表示掃描的端口,++1表示每次端口號(hào)加1,那么就是發(fā)送SYN從端口1到端口100

最后面跟的是目標(biāo)IP

通過(guò)抓包可以得知地址已偽造,但對(duì)于linux系統(tǒng)(192.168.45.129)來(lái)說(shuō),它收到了192.168.45.200的SYN數(shù)據(jù)包,那么就會(huì)給192.168.45.200回復(fù)SYN+ACK數(shù)據(jù)包,但該地址卻是kali偽造的地址,那么要查看目標(biāo)系統(tǒng)哪些端口開(kāi)放,必須登陸地址為kali偽造的地址即(192.168.45.200)進(jìn)行抓包

hping3和nmap掃描端口的區(qū)別:1,hping3結(jié)果清晰明了

? 2,nmap首先對(duì)IP進(jìn)行DNS反向解析,如果沒(méi)成功,那么便會(huì)對(duì)其端口發(fā)送數(shù)據(jù)包,默認(rèn)發(fā)送SYN數(shù)據(jù)包

hping3直接向目標(biāo)系統(tǒng)的端口發(fā)送SYN數(shù)據(jù)包,并不進(jìn)行DNS反向解析

全連接端口掃描:如果單獨(dú)發(fā)送SYN數(shù)據(jù)包被被過(guò)濾,那么就使用全連接端口掃描,與目標(biāo)建立三次握手連接,結(jié)果是最準(zhǔn)確的,但容易被入侵檢測(cè)系統(tǒng)發(fā)現(xiàn)

response=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="S"))

reply=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="A",ack=(response[TCP].seq+1)))

抓包情況:首先kali向Linux發(fā)送SYN,Linux回復(fù)SYN+ACK給kali,但kali的系統(tǒng)內(nèi)核不清楚kali曾給linux發(fā)送給SYN數(shù)據(jù)包,那么kali內(nèi)核莫名其妙收到SYN+ACK包,那么便會(huì)返回RST請(qǐng)求斷開(kāi)數(shù)據(jù)包給Linux,三次握手中斷,如今kali再給Linux發(fā)ACK確認(rèn)數(shù)據(jù)包,Linux莫名其妙收到了ACK數(shù)據(jù)包,當(dāng)然也會(huì)返回RST請(qǐng)求斷開(kāi)數(shù)據(jù)包,具體抓包如下:

那么只要kali內(nèi)核在收到SYN+ACK數(shù)據(jù)包之后,不發(fā)RST數(shù)據(jù)包,那么就可以建立完整的TCP三次握手,判斷目標(biāo)主機(jī)端口是否開(kāi)放

因?yàn)閕ptables存在于Linux內(nèi)核中,通過(guò)iptables禁用內(nèi)核發(fā)送RST數(shù)據(jù)包,那么就可以實(shí)現(xiàn)

使用nmap進(jìn)行全連接端口掃描:(如果不指定端口,那么nmap默認(rèn)會(huì)掃描1000個(gè)常用的端口,并不是1-1000號(hào)端口)

使用dmitry進(jìn)行全連接端口掃描:

dmitry:功能簡(jiǎn)單,但功能簡(jiǎn)便

默認(rèn)掃描150個(gè)最常用的端口

dmitry -p 192.168.45.129? #參數(shù)-p表示執(zhí)行TCP端口掃描

dmitry -p 192.168.45.129 -o output? #參數(shù)-o表示把結(jié)果保存到一個(gè)文本文檔中去

使用nc進(jìn)行全連接端口掃描:

nc -nv -w 1 -z 192.168.45.129 1-100:? ? ? 1-100表示掃描1-100號(hào)端口

參數(shù)-n表示不對(duì)Ip地址進(jìn)行域名解析,只把其當(dāng)IP來(lái)處理

參數(shù)-v表示顯示詳細(xì)信息

參數(shù)-w表示超時(shí)時(shí)間

-z表示打開(kāi)用于掃描的模式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容