簡單的端口掃描器實(shí)現(xiàn)_第1頁
簡單的端口掃描器實(shí)現(xiàn)_第2頁
簡單的端口掃描器實(shí)現(xiàn)_第3頁
簡單的端口掃描器實(shí)現(xiàn)_第4頁
簡單的端口掃描器實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、安陽師范學(xué)院本科學(xué)生畢業(yè)論文 簡單的端口掃描器實(shí)現(xiàn)作者 李港 系(院) 人文管理學(xué)院 專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 年級(jí) 2013 級(jí)專升本 學(xué)號(hào) 指導(dǎo)教師 宋老師 論文成績 日期 2015 年5月 誠信承諾書鄭重承諾:所呈交的論文是作者個(gè)人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫的研究成果,也不包含為獲得安陽師范學(xué)院或其他教育機(jī)構(gòu)的學(xué)位或證書所使用過的材料。與作者一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均已在論文中作了明確的說明并表示了謝意。作者簽名: 日期: 導(dǎo)師簽名: 日期:院長簽名: 日期:論文使用授權(quán)說明本人完全了解安陽師

2、范學(xué)院有關(guān)保留、使用學(xué)位論文的規(guī)定,即:學(xué)校有權(quán)保留送交論文的復(fù)印件,允許論文被查閱和借閱;學(xué)??梢怨颊撐牡娜炕虿糠謨?nèi)容,可以采用影印、縮印或其他復(fù)制手段保存論文。保密論文在解密后遵守此規(guī)定。作者簽名:導(dǎo)師簽名:日期:目 錄1 引言22 端口掃描概述23 端口掃描相關(guān)知識(shí)23.1 端口的基本概念23.2 常見端口介紹33.3 端口掃描器功能簡介33.4 常用端口掃描技術(shù)33.4.1 TCP connect()掃描 33.4.2 TCP SYN掃描33.4.3 TCP FIN 掃描33.4.4 IP段掃描43.4.5 TCP反向 ident掃描43.4.6 FTP 返回攻擊44 實(shí)驗(yàn)流程和運(yùn)

3、行流程44.1 實(shí)現(xiàn)流程44.2 程序中主要的函數(shù)74.3 主流程圖85 總結(jié)105.1 提出問題105.2 解決問題105.3 心得體會(huì)106 致謝11參考文獻(xiàn)11簡單的端口掃描器實(shí)現(xiàn)李 濤(安陽師范學(xué)院 人文管理學(xué)院,河南 安陽 )摘 要:本設(shè)計(jì)通過端口掃描器的研究來提高對(duì)計(jì)算機(jī)安全的認(rèn)識(shí)。利用TCPconnect掃描原理,掃描主機(jī)通過TCP/IP協(xié)議的三次握手與目標(biāo)主機(jī)的指定端口建立一次完整的連接,如果目標(biāo)主機(jī)該端口有回復(fù),則說明該端口開放。利用多線程技術(shù)實(shí)現(xiàn)了對(duì)一目標(biāo)IP進(jìn)行設(shè)定數(shù)目的端口掃描,計(jì)算機(jī)端口掃描技術(shù)就是這種主動(dòng)防御策略實(shí)現(xiàn)的重要技術(shù)手段。該端口掃描器采用c+語言開發(fā),在V

4、C6.0編譯環(huán)境下通過測試。關(guān)鍵詞:端口掃描器 ;IP段掃描;信息安全1 引言掃描器是網(wǎng)絡(luò)信息收集的一種方法之一,從功能上可化分為漏洞掃描器和端口掃描器。理解客戶機(jī)-服務(wù)器與端口掃描之間的工作原理,完成對(duì)目標(biāo)主機(jī)端口掃描功能的實(shí)現(xiàn),即發(fā)現(xiàn)目標(biāo)主機(jī)開啟的端口信息??梢?,端口與進(jìn)程是一一對(duì)應(yīng)的,如果某個(gè)進(jìn)程正在等待連接,稱之為該進(jìn)程正在監(jiān)聽,那么就會(huì)出現(xiàn)與它相對(duì)應(yīng)的端口。由此可見,通過掃描端口,便可以判斷出目標(biāo)計(jì)算機(jī)有哪些通信進(jìn)程正在等待連接。2 端口掃描概述對(duì)于畢業(yè)設(shè)計(jì)建設(shè),首先應(yīng)考慮選擇一個(gè)實(shí)驗(yàn)平臺(tái),考慮到windows操作系統(tǒng)在pc機(jī)上的壟斷地位,再加上microsoft提供的辦公軟件、數(shù)據(jù)

