專利名稱:P2p蠕蟲防御系統(tǒng)的制作方法
技術領域:
P2P蠕蟲防御系統(tǒng)屬于互聯(lián)網(wǎng)技術領域,尤其涉及對等網(wǎng)絡技術和蠕蟲防御技術。
背景技術:
蠕蟲病毒在計算機網(wǎng)絡上的擴散可看作是某種拓撲結構下的網(wǎng)絡傳播行為,而不同的網(wǎng)絡拓撲結構又會極大地影響蠕蟲的傳播速度。在網(wǎng)絡中當一臺主機被蠕蟲感染后,處于同一網(wǎng)絡中的其它主機都將受到威脅,在缺乏有效的防御措施的情況下,蠕蟲會在短時間內(nèi)感染整個網(wǎng)絡。那么,當在一臺主機上發(fā)現(xiàn)感染蠕蟲病毒后如何盡快告知其他主機進行病毒防御將變得十分重要。
面對大規(guī)模的蠕蟲病毒的侵襲,只做到單機防毒是遠遠不夠的,單一的、傳統(tǒng)的蠕蟲防御手段也已無法有效抵御復雜情況下不斷變化的蠕蟲病毒威脅。對用戶而言,采用網(wǎng)絡病毒綜合防御解決方案構建自防御網(wǎng)絡就顯得非常關鍵,所以研發(fā)專門的網(wǎng)絡病毒防御系統(tǒng)具有十分重要的實際意義。
本發(fā)明通過在各個節(jié)點上安裝本P2P蠕蟲防御系統(tǒng)對等端交互軟件,基于優(yōu)化直徑網(wǎng)絡拓撲結構和d分路由算法在Internet上架構起一個P2P網(wǎng)絡,在其上定義統(tǒng)一的蠕蟲掃描監(jiān)測策略,由各個分布在P2P網(wǎng)絡中的端節(jié)點實施這些策略,將無組織、各自為政的病毒防御變成一種自組織、可預警、高效率并可共享補丁文件和預警信息的病毒監(jiān)測防御體系,從而極大地提高整個網(wǎng)絡抵御蠕蟲的能力,使得系統(tǒng)的安全性隨著參與者的增多而加強。該系統(tǒng)是一種基于P2P網(wǎng)絡上的端節(jié)點之間共享信息的方案,用以從整體上防御蠕蟲攻擊,它的實現(xiàn)依賴于優(yōu)化的網(wǎng)絡拓撲結構和快速的路由算法以及多節(jié)點協(xié)同文件傳輸機制,通過在這個P2P網(wǎng)絡上實現(xiàn)高效的分組轉發(fā)和文件傳輸機制為蠕蟲防御搭建起了一個良好的平臺。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有蠕蟲病毒防御技術的不足,通過構建P2P蠕蟲自防御網(wǎng)絡,提供一種新的蠕蟲病毒綜合防御解決方案。
本發(fā)明解決其技術問題所采用的技術方案是主機通過安裝運行對等端交互軟件搭建起一個P2P蠕蟲防御網(wǎng)絡,同時對等端交互軟件實現(xiàn)對本地主機的安全漏洞掃描和病毒監(jiān)測,并通過這個自組織的P2P蠕蟲防御網(wǎng)絡實現(xiàn)高效的信息共享,通過啟發(fā)式路由算法——d分法實現(xiàn)了在發(fā)現(xiàn)蠕蟲病毒入侵時能快速發(fā)布預警信息,通過多節(jié)點協(xié)同數(shù)據(jù)傳輸機制實現(xiàn)了主機在受到蠕蟲病毒攻擊時能快速獲取補丁文件。
本發(fā)明的特征在于在P2P網(wǎng)絡中各節(jié)點的眾多對等主機上安裝對等端交互軟件,簡稱PES,從而搭建起一個P2P蠕蟲防御網(wǎng)絡,簡稱PWN,從而使這些安裝了所述PES的對等主機和所述PWN在整體上構成了所述P2P蠕蟲防御系統(tǒng),所述的PES含有A對等網(wǎng)絡構建模塊,簡稱PNC模塊,實現(xiàn)Radar節(jié)點的創(chuàng)建和對等主機的加入退出、狀態(tài)維護、分組轉發(fā)功能,該PNC模塊由如下子模塊組成A1Radar創(chuàng)建子模塊,所述Radar是指某個對等節(jié)點上的一臺對等主機;該子模塊含有所有不飽和對等節(jié)點當前的飽和度、對等主機IP以及ID在內(nèi)的信息,并以節(jié)點的ID從小到大排序;所述對等節(jié)點的飽和度是指一個對等節(jié)點所擁有的對等主機數(shù)量,當該數(shù)量達到系統(tǒng)最大設定值時,稱該對等節(jié)點為飽和的,或處于飽和狀態(tài),否則為不飽和的,處于非飽和狀態(tài);該子模塊不僅是其他對等主機加入所述PWN時的入口,而且為節(jié)點的數(shù)據(jù)傳輸提供支持,實現(xiàn)步驟如下A1(1)選取一個性能良好的對等主機作為Radar,而Radar又對應到一個眾所周知的域名上;但系統(tǒng)在最初時刻的Radar由第一個節(jié)點中的某對等主機擔任;A1(2)當某個作為Radar的對等主機想要退出時會從與它同在一個節(jié)點中的對等主機里挑一個性能良好的主機,把自己的所有信息傳輸給該挑選出的主機,然后通知域名服務器DNS進行重定向;A2對等主機加入子模塊,實現(xiàn)對等主機向所述PWD網(wǎng)絡的加入動作,實現(xiàn)方法如下A2(1)所述對等主機運行PES軟件,通過訪問一個眾所周知的域名定位到系統(tǒng)中的某個Radar上;A2(2)該對等主機從該Radar上獲取系統(tǒng)中當前非飽和節(jié)點信息并根據(jù)當前P2P網(wǎng)絡狀態(tài)獲取自身ID;A2(3)由d分網(wǎng)絡算法求出其父對等主機ID,并獲得其IP,所述d分網(wǎng)絡算法依次含有以下步驟A2(31)節(jié)點以自然數(shù)為標識,首先從0節(jié)點開始;A2(32)任何一個節(jié)點只允許有一個父節(jié)點和d個子節(jié)點;A2(33)為了節(jié)點之間維持狀態(tài)信息的需要,節(jié)點間采用雙向鏈路;A2(34)新加入一個節(jié)點時,保持網(wǎng)絡原有結構不變;A2(35)設本節(jié)點ID為x,父節(jié)點ID為k,節(jié)點的度為d,一個節(jié)點所擁有子節(jié)點的個數(shù)稱為該節(jié)點的度,則1)k=0 當x<d時2)k=x-1 當x為本層最小值時3)k=(x-d-(x Mod d))/d其它情形A2(4)該對等主機向所述父對等主機發(fā)送一個請求加入分組并完成鏈接動作,使該對等主機成為該父對等主機的一個子對等主機;A2(5)在對應的Radar上注冊自身信息,其中包括一個唯一的ID和對等主機IP、所用端口;A2(6)當系統(tǒng)中所有節(jié)點都處于飽和狀態(tài)時,Radar通過創(chuàng)建新的節(jié)點來拓展網(wǎng)絡當前的結構;A3對等主機退出子模塊,實現(xiàn)對等主機從所述PWD網(wǎng)絡中退出和注銷的動作,實現(xiàn)步驟如下A3(1)該對等主機向Radar注銷其信息;A3(2)該對等主機斷開與其父對等主機的鏈接;
A4對等節(jié)點失效恢復子模塊,實現(xiàn)過程依次含有以下步驟A4(1)原對等主機退出時的消息發(fā)布并挑選繼承人原對等主機通過Radar檢查該節(jié)點上是否所有對等主機都已退出,若還有對等主機存在,則不必恢復;否則便在Radar上找到ID號最大的一個對等主機,以此作為繼承人;A4(2)繼承人的到位原對等主機要向繼承人發(fā)送一個請求恢復節(jié)點的消息,其中包括繼承人的新ID號和繼承人的父對等主機的IP和ID號,也就是原對等主機的相關信息,同時請求繼承人補充到原對等主機所在的節(jié)點頂替原對等主機的位置和ID號,然后原對等主機退出;繼承人得到并解析所述消息后,斷開與自己原父對等主機的連接,建立自己新的ID號和新的父對等主機的IP和ID號并向Radar注冊,成為原對等主機所在節(jié)點的一個對等主機;A4(3)原對等主機的子對等主機恢復鏈接所述子對等主機接到原父對等主機的退出消息后,就間隔地訪問Radar,判斷父對等主機是否已經(jīng)恢復,若一旦恢復,就以恢復后的對等主機作為自己的父對等主機,自動建立連接;A5分組轉發(fā)子模塊,在對等主機之間傳輸分組,實現(xiàn)步驟如下A5(1)把目的主機的ID和消息內(nèi)容封裝;A5(2)根據(jù)步驟A2(3)所述的d分路由機制進行計算,決定下一跳要轉發(fā)的對等主機的ID;A5(3)把分組轉發(fā)給一下跳對等主機,判斷是否已經(jīng)到達目的主機,若已到達,則停止轉發(fā);否則執(zhí)行步驟A5(2);B多節(jié)點協(xié)同文件傳輸模塊,簡稱U2X模塊,所述多節(jié)點協(xié)同文件傳輸是指當用戶把自己的資源提供給系統(tǒng)中其他對等幾點以共享系統(tǒng)中的信息和服務時,每個用戶把自己的最新補丁數(shù)據(jù)制作成元數(shù)據(jù),上傳到Radar上,再以多節(jié)點協(xié)同傳輸?shù)姆绞教峁┙o其他用戶,以達到傳輸速度的快速化,其實現(xiàn)步驟如下B1Radar把用戶上傳的一個大文件分割成許多數(shù)據(jù)碎片,給每個碎片一個標記,以超級文本傳輸協(xié)議HTTP方式傳送給多個用戶,各用戶會自動尋找、隨機下載具有不同標記的數(shù)據(jù)碎片并將其整合成完整的文件,同時,也從Radar那里獲取參與下載的其他對等節(jié)點的包括IP地址、端口號在內(nèi)的信息;B2當用戶間要獲取文件時,便可根據(jù)Radar定位到其他下載對等節(jié)點的信息按照對等協(xié)議進行通信;C掃描模塊,簡稱Scanner模塊,實現(xiàn)開放端口掃描、特定漏洞掃描、進程掃描,根據(jù)掃描到的系統(tǒng)漏洞調(diào)整安全策略,發(fā)現(xiàn)后臺服務或可疑開放端口后對其予以關閉;發(fā)現(xiàn)可能被蠕蟲利用的系統(tǒng)漏洞后通過PNC模塊發(fā)布告警信息,通過所述U2X模塊查找和快速定位補丁信息并快速傳輸所需的補丁文件,所述的掃描模塊包括以下各個子模塊C1端口掃描子模塊,用于發(fā)現(xiàn)系統(tǒng)的安全漏洞和系統(tǒng)目前向外界提供的服務,其實現(xiàn)步驟如下C1(1)建立注冊端口和弱端口數(shù)據(jù)庫,記錄端口號及其對應服務、連接類型;C1(2)選擇掃描端口類型注冊端口、已知漏洞端口,手動設置掃描端口的范圍;C1(3)記錄掃描結果記錄,其中包括開放端口、已注冊端口和弱端口;C2漏洞掃描子模塊,檢查目標對等主機是否存在漏洞,實現(xiàn)步驟如下C2(1)建立漏洞數(shù)據(jù)庫,依次含有以下步驟
C2(11)建立注冊端口數(shù)據(jù)庫,記錄注冊端口號及其對應服務、連接類型;C2(12)選擇被掃描端口的類型;C2(13)記錄掃描結果;C2(2)執(zhí)行如下幾大類系統(tǒng)漏洞掃描■義件傳輸協(xié)議漏洞掃描,簡稱FTP漏洞掃描;■統(tǒng)一字符編碼漏洞掃描,簡稱unicode漏洞掃描;■網(wǎng)絡數(shù)據(jù)查詢腳本緩沖區(qū)溢出漏洞掃描,簡稱idq漏洞掃描;■公共網(wǎng)關接口漏洞掃描,簡稱CGI漏洞掃描;■打印緩沖區(qū)溢出漏洞掃描,簡稱printer漏洞掃描;C2(3)把所掃描端口掃描得到的目標對等主機開啟的端口以及端口上的網(wǎng)絡服務和網(wǎng)絡漏洞掃描子模塊提供的漏洞庫進行匹配,查看是否有符合匹配條件的端口存在,弱匹配成功,則表明目標對等主機存在安全漏洞;C3蠕蟲監(jiān)測子模塊,探測用戶列出的以及系統(tǒng)開放的端口,實時監(jiān)測蠕蟲病毒的入侵端口,實現(xiàn)步驟如下C3(1)通過界面設置需要實時監(jiān)測的系統(tǒng)開放的端口;C3(2)建立蠕蟲病毒數(shù)據(jù)庫,記錄一定量已知病毒及其對應入侵端口號;C3(3)實時監(jiān)測指定端口,對用戶列出的以及系統(tǒng)開放的端口進行實時監(jiān)測以發(fā)現(xiàn)蠕蟲病毒攻擊。
本發(fā)明所提出的P2P蠕蟲防御系統(tǒng),克服了現(xiàn)有蠕蟲病毒防御技術的不足,提供了一種新的蠕蟲病毒綜合防御解決方案,通過構建P2P蠕蟲自防御網(wǎng)絡,可以實現(xiàn)大規(guī)模網(wǎng)絡上自組織、可預警、高效率并可共享補丁文件和預警信息的蠕蟲病毒監(jiān)測防御體系,從而解決現(xiàn)有方法中信息獲取不及時、蠕蟲病毒防御效果差的問題。
圖1.P2P蠕蟲防御系統(tǒng)的拓撲結構圖; 對等主機 雷達圖2.多節(jié)點協(xié)同文件傳輸示意圖;圖3.對等端交互軟件PES總體框架圖;圖4.P2P網(wǎng)絡拓撲構建示意圖;圖5.對等節(jié)點之間的連接示意圖;圖6.鏈路恢復示意圖;圖7.Scanner模塊框架圖;圖8.PNC模塊整體框架圖;圖9.對等主機加入過程流程圖;圖10.對等主機退出過程流程圖;圖11.分組發(fā)送過程數(shù)據(jù)流圖;圖12.Radar實現(xiàn)流程圖;圖13.U2X模塊數(shù)據(jù)傳輸過程中的連接示意圖。
→對等主機之間的連接 對等主機與Radar的連接
具體實施例方式
本發(fā)明的特征在于通過在眾多對等主機上安裝運行對等端交互軟件PES(Peer ExchangeSoftware)搭建起一個高效大規(guī)模的結構優(yōu)化的P2P蠕蟲防御網(wǎng)絡PWN(P2P Worm DefenseNetwork),并采用啟發(fā)式d分路由算法,實現(xiàn)低延遲的蠕蟲病毒告警發(fā)布和快速的分組轉發(fā);通過多節(jié)點協(xié)同文件傳輸機制實現(xiàn)快速的病毒庫和補丁文件傳輸。這些安裝有PES的對等主機和PWN整體上構成了P2P蠕蟲防御系統(tǒng)PWD(P2P Worm Defense System)。
我們首先給出幾個重要概念(1)對等節(jié)點擴展d叉樹拓撲結構中的一個點,記為Peer-node,簡記為node。
(2)對等主機位于某個對等節(jié)點上的一臺主機,記為Peer-host,簡記為host。
這兩個概念之間的關系是一個對等節(jié)點上可以有多個對等主機,一個對等主機只能位于一個對等節(jié)點上;對等節(jié)點的標識隨著網(wǎng)絡規(guī)模的擴大而順序遞增。
(3)對等節(jié)點的飽和度一個對等節(jié)點所擁有的對等主機數(shù)量。
當對等節(jié)點的飽和度等于系統(tǒng)最大設定值時,稱該對等節(jié)點為飽和的;反之,稱為非飽和的。
(4)伙伴同一節(jié)點中的不同主機之間互為伙伴,他們之間以UDP方式通信?;锇橹g要在分組轉發(fā)時互相協(xié)調(diào)同步發(fā)送分組。
P2P蠕蟲防御系統(tǒng)PWD包含有以下步驟步驟1.對等端交互軟件PESPES是運行在端主機上的對等端交互軟件,用于實現(xiàn)與其他對等主機的一切交互動作以及實現(xiàn)安全策略,PES由三大模塊組成(見圖3)■PNC(Peer Network Consture)模塊■U2X模塊■Scanner模塊步驟2.各個模塊的功能■PNC模塊實現(xiàn)Radar的創(chuàng)建和對等主機的加入退出、狀態(tài)維護、分組轉發(fā)功能;■U2X模塊實現(xiàn)多節(jié)點協(xié)同快速傳輸文件功能;■Scanner模塊實現(xiàn)對主機的端口掃描、特定漏洞掃描以及蠕蟲病毒實時監(jiān)測功能。
步驟3.PNC模塊PNC模塊由如下子模塊組成圖8所示為PNC模塊整體框架圖,它描述了該模塊與子主機、父主機以及Radar主機之間的通信關系。
□Radar創(chuàng)建子模塊功能Radar其實也是一臺對等主機,在它上面記錄著所有不飽和對等節(jié)點當前的飽和度、對等主機的IP以及ID等信息,并且以節(jié)點的ID由小到大排序,它不僅是其他對等主機加入PWN時的入口,而且為節(jié)點間的數(shù)據(jù)傳輸提供支持;
實現(xiàn)步驟(1).選取一個性能良好的對等主機來作為Radar,Radar對應到一個眾所周知的域名上,對等主機加入自己PWN時只需要訪問這些眾所周知的域名即可通過動態(tài)域名解析訪問到某個Radar上;(2).系統(tǒng)在最初時刻,Radar由第一個節(jié)點中的對等主機擔任;(3).當某個作為Radar的對等主機想要退出時,它會從與它同在一個節(jié)點中的對等主機里挑一個性能良好的主機,將它上的所有信息傳輸給該對等主機,由它來擔任新的Radar,然后通知域名服務器DNS進行重定向。
□對等主機加入子模塊功能實現(xiàn)對等主機向PWD網(wǎng)絡的加入動作;實現(xiàn)步驟(1)一臺對等主機運行PES,通過訪問一個眾所周知的域名定位到系統(tǒng)中某個Radar上;(2)從該Radar上獲取系統(tǒng)中當前非飽和節(jié)點信息,并根據(jù)當前P2P網(wǎng)絡狀態(tài)獲取自身ID;(3)由d分網(wǎng)絡算法求出其父對等主機ID,并找到其IP;(4)向該父主機發(fā)送一個請求加入分組并完成建連動作,從而主機A成為該父節(jié)點的一個子主機;(5)在Radar上注冊自身信息;(6)當系統(tǒng)中所有節(jié)點都處于飽和狀態(tài)時,需要通過創(chuàng)建新的節(jié)點來拓展網(wǎng)絡當前的結構。
□對等主機退出子模塊功能實現(xiàn)對等主機從PWD網(wǎng)絡中退出和注銷的動作;實現(xiàn)步驟(1).注銷它在Radar上的注冊信息;(2).斷開與其父主機的連接。
□對等節(jié)點失效恢復子模塊功能只要一個節(jié)點上還有一個主機存在,那么這個節(jié)點就是有效的,無需恢復,它還可以進行分組轉發(fā),當一個節(jié)點上所有的主機都退出后,該節(jié)點失效,這時候需要對該節(jié)點進行恢復;實現(xiàn)步驟(1).原主機退出時進行消息發(fā)布并完成繼承主機的挑選;(2).繼承主機頂替該位置;(3).失去連接的子主機重新獲取父主機信息并建立連接。
□分組轉發(fā)子模塊功能在對等主機之間傳遞分組;
實現(xiàn)步驟(1).將目的主機的ID和消息內(nèi)容進行封裝;(2).根據(jù)d分路由算法進行計算,來決定下一跳要轉發(fā)的主機ID;(3).將分組轉發(fā)給下一跳主機并判斷是否到達目的主機,若是則停止轉發(fā),否則繼續(xù)上一步操作。
步驟4.U2X模塊功能實現(xiàn)主機間的快速文件傳輸;實現(xiàn)步驟(1).與發(fā)送分組不同,為了保證傳輸最小延遲,文件傳輸肯定不能用單點之間逐級轉發(fā)的方式。我們所要采用的機制必須保證系統(tǒng)對于速度的需求,我們設計多節(jié)點協(xié)同傳輸機制(U2X機制)來實現(xiàn)文件傳輸;(2).該方法支持文件的斷點續(xù)傳,符合P2P網(wǎng)絡動態(tài)變化的需求。我們利用U2X機制架構起的網(wǎng)絡是一種無嚴格結構的P2P網(wǎng)路,用戶在傳輸文件時實時地建立鏈接,其結構始終在動態(tài)變化中;(3).U2X機制具有優(yōu)化的分布式文件管理機制,它將一個大文件分割成許多碎片,給每一個碎片一個標識,用戶無需到一個固定地點去下載完整的文件;(4).系統(tǒng)自動尋找、隨機下載具有相同標識的文件碎片,并將其加以整合最終形成完整的文件,下載與上傳雙向互動、同時進行;(5).在Radar上發(fā)布一些小的元信息文件(.U2X文件),通常為幾k,所以在這里并不會形成網(wǎng)絡瓶頸。只要有一定的對等主機和一個源文件提供者就能完成下載;數(shù)據(jù)在傳輸時被分片協(xié)同傳輸,數(shù)據(jù)碎片在進行下載的對等主機之間來回傳遞,形成一種多對多的映射關系,而且傳輸速度會隨著參與者的增多而變的越來越快。
步驟5.Scanner模塊功能掃描模塊功能包括開放端口掃描、特定漏洞掃描、進程掃描,根據(jù)掃描到的系統(tǒng)漏洞調(diào)整安全策略,發(fā)現(xiàn)可疑后臺服務或可疑開放端口后對其予以關閉,發(fā)現(xiàn)可能被蠕蟲利用的系統(tǒng)漏洞后通過PNC模塊發(fā)布告警信息,通過U2X模塊查找和快速定位補丁信息并快速傳輸所需的補丁文件;Scanner模塊由如下子模塊組成□端口掃描一個端口就是一個潛在的通信通道,也就可能成為蠕蟲的入侵通道。對目標計算機進行端口掃描,能得到許多有用的信息。通過端口掃描,可以得到許多有用的信息,從而發(fā)現(xiàn)系統(tǒng)的安全漏洞和系統(tǒng)目前向外界提供了哪些服務。
功能實現(xiàn)對主機開發(fā)端口的掃描;實現(xiàn)步驟(1)建立注冊端口和弱端口數(shù)據(jù)庫,記錄端口號及其對應服務、連接類型;
(2)選擇掃描端口類型注冊端口、已知漏洞端口、手動設置掃描端口的范圍;(3)掃描結果記錄,包括開放端口、已注冊端口、弱端口。
□漏洞掃描漏洞掃描主要通過以下兩種方法來檢查目標主機是否存在漏洞在端口掃描后得知目標主機開啟的端口以及端口上的網(wǎng)絡服務,將這些相關信息與網(wǎng)絡漏洞掃描模塊提供的漏洞庫進行匹配,查看是否有滿足匹配條件的漏洞存在;通過模擬蠕蟲的攻擊手法,對目標主機系統(tǒng)進行攻擊性的安全漏洞掃描,如測試弱口令等。若模擬攻擊成功,則表明目標主機系統(tǒng)存在安全漏洞。
功能實現(xiàn)對主機安全漏洞的掃描;實現(xiàn)步驟1.建立漏洞數(shù)據(jù)庫(1).建立注冊端口數(shù)據(jù)庫;記錄注冊端口號及其對應服務、連接類型;(2).建立弱端口字典;記錄端口號、連接類型和可能的攻擊病毒名;(3).掃描結果記錄;開放端口記錄該開放端口所對應的服務和可能收到的攻擊已注冊端口記錄該注冊端口所對應的服務弱端口記錄該弱端口可能收到的攻擊類型2.實現(xiàn)如下幾大類系統(tǒng)漏洞掃描■文件傳輸協(xié)議漏洞掃描,簡稱FTP漏洞掃描;■統(tǒng)一字符編碼漏洞掃描,簡稱unicode漏洞掃描;■網(wǎng)絡數(shù)據(jù)查詢腳本緩沖區(qū)溢出漏洞掃描,簡稱idq漏洞掃描;■公共網(wǎng)關接口漏洞掃描,簡稱CGI漏洞掃描;■打印緩沖區(qū)溢出漏洞掃描,簡稱printer漏洞掃描;□蠕蟲監(jiān)測功能探測用戶列出的以及系統(tǒng)開放的端口,實時監(jiān)測蠕蟲病毒的入侵端口;實現(xiàn)步驟(1).建立蠕蟲病毒數(shù)據(jù)庫,記錄一定量已知病毒及其對應入侵端口號;(2).實時監(jiān)測指定端口,對用戶列出的以及系統(tǒng)開放的端口進行實時監(jiān)測以發(fā)現(xiàn)蠕蟲病毒攻擊;圖1是P2P蠕蟲防御系統(tǒng)PWD的拓撲結構圖,圖3是對等端軟件PES的總體框架圖,整個PWD網(wǎng)絡由兩個層面構成d-分網(wǎng)絡和U2X網(wǎng)絡。d-分網(wǎng)絡是一個穩(wěn)定的擴展d叉樹網(wǎng)絡,該網(wǎng)絡上的路由算法采用啟發(fā)式路由算法-d分法,U2X網(wǎng)絡是一個結構動態(tài)變化的多節(jié)點協(xié)同文件傳輸網(wǎng)絡。
■PNC模塊的實現(xiàn)PNC模塊實現(xiàn)主機加入和退出對等網(wǎng)絡的全部動作,包括對等節(jié)點發(fā)現(xiàn)、主機加入、退出、鄰居狀態(tài)維護、分組的低延遲轉發(fā)等。該模塊主要負責與PWN上其他對等節(jié)點的通信,并通過本模塊來搭建起整個對等網(wǎng)絡,同時PNC模塊還要和U2X模塊進行通信,以幫助其轉發(fā)查詢分組。
1.Radar創(chuàng)建子模塊如圖12所示為Radar實現(xiàn)流程圖,從圖中可見它主要包括RawServer、HTTPHandler、Radar這3個類和Peer列表。
Radar是PWD系統(tǒng)中必需的角色,一個Peer在下載開始以及下載進行的過程中,要不停的與Radar進行通信,以報告自己的信息,并獲取其它下載Peer的信息。它的過程是這樣的(1)Peer向Radar發(fā)一個HTTP的GET請求,并把它自己的信息放在GET的參數(shù)中;其內(nèi)容為一個唯一的id、需要傳輸?shù)奈募p、所用端口;(2)Radar對所有下載者的信息進行維護,當它收到一個請求后,首先把對方的信息記錄下來(如果已經(jīng)有記錄,那么就檢查是否需要更新),然后將一部分(并非全部,根據(jù)設置的參數(shù)已經(jīng)下載者的請求)參與下載同一個文件(一個Radar可能同時維護多個文件的下載)的下載者的信息返回給對方;(3)Peer在收到Radar的響應后,就能獲取其它下載Peer的信息,那么它就可以根據(jù)這些信息,與其它下載Peer建立連接,從它們那里下載文件片斷。
主要函數(shù)為r.bind(config[′port′],config[′bind′],True)r.listen_forever(HTTPHandler(t.get,config[min_time_between_log_flushes]))2.對等主機加入子模塊如圖9所示為對等主機加入過程的流程圖,對等主機的標識為IDofNode_IDofHost系統(tǒng)中的一個對等主機標識由兩部分組成所在節(jié)點ID和主機ID三個主要函數(shù)procedure TFormLogin.FormCreate(SenderTObject);IdHTTP.Get(′url′,MemStr);ServerList.LoadFromStream(MemStr);(1)主機列表HostListIP IDofNode_IDofHost10.255.39.1=0_010.255.39.2=0_110.255.39.3=1_010.255.39.4=1_1
10.255.39.5=2_010.255.39.8=3_0出于簡化,我們只考慮一個節(jié)點上有2個對等主機的情況,其他情況類似。
節(jié)點號 主機號 主機號0 0_0 0_11 1_0 1_12 2_0 2_13 3_0 3_1……n n_0 n_1(2)主機A加入流程(2.1)當前系統(tǒng)中存在非飽和節(jié)點時A對文件HostList掃描,令A的主機號是MyID,首先掃描到0_0,再掃下一行,如果是0_1,則達到飽和度2,說明節(jié)點0飽和;再掃下如果是1_0,再掃下一行,如果是1_1,則說明節(jié)點1飽和,否則說明節(jié)點1不飽和,那么此時可以決定A的ID為1_1,停止掃描;如果第三行先掃到的是1_1,第四行就成了2_0,而缺少1_0,則此時可以決定A的ID為1_0,停止掃描;(2.2)當前系統(tǒng)中所有節(jié)點都飽和時如果掃描完所有行發(fā)現(xiàn)所有節(jié)點都飽和,那么,A的ID可以決定為n+1_0,n為當前系統(tǒng)中的節(jié)點數(shù)(此時的n不包括A新創(chuàng)建的那個節(jié)點)。需要注意的是要保證上述加入流程能成功,前提是必須保證文件HostList的有序性,即文件HostList中的對等主機ID號一定要是從小到大順序排列的。因為有些主機會隨時退出,又隨時加入,所以在一個主機加入時一定要將其按照ID有小到大的順序插入到自己恰當?shù)奈恢谩?br>
(2.3)當A查到自己的ID為m_1以后,就可以根據(jù)我們的算法求出其父節(jié)點ID,比如j那么,其父主機ID就是j_1。同樣,若A的ID是m_0,則其父主機ID為j_0;(2.4)當一臺主機退出系統(tǒng)時,就需要將其記錄從文件HostList中刪除。
(2.5)由于我們這里只實現(xiàn)的是2主機情況,所以經(jīng)過分析求MyID時一共有4種可能的插入情況1)i_0后面緊接著是i+1_0,這時本主機的ID應該為i_12)i_1后面緊接著是i+1_1,這時本主機的ID應該是i+1_03)HostList文件中第一行,即系統(tǒng)中第一個主機就是0_1,這時本主機的ID應該是0_0能這樣做的前提是我們考慮的系統(tǒng)中所有節(jié)點都是有效的,即系統(tǒng)中的任何一個節(jié)點上至少存在1臺主機,當然,當某個節(jié)點失效時我們還有節(jié)點恢復機制來保證;4)HostList文件中最后一行,即系統(tǒng)中最后一個主機若是n_0時,這時本主機的ID應該是n_1
上面這四條規(guī)則是從上到下依次過濾的,只要滿足其中一條就可以退出。圖4所示為隨著對等節(jié)點的增加PWD網(wǎng)絡的拓撲結構的擴展情況。
3.對等主機退出子模塊如圖10所示為對等主機退出過程流程圖,從圖中可見退出過程分為從雷達上注銷、斷開與父主機連接以及通知子等對主機三個步驟。
(1)一個host正常退出時,首先向Radar注銷其信息;(2)斷開與其父節(jié)點主機的連接,當該主機所處的對等節(jié)點上還有其他主機時,此時不影響父子節(jié)點之間的通信;當該主機所處的對等節(jié)點上沒有其他主機時,該節(jié)點失效,啟動節(jié)點恢復機制,若該節(jié)點為葉子節(jié)點則無需啟動節(jié)點恢復機制;(3)發(fā)送一個通告分組給其伙伴主機;三個主要函數(shù)為IdHTTP.Post(′url′,LogoutList,Response);Server.CreateObject(″Scripting.FileSystemObject″)Request.Form(UserIP)4.對等節(jié)點恢復子模塊(1)只要當一個節(jié)點上還有一個主機存在,那么這個節(jié)點就是有效的,無需恢復,它還可以進行分組的轉發(fā),當一個節(jié)點上所有的主機都退出后,該節(jié)點失效,這時候需要對該節(jié)點進行恢復;(2)為了減小負載和減小復雜度,我們首先考慮從葉子節(jié)點中抽調(diào)出主機來恢復失效節(jié)點。其一、葉子節(jié)點的數(shù)量很大,便于挑選;其二、抽調(diào)葉子節(jié)點所帶來的通信負載最小。整個節(jié)點恢復過程分為三步原主機退出時的消息發(fā)布和繼承人的挑選;繼承人的到位;子主機重新恢復連接;(3)一個主機A,假設其ID是d_1,在退出時首先要去Radar上進行判斷,看它所在節(jié)點d會不會因為它的退出而變得失效,如果不會失效則直接退出即可;(3.1)首先在Radar上查找d_0看它是否存在,若d_0存在,則不用恢復該節(jié)點。
(3.2)若d_0不存在,則在Radar上找到最后一行(即系統(tǒng)中的最后一個主機),并獲取其ID號;再計算出其所處的層數(shù)a,同時計算出d_1所處的層數(shù)b,若a=b,則無需恢復節(jié)點d;若a>b,則需要恢復節(jié)點d。
(3.3)在恢復節(jié)點d時,主機A無需給其所有子主機發(fā)送退出消息,因為一旦主機A退出,其所有子主機都會自動下線;(3.4)A首先需要從Radar上找出最后一個主機B(也就是ID號最大的一個),那么它一定是一個葉子節(jié)點,就以B作為A的繼承人;(3.5)然后A在退出之前要向B發(fā)送一個請求恢復節(jié)點消息M(該消息M中包括B的新ID號d_1和B的父主機IP和ID號s_1,這些信息其實都是原來A的),消息M請求B補充到節(jié)點d中來頂替A的位置和ID;顯然這時需要給B重新分配一個ID就是d_1,然后主機A就可以退出了;(3.6)B收到消息M以后,首先解析消息M,從中獲取到B的新ID號d_1和B的父主機IP和ID號s_1這些信息,然后退出(即斷開其與原父主機的連接),再B以d_1為自己的ID號,以s_1為父主機重新建立自動完成加入過程,并將自己的IP和ID號d_1注冊進Radar,到這里主機B的工作就完成了,B這時也就成為了節(jié)點d的一個主機d_1;(3.7)接下來原來以主機A作為父主機的那些主機在接到A的退出通知消息開始就每隔一段時間去訪問Radar,看他們的父主機d_1是否已經(jīng)恢復,一旦檢測到d_1上線,這些主機就重新以d_1為父主機自動建立連接,到這里整個節(jié)點恢復過程結束。
5.分組轉發(fā)子模塊圖11所示為分組發(fā)送過程數(shù)據(jù)流圖,分組轉發(fā)機制我們采用d分路由算法進行分組的低延時轉發(fā)。分組轉發(fā)支持兩種方式(1)對等節(jié)點A中的對等主機i向?qū)Φ裙?jié)點B中的對等主機j發(fā)送分組;(2)對等節(jié)點A中的對等主機i向?qū)Φ裙?jié)點B中的所有對等主機發(fā)送分組。
這只需要在接收端進行ID判斷即可實現(xiàn)。源主機根據(jù)目的節(jié)點主機的ID,利用d分路由算法計算出下一跳轉發(fā)的節(jié)點ID,并將分組轉發(fā)給該鄰居節(jié)點主機。
為了增強系統(tǒng)的魯棒性,我們采用多臺對等主機支撐一個對等節(jié)點的機制,所以同一個節(jié)點中的多臺主機要同時協(xié)調(diào)動作,才能保證節(jié)點的有效性,兩個對等節(jié)點A和B相連的充要條件是存在一條主機a(主機a屬于節(jié)點A)到主機b(主機b屬于節(jié)點B)的雙向鏈路。在轉發(fā)過程中一個節(jié)點中的所有主機都要同時參與轉發(fā),這幾臺主機在對外發(fā)送分組時要進行同步發(fā)送。分組轉發(fā)時數(shù)據(jù)包格式SourceHostID#ObjectHostID#StateValue#WLayer#NextHopID#PayLoad參數(shù)說明SourceHostID源對等主機的IDObjectHostID目標對等主機的IDStateValue當前狀態(tài)值 WLayer轉折點所處層數(shù)NextHopID下一跳的ID PayLoad凈載荷信息分組■U2X模塊的實現(xiàn)(1)多節(jié)點協(xié)同文件傳輸機制圖2為多節(jié)點協(xié)同文件傳輸機制示意圖,圖13為U2X子模塊數(shù)據(jù)傳輸過程中的連接示意圖。在PWD系統(tǒng)中,每個節(jié)點都具有相同的能力,負有相同的責任。它們將自己的資源提供給系統(tǒng)中其他對等節(jié)點,同時可以共享系統(tǒng)中的信息和服務。每個用戶可以將自己的最新補丁數(shù)據(jù)做成元文件,上傳到Radar上,提供給需要的用戶來下載,下載時采用多節(jié)點協(xié)同傳輸機制,進行多點同時協(xié)助傳輸?shù)姆绞?,以達到傳輸速度的快速化。
與消息發(fā)送不同,為了保證傳輸最小延遲,文件傳輸肯定不能用單點之間逐級轉發(fā)的方式。我們采用多節(jié)點協(xié)同傳輸機制來實現(xiàn)多點同時傳送,并支持文件的斷點續(xù)傳,符合P2P網(wǎng)絡動態(tài)變化的需求。它將一個大文件分割成許多碎片,給每一個碎片分配一個標識,用戶無需到一個固定地點下載完整的文件,系統(tǒng)會自動尋找、隨機下載具有不同標識的文件碎片,并將其加以整合最終形成完整的文件。用戶的下載速度取決于其上傳速度,上傳速度越快,就能獲得越高的下載速度,下載與上傳雙向互動、同時進行。
該機制中需要部分對等節(jié)點來擔任Radar的角色,Radar上發(fā)布一些小的元信息文件。數(shù)據(jù)在傳輸時被分片傳輸,數(shù)據(jù)碎片在進行下載的node之間來回傳遞,形成一種多對多的映射關系,而且傳輸速度會隨著參與者的增多而變得越來越快。
在整個傳輸過程中,Peer端不斷與Radar通信,報告自己的狀態(tài),同時也從Radar那里獲取當前參與下載的其它peers的信息(ip地址、端口等)。Peer端與Radar之間采用HTTP協(xié)議通信,Peer端把狀態(tài)信息放在HTTP協(xié)議的GET命令的參數(shù)中傳遞給Radar,Radar則把peers列表等信息放在PUT命令的參數(shù)中傳遞給Peer端。
Peer端要每隔一段時間,就去連接Radar一次,它是以一個單獨的線程執(zhí)行的。這個線程在接受到Radar的響應數(shù)據(jù)后,交給主線程來進行分析。主程序從響應數(shù)據(jù)中,獲得peers列表。然后調(diào)用Encoder∷start_connection()挨個與這些peers嘗試建立連接。通過與Radar的通信,Peer端獲得了參與下載的其它peers的列表。有了這些peers的信息,客戶端就可以主動向它們發(fā)起連接,為進一步從它們那里獲取所需要的文件片斷做好準備。
同時,每個Peer端在啟動以后,都會監(jiān)聽某個端口,用于接受其它peers的連接請求。Peer端在接受外來的連接請求之后,就會產(chǎn)生一個新的連接,稱之為“被動連接”,因為連接的發(fā)起方是其它peer。
無論是被動連接,還是主動連接,一旦連接建立之后,雙方就要進行對等協(xié)議的握手。握手成功之后,雙方才可以通過這個連接互相傳遞消息了。
(2)Radar端U2X Peer端與Radar端之間,通過HTTP協(xié)議進行通信,而U2X Peer端之間以對等協(xié)議進行通信。Radar端的職責是搜集Peer端信息,并幫助Peer端相互發(fā)現(xiàn)對方,從而使得Peer端之間能夠相互建立連接,進而互相能傳輸所需的文件碎片。
Radar端的實現(xiàn),首先是通過RawServer類來實現(xiàn)網(wǎng)絡服務器的功能,然后由HTTPHandler類來完成對協(xié)議數(shù)據(jù)的第一層分析,然后把URL和HTTP消息頭進一步交給Radar類來進行第二層分析,并把分析的結果按照HTTP協(xié)議的格式封裝以后,發(fā)給Peer端。
Radar類對Radar HTTP協(xié)議做第二層分析,它根據(jù)第一層分析后的URL以及HTTP消息頭,進一步得到客戶端的信息,然后綜合當前所有傳輸Peer的情況,生成一個列表,這個列表記錄了傳輸同一個文件的其它Peer的信息,并把這個列表交給HTTPHandler類,由它進一步返回給Peer端。
(3)Peer端Peer端的核心類就是RawServer,這個類在Radar端中已分析過它的作用。通過調(diào)用它的listen_forever()函數(shù),Peer端就進入了一個循環(huán)之中。此后,所有的下載、上傳、文件存儲以及其它工作都在循環(huán)之中完成。
在進入循環(huán)之前,需要調(diào)用RawServer∷bind()函數(shù),Peer端會選擇一個可用的端口,然后通過監(jiān)聽這個端口,從而可以接受其它Peer端的連接請求(也就是對等連接)。從它的循環(huán)處理邏輯、監(jiān)聽端口的處理可知,這顯然就是一個典型的網(wǎng)絡服務器的表現(xiàn)。所以,Peer端同時也是一個服務器。一旦在監(jiān)聽端口上有某個Peer發(fā)來連接請求,Peer端會創(chuàng)建一個新的端口,這個端口用來與請求者建立連接;有幾個peer請求連接,就會創(chuàng)建幾個端口,可以說這是一些“被動端口”。
■Scanner模塊的實現(xiàn)圖7是PWD系統(tǒng)中的Scanner子模塊的結構圖,它由參數(shù)設置子模塊、基本信息探測子模塊、端口掃描子模塊、漏洞掃描子模塊以及蠕蟲監(jiān)測子模塊等組成。
(1)端口掃描全連接掃描是TCP端口掃描的基礎,現(xiàn)有的全連接掃描有TCP connect()掃描和TCP反向ident掃描等。我們這里采用TCP connect()掃描,TCP connect()掃描的實現(xiàn)原理為掃描主機通過TCP/IP協(xié)議的三次握手與目標主機的指定端口建立一次完整的連接。連接由系統(tǒng)調(diào)用connect開始。如果端口開放,則連接將建立成功;否則,若返回-1則表示端口關閉。建立連接成功響應掃描主機的SYN/ACK連接請求,這一響應表明目標端口處于監(jiān)聽(打開)的狀態(tài)。如果目標端口處于關閉狀態(tài),則目標主機會向掃描主機發(fā)送RST的響應。
1.1.首先定義需要掃描的端口;1.2.創(chuàng)建Winsocks;1.3.獲取開始端口、結束端口以及開始掃描的時間;1.4.則進入循環(huán),設置RemoteHost、RemotePort、LocaIPort;1.5.利用操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用,與每一個目標計算機的端口進行連接;1.6.如果端口處于偵聽狀態(tài)(tcpClient(lngCurrentWinsock).State=sckConnected),那么connect()就能成功,檢索漏洞數(shù)據(jù)庫并進行匹配,在log文件中記錄漏洞端口;1.7.否則(tcpClient(lngCurrentWinsock).State=sckError),這個端口不能用,既沒有提供服務。
TCP的三次握手連接程序Client--------Syn------->ServerClient<-----Syn/Ack------ServerClient-------Ack-------->ServerTCP connect()掃描的一個最大的優(yōu)點是,不需要任何權限。系統(tǒng)中的任何用戶都有權利使用這個調(diào)用。另一個好處就是速度快。如果對每個目標端口以線性的方式,使用單獨的connect()調(diào)用,那么將會花費相當長的時間,我們可以通過同時打開多個套接字,從而加速掃描。使用非阻塞I/O允許設置一個低的時間用盡周期,同時觀察多個sockt。
(2)漏洞掃描整個掃描子模塊的工作流程是用戶通過控制平臺發(fā)出了掃描命令之后,控制平臺即向掃描模塊發(fā)出相應的掃描請求,掃描模塊在接到請求之后立即啟動相應的子功能模塊,對被掃描主機進行掃描。通過對從被掃描主機返回的信息進行分析判斷,掃描模塊將掃描結果返回給控制平臺,再由控制平臺最終呈現(xiàn)給用戶。
掃描模塊在工作時,首先進行初始化,在初始化階段,主要是讀取所需的參數(shù)。除了讀取參數(shù)外,還要建立一些文件以供以后使用。初始化后,建立非阻塞socket并連接,然后根據(jù)得到的相關端口及對應的服務,來調(diào)用相應的漏洞掃描子模塊,包括CGI漏洞掃描子模塊、unicode漏洞掃描子模塊、FTP漏洞掃描子模塊和printer漏洞掃描子模塊和idq漏洞掃描子模塊。
漏洞形成的原因形形色色、不一而足,在我們的設計中,主要包含以下類型的漏洞CGI腳本漏洞、FTP漏洞、unicode漏洞、printer漏洞和idq漏洞,下面我們簡單介紹CGI腳本漏洞、unicode漏洞以及idq漏洞。
(2.1)CGI腳本漏洞CGI腳本是實現(xiàn)Web交互功能的重要手段。Shell腳本、Perl程序和C可執(zhí)行程序是CGI腳本最常采用的形式。很多CGI腳本都存在漏洞,CGI漏洞的危害主要有三種1.緩沖區(qū)溢出攻擊2.數(shù)據(jù)驗證型溢出攻擊3.信息泄漏(2.2)unicode漏洞IIS 4.0和IIS 5.0在Unicode字符解碼的實現(xiàn)中存在一個安全漏洞,導致用戶可以遠程通過IIS執(zhí)行任意命令。當IIS打開文件時,如果該文件名包含unicode字符,它會對其進行解碼,如果用戶提供一些特殊的編碼,將導致IIS錯誤的打開或者執(zhí)行某些web根目錄以外的文件。
對于IIS 5.0/4.0中文版,當IIS收到的URL請求的文件名中包含一個特殊的編碼例如″%c1%hh″或者″%c0%hh″,它會首先將其解碼變成0xc10xhh,然后嘗試打開這個文件,Windows系統(tǒng)認為0xc10xhh可能是unicode編碼,因此它會首先將其解碼,因此,利用這種編碼,可以構造很多字符,攻擊者可以利用這個漏洞來繞過IIS的路徑檢查,去執(zhí)行或者打開任意的文件。
(2.3)idq漏洞idq.dll緩沖區(qū)溢出漏洞是近期最新的漏洞之一,破壞性極強的蠕蟲病毒紅色代碼,及其變種病毒就是利用此漏洞攻擊WindowsNT主機的。微軟發(fā)布安全公告,指出其Index Server和Indexing Service存在漏洞。
作為安裝過程的一部分,IIS安裝了幾個ISAPI擴展。其中的idq.dll存在問題,它是Index Server的一個組件,對管理員腳本(.ida文件)和INTERNET數(shù)據(jù)查詢(.idq文件)提供支持。但是,idq.dll在一段處理URL輸入的代碼中存在一個未經(jīng)檢查的緩沖區(qū)。攻擊者利用此漏洞能導致受影響服務器產(chǎn)生緩沖區(qū)溢出,從而執(zhí)行自己提供的代碼。而更為嚴重的是,idq.dll是以SYSTEM身份運行的,攻擊者成功利用此漏洞后能取得系統(tǒng)管理員權限。
(3)蠕蟲監(jiān)測3.1.通過界面設置需要實時監(jiān)測的對外沒有開放的端口3.2.讀取數(shù)據(jù)庫,變量初始化3.3.開始監(jiān)測進程3.4.創(chuàng)建Scoket數(shù)組用于被監(jiān)測的端口3.5.標志復位,設置被監(jiān)測端口,如果scoket初始化成功則計數(shù)器加1主要函數(shù)1.StartWatch()主監(jiān)測進程,結合數(shù)據(jù)庫對被設置端口進行監(jiān)測2.wskPort_ConnectionRequest(Index As Integer,ByVal requestID As Long)當有連接企圖訪問被監(jiān)測端口時,相應的socket監(jiān)測到此事件,并報告該端口受到攻擊。
3.AttackDetected(intIndex As Integer)當發(fā)現(xiàn)蠕蟲攻擊時,彈出告警對話框并報告攻擊源和被攻擊端口的詳細信息由此可見,本發(fā)明達到了預期目的。
權利要求
1.P2P蠕蟲防御系統(tǒng),其特征在于在P2P網(wǎng)絡中各對等節(jié)點的眾多對等主機上安裝對等端交互軟件,簡稱PES,從而搭建起一個P2P蠕蟲防御網(wǎng)絡,簡稱PWN,從而使這些安裝了所述PES的對等主機和所述PWN在整體上構成了所述P2P蠕蟲防御系統(tǒng),所述的PES含有A對等網(wǎng)絡構建模塊,簡稱PNC模塊,實現(xiàn)Radar節(jié)點的創(chuàng)建和對等主機的加入退出、狀態(tài)維護、分組轉發(fā)功能,該PNC模塊由如下子模塊組成A1Radar創(chuàng)建子模塊,所述Radar是指某個對等節(jié)點上的一臺對等主機;該子模塊含有所有不飽和對等節(jié)點當前的飽和度、對等主機IP以及ID在內(nèi)的信息,并以對等節(jié)點的ID號從小到大排序;所述對等節(jié)點的飽和度是指一個對等節(jié)點所擁有的對等主機數(shù)量,當該數(shù)量達到系統(tǒng)最大設定值時,稱該對等節(jié)點為飽和的,或處于飽和狀態(tài),否則為不飽和的,處于非飽和狀態(tài);該子模塊不僅是其他對等主機加入所述PWN時的入口,而且為對等節(jié)點的數(shù)據(jù)傳輸提供支持,實現(xiàn)步驟如下A1(1)選取一個性能良好的對等主機作為Radar,而Radar又對應到一個眾所周知的域名上;但系統(tǒng)在最初時刻的Radar由第一個對等節(jié)點中的某對等主機擔任;A1(2)當某個作為Radar的對等主機想要退出時會從與它同在一個對等節(jié)點中的對等主機里挑一個性能良好的主機,把自己的所有信息傳輸給該挑選出的主機,然后通知域名服務器DNS進行重定向;A2對等主機加入子模塊,實現(xiàn)對等主機向所述PWD網(wǎng)絡的加入動作,實現(xiàn)方法如下A2(1)所述對等主機運行PES軟件,通過訪問一個眾所周知的域名定位到系統(tǒng)中的某個Radar上;A2(2)該對等主機從該Radar上獲取系統(tǒng)中當前非飽和節(jié)點信息并根據(jù)當前P2P網(wǎng)絡狀態(tài)獲取自身ID;A2(3)由d分路由算法求出其父對等主機ID,并從Radar上獲得其IP,所述d分路由算法依次含有以下步驟A2(31)對等節(jié)點以自然數(shù)為標識,首先從0節(jié)點開始;A2(32)任何一個對等節(jié)點只允許有一個父節(jié)點和d個子節(jié)點;A2(33)為了對等節(jié)點之間維持狀態(tài)信息的需要,對等節(jié)點間采用雙向鏈路;A2(34)新加入一個對等節(jié)點時,保持網(wǎng)絡原有結構不變;A2(35)設本對等節(jié)點ID為x,父對等節(jié)點ID為k,對等節(jié)點的度為d,一個對等節(jié)點所擁有子節(jié)點的個數(shù)稱為該對等節(jié)點的度,則1)k=0當x<d時;2)k=x-1 當x為本層最小值時;3)k=(x-d-(x Mod d))/d其它情形;A2(4)該對等主機向所述父對等主機發(fā)送一個請求加入分組并完成鏈接動作,使該對等主機成為該父對等主機的一個子對等主機;A2(5)在對應的Radar上注冊自身信息,其中包括一個唯一的ID和對等主機IP、所用端口;A2(6)當系統(tǒng)中所有對等節(jié)點都處于飽和狀態(tài)時,Radar通過創(chuàng)建新的對等節(jié)點來拓展網(wǎng)絡當前的結構;A3對等主機退出子模塊,實現(xiàn)對等主機從所述PWD網(wǎng)絡中退出和注銷的動作,實現(xiàn)步驟如下A3(1)該對等主機向Radar注銷其信息;A3(2)該對等主機斷開與其父對等主機的鏈接;A4對等節(jié)點恢復子模塊,實現(xiàn)過程依次含有以下步驟A4(1)原對等主機退出時的消息發(fā)布并挑選繼承人原對等主機通過Radar檢查該對等節(jié)點上是否所有對等主機都已退出,若還有對等主機存在,則不必恢復;否則便在Radar上找到ID號最大的一個對等主機,以此作為繼承人;A4(2)繼承人的到位原對等主機要向繼承人發(fā)送一個請求恢復對等節(jié)點的消息,其中包括繼承人的新ID號和繼承人的父對等主機的IP和ID號,也就是原對等主機的相關信息,同時請求繼承人補充到原對等主機所在的對等節(jié)點頂替原對等主機的位置和ID號,然后原對等主機退出;繼承人得到并解析所述消息后,斷開與自己原父對等主機的連接,建立自己新的ID號和新的父對等主機的IP和ID號并向Radar注冊,成為原對等主機所在對等節(jié)點的一個對等主機;A4(3)原對等主機的子對等主機恢復鏈接所述子對等主機接到原父對等主機的退出消息后,就間隔地訪問Radar,判斷父對等主機是否已經(jīng)恢復,若一旦恢復,就以恢復后的對等主機作為自己的父對等主機,自動建立連接;A5分組轉發(fā)子模塊,在對等主機之間傳輸分組,實現(xiàn)步驟如下A5(1)把目的主機的ID和消息內(nèi)容及相關信息進行封裝;A5(2)根據(jù)步驟A2(3)所述的d分路由機制進行計算,決定下一跳要轉發(fā)的對等主機的ID;A5(3)把分組轉發(fā)給一下跳對等主機,判斷是否已經(jīng)到達目的主機,若已到達,則停止轉發(fā);否則執(zhí)行步驟A5(2);B多節(jié)點協(xié)同文件傳輸模塊,簡稱U2X模塊,所述多節(jié)點協(xié)同文件傳輸是指當用戶把自己的資源提供給系統(tǒng)中其他對等幾點以共享系統(tǒng)中的信息和服務時,每個用戶把自己的最新補丁數(shù)據(jù)制作成元數(shù)據(jù),上傳到Radar上,再以多節(jié)點協(xié)同傳輸?shù)姆绞教峁┙o其他用戶,以達到傳輸速度的快速化,其實現(xiàn)步驟如下B1Radar把用戶上傳的一個大文件分割成許多數(shù)據(jù)碎片,給每個碎片一個標記,以超級文本傳輸協(xié)議HTTP方式傳送給多個用戶,各用戶會自動尋找、隨機下載具有不同標記的數(shù)據(jù)碎片并將其整合成完整的文件,同時,也從Radar那里獲取參與下載的其他對等節(jié)點的包括IP地址、端口號在內(nèi)的信息;B2當用戶間要獲取文件時,便可根據(jù)Radar定位到其他下載對等節(jié)點的信息按照對等協(xié)議進行通信;C掃描模塊,簡稱Scanner模塊,實現(xiàn)開放端口掃描、特定漏洞掃描、進程掃描,根據(jù)掃描到的系統(tǒng)漏洞調(diào)整安全策略,發(fā)現(xiàn)后臺服務或可疑開放端口后對其予以關閉;發(fā)現(xiàn)可能被蠕蟲利用的系統(tǒng)漏洞后通過PNC模塊發(fā)布告警信息,通過所述U2X模塊查找和快速定位補丁信息并快速傳輸所需的補丁文件,所述的掃描模塊包括以下各個子模塊C1端口掃描子模塊,用于發(fā)現(xiàn)系統(tǒng)的安全漏洞和系統(tǒng)目前向外界提供的服務,其實現(xiàn)步驟如下C1(1)建立注冊端口和弱端口數(shù)據(jù)庫,記錄端口號及其對應服務、連接類型;C1(2)選擇掃描端口類型注冊端口、已知漏洞端口,手動設置掃描端口的范圍;C1(3)記錄掃描結果記錄,其中包括開放端口、已注冊端口和弱端口;C2漏洞掃描子模塊,檢查目標對等主機是否存在漏洞,實現(xiàn)步驟如下C2(1)建立漏洞數(shù)據(jù)庫,依次含有以下步驟C2(11)建立注冊端口數(shù)據(jù)庫,記錄注冊端口號及其對應服務、連接類型;C2(12)選擇被掃描端口的類型;C2(13)記錄掃描結果;C2(2)執(zhí)行如下幾大類系統(tǒng)漏洞掃描■文件傳輸協(xié)議漏洞掃描,簡稱FTP漏洞掃描;■統(tǒng)一字符編碼漏洞掃描,簡稱unicode漏洞掃描;■網(wǎng)絡數(shù)據(jù)查詢腳本緩沖區(qū)溢出漏洞掃描,簡稱idq漏洞掃描;■公共網(wǎng)關接口漏洞掃描,簡稱CGI漏洞掃描;■打印緩沖區(qū)溢出漏洞掃描,簡稱printer漏洞掃描;C2(3)把所掃描端口掃描得到的目標對等主機開啟的端口以及端口上的網(wǎng)絡服務和網(wǎng)絡漏洞掃描子模塊提供的漏洞庫進行匹配,查看是否有符合匹配條件的端口存在,弱匹配成功,則表明目標對等主機存在安全漏洞;C3蠕蟲監(jiān)測子模塊,探測用戶列出的以及系統(tǒng)開放的端口,實時監(jiān)測蠕蟲病毒的入侵端口,實現(xiàn)步驟如下C3(1)通過界面設置需要實時監(jiān)測的系統(tǒng)開放的端口;C3(2)建立蠕蟲病毒數(shù)據(jù)庫,記錄一定量已知病毒及其對應入侵端口號;C3(3)實時監(jiān)測指定端口,對用戶列出的以及系統(tǒng)開放的端口進行實時監(jiān)測以發(fā)現(xiàn)蠕蟲病毒攻擊。
全文摘要
P2P蠕蟲防御系統(tǒng)涉及對等網(wǎng)絡的蠕蟲防御技術領域,其特征在于對等主機通過安裝運行含有對等端交互軟件、多節(jié)點協(xié)同快速文件傳輸軟件和病毒掃描軟件在內(nèi)的對等交互軟件搭建起一個P2P蠕蟲防御網(wǎng)絡,實現(xiàn)對本地主機的安全漏洞掃描和病毒監(jiān)測,實現(xiàn)自組織的P2P蠕蟲防御網(wǎng)絡的高效信息共享,通過d分路由機制實現(xiàn)在發(fā)現(xiàn)蠕蟲病毒時的快速發(fā)布預警信息,以及通過多節(jié)點協(xié)同數(shù)據(jù)傳輸機制實現(xiàn)對等主機在受到蠕蟲病毒攻擊時能快速獲取補丁文件。本發(fā)明實現(xiàn)了大規(guī)模網(wǎng)絡上自組織、可預警、高效率并可共享補丁文件和預警信息的功能,解決了現(xiàn)有方法中信息獲取不及時、蠕蟲病毒防御效果差的問題。
文檔編號H04L29/06GK1710906SQ20051001212
公開日2005年12月21日 申請日期2005年7月8日 優(yōu)先權日2005年7月8日
發(fā)明者徐恪, 丁強, 崔勇 申請人:清華大學