Python如何實(shí)現(xiàn)端口掃描-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為洋縣企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,洋縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

小編給大家分享一下Python如何實(shí)現(xiàn)端口掃描,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

一、常見端口掃描的原理

0、秘密掃描

秘密掃描是一種不被審計(jì)工具所檢測(cè)的掃描技術(shù)。

它通常用于在通過普通的防火墻或路由器的篩選(filtering)時(shí)隱藏自己。

秘密掃描能躲避IDS、防火墻、包過濾器和日志審計(jì),從而獲取目標(biāo)端口的開放或關(guān)閉的信息。由于沒有包含TCP 3次握手協(xié)議的任何部分,所以無法被記錄下來,比半連接掃描更為隱蔽。

但是這種掃描的缺點(diǎn)是掃描結(jié)果的不可靠性會(huì)增加,而且掃描主機(jī)也需要自己構(gòu)造IP包?,F(xiàn)有的秘密掃描有TCP FIN掃描、TCP ACK掃描、NULL掃描、XMAS掃描和SYN/ACK掃描等。

1、Connect()掃描

此掃描試圖與每一個(gè)TCP端口進(jìn)行“三次握手”通信。如果能夠成功建立接連,則證明端口開發(fā),否則為關(guān)閉。準(zhǔn)確度很高,但是最容易被防火墻和IDS檢測(cè)到,并且在目標(biāo)主機(jī)的日志中會(huì)記錄大量的連接請(qǐng)求以及錯(cuò)誤信息。

TCP connect端口掃描服務(wù)端與客戶端建立連接成功(目標(biāo)端口開放)的過程:

① Client端發(fā)送SYN;

② Server端返回SYN/ACK,表明端口開放;

③ Client端返回ACK,表明連接已建立;

④ Client端主動(dòng)斷開連接。

建立連接成功(目標(biāo)端口開放)

TCP connect端口掃描服務(wù)端與客戶端未建立連接成功(目標(biāo)端口關(guān)閉)過程:

① Client端發(fā)送SYN;

② Server端返回RST/ACK,表明端口未開放。

優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,對(duì)操作者的權(quán)限沒有嚴(yán)格要求(有些類型的端口掃描需要操作者具有root權(quán)限),系統(tǒng)中的任何用戶都有權(quán)力使用這個(gè)調(diào)用,而且如果想要得到從目標(biāo)端口返回banners信息,也只能采用這一方法。

另一優(yōu)點(diǎn)是掃描速度快。如果對(duì)每個(gè)目標(biāo)端口以線性的方式,使用單獨(dú)的connect()調(diào)用,可以通過同時(shí)打開多個(gè)套接字,從而加速掃描。

缺點(diǎn):是會(huì)在目標(biāo)主機(jī)的日志記錄中留下痕跡,易被發(fā)現(xiàn),并且數(shù)據(jù)包會(huì)被過濾掉。目標(biāo)主機(jī)的logs文件會(huì)顯示一連串的連接和連接出錯(cuò)的服務(wù)信息,并且能很快地使它關(guān)閉。

2、SYN掃描

掃描器向目標(biāo)主機(jī)的一個(gè)端口發(fā)送請(qǐng)求連接的SYN包,掃描器在收到SYN/ACK后,不是發(fā)送的ACK應(yīng)答而是發(fā)送RST包請(qǐng)求斷開連接。這樣,三次握手就沒有完成,無法建立正常的TCP連接,因此,這次掃描就不會(huì)被記錄到系統(tǒng)日志中。這種掃描技術(shù)一般不會(huì)在目標(biāo)主機(jī)上留下掃描痕跡。但是,這種掃描需要有root權(quán)限。

·端口開放:(1)Client發(fā)送SYN;(2)Server端發(fā)送SYN/ACK;(3)Client發(fā)送RST斷開(只需要前兩步就可以判斷端口開放)

·端口關(guān)閉:(1)Client發(fā)送SYN;(2)Server端回復(fù)RST(表示端口關(guān)閉)

優(yōu)點(diǎn):SYN掃描要比TCP Connect()掃描隱蔽一些,SYN僅僅需要發(fā)送初始的SYN數(shù)據(jù)包給目標(biāo)主機(jī),如果端口開放,則相應(yīng)SYN-ACK數(shù)據(jù)包;如果關(guān)閉,則響應(yīng)RST數(shù)據(jù)包;

3、NULL掃描

反向掃描—-原理是將一個(gè)沒有設(shè)置任何標(biāo)志位的數(shù)據(jù)包發(fā)送給TCP端口,在正常的通信中至少要設(shè)置一個(gè)標(biāo)志位,根據(jù)FRC 793的要求,在端口關(guān)閉的情況下,若收到一個(gè)沒有設(shè)置標(biāo)志位的數(shù)據(jù)字段,那么主機(jī)應(yīng)該舍棄這個(gè)分段,并發(fā)送一個(gè)RST數(shù)據(jù)包,否則不會(huì)響應(yīng)發(fā)起掃描的客戶端計(jì)算機(jī)。也就是說,如果TCP端口處于關(guān)閉則響應(yīng)一個(gè)RST數(shù)據(jù)包,若處于開放則無相應(yīng)。但是應(yīng)該知道理由NULL掃描要求所有的主機(jī)都符合RFC 793規(guī)定,但是windows系統(tǒng)主機(jī)不遵從RFC 793標(biāo)準(zhǔn),且只要收到?jīng)]有設(shè)置任何標(biāo)志位的數(shù)據(jù)包時(shí),不管端口是處于開放還是關(guān)閉都響應(yīng)一個(gè)RST數(shù)據(jù)包。但是基于Unix(*nix,如Linux)遵從RFC 793標(biāo)準(zhǔn),所以可以用NULL掃描。 經(jīng)過上面的分析,我們知道NULL可以辨別某臺(tái)主機(jī)運(yùn)行的操作系統(tǒng)是什么操作系統(tǒng)。