5、軟件的通用性,使得現(xiàn)有的信息系統(tǒng)大都建立在windows操作系統(tǒng)基礎(chǔ)上,而且,現(xiàn)有的信息安全攻擊操作系統(tǒng)或漏洞威脅,大多數(shù)是針對(duì)windows操作系統(tǒng)1,因此,我們選擇windows系統(tǒng)作為實(shí)現(xiàn)平臺(tái)。本畢業(yè)論文的目標(biāo)是設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單的端口掃描器,它通過與目標(biāo)主機(jī)TCP/IP端口建立連接并請(qǐng)求某些服務(wù),記錄目標(biāo)主機(jī)的應(yīng)答,分析目標(biāo)主機(jī)相關(guān)信息,從而發(fā)現(xiàn)目標(biāo)主機(jī)某些內(nèi)在的安全弱點(diǎn)。掃描器通常分兩類:漏洞掃描器和端口掃描器。端口掃描器用來掃描目標(biāo)機(jī)開放的服務(wù)端口以及端口相關(guān)信息2,漏洞掃描器檢查目標(biāo)中可能包含的大量已知的漏洞,如果發(fā)現(xiàn)潛在的漏洞可能性,就報(bào)告給掃描者。網(wǎng)絡(luò)漏洞端口掃描器對(duì)目標(biāo)系統(tǒng)

6、進(jìn)行檢測時(shí),首先探測目標(biāo)系統(tǒng)的存活主機(jī),對(duì)存活主機(jī)進(jìn)行端口掃描,確定系統(tǒng)開放的端口,然后掃描器對(duì)開放的端口進(jìn)行網(wǎng)絡(luò)服務(wù)類型的識(shí)別,確定其提供的網(wǎng)絡(luò)服務(wù)。漏洞掃描器根據(jù)目標(biāo)系統(tǒng)的操作系統(tǒng)平臺(tái)和提供的網(wǎng)絡(luò)服務(wù),調(diào)用漏洞資料庫中已知的各種漏洞進(jìn)行逐一檢測,通過對(duì)探測響應(yīng)數(shù)據(jù)包的分析判斷是否存在漏洞。在分析總結(jié)目前現(xiàn)有的掃描軟件,掌握掃描器的原理基礎(chǔ)上,首先設(shè)計(jì)、實(shí)現(xiàn)一種端口掃描程序,存儲(chǔ)掃描結(jié)果。3 端口掃描相關(guān)知識(shí)3.1 端口的基本概念我們這里所說的端口,不是計(jì)算機(jī)硬件的i/o端口,而是軟件形式上的概念。服務(wù)器可以向外提供多種服務(wù),比如,一臺(tái)服務(wù)器可以同時(shí)是web服務(wù)器,也可以是ftp服務(wù)器,同時(shí)

7、,它也可以是郵件服務(wù)器。為什么一臺(tái)服務(wù)器可以同時(shí)提供那么多的服務(wù)呢?其中一個(gè)很主要的方面,就是各種服務(wù)采用不同的端口分別提供不同的服務(wù)。 根據(jù)提供服務(wù)類型的不同,端口分為兩種,一種是tcp端口,一種是udp端口。計(jì)算機(jī)之間相互通信的時(shí)候,分為兩種方式:一種是發(fā)送信息以后,可以確認(rèn)信息是否到達(dá),也就是有應(yīng)答的方式,這種方式大多采用tcp協(xié)議;一種是發(fā)送以后就不管了,不去確認(rèn)信息是否到達(dá),這種方式大多采用udp協(xié)議。對(duì)應(yīng)這兩種協(xié)議服務(wù)提供的端口,也就分為tcp端口和udp端口。那么,如果攻擊者使用軟件掃描目標(biāo)計(jì)算機(jī),得到目標(biāo)計(jì)算機(jī)打開的端口,也就了解了目標(biāo)計(jì)算機(jī)提供了那些服務(wù)。計(jì)算機(jī)信息網(wǎng)絡(luò)的發(fā)展

8、加速了信息化時(shí)代的進(jìn)程,但是隨著社會(huì)網(wǎng)絡(luò)化程度的增加,對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的依賴也越來越大,網(wǎng)絡(luò)安全問題也日益明顯3,端口掃描技術(shù)是發(fā)現(xiàn)安全問題的重要手段之一。一個(gè)端口就是一個(gè)潛在的通信通道,也就是一個(gè)入侵通道。網(wǎng)絡(luò)安全從其本質(zhì)來講就是網(wǎng)絡(luò)上信息安全4,它涉及的領(lǐng)域相當(dāng)廣泛,這是因?yàn)槟壳暗墓猛ㄐ啪W(wǎng)絡(luò)中存在著各式各樣的安全漏洞和威脅。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法,可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息,從而發(fā)現(xiàn)目標(biāo)機(jī)的某些內(nèi)在的弱點(diǎn)。3.2 常見端口介紹端口是一個(gè)16 bit的地址,用端口號(hào)進(jìn)行標(biāo)

