摘 要:本文提出了動態(tài)分層P2P網(wǎng)絡(luò)木馬技術(shù)并探討了它的通信負(fù)載均衡性。
關(guān)鍵詞:動態(tài)分層P2P網(wǎng)絡(luò);木馬;通信負(fù)載
1 P2P網(wǎng)絡(luò)概述
1.1 P2P簡介
P2P(peer-to-peer)是一種對等網(wǎng)絡(luò)計算技術(shù),它利用客戶端的處理能力,實現(xiàn)客戶端的點到點通信。在P2P網(wǎng)絡(luò)環(huán)境中,成千上萬臺彼此連接的計算機(jī)都處于對等地位,整個網(wǎng)絡(luò)一般不依賴于專用的集中服務(wù)器。網(wǎng)絡(luò)中的每一臺計算機(jī)既能充當(dāng)網(wǎng)絡(luò)服務(wù)的請求者,又能對其他計算機(jī)的請求做出響應(yīng),提供資源與服務(wù)。
由于能夠極大緩解傳統(tǒng)架構(gòu)中服務(wù)器端的壓力過大、單一失效點等問題,又能充分利用終端的豐富資源,所以P2P技術(shù)被廣泛應(yīng)用于計算機(jī)網(wǎng)絡(luò)的各個應(yīng)用領(lǐng)域,如分布式科學(xué)計算、文件共享、流媒體直播與點播、語音通信及在線游戲支撐平臺等方面。
1.2 P2P網(wǎng)絡(luò)通信原理
P2P網(wǎng)絡(luò)框架中的一臺主機(jī)稱之為一個節(jié)點,如果兩個節(jié)點互致對方的IP地址,則稱在這兩個節(jié)點之間存在一個連接。由于各節(jié)點的加入和退出網(wǎng)絡(luò)的時間都是動態(tài)的,為了實現(xiàn)P2P網(wǎng)絡(luò),每個節(jié)點上需要保存一個與其有連接關(guān)系的節(jié)點的IP地址列表,稱為鄰居列表。同時,為了支持通信,每個節(jié)點還需要保存一個建立在IP地址列表基礎(chǔ)上的消息轉(zhuǎn)發(fā)目標(biāo)表,稱為路由表。
P2P網(wǎng)絡(luò)中任意兩個節(jié)點之間可以通訊,通訊消息是沿著P2P網(wǎng)絡(luò)中的路徑,通過節(jié)點的轉(zhuǎn)發(fā),進(jìn)行傳播的,節(jié)點與節(jié)點之間是平等關(guān)系。從其功能的角度來看,因為P2P網(wǎng)絡(luò)中各個節(jié)點是相同的,節(jié)點失效對整個系統(tǒng)的損壞程度低,所以各節(jié)點的重要性都是相同的;從它的性能角度來看,各個節(jié)點的工作負(fù)載也相當(dāng)。
2 動態(tài)分層P2P網(wǎng)絡(luò)木馬技術(shù)的探討
木馬技術(shù)是一種網(wǎng)絡(luò)攻擊技術(shù), 它通過各種隱蔽途徑將木馬植入目標(biāo)機(jī)器,搜集其中信息,然后通過網(wǎng)絡(luò)將信息發(fā)送給攻擊者,并接收攻擊者的指令,完成其它各種可能對目標(biāo)計算機(jī)有害的操作。
2.1 動態(tài)分層P2P網(wǎng)絡(luò)木馬技術(shù)的設(shè)計原理
根據(jù)P2P網(wǎng)絡(luò)的特點,首先引入sentok虛擬節(jié)點的概念。sentok是木馬攻擊者從P2P網(wǎng)絡(luò)所有k個servent節(jié)點里隨機(jī)選取的f個節(jié)點(這里f小于等于k),節(jié)點處于動態(tài)狀態(tài),每隔一段時間自動變換一批,應(yīng)用于數(shù)據(jù)和指令的轉(zhuǎn)發(fā);sentok就是木馬攻擊者在P2P網(wǎng)絡(luò)中通信形成的邏輯控制關(guān)系,可看做一個虛擬的節(jié)點。sentok節(jié)點的動態(tài)變化最終達(dá)到所有servent節(jié)點的負(fù)載平衡,并增強(qiáng)木馬網(wǎng)絡(luò)通信的隱蔽性。
木馬攻擊者保存所有節(jié)點的列表,列表分為servent list和client list,servent節(jié)點只保留最新的sentok list和有限個數(shù)的servent list,client只保留有限個數(shù)的servent list。各列表都是在實時的更新狀態(tài),且與不斷變化的木馬P2P網(wǎng)絡(luò)保持聯(lián)系。
各個節(jié)點之間采用加密的通信方式,比如:Key i是節(jié)點i的密鑰,Port i則為節(jié)點i所用的木馬端口,凡是不常被使用的端口都可以用于節(jié)點的通信。
如果新節(jié)點被感染,感染源就會將自身的servent list 傳給新的節(jié)點。新節(jié)點一上線就會自動連接servent list的主機(jī),如果該主機(jī)是servent,感染源就會將其加入自身的servent list中,如果列表超出了最大容量值,就會隨機(jī)的替換掉一個節(jié)點,并將更新后的列表數(shù)據(jù)發(fā)給主控攻擊端,木馬攻擊者隨后掌握了被感染的節(jié)點情況[1]。
2.2 servent負(fù)載仿真實驗
Opnet Modeler提供了三層建模機(jī)制,采用了層階式的模擬方式,最底層為進(jìn)程(Process)模型,以狀態(tài)機(jī)來描述協(xié)議;其次為節(jié)點(Node)模型,由相應(yīng)的協(xié)議模型構(gòu)成,反映設(shè)備特性;最上層為網(wǎng)絡(luò)模型。三層模型和實際的協(xié)議、設(shè)備、網(wǎng)絡(luò)完全對應(yīng),全面反映了網(wǎng)絡(luò)的相關(guān)特性。
本文利用Opnet 工具分別定義了相關(guān)的數(shù)據(jù)包(contr)、鏈路(sentok)和節(jié)點(servent、bot),仿真了20個節(jié)點構(gòu)成的動態(tài)分層P2P木馬網(wǎng)絡(luò),以及在下層bot節(jié)點分布不均的情況下的通信狀況,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,仿真的時間設(shè)定為為8個小時??刂贫藶镃ontr節(jié)點,每隔60秒從5個servent節(jié)點中隨機(jī)產(chǎn)生2個sentok,并廣播給所有的servent節(jié)點。servent節(jié)點收到廣播后將2個sentok存入本節(jié)點中的sentok list中并轉(zhuǎn)發(fā)該信息數(shù)據(jù)包,一旦收到發(fā)往contr的信息包就轉(zhuǎn)發(fā)sentok。
仿真中定義了4種數(shù)據(jù)包在節(jié)點間進(jìn)行通信,所有節(jié)點每10秒隨機(jī)產(chǎn)生一種類型的數(shù)據(jù)包:
(1)命令包。這是包裝控制端向被控端發(fā)送的命令,包括廣播命令和點對點命令。sentok收到命令包后,自動檢查目的地址的各字段,如果是本地地址就提取該命令并執(zhí)行;如果是廣播包就執(zhí)行命令同時轉(zhuǎn)發(fā)給其它相鄰的各節(jié)點;如果是其它地址就轉(zhuǎn)發(fā)給目標(biāo)節(jié)點。(2)信息包。這是包裝被控端向控制端發(fā)送的數(shù)據(jù)信息。servent收到數(shù)據(jù)包轉(zhuǎn)發(fā)sentok節(jié)點,sentok節(jié)點收到數(shù)據(jù)包后轉(zhuǎn)發(fā)控制端。(3)連接包。它用于節(jié)點入網(wǎng)時,向servent節(jié)點發(fā)起請求連接的信息。(4)應(yīng)答包。當(dāng)servent接受連接請求后向目標(biāo)源節(jié)點發(fā)送應(yīng)答指令。
通過動態(tài)分層P2P網(wǎng)絡(luò)木馬通信仿真實驗,發(fā)現(xiàn)木馬通信在動態(tài)分層P2P網(wǎng)絡(luò)的servent節(jié)點上行負(fù)載具有更好的均衡性[2]。
3 結(jié)束語
本文簡單探討了動態(tài)分層P2P網(wǎng)絡(luò)木馬負(fù)載均衡性的特點,但本文停留在仿真研究階段,動態(tài)分層P2P木馬網(wǎng)絡(luò)的數(shù)學(xué)模型及具體實現(xiàn)還有待進(jìn)一步研究。
[參考文獻(xiàn)]
[1]敬曉芳.特洛伊木馬攻擊技術(shù)與防范策略[J].北京:電腦編程技巧與維護(hù),2008.16.
[2]李建定.木馬隱藏技術(shù)的分析與實現(xiàn)[D].北京大學(xué),2008.