端口開放:Client發(fā)送Null,server沒有響應(yīng)

端口關(guān)閉:(1)Client發(fā)送NUll;(2)Server回復(fù)RST

說明:Null掃描和前面的TCP Connect()和SYN的判斷條件正好相反。在前兩種掃描中,有響應(yīng)數(shù)據(jù)包的表示端口開放,但在NUll掃描中,收到響應(yīng)數(shù)據(jù)包表示端口關(guān)閉。反向掃描比前兩種隱蔽性高些,當(dāng)精確度也相對(duì)低一些。

用途:判斷是否為Windows系統(tǒng)還是Linux。

4、FIN掃描

與NULL有點(diǎn)類似,只是FIN為指示TCP會(huì)話結(jié)束,在FIN掃描中一個(gè)設(shè)置了FIN位的數(shù)據(jù)包被發(fā)送后,若響應(yīng)RST數(shù)據(jù)包,則表示端口關(guān)閉,沒有響應(yīng)則表示開放。此類掃描同樣不能準(zhǔn)確判斷windows系統(tǒng)上端口開發(fā)情況。

·端口開放:發(fā)送FIN,沒有響應(yīng)

·端口關(guān)閉:(1)發(fā)送FIN;(2)回復(fù)RST

5、ACK掃描

掃描主機(jī)向目標(biāo)主機(jī)發(fā)送ACK數(shù)據(jù)包。根據(jù)返回的RST數(shù)據(jù)包有兩種方法可以得到端口的信息。方法一是: 若返回的RST數(shù)據(jù)包的TTL值小于或等于64,則端口開放,反之端口關(guān)閉。

6、Xmas-Tree掃描

通過發(fā)送帶有下列標(biāo)志位的tcp數(shù)據(jù)包。

·URG:指示數(shù)據(jù)時(shí)緊急數(shù)據(jù),應(yīng)立即處理。

·PSH:強(qiáng)制將數(shù)據(jù)壓入緩沖區(qū)。

·FIN:在結(jié)束TCP會(huì)話時(shí)使用。

正常情況下,三個(gè)標(biāo)志位不能被同時(shí)設(shè)置,但在此種掃描中可以用來判斷哪些端口關(guān)閉還是開放,與上面的反向掃描情況相同,依然不能判斷windows平臺(tái)上的端口。

·端口開放:發(fā)送URG/PSH/FIN,沒有響應(yīng)

·端口關(guān)閉:(1)發(fā)送URG/PSH/FIN,沒有響應(yīng);(2)響應(yīng)RST

XMAS掃描原理和NULL掃描的類似,將TCP數(shù)據(jù)包中的ACK、FIN、RST、SYN、URG、PSH標(biāo)志位置1后發(fā)送給目標(biāo)主機(jī)。在目標(biāo)端口開放的情況下,目標(biāo)主機(jī)將不返回任何信息。

7、Dump掃描

也被稱為Idle掃描或反向掃描,在掃描主機(jī)時(shí)應(yīng)用了第三方僵尸計(jì)算機(jī)掃描。由僵尸主機(jī)向目標(biāo)主機(jī)發(fā)送SYN包。目標(biāo)主機(jī)端口開發(fā)時(shí)回應(yīng)SYN|ACK,關(guān)閉時(shí)返回RST,僵尸主機(jī)對(duì)SYN|ACK回應(yīng)RST,對(duì)RST不做回應(yīng)。從僵尸主機(jī)上進(jìn)行掃描時(shí),進(jìn)行的是一個(gè)從本地計(jì)算機(jī)到僵尸主機(jī)的、連續(xù)的ping操作。查看僵尸主機(jī)返回的Echo響應(yīng)的ID字段,能確定目標(biāo)主機(jī)上哪些端口是開放的還是關(guān)閉的。

二、Python 代碼實(shí)現(xiàn)

1、利用Python的Socket包中的connect方法,直接對(duì)目標(biāo)IP和端口進(jìn)行連接并且嘗試返回結(jié)果,而無需自己構(gòu)建SYN包。

Python如何實(shí)現(xiàn)端口掃描

Python如何實(shí)現(xiàn)端口掃描

2、對(duì)IP端口進(jìn)行多線程掃描,注意的是不同的電腦不同的CPU每次最多創(chuàng)建的線程是不一樣的,如果創(chuàng)建過多可能會(huì)報(bào)錯(cuò),需要根據(jù)自己電腦情況修改每次掃描的個(gè)數(shù)或者將seelp的時(shí)間加長(zhǎng)都可以。

Python如何實(shí)現(xiàn)端口掃描

Python如何實(shí)現(xiàn)端口掃描

看完了這篇文章,相信你對(duì)Python如何實(shí)現(xiàn)端口掃描有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前名稱:Python如何實(shí)現(xiàn)端口掃描-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.muchs.cn/article36/ceocsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、移動(dòng)網(wǎng)站建設(shè)用戶體驗(yàn)、品牌網(wǎng)站建設(shè)軟件開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化