9、識(shí)不同作用的端口。端口一般分為兩類。 熟知端口號(hào):范圍從0到1023,這些端口號(hào)一般固定分配給一些服務(wù)。比如21端口分配給FTP服務(wù),25端口分配給SMTP服務(wù),就是所說的郵件服務(wù)。80端口分配給HTTP服務(wù),135端口分配給RPC服務(wù)等等。動(dòng)態(tài)端口號(hào):動(dòng)態(tài)端口的范圍從1024到65535,這些端口號(hào)一般不固定分配給某個(gè)服務(wù),也就是說許多服務(wù)都可以使用這些端口。只要運(yùn)行的程序向系統(tǒng)提出訪問網(wǎng)絡(luò)的申請(qǐng),那么系統(tǒng)就可以從這些端口號(hào)中分配一個(gè)供該程序使用。比如8080端口就是分配給第一個(gè)向系統(tǒng)發(fā)出申請(qǐng)的程序。在關(guān)閉程序進(jìn)程后,就會(huì)釋放所占用的端口號(hào)。3.3 端口掃描器功能簡介端口分為源端口和目的端口

10、,源端口是本機(jī)打開的,目的端口是在和本機(jī)通信的另一臺(tái)計(jì)算機(jī)的端口。端口是由計(jì)算機(jī)的通信協(xié)議TCP/IP協(xié)議定義的。其中規(guī)定,用IP地址和端口作為套接字,它代表TCP連接的一個(gè)連接端,一般稱為Socket。具體來說,就是用IP端口來定位一臺(tái)主機(jī)中的進(jìn)程。可以做這樣的比喻,端口相當(dāng)于兩臺(tái)計(jì)算機(jī)進(jìn)程間的大門,可以隨便定義,其目的只是為了讓兩臺(tái)計(jì)算機(jī)能夠找到對(duì)方的進(jìn)程。計(jì)算機(jī)就像一座大樓,這個(gè)大樓有好多入口(端口),進(jìn)到不同的入口中就可以找到不同的公司(進(jìn)程)。如果要和遠(yuǎn)程主機(jī)A的程序通信,那么只要把數(shù)據(jù)發(fā)向A端口就可以實(shí)現(xiàn)通信了??梢?,端口與進(jìn)程是一一對(duì)應(yīng)的,如果某個(gè)進(jìn)程正在等待連接,稱之為該進(jìn)程正

11、在監(jiān)聽,那么就會(huì)出現(xiàn)與它相對(duì)應(yīng)的端口。由此可見,通過掃描端口,便可以判斷出目標(biāo)計(jì)算機(jī)有哪些通信進(jìn)程正在等待連接。服務(wù)器上所開放的端口就是潛在的通信通道,也就是一個(gè)入侵通道。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描5,能得到許多有用的信息,進(jìn)行端口掃描的方法很多,可以是手工進(jìn)行掃描、也可以用端口掃描軟件進(jìn)行。 掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息,例如遠(yuǎn)程系統(tǒng)是否支持匿名登陸、是否存在可寫的FTP目錄、是否開放TELNET服務(wù)和HTTPD服務(wù)等。3.4 常用端口掃描技術(shù)3.4.1 TCP connect()掃描 這是最基本的

12、TCP掃描,操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用可以用來與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽狀態(tài),那么connect()就能成功。否則,這個(gè)端口是不能用的,即沒有提供服務(wù)。這個(gè)技術(shù)的一個(gè)最大的優(yōu)點(diǎn)是,你不需要任何權(quán)限。優(yōu)點(diǎn):穩(wěn)定可靠,不需要特殊的權(quán)限。系統(tǒng)中的任何用戶都有權(quán)利使用這個(gè)調(diào)用。另一個(gè)好處就是速度快。如果對(duì)每個(gè)目標(biāo)端口以線性的方式,使用單獨(dú)的connects調(diào)用,那么將花費(fèi)相當(dāng)長的時(shí)間,你可以通過同時(shí)打開多個(gè)套接字,從而加速掃描。缺點(diǎn)是掃描方式不隱蔽。3.4.2 TCP SYN掃描 TCP SYN 掃描是使用最為廣泛的掃描方式,其原理就是向待掃描端口發(fā)送SY

