• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Python的端口掃描器及Metasploit安全測(cè)試

      2023-04-27 13:49:58蔣明峰陳馬申屹湯慧敏
      電腦知識(shí)與技術(shù) 2023年8期

      蔣明峰 陳馬申屹 湯慧敏

      關(guān)鍵詞:端口掃描;socket;Metasploit;永恒之藍(lán);Nmap

      中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2023)08-0077-03

      0 引言

      0.1 研究背景與意義

      隨著信息技術(shù)的發(fā)展,計(jì)算機(jī)安全問題得到越來越多的重視。黑客可以通過漏洞獲取任何他們想要的資料,如之前Windows的“永恒之藍(lán)”和“永恒之黑”漏洞以及最近發(fā)現(xiàn)的大型漏洞log4j2,如果我們不注重相應(yīng)的安全防護(hù),黑客就會(huì)順著這些缺口入侵。對(duì)于入侵的最佳的防護(hù)措施就是及時(shí)進(jìn)行漏洞修復(fù),打好安全補(bǔ)丁,設(shè)置好防火墻等。黑客進(jìn)行入侵時(shí)很多是從開放的端口入侵,因此對(duì)于端口的開放與否需要更加謹(jǐn)慎,無(wú)論在進(jìn)行漏洞測(cè)試的過程中是為了找合適的入口,還是為了準(zhǔn)確找到位置進(jìn)行修補(bǔ),端口掃描都是非常重要的一環(huán)。在進(jìn)行Metasploit模擬漏洞攻擊的時(shí)候使用Nmap進(jìn)行端口掃描,發(fā)現(xiàn)掃描的過程過于緩慢,這是由于掃描結(jié)果會(huì)包含很多用不到的信息且無(wú)法過濾導(dǎo)致。為了提高端口掃描的效率,利用Python寫了簡(jiǎn)易的端口掃描器,用于提高端口掃描的效率,更好地進(jìn)行漏洞測(cè)試實(shí)驗(yàn)。

      0.2 國(guó)內(nèi)外網(wǎng)絡(luò)掃描技術(shù)研究現(xiàn)狀

      端口掃描被歸類為網(wǎng)絡(luò)掃描技術(shù),掃描是為了信息的收集,主要分為四類。其他三類分別是主機(jī)存活掃描、操作系統(tǒng)指紋識(shí)別和漏洞掃描,其中操作系統(tǒng)指紋識(shí)別和端口掃描用于收集信息,漏洞掃描用于保障網(wǎng)絡(luò)安全。端口掃描、主機(jī)存活掃描和操作系統(tǒng)指紋識(shí)別使用Nmap都能夠較好地實(shí)現(xiàn),漏洞掃描較為實(shí)用的軟件是Nessus,可以在設(shè)置好字典的情況下輸入指定主機(jī)即可分析系統(tǒng)中可能存在的漏洞并進(jìn)行安全性分析,根據(jù)這些信息保障安全。

      除了Nmap之外,由Durumeric領(lǐng)導(dǎo)密歇根大學(xué)研究團(tuán)隊(duì)開發(fā)的軟件Zmap也是很好的掃描工具。Zmap是基于無(wú)狀態(tài)的掃描技術(shù),無(wú)須進(jìn)行完整的三次握手,因此速度上較Nmap 會(huì)更快,缺點(diǎn)是不能掃描Ipv6,且不能進(jìn)行內(nèi)網(wǎng)等的掃描。之后的掃描工具就是Masscan,相比之前的兩種工具,速度更上一個(gè)層次,除了無(wú)狀態(tài)的掃描技術(shù)外,發(fā)包速度也更快,缺點(diǎn)是無(wú)法探測(cè)端口服務(wù)和操作系統(tǒng)[1]。

      網(wǎng)絡(luò)掃描無(wú)論是在漏洞分析還是安全維護(hù)上都有著相當(dāng)重要的作用,因此只要網(wǎng)絡(luò)還在發(fā)展,網(wǎng)絡(luò)掃描技術(shù)也就會(huì)隨著一起發(fā)展,以便防止漏洞在網(wǎng)絡(luò)中隨處可見,更好地保障我們的安全。

      本文闡述了如何使用Python實(shí)現(xiàn)端口掃描功能,利用Python提供的socket模塊實(shí)現(xiàn)端口掃描功能、判斷與分析端口的開放與否,其中使用了并行化技術(shù),利用python中的multiprocessing.dummy中的pool來實(shí)現(xiàn)多線程操作,提高了效率,并將基于Python實(shí)現(xiàn)的端口掃描器從速度、準(zhǔn)確率等角度與Nmap進(jìn)行比較,最后應(yīng)用于Metasploit進(jìn)行簡(jiǎn)單的漏洞測(cè)試,演示若存在危險(xiǎn)端口時(shí)如何進(jìn)行入侵,提醒人們提高對(duì)于網(wǎng)絡(luò)安全的防護(hù)。

      1 背景知識(shí)介紹

      1.1 端口掃描原理及常見掃描方式

      端口是設(shè)備用于和外界進(jìn)行通信的出口,最開始僅有物理端口。隨著互聯(lián)網(wǎng)的發(fā)展,人們?yōu)榱藢?shí)現(xiàn)遠(yuǎn)程連接又發(fā)展出了虛擬端口,用戶僅需通過IP和端口就能確定一臺(tái)主機(jī)的信息出口,從而進(jìn)行信息的接收和發(fā)送。端口掃描則是通過設(shè)定好相應(yīng)的內(nèi)容后發(fā)送給目標(biāo)端口,如ICMP包等,用以判斷端口的開放與否以及計(jì)算機(jī)所提供的服務(wù)類型,黑客也能通過此手段來獲取這些服務(wù)存在的漏洞從而進(jìn)行攻擊。同樣的,我們也可通過此方式來掃描本機(jī)或是遠(yuǎn)程主機(jī)的端口開放情況,從而分析可能存在的系統(tǒng)漏洞,進(jìn)行相應(yīng)的防護(hù)措施。

      根據(jù)設(shè)置的參數(shù)不同,可以進(jìn)行不同的掃描方式。其中參數(shù)-sS表示的是SYN掃描,也稱為半開放掃描,不需要建立完整的TCP連接,僅需兩次握手即可進(jìn)行掃描,相對(duì)記錄較少,比較隱蔽,但需要較高的權(quán)限。-sT表示的是TCP掃描,TCPconnect()函數(shù)調(diào)用傳輸層的API通過三次握手與指定端口建立連接,可以同時(shí)掃描多個(gè)用戶且不需要管理員權(quán)限,但由于三次握手會(huì)導(dǎo)致記錄更多,痕跡較為明顯[2]。-sU表示UDP掃描,用于掃描UDP端口。除了這三者以外還有FIN掃描、ACK掃描等,其也是通過TCP建立連接時(shí)所用到的參數(shù)作為標(biāo)志位,根據(jù)收到相應(yīng)的報(bào)文(或者是有無(wú)報(bào)文)來判斷端口的開放與否。

      1.2 socket

      socket又稱套接字,是TCP或是UDP用于區(qū)分不同應(yīng)用程序并且實(shí)現(xiàn)連接的工具。套接字的參數(shù)有IP、端口號(hào)和傳輸協(xié)議,根據(jù)傳輸協(xié)議的不同,UDP和TCP的套接字分為三元組和五元組,三元組僅需目標(biāo)IP和端口號(hào),五元組則是使用雙方的IP和端口號(hào),通信雙方發(fā)送的信息中后面加上socket用以識(shí)別目標(biāo)以及對(duì)應(yīng)的應(yīng)用程序。詳細(xì)過程如圖1所示.

      1.3 永恒之藍(lán)漏洞

      “永恒之藍(lán)”漏洞利用Windows 操作系統(tǒng)SMB服務(wù)漏洞獲取系統(tǒng)的最高權(quán)限,對(duì)應(yīng)微軟公司編號(hào)MS17-010,后被不法分子改造制作了wannacry勒索病毒,利用Windows操作系統(tǒng)445端口存在的漏洞進(jìn)行傳播,并且具有自我復(fù)制、主動(dòng)傳播性[3]。

      1.4 Metasploit

      Metasploit是一個(gè)免費(fèi)的框架,由于其自身攜帶了許多軟件的漏洞攻擊模塊,因此可用于模擬漏洞攻擊、驗(yàn)證漏洞、安全性分析等。Metasploit最大的優(yōu)勢(shì)在于采用模塊化理念設(shè)計(jì),包含了很多利用代碼和安全測(cè)試工具且被不斷更新。它可以在同一個(gè)平臺(tái)上利用各種不同的代碼進(jìn)行安全測(cè)試,可以根據(jù)需要將安全測(cè)試過程中不同階段使用的攻擊代碼自由組合,而不需要針對(duì)每一個(gè)漏洞去寫一整套完整的代碼,因此它可以在不同的目標(biāo)環(huán)境中快速地執(zhí)行完整的安全測(cè)試[4]。

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

      2.1 基本功能實(shí)現(xiàn)

      Python實(shí)現(xiàn)端口掃描是利用socket模塊來實(shí)現(xiàn)。先判斷連接方式,SOCK_STREAM是TCP連接,處理面向字節(jié)流的傳輸,SOCK_DGRAM是UDP連接,處理面向數(shù)據(jù)包的傳輸。接著輸入需要查詢的IP,若輸入的是域名,則通過socket.gethostbyname來獲取域名所對(duì)應(yīng)的IP,然后通過socket.connect_ex函數(shù)傳輸目標(biāo)IP以及端口號(hào),根據(jù)返回值判斷端口是否開啟,若返回值為0,則端口是開啟的,否則是關(guān)閉的,若是需要全端口掃描則循環(huán)65536次即可。端口掃描功能流程圖如圖2所示。

      2.2 利用多線程提高執(zhí)行效率

      若是單線程進(jìn)行端口掃描,則需要循環(huán)65536次依次執(zhí)行該函數(shù)進(jìn)行連接,效率過低,耗時(shí)太長(zhǎng),因此需要采用多線程的方式提升效率。利用python中的multiprocessing.dummy中的pool來實(shí)現(xiàn)多線程操作,先開線程池,然后通過調(diào)用apply_async函數(shù)進(jìn)行多線程的函數(shù)執(zhí)行。根據(jù)不同的cpu線程可開的數(shù)量不同,雖然多開線程能有效提高程序的執(zhí)行效率,但在執(zhí)行過程中過多的線程可能會(huì)導(dǎo)致電腦的運(yùn)行卡頓甚至崩潰。這里進(jìn)行一個(gè)比較,將線程分別設(shè)置為1000和2000,可以看到速度有明顯的提升,但1000的時(shí)候電腦仍運(yùn)行流暢,2000時(shí)電腦出現(xiàn)明顯卡頓。運(yùn)行時(shí)間通過datatime模塊,用運(yùn)行結(jié)束的時(shí)間減去運(yùn)行前的時(shí)間得出程序執(zhí)行時(shí)間。多線程流程圖如圖3所示。

      這里先用python實(shí)現(xiàn)的掃描器對(duì)服務(wù)器進(jìn)行全端口掃描,運(yùn)行結(jié)果圖如圖4所示。

      再用nmap的三種不同方式對(duì)服務(wù)器進(jìn)行掃描,運(yùn)行結(jié)果圖如圖5所示。

      可以看出利用多線程且簡(jiǎn)化功能后相比于Nmap掃描的速度還是有了很大的提升。

      2.3 基于python的端口掃描器與Nmap 對(duì)比

      Python用socket進(jìn)行端口掃描的方式與Nmap基本相同,都是先通過TCP(UDP) 與端口連接,根據(jù)自身發(fā)送內(nèi)容的回應(yīng)判斷端口是否開啟。根據(jù)自身需求進(jìn)行修改,將不需要的內(nèi)容去掉之后掃描的時(shí)間為18秒左右,而Nmap由于能判斷操作系統(tǒng)、端口類型等時(shí)間耗費(fèi)較長(zhǎng),全端口掃描可能耗時(shí)需要1-2分鐘,且若不能成功建立連接可能出現(xiàn)無(wú)法掃描完成的情況,在socket中設(shè)立了超時(shí)則自動(dòng)跳過,根據(jù)測(cè)試將時(shí)間改為0.3秒,能夠更加方便快捷地掃描全端口。但由于速度提升上去的原因,無(wú)法識(shí)別端口的服務(wù)類型、識(shí)別操作系統(tǒng),且線程無(wú)法再往上加,在性能和速度都考慮的情況下已是最快時(shí)間,若要更全的信息還是要通過Nmap進(jìn)行掃描。

      3 端口掃描器在Metasploit 安全測(cè)試中的應(yīng)用

      由于Kali Linux系統(tǒng)自帶Metasploit的原因,本實(shí)驗(yàn)是基于Kali Linux系統(tǒng)所做。這里以永恒之藍(lán)的測(cè)試為例,實(shí)驗(yàn)環(huán)境為Vmware搭建的虛擬機(jī),靶機(jī)為Windows7操作系統(tǒng)。先通過指令msfconsole 打開攻擊程序,查詢可得永恒之藍(lán)的攻擊模塊名為ms17_010,通過指令“use auxiliary/scanner/smb/smb_ms17_010”使用該攻擊模塊,通過options發(fā)現(xiàn)需要設(shè)置的參數(shù)有監(jiān)聽I(yíng)P以及對(duì)應(yīng)的端口,通過set指令進(jìn)行修改。由于靶機(jī)是搭建的虛擬機(jī),IP已知,通過端口掃描器掃描出開放的端口后即可通過此端口進(jìn)行測(cè)試,設(shè)置好參數(shù)后執(zhí)行run命令即可進(jìn)行攻擊,成功后即可奪取靶機(jī)的控制權(quán),可在控制臺(tái)中進(jìn)行查看文件、文件上傳等一系列的操作。

      在測(cè)試的過程中發(fā)現(xiàn)攻擊成功需要滿足兩點(diǎn):①靶機(jī)的系統(tǒng)需要在漏洞的允許范圍內(nèi),由于系統(tǒng)在不斷更新,管理員也會(huì)在發(fā)現(xiàn)后及時(shí)修補(bǔ)該漏洞,因此只有在較低的版本可以實(shí)現(xiàn)攻擊,高版本則會(huì)修復(fù)此漏洞,無(wú)法進(jìn)行攻擊。②靶機(jī)需要關(guān)閉防火墻,否則端口掃描無(wú)法直接探測(cè)出開啟端口,需要繞過防火墻后才能掃出;即使是在掃出端口的情況下,防火墻也能夠阻止Metasploit的攻擊,而如何在不進(jìn)入系統(tǒng)的情況下關(guān)閉防火墻也是一大問題。因此通過Metasploit既將端口掃描器在實(shí)例中運(yùn)用,又進(jìn)行了攻擊,對(duì)相應(yīng)的漏洞進(jìn)行了安全性測(cè)試。

      4 總結(jié)

      本文基于Python實(shí)現(xiàn)了端口掃描的功能,并利用Metasploit運(yùn)用在安全測(cè)試實(shí)例中,最后與常見的端口掃描器Nmap進(jìn)行對(duì)比,分析兩者實(shí)現(xiàn)功能的不同與優(yōu)缺點(diǎn),進(jìn)一步了解了端口掃描機(jī)制以及漏洞安全性測(cè)試相關(guān)的知識(shí)還有漏洞的危害性,加強(qiáng)了網(wǎng)絡(luò)安全意識(shí)。

      高青县| 定边县| 清丰县| 凌源市| 蛟河市| 新干县| 吴堡县| 柳州市| 峨眉山市| 长治市| 兰考县| 大竹县| 寻乌县| 江津市| 思南县| 吐鲁番市| 宜良县| 左贡县| 庄河市| 湖北省| 溧阳市| 姚安县| 班戈县| 仲巴县| 德江县| 樟树市| 濮阳县| 九龙坡区| 东莞市| 辽宁省| 阿合奇县| 宁陕县| 滦南县| 青海省| 永福县| 时尚| 黄陵县| 景德镇市| 如皋市| 巴楚县| 信阳市|