13、N 數(shù)據(jù)包,如果能夠收到SYN+ACK 數(shù)據(jù)包,則代表此端口開放,如收到RST數(shù)據(jù)包,則證明此端口關(guān)閉,如未收到任何數(shù)據(jù)包,且確定該主機(jī)存在,則證明該端口被防火墻等安全設(shè)備過濾。由于SYN掃描并不會(huì)完成TCP連接的三次握手過程,所以SYN 掃描又叫做半開放掃描。SYN 掃描的最大優(yōu)點(diǎn)就是速度,在Internet上,如果不存在防火墻,SYN掃描每秒鐘可以掃描數(shù)千個(gè)端口,但是SYN 掃描由于其掃描行為較為明顯,容易被入侵檢測系統(tǒng)發(fā)現(xiàn),也容易被防火墻屏蔽,且構(gòu)造原始數(shù)據(jù)包需要較高系統(tǒng)權(quán)限。 3.4.3 TCP FIN 掃描有的時(shí)候有可能SYN掃描都不夠秘密。一些防火墻和包過濾器會(huì)對(duì)一些指定的端口進(jìn)行

14、監(jiān)視,有的程序能檢測到這些掃描。如果目標(biāo)主機(jī)該端口是“關(guān)”狀態(tài),則返回一個(gè)TCP RST數(shù)據(jù)包;否則不回復(fù)。根據(jù)這一原理可以判斷對(duì)方端口是處于“開”還是“關(guān)”狀態(tài)。相反,F(xiàn)IN數(shù)據(jù)包可能會(huì)沒有任何麻煩的通過。這種掃描方法的思想是關(guān)閉的端口會(huì)用適當(dāng)?shù)腞ST來回復(fù)FIN數(shù)據(jù)包。另一方面,打開的端口會(huì)忽略對(duì)FIN數(shù)據(jù)包的回復(fù)。FIN 掃描具有較好的隱蔽性,不會(huì)留下日志,但是其應(yīng)用具有很大局限性:由于不同系統(tǒng)實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議棧的細(xì)節(jié)不同,F(xiàn)IN 掃描只能掃描Linux/UNIX 系統(tǒng),如果是Windows 系統(tǒng),無論端口開放與否都會(huì)直接返回RST 數(shù)據(jù)包,無法對(duì)端口狀態(tài)進(jìn)行判斷。3.4.4 IP段掃描 這

15、種掃描方式并不是新技術(shù),它并不是直接發(fā)送TCP探測數(shù)據(jù)包,而是將數(shù)據(jù)包分成兩個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而過濾器就很難探測到。但必須小心:一些程序在處理這些小數(shù)據(jù)包時(shí)會(huì)有些麻煩。3.4.5 TCP反向 ident掃描 ident 協(xié)議允許(rfc1413)看到通過TCP連接的任何進(jìn)程的擁有者的用戶名,即使這個(gè)連接不是由這個(gè)進(jìn)程開始的,該服務(wù)就會(huì)讀取指定TCP連接的查詢數(shù)據(jù),將擁有指定TCP連接的用戶信息反饋給對(duì)方,。例如掃描者可以連接到http端口,然后用identd來發(fā)現(xiàn)服務(wù)器是否正在以root權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了一個(gè)完整的TCP連接后才能看到

16、。3.4.6 FTP 返回攻擊FTP協(xié)議的一個(gè)有趣的特點(diǎn)是它支持代理(proxy)FTP連接,即入侵者可以從自己的計(jì)算機(jī)和目標(biāo)主機(jī) 的FTP server-PI(協(xié)議解釋器)連接,建立一個(gè)控制通信連接。然后請(qǐng)求這個(gè)server-PI激活一個(gè)有效的server-DTP(數(shù)據(jù)傳輸進(jìn)程)來給Internet上任何地方發(fā)送文件。對(duì)于一個(gè)User-DTP,盡管RFC明確地定義請(qǐng)求一個(gè)服務(wù)器發(fā)送文件到另一個(gè)服務(wù)器是可以的,但是現(xiàn)在這個(gè)方法并不是非常有效。這種方法的優(yōu)點(diǎn)很明顯,它不容易被追蹤,并可能穿過防火墻。這個(gè)協(xié)議的缺點(diǎn)是“能用來發(fā)送不能跟蹤的郵件和新聞,給許多服務(wù)器

17、造成打擊,用盡磁盤,企圖越過防火墻”。4 實(shí)驗(yàn)流程和運(yùn)行流程4.1 實(shí)現(xiàn)流程(1) 對(duì)源代碼仔細(xì)檢查,看是否出現(xiàn)異常,確保程序可以正常運(yùn)行。圖 1 源程序編譯頁面 (2)輸入想要掃描的網(wǎng)段,然后將輸入的網(wǎng)段轉(zhuǎn)化為可排序的ip數(shù)組。 /功能: 輸入一個(gè)IP段,輸出該IP段內(nèi)的端口開放情況信息int ScanIp(const string &start_Ip, const string &endIp, multimap &ouputMap) /分解IP段內(nèi)的IP到全局?jǐn)?shù)組中去 GetIpToScan(start_Ip,endIp,g_vec_IpToScan);int scanNum = g_ve

18、c_IpToScan.size(); /線程總數(shù) g_runThreadNum = scanNum;coutendl;coutendl;cout*; cout 共有 scanNum 個(gè)IP要掃描 endl; /對(duì)每個(gè)IP開一個(gè)線程 for (int i = 0; i scanNum; +i) CreateThread(NULL,0,ThreadFunc,&g_vec_IpToScani,0,NULL); /要是不間隔時(shí)間的話,同時(shí)創(chuàng)建socket會(huì)出現(xiàn)10093錯(cuò)誤 Sleep(50); return 0;(3)建立多個(gè)線程,每個(gè)線程掃描一個(gè)ip。每個(gè)線程內(nèi)先建立數(shù)據(jù)流套接字,然后綁定ip端口

19、進(jìn)行掃描。將掃描端口保存到g_map_ScanResult。/保存IP掃描的結(jié)果multimap g_map_ScanResult;/線程函數(shù),掃描每一個(gè)IPDWORD WINAPI ThreadFunc(LPVOID th_para) /獲取需要掃描的IP /char *pStrIp = (char*)th_para; unsigned long ulScanIp = *(unsigned long*)th_para;int index = 0; /端口索引 SOCKET link_sock; /SOCKET FD_SET set_flag; /SOCKET描述 short select_r

20、et; /select異步返回值short port; /正在掃描的端口 while (index PORTSNUM) port = g_portsTOscanindex;/創(chuàng)建數(shù)據(jù)流套接字 link_sock = socket(AF_INET, SOCK_STREAM, 0); if (link_sock = INVALID_SOCKET) /cout 創(chuàng)建link_sock socket失敗:錯(cuò)誤號(hào)為: GetLastError() endl; WaitForSingleObject(g_ThreadNumMutex,INFINITE); g_runThreadNum-; ReleaseM

21、utex(g_ThreadNumMutex); /cout *還有_ g_runThreadNum _個(gè)掃描線程進(jìn)行中* endl; return -1; (4)清理結(jié)束后進(jìn)程,輸出結(jié)果。 void CleanProc()/清理 /線程都執(zhí)行完后清理socket相關(guān)信息/ while (1) WaitForSingleObject(g_ThreadNumMutex,INFINITE); if (g_runThreadNum = 0) break; ReleaseMutex(g_ThreadNumMutex); Sleep(100); /清理socket相關(guān)信息 WSACleanup();/輸出

22、掃描結(jié)果int OutPutScanInfo() cout 掃描到 g_map_ScanResult.size() 條記錄 endl; multimap:iterator iter = g_map_ScanResult.begin(); ofstream out(out.txt); cout 顯示總 g_map_ScanResult.size() 條記錄: endl;coutendl; for (; iter!=g_map_ScanResult.end(); +iter) out second endl; cout second endl; 4.2 程序中主要的函數(shù)int main();主函數(shù)

23、InitProc();初始化UserInput();輸入ScanIp(g_startIp,g_endIp,g_map_ScanResult);開始掃描CleanProc();清理結(jié)束后進(jìn)程OutPutScanInfo();輸出結(jié)果DWORD WINAPI ThreadFunc(LPVOID th_para);掃描線程每一個(gè)ipunsigned long InvertIp(unsigned long srcIp);將ip化為長整型int GetIpToScan(const string &StartIp, const string &EndIp, vector &vec_ip) ;將所有ip排序

24、放在一個(gè)數(shù)組內(nèi)4.3 主流程圖 開始 初始化輸入ip段ScanIp掃描計(jì)算時(shí)間 結(jié)束圖 2 函數(shù)主流程圖4.4 結(jié)果圖 3 開始界面說明:可掃描的IP段為-54。圖 4 掃描界面說明:本程序需要在聯(lián)網(wǎng)的情況下才能完全找到開放的端口。圖 5 結(jié)果界面4.5 掃描結(jié)果說明80端口說明:80端口是為HTTP(HyperText Transport Protocol)即超文本傳輸協(xié)議開放的,此為上網(wǎng)沖浪使用次數(shù)最多的協(xié)議,主要用于WWW(World Wide Web)即萬維網(wǎng)傳輸信息的協(xié)議。可以通過HTTP地址(即常說的“網(wǎng)址”)加“:80”來訪問網(wǎng)站,因?yàn)?/p>

25、瀏覽網(wǎng)頁服務(wù)默認(rèn)的端口號(hào)都是80,因此只需輸入網(wǎng)址即可,不用輸入“:80”了。有些木馬程序可以利用80端口來攻擊計(jì)算機(jī)的,例如Executor、RingZero等。135端口說明:135端口主要用于使用RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)協(xié)議并提供DCOM(分布式組件對(duì)象模型)服務(wù),通過RPC可以保證在一臺(tái)計(jì)算機(jī)上運(yùn)行的程序可以順利地執(zhí)行遠(yuǎn)程計(jì)算機(jī)上的代碼;使用DCOM可以通過網(wǎng)絡(luò)直接進(jìn)行通信,能夠跨過包括HTTP協(xié)議在內(nèi)的多種網(wǎng)絡(luò)傳輸。沖擊波病毒就是利用RPC漏洞來攻擊計(jì)算機(jī)的。RPC本身在處理通過TCP/IP的消息交換部分有一個(gè)漏洞,該漏洞是由于錯(cuò)誤地處理格式

26、不正確的消息造成的。該漏洞會(huì)影響到RPC與DCOM之間的一個(gè)接口,該接口偵聽的端口就是135。139端口說明:通過139端口入侵是網(wǎng)絡(luò)攻擊中常見的一種攻擊手段,一般情況下139端口開啟是由于NetBIOS網(wǎng)絡(luò)協(xié)議的使用。NetBIOS即網(wǎng)絡(luò)基本輸入輸出系統(tǒng),系統(tǒng)可以利用WINS服務(wù)、廣播及Lmhost文件等多種模式將NetBIOS名解析為相應(yīng)IP地址,從而實(shí)現(xiàn)與對(duì)方計(jì)算機(jī)進(jìn)行共享資源的連接。445端口說明:445端口是一個(gè)毀譽(yù)參半的端口,有了它我們可以在局域網(wǎng)中輕松訪問各種共享文件夾或共享打印機(jī),但也正是因?yàn)橛辛怂?,黑客們才有了可乘之機(jī),他們能通過該端口偷偷共享你的硬盤,甚至?xí)谇臒o聲息中將你

27、的硬盤格式化掉!我們所能做的就是想辦法不讓黑客有機(jī)可乘,封堵住445端口漏洞。 3306端口說明:MySQL的默認(rèn)端口。這個(gè)是數(shù)據(jù)庫端口,進(jìn)去后,可以查看數(shù)據(jù)庫中的數(shù)據(jù)。5 總結(jié)5.1 提出問題(1)確定選題后,綜合考慮選擇哪種技術(shù)去實(shí)現(xiàn)端口掃描,寫出原因。(2)面對(duì)大量端口需要掃描,怎么樣做到既保持程序效率又保持程序的穩(wěn)定性。 (3)在程序設(shè)計(jì)完成后,怎樣經(jīng)過調(diào)試確定最大連接線程數(shù)。5.2 解決問題首先綜合考慮各種技術(shù)及背景,發(fā)現(xiàn)用connect()函數(shù)去連接這個(gè)方法更加可靠且易于實(shí)現(xiàn)和調(diào)試,在出現(xiàn)問題后可相對(duì)容易的對(duì)其解決。而且在本學(xué)期學(xué)過網(wǎng)絡(luò)安全tcp/ip的課程,對(duì)connect()函

28、數(shù)的連接過程有些許掌握,更有利于軟件的開發(fā)。在面對(duì)幾千甚至上萬個(gè)端口需要掃描時(shí),需要考慮到并發(fā)處理端口,我們想到了多線程,在對(duì)其多線程設(shè)計(jì)中,要注意控制線程的數(shù)量,如果線程數(shù)量過多,會(huì)造成程序的崩潰,若太少,則程序運(yùn)行太慢。所以用多線程并發(fā)技術(shù)并加以最大線程數(shù)量來控制。程序在運(yùn)行中,與程序性能有關(guān)的首先是本機(jī)硬件條件和對(duì)方應(yīng)答所需時(shí)間,不同端口號(hào)處理響應(yīng)請(qǐng)求時(shí)間也不一樣而且跟網(wǎng)絡(luò)環(huán)境也有一定關(guān)系。一般來說,機(jī)器處理器速度越快,則處理每個(gè)端口的速度越快。所以程序應(yīng)該在實(shí)際運(yùn)行中,通過不斷修改最大線程數(shù)并運(yùn)行來找到一個(gè)合適的最大線程數(shù)量,可以將范圍從1000設(shè)置到10000,再到60000,不斷進(jìn)

29、行調(diào)試達(dá)到最佳。5.3 心得體會(huì)本設(shè)計(jì)經(jīng)過一學(xué)期的努力,基本滿足了一個(gè)端口掃描程序的基本要求。完成后的程序?qū)崿F(xiàn)了ip端口掃描功能,能對(duì)單個(gè)ip掃描或多個(gè)ip。系統(tǒng)設(shè)計(jì)期間,學(xué)習(xí)到很多課堂上沒有的知識(shí),還積累了很多實(shí)踐經(jīng)驗(yàn),增強(qiáng)了動(dòng)手能力和解決實(shí)際問題的能力。通過這次的課程設(shè)計(jì),對(duì)網(wǎng)絡(luò)編程有了更深入的了解,進(jìn)一步熟悉了TCP和UDP協(xié)議的內(nèi)容,掌握了ip掃描端口的基本原理。對(duì)編程思想有了進(jìn)一步的體會(huì),養(yǎng)成了一些良好的編程習(xí)慣。系統(tǒng)雖然完成,但還有很多不足之處,希望自己能不斷學(xué)習(xí)和實(shí)踐,爭取以后做得更好。通過這次端口掃描器的實(shí)驗(yàn)深化了信息對(duì)抗,信息安全的意識(shí)。對(duì)于網(wǎng)絡(luò)掃描器有了整體上的認(rèn)識(shí)。了解了

30、socket函數(shù)的基本用法和端口掃描的基本原理,更加熟練掌握了c+語言。在這次設(shè)計(jì)中在處理線程上遇到了很大麻煩,不過通過上網(wǎng)查找和書本,基本解決,還有就是剛開始在socket的運(yùn)用上很是不懂,經(jīng)過上網(wǎng)查找也順利解決。總之這次設(shè)計(jì),不僅是對(duì)以前只是的鞏固,也學(xué)習(xí)到了許多新知識(shí)。6.致謝從接受課題到現(xiàn)在完成畢業(yè)設(shè)計(jì)論文,衷心地感謝我的指導(dǎo)老師宋俊昌老師,本系統(tǒng)是在宋老師的悉心指導(dǎo)和耐心教導(dǎo)下完成的,他給予了我很大的幫助,在系統(tǒng)的設(shè)計(jì)開發(fā)過程中向我提供了相關(guān)的參考書籍與網(wǎng)站設(shè)計(jì)資料。在系統(tǒng)設(shè)計(jì)過程中,我遇到了許多自己靠看書查閱資料解決不了的技術(shù)上的問題宋老師都及時(shí)地給予指導(dǎo)。同時(shí)感謝系計(jì)算機(jī)教研室的

31、其他老師與工作人員,他們給我提供了良好的學(xué)習(xí)和研究環(huán)境,并為我的論文提出了許多寶貴的參考意見,少走了不少彎路。還感謝我的親人和朋友,是他們在背后默默的支持我,鼓勵(lì)我。本次論文的完成,學(xué)校為我們提供了便利的條件和開發(fā)環(huán)境,而我們的指導(dǎo)老師更是悉心輔導(dǎo)我們。完成畢業(yè)設(shè)計(jì)的過程中我深刻認(rèn)識(shí)到學(xué)習(xí)是一個(gè)很嚴(yán)謹(jǐn)?shù)倪^程,只有認(rèn)真鉆研,才能得到真知;而馬虎大意將會(huì)一無所獲。在系統(tǒng)開發(fā)過程中我還經(jīng)常和同學(xué)們一起研究、探討問題,我設(shè)計(jì)的網(wǎng)站中也有很多問題是在和同學(xué)的探討中發(fā)現(xiàn)并改正的。在此對(duì)給予我?guī)椭耐瑢W(xué)同樣表示衷心的感謝!最后,再次向他們表示我最衷心的感謝和最誠摯的敬意,這次課程設(shè)計(jì)宋老師指導(dǎo)了很多,從算法

32、原理到計(jì)算機(jī)原理知識(shí)都一并拓展,我受益頗多,感謝宋老師在這次課程設(shè)計(jì)中的指導(dǎo)和栽培,以及同學(xué)們的熱心幫助,祝老師工作順利、身體健康。參考文獻(xiàn)1 趙樹升,趙韶平.信息安全原理與實(shí)踐M.北京:清華大學(xué)出版社,2004.2 李雷,端口掃描方法的原理.實(shí)現(xiàn)和防御J.電腦編程技巧和維護(hù),2004,(5):21-25.3 劉文濤,網(wǎng)絡(luò)安全編程技術(shù)與實(shí)例M.北京:機(jī)械工業(yè)出版社2008.4 鄒新國. 計(jì)算機(jī)信息與網(wǎng)絡(luò)安全技術(shù)M. 濟(jì)南市:黃河出版社, 2008.08.5 肖微,端口掃描技術(shù)的原理及原理J.網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2006,(7):32-41.RealizeA Simple Port Scanne

33、rLi Tao(Humanistic Management College of Anyang Normal University, Anyang, Henan )Abstract: The designed to improve computer security awareness through research port scanner. Use TCP connect scanning principle, designated scan host via TCP / IP protocol handshake with the target host port to establi

34、sh a full connection, if the target host through the port with reply, it indicates that the port is open. The use of multi-threading technology to achieve a port scan on a target IP for a set number of computer port scanning technology is the active defense of this important technology to policy imp

35、lementation. The port scanner using c+ language development, in VC6.0 compiler environment through the test.Keywords: port scanner; IP scanner; information security附錄#pragma comment(lib,ws2_32.lib)#pragma warning (disable:4786)#include #include #include #include #include #include #include #include #

36、include /#include IpScan.husing namespace std;/全局變量:/待掃描的端口short g_portsTOscan= 20,21,22,23,25,42,43,47,53,63,67,68,79,80,95,106,107,109,110,113,135,137,138,139,143, 144,161,162,443,445,1024,1080,1433,1434,1755,3306,4000,5010,5190,5631,5632,8000,8080 ;const short PORTSNUM = sizeof(g_portsTOscan) / s

37、izeof(short);/端口個(gè)數(shù)/等掃描的IPvector g_vec_IpToScan;string g_startIp;string g_endIp;/開啟的線程數(shù),目前為1個(gè)IP1個(gè)線程long g_runThreadNum;/socket相關(guān)TIMEVAL g_timeout; /阻塞等待時(shí)間/FD_SET g_mask; /socket模式設(shè)置,儲(chǔ)存socket信息const short TIMEOUT = 1; /阻塞等待時(shí)間WSADATA g_wsadata; /socket版本信息/線程中的互斥體HANDLE g_PortMutex;HANDLE g_ThreadNumMu

38、tex;HANDLE g_ResultMutex; /輸入結(jié)果的互斥量/保存IP掃描的結(jié)果multimap g_map_ScanResult;/-/線程函數(shù),掃描每一個(gè)IPDWORD WINAPI ThreadFunc(LPVOID th_para) /獲取需要掃描的IP /char *pStrIp = (char*)th_para; unsigned long ulScanIp = *(unsigned long*)th_para; int index = 0; /端口索引 SOCKET link_sock; /SOCKET FD_SET set_flag; /SOCKET描述 short

39、select_ret; /select異步返回值 short port; /正在掃描的端口 while (index PORTSNUM) port = g_portsTOscanindex; /創(chuàng)建數(shù)據(jù)流套接字 link_sock = socket(AF_INET, SOCK_STREAM, 0); if (link_sock = INVALID_SOCKET) /cout 創(chuàng)建link_sock socket失敗:錯(cuò)誤號(hào)為: GetLastError() endl; WaitForSingleObject(g_ThreadNumMutex,INFINITE); g_runThreadNum-

40、; ReleaseMutex(g_ThreadNumMutex); /cout *還有_ g_runThreadNum _個(gè)掃描線程進(jìn)行中* endl; return -1; FD_ZERO(&set_flag); /將指定文件描述符清空 FD_SET(link_sock,&set_flag); /用于在文件描述符集合中增加一個(gè)新的文件描述符 /設(shè)置連接地址 SOCKADDR_IN scan_addr; scan_addr.sin_family = AF_INET; scan_addr.sin_addr.s_addr = ulScanIp; scan_addr.sin_port = htons

41、(port); unsigned long sock_set = 1; ioctlsocket(link_sock,FIONBIO,&sock_set); /設(shè)置套接字為非阻塞模式,第3個(gè)參數(shù)非0為非阻塞 connect(link_sock,(struct sockaddr *) &scan_addr, sizeof(scan_addr);/連接指定IP端口 select_ret = select(0,NULL,&set_flag,NULL,&g_timeout);/異步返回值 if (select_ret = 0 | select_ret = -1) +index; continue; el

42、se strstream stream_result; struct in_addr ipaddr; ipaddr.s_addr = ulScanIp; char *pStrIp = inet_ntoa(ipaddr); stream_result t 主機(jī)地址為: pStrIp t找到開放的端口: port 0; string str_result(stream_result.str(); /將掃描結(jié)果儲(chǔ)存到輸出變量中去 WaitForSingleObject(g_ResultMutex,INFINITE); g_map_ScanResult.insert(make_pair(ulScanIp,str_result); ReleaseMutex(g_ResultMutex); +index; /掃描完一個(gè)線程 shutdown(link_sock, 0); closesocket(link_sock); WaitForSingleObject(g_ThreadNumMutex,INFINITE); g_runThreadNum-; ReleaseMutex(g_ThreadNumMutex); /cout *還有_ g_runThreadNum _個(gè)掃

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論