高 見, 蘆天亮, 王 威
(中國人民公安大學(xué)網(wǎng)絡(luò)安全保衛(wèi)學(xué)院, 北京 100038)
基于P2P的僵尸網(wǎng)絡(luò)C&C設(shè)計(jì)與仿真
高見,蘆天亮,王威
(中國人民公安大學(xué)網(wǎng)絡(luò)安全保衛(wèi)學(xué)院, 北京100038)
摘要近些年來,基于P2P的僵尸網(wǎng)絡(luò)憑借其網(wǎng)絡(luò)通信的隱蔽性和網(wǎng)絡(luò)連接的健壯性特點(diǎn),逐漸成為國內(nèi)外研究的熱點(diǎn)。針對兩層架構(gòu)的P2P僵尸網(wǎng)絡(luò)的命令控制(Command and Control 簡稱C&C)協(xié)議進(jìn)行了深入探討與分析,并設(shè)計(jì)了超級節(jié)點(diǎn)更新鄰居節(jié)點(diǎn)的算法,超級節(jié)點(diǎn)分發(fā)命令算法,并將公鑰加密算法應(yīng)用到P2P僵尸網(wǎng)絡(luò)的命令控制協(xié)議中,增加了僵尸網(wǎng)絡(luò)通信的隱蔽性和網(wǎng)絡(luò)的健壯性。同時,對該類型的僵尸網(wǎng)絡(luò)中普通節(jié)點(diǎn)接收命令時的流量和超級節(jié)點(diǎn)轉(zhuǎn)發(fā)命令時的流量進(jìn)行了模擬仿真,仿真結(jié)果證明了節(jié)點(diǎn)的心跳流量和命令流量與用戶的正常上網(wǎng)流量相比較而言微乎其微。最后,對該類型的P2P僵尸網(wǎng)絡(luò)提出了防御策略的相關(guān)建議。
關(guān)鍵詞P2P僵尸網(wǎng)絡(luò); 控制命令; 模擬仿真; 信息安全
0引言
在當(dāng)前互聯(lián)網(wǎng)安全研究中,僵尸網(wǎng)絡(luò)被公認(rèn)為最具威脅的攻擊之一。攻擊者可以利用僵尸網(wǎng)絡(luò)實(shí)施DDos攻擊,竊取用戶的敏感信息和發(fā)送大量的垃圾郵件等活動,給用戶帶來了不小的經(jīng)濟(jì)損失。研究人員從未放棄過對僵尸網(wǎng)絡(luò)的研究,雖然現(xiàn)在的防御措施從一定程度上緩解了僵尸網(wǎng)絡(luò)的危害。但是,僵尸網(wǎng)絡(luò)還在不停地發(fā)展和演變,結(jié)構(gòu)從中心式到分布式,控制命令信道從IRC、HTTP到P2P協(xié)議,被感染的節(jié)點(diǎn)從固定主機(jī)到移動終端,僵尸網(wǎng)絡(luò)已漸漸趨于多樣化和復(fù)雜化。本文構(gòu)建了一種新型的僵尸網(wǎng)絡(luò)的架構(gòu),從而為防御者提供有效的數(shù)據(jù),為提出有效的防護(hù)措施起到關(guān)鍵作用。
不同于傳統(tǒng)的基于IRC協(xié)議和HTTP協(xié)議的中心式結(jié)構(gòu)的僵尸網(wǎng)絡(luò),由于P2P僵尸網(wǎng)絡(luò)分布式結(jié)構(gòu)的特點(diǎn),使其更難防御和檢測。P2P網(wǎng)絡(luò)模型最初也是為了方便網(wǎng)絡(luò)自動控制機(jī)制而研究實(shí)現(xiàn)的[2]。但是,最終P2P協(xié)議還是應(yīng)用在了僵尸網(wǎng)絡(luò)活動中,表1列出了P2P僵尸網(wǎng)絡(luò)的發(fā)展經(jīng)歷。大量的學(xué)者投入到了對P2P僵尸網(wǎng)絡(luò)的研究中,其中Vogt等[2]將眾多的小的僵尸網(wǎng)絡(luò)組建成一個超級僵尸網(wǎng)絡(luò),但是對C&C服務(wù)器的選擇上存在缺陷。Wang等[3]在此基礎(chǔ)上提出了一種高級混合的P2P網(wǎng)絡(luò),對通信信道進(jìn)行了加密,并對節(jié)點(diǎn)列表的創(chuàng)建和更新都有詳細(xì)的介紹,但是沒有嚴(yán)格的認(rèn)證系統(tǒng)。Han等[4]提出了一個高級P2P僵尸網(wǎng)絡(luò)的模型,并在此基礎(chǔ)上提出了5個性能指標(biāo)來評估僵尸網(wǎng)絡(luò),從而優(yōu)化了P2P僵尸網(wǎng)絡(luò)。
表1 P2P僵尸網(wǎng)絡(luò)的發(fā)展
綜上所述,現(xiàn)有的P2P僵尸網(wǎng)絡(luò)模型存在以下不足:
(1)控制與命令信道缺少安全性和隱秘性。
(2)節(jié)點(diǎn)列表缺少高效的更新機(jī)制。
(3)僵尸服務(wù)器和僵尸終端的缺少合理的檢驗(yàn)機(jī)制。
本文提出了一個新型的P2P僵尸網(wǎng)絡(luò)的模型,屬于未來僵尸網(wǎng)絡(luò)的預(yù)測,這種僵尸網(wǎng)絡(luò)可能帶來極大的安全威脅,旨在為防御者提供一種啟示,為以后制定防御措施方針指明方向。本文的主要貢獻(xiàn)如下:
(1)介紹了僵尸網(wǎng)絡(luò)中不同節(jié)點(diǎn)Super Node和Normal Node的作用和運(yùn)行機(jī)制,以及超級節(jié)點(diǎn)類表和鄰居節(jié)點(diǎn)列表的重要參數(shù)。
(2)提出了一種控制與命令信道的通信方式,運(yùn)用了加密技術(shù)對命令進(jìn)行了保護(hù),增加了信道的隱秘性。
(3)提出了基于Hop的節(jié)點(diǎn)距離測量指標(biāo),將Trancert應(yīng)用于普通節(jié)點(diǎn)到超級節(jié)點(diǎn)和超級節(jié)點(diǎn)之間的測量,增加了僵尸網(wǎng)絡(luò)的魯棒性。
(4)對該新型的P2P僵尸網(wǎng)絡(luò)的模型的關(guān)鍵算法進(jìn)行了設(shè)計(jì),同時對僵尸網(wǎng)絡(luò)中普通節(jié)點(diǎn)和超級節(jié)點(diǎn)在正常狀態(tài)下與接收命令狀態(tài)下的流量進(jìn)行了模擬。
1P2P僵尸網(wǎng)絡(luò)的模型的設(shè)計(jì)
這種新型的僵尸網(wǎng)絡(luò)模型是基于高級P2P混合結(jié)構(gòu),包含了多角色和加密的控制與命令機(jī)制,獨(dú)特的節(jié)點(diǎn)列表的設(shè)計(jì)和節(jié)點(diǎn)列表更新機(jī)制,各節(jié)點(diǎn)的遴選算法。有效地屏蔽了防御者的檢測,增強(qiáng)了整個僵尸網(wǎng)絡(luò)的魯棒性和隱蔽性。
在僵尸網(wǎng)絡(luò)的設(shè)計(jì)上,本設(shè)計(jì)充分考慮了各種的因素,如:僵尸終端的選擇,角色的分工和網(wǎng)絡(luò)環(huán)境的不斷的發(fā)展和變化。網(wǎng)絡(luò)框架如圖1所示。
圖1 P2P僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)架構(gòu)
本設(shè)計(jì)共有3個角色:
(1) 攻擊者(Botmaster),僵尸網(wǎng)絡(luò)的擁有者,擁有最高的權(quán)限,制定控制與命令信息的規(guī)則,能夠控制節(jié)點(diǎn)發(fā)起攻擊和收集各個節(jié)點(diǎn)的信息。
(2) 超級節(jié)點(diǎn)(Super Node),被感染的計(jì)算機(jī),一般性能穩(wěn)定,擁有靜態(tài)的公網(wǎng)IP地址,本設(shè)計(jì)選取教育科研機(jī)構(gòu)和企事業(yè)單位的服務(wù)器作為超級節(jié)點(diǎn)。在超級節(jié)點(diǎn)這一層采用P2P協(xié)議進(jìn)行通信。
(3) 普通節(jié)點(diǎn)(Normal Node),被感染的計(jì)算機(jī),一般性能較差,擁有不固定IP或私網(wǎng)地址。本設(shè)計(jì)選取個人電腦主機(jī)作為普通節(jié)點(diǎn)。一般的普通節(jié)點(diǎn)隸屬于一個或者多個超級節(jié)點(diǎn),只連接一個或多個超級節(jié)點(diǎn)。
(4) 中轉(zhuǎn)服務(wù)器(Transit Server),節(jié)點(diǎn)初次連接的服務(wù)器,通過中轉(zhuǎn)服務(wù)器獲得超級節(jié)點(diǎn)列表,以及自己的角色,此后節(jié)點(diǎn)只與超級節(jié)點(diǎn)聯(lián)系,同時節(jié)點(diǎn)在連接中轉(zhuǎn)服務(wù)器的時候采用動態(tài)域名技術(shù),使其通信更加的隱秘。
(5) 結(jié)果服務(wù)器(Result Server),回收每個節(jié)點(diǎn)收集來的信息進(jìn)行存儲,結(jié)果服務(wù)器是根據(jù)每次制定的任務(wù)而臨時指派的一個服務(wù)器,用來回收本次任務(wù)的結(jié)果,結(jié)果服務(wù)器可以是一個臨時的郵箱,也可以是臨時的FTP服務(wù)器。
超級節(jié)點(diǎn)是整個僵尸網(wǎng)絡(luò)的核心層,各節(jié)點(diǎn)根據(jù)遴選算法選取自己的鄰居節(jié)點(diǎn),交換信息,根據(jù)攻擊者的命令推送(PUSH)信息給各自的鄰居節(jié)點(diǎn),并存儲普通節(jié)點(diǎn)發(fā)送過來的敏感信息。而普通節(jié)點(diǎn)與超級節(jié)點(diǎn)的聯(lián)系并不緊密,他們只是根據(jù)程序定時到超級節(jié)點(diǎn)上獲取(PULL)命令信息或控制信息,執(zhí)行命令信息或者及時更新程序。
本節(jié)主要討論超級節(jié)點(diǎn)或普通節(jié)點(diǎn)的節(jié)點(diǎn)列表的設(shè)計(jì)和更新機(jī)制,通過對節(jié)點(diǎn)列表的設(shè)計(jì)來輔助攻擊者完成P2P僵尸網(wǎng)絡(luò)的構(gòu)建,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),抵御防御者的檢測。首先定義幾個概念。
定義1超級節(jié)點(diǎn)個數(shù)為SbotNum,普通節(jié)點(diǎn)個數(shù)為CbotNum,僵尸網(wǎng)絡(luò)的節(jié)點(diǎn)總數(shù)為TbotNum,TbotNum = SbotNum + CbotNum。
定義2超級節(jié)點(diǎn)中鄰居節(jié)點(diǎn)的列表中節(jié)點(diǎn)的個數(shù)為SListNum;普通節(jié)點(diǎn)中超級節(jié)點(diǎn)的列表中節(jié)點(diǎn)的個數(shù)為ClistNum。
定義3超級節(jié)點(diǎn)的本地節(jié)點(diǎn)列表,每個超級節(jié)點(diǎn)中都存儲著兩個列表。列表一是記錄其鄰居超級節(jié)點(diǎn)信息的列表,定義為NeiBorList。列表二是記錄曾經(jīng)連接的普通節(jié)點(diǎn)的信息的列表,定義為ClientList。
其中鄰居超級節(jié)點(diǎn)的信息列表NeiBorList的數(shù)據(jù)項(xiàng)結(jié)構(gòu)為
普通節(jié)點(diǎn)的信息列表ClientList的數(shù)據(jù)項(xiàng)結(jié)構(gòu)為
其中,NeiborList和SuperList中的節(jié)點(diǎn)個數(shù)擁有上限M和下限N,來保證節(jié)點(diǎn)的連通性和隱蔽性。當(dāng)超級節(jié)點(diǎn)中的NeiborList中可用節(jié)點(diǎn)的個數(shù)少于N的時候,應(yīng)當(dāng)從其可用的鄰居節(jié)點(diǎn)中請求其他超級節(jié)點(diǎn)的信息來更新自己的鄰居列表。同樣普通節(jié)點(diǎn)中的SuperList中的可用節(jié)點(diǎn)的個數(shù)少于N的時候,也應(yīng)當(dāng)從其可用的超級節(jié)點(diǎn)列表中的節(jié)點(diǎn)請求其它超級節(jié)點(diǎn)信息,來更新自己的超級節(jié)點(diǎn)的列表。
定義4普通節(jié)點(diǎn)的本地節(jié)點(diǎn)列表,每個普通節(jié)點(diǎn)都存儲著一個記錄一些超級節(jié)點(diǎn)的信息列表,定義為SuperList,數(shù)據(jù)項(xiàng)結(jié)構(gòu)為:
首先,介紹超級節(jié)點(diǎn)的鄰居節(jié)點(diǎn)列表中的幾個參數(shù):
(1) ID為標(biāo)識節(jié)點(diǎn)的編號。根據(jù)機(jī)器自身的硬件配置,生成唯一標(biāo)識,可以保證機(jī)器在不更換網(wǎng)卡的情況下,每次生成的ID號相同,同時保證兩臺不同機(jī)器生成的ID號不一樣。
(2) IP為超級節(jié)點(diǎn)自身的IP地址。一般為靜態(tài)的公網(wǎng)的IP地址。
(3) Port為超級節(jié)點(diǎn)用于通信的端口號。超級節(jié)點(diǎn)需要監(jiān)聽端口來和普通節(jié)點(diǎn)以及其他超級節(jié)點(diǎn)通信,本設(shè)計(jì)中,每個超級節(jié)點(diǎn)的Port是隨機(jī)生成并非固定端口,可以避免一些入侵檢測根據(jù)端口而阻斷僵尸網(wǎng)絡(luò)的流量。
(4) Pwk為超級節(jié)點(diǎn)的公鑰,每個超級節(jié)點(diǎn)有一個密鑰對,公鑰Puk和私鑰Prk,公鑰用于加密,公布給其他超級節(jié)點(diǎn)和普通節(jié)點(diǎn),而私鑰則用來解密,且每個超級節(jié)點(diǎn)的密鑰對不同。
(5) Useable當(dāng)前IP是否可用的標(biāo)志,表明當(dāng)前IP的連通性,多次無法通信的IP地址Useable標(biāo)記為FALSE。
(6) Hop從本機(jī)IP到列表中IP用Transrout探測所經(jīng)過的路由器的個數(shù),在一定程度上,反應(yīng)了兩個IP地域上的差距。每個節(jié)點(diǎn)的超級節(jié)點(diǎn)列表中的Hop值應(yīng)當(dāng)盡量的平均,來保證其鄰居列表中的節(jié)點(diǎn)不全是本地節(jié)點(diǎn)或鄰近節(jié)點(diǎn),這樣可以增加整個網(wǎng)絡(luò)的魯棒性。
(7) LastTime當(dāng)前IP和本機(jī)通信的最新的時間。
其次,介紹超級節(jié)點(diǎn)的普通節(jié)點(diǎn)列表中的幾個參數(shù):
(1) ID為標(biāo)識節(jié)點(diǎn)的編號,如同超級節(jié)點(diǎn)的編號,根據(jù)機(jī)器自身的硬件配置,生成標(biāo)識該機(jī)的編號。
(2) PubIP為曾經(jīng)連上來的普通節(jié)點(diǎn)的公有IP地址。
(3) PriIP為曾經(jīng)連上來的普通節(jié)點(diǎn)的私有IP地址。根據(jù)公有IP地址和私有IP地址可以判斷僵尸節(jié)點(diǎn)是否處在內(nèi)網(wǎng)環(huán)境中,也可以判斷幾個僵尸節(jié)點(diǎn)是否處在同一內(nèi)網(wǎng)中。
(4) FirstTime為普通節(jié)點(diǎn)首次連接上來的時間。
(5) LastTime為超級節(jié)點(diǎn)和普通節(jié)點(diǎn)最近連接的時間。
(6) HeartBeat為普通節(jié)點(diǎn)的心跳信息,記錄普通節(jié)點(diǎn)連接該超級節(jié)點(diǎn)的次數(shù)。
最后,介紹普通節(jié)點(diǎn)的信息列表中的幾個參數(shù):
(1) ID為標(biāo)識節(jié)點(diǎn)的編號。根據(jù)機(jī)器自身的硬件配置,生成唯一標(biāo)識該機(jī)的編碼。
(2) IP為超級節(jié)點(diǎn)的IP地址。
(3) Port為超級節(jié)點(diǎn)用于通信的端口號。
在技術(shù)方面,我們常見的花鳥題材主要有三種畫法,“工筆”“寫意”還有“兼工帶寫”。這三種不同的畫法是的花鳥題材以不同的表現(xiàn)形式綻放出其獨(dú)特的美感。粉彩瓷繪畫與中國國畫有著密不可分的聯(lián)系。當(dāng)花鳥畫的技術(shù)進(jìn)入到粉彩瓷的領(lǐng)域中時,使得粉彩瓷的表現(xiàn)形式更加多樣,再加上花鳥題材的點(diǎn)睛作用,是的粉彩瓷煥發(fā)了別樣的生機(jī)。
(4) Pwk為超級節(jié)點(diǎn)的密鑰,普通節(jié)點(diǎn)用其進(jìn)行該超級節(jié)點(diǎn)解密命令信息。
(5) Useable當(dāng)前IP是否可用的標(biāo)志,多次無法通信的IP地址Useable標(biāo)記為false。
(6) Hop從本機(jī)IP到列表中IP用transrout探測所經(jīng)過的路由器的個數(shù),反應(yīng)兩個IP地域上的差距。
(7) Time普通節(jié)點(diǎn)與超級節(jié)點(diǎn)連接的次數(shù),從而優(yōu)先連接次數(shù)少的節(jié)點(diǎn),使整個僵尸網(wǎng)絡(luò)的連接達(dá)到一定的平衡。
本節(jié)提出了節(jié)點(diǎn)列表的更新機(jī)制的算法,P2P僵尸網(wǎng)絡(luò)的構(gòu)建和運(yùn)行都是一個動態(tài)的過程。需要不斷地對各個節(jié)點(diǎn)的性能進(jìn)行檢測,調(diào)整網(wǎng)絡(luò)架構(gòu),及時加入新的節(jié)點(diǎn)和刪除失效的節(jié)點(diǎn),從而有效的提高了僵尸網(wǎng)絡(luò)的魯棒性。
1.3.1更新鄰居節(jié)點(diǎn)算法
超級節(jié)點(diǎn)在選擇鄰居節(jié)點(diǎn)時要考慮以下幾個因素:①鄰居節(jié)點(diǎn)的IP地址是否可用,如果不可用,則Useable=false,否則為Useable=true。②維持Hop的平均值,使得Hop的值盡量的平均。因此本算法對請求回來的節(jié)點(diǎn)重新計(jì)算Hop值,并根據(jù)Hop值排序,向鄰居節(jié)點(diǎn)列表中添加新節(jié)點(diǎn)是Hop值大的和Hop值小的交替添加。③當(dāng)超級節(jié)點(diǎn)的鄰居節(jié)點(diǎn)中可用節(jié)點(diǎn)的個數(shù)大于等于上限M時程序退出。
算法1:超級節(jié)點(diǎn)的鄰居節(jié)點(diǎn)列表的更新機(jī)制算法
Output: NeighborList-更新的鄰居節(jié)點(diǎn)列表
1:T=0; ∥記錄可用節(jié)點(diǎn)的個數(shù)
2:for(i=1;i<=n;i++)
3:{
4:if(Super[i].Useable == TURE)
∥如果超級節(jié)點(diǎn)的鄰居節(jié)點(diǎn)的IP地址可用
5:T++;
6: }
7:if(T 8: { 9:for(i=1;i<=n;i++ ) 10: If(Super[i].Useable == TURE) 11: SuperList.add(RequestSuper(Super[i])); ∥向鄰居節(jié)點(diǎn)請求新的節(jié)點(diǎn)加入 12:} 13:RecomputeHop();∥從新計(jì)算跳數(shù) 14:OrderByHop(SuperList);∥按照Hop進(jìn)行排序 15:for(i=1,j=SuperList.Count;T<=M;i++,j-- )∥記錄鄰居節(jié)點(diǎn)列表 16:{ 17:if(i 18:{ 19:NeighborList.add(SuperList[i]); T++; ∥向鄰居節(jié)點(diǎn)列表增加新節(jié)點(diǎn) 20:If(T>=M) break; ∥如果T的值達(dá)到列表上限就直接跳出循環(huán) 21:NeighborList.add(SuperList[j]); T++; ∥向鄰居節(jié)點(diǎn)列表增加新節(jié)點(diǎn) 22:If(T>=M) break; ∥如果T的值達(dá)到列表上限就直接跳出循環(huán) 23:} 24: } 1.3.2更新鄰居節(jié)點(diǎn)算法 超級節(jié)點(diǎn)在傳播命令時要考慮以下幾個因素:①超級節(jié)點(diǎn)在收到命令后,用私鑰解密命令,如果不能解密則丟棄。②解密命令后,檢查命令的執(zhí)行時間,如果已經(jīng)過期,則丟棄。③檢查自己的命令列表中是否已經(jīng)包含了該命令I(lǐng)D,如果已有該命令,則丟棄。④向自己鄰居列表中的可用節(jié)點(diǎn)發(fā)送該命令,發(fā)送過程用鄰居節(jié)點(diǎn)的公鑰加密,不向發(fā)送給自己命令的節(jié)點(diǎn)發(fā)送命令。 算法2:超級節(jié)點(diǎn)的傳播命令算法 Input:Order-命令 Output: NULL-無 1:Order=DecodeByPri(OrOrder) ∥獲得命令后用私鑰解密命令 2:if(Order. Expire == TRUE)∥命令是否過期 3: return; 4:If(OrderList.include(Order.ID)) ∥命令列表中是否已經(jīng)有該命令的ID號 5:return; 6:for(i=1;i 7:{ 8:if(Neighbor[i].ID == PrevID) ∥排除上一個節(jié)點(diǎn),以避免重復(fù)發(fā)送指令 9: continue; 10: SendByPwk(Neighbor[i].IP, Neighbor[i].Port, Pwk);∥用公鑰加密并發(fā)送指令 11:} 12:OrderList.add(Order); ∥將命令加入命令執(zhí)行列表準(zhǔn)備執(zhí)行 在整個的僵尸網(wǎng)絡(luò)中使用公鑰加密算法對命令控制協(xié)議或者文件傳輸進(jìn)行加密,每個超級節(jié)點(diǎn)要保存其鄰居節(jié)點(diǎn)的公鑰Puk,每個普通節(jié)點(diǎn)要保存其超級節(jié)點(diǎn)列表中節(jié)點(diǎn)的公鑰Puk。命令發(fā)送過程分為以下幾步: (1) 攻擊者隨機(jī)尋找一個超級節(jié)點(diǎn)SuperBot[i],用該節(jié)點(diǎn)的公鑰Puk[i]加密,將命令發(fā)送到該節(jié)點(diǎn)。 (2) SuperBot[i]收到命令后,用私鑰Prk[i]解密,并加入自己的命令執(zhí)行隊(duì)列等待執(zhí)行。 (3) SuperBot[i]向自己的鄰居節(jié)點(diǎn)列表中的可用節(jié)點(diǎn)SuperBot[j]和SuperBot[k]發(fā)送命令,命令分別用Puk[i]和Puk[k]加密發(fā)送。 (4) SuperBot[j]和SuperBot[k]收到命令后用自己的私鑰解密執(zhí)行,并向自身的超級節(jié)點(diǎn)列表中的成員加密發(fā)送命令。 (5) 當(dāng)普通節(jié)點(diǎn)連接到超級節(jié)點(diǎn)Superbot[k]上獲取命令時,Superbot[k]將命令用Prk[k]加密后發(fā)送給普通節(jié)點(diǎn)。 (6) 普通節(jié)點(diǎn)接收到命令后用Puk[k]解密執(zhí)行命令。 超級節(jié)點(diǎn)使用Push的通信方式,普通節(jié)點(diǎn)使用Pull的通信方式,如圖2所示。 圖2 P2P僵尸網(wǎng)絡(luò)的命令與控制信道的設(shè)計(jì) 2拓?fù)潢P(guān)系仿真與分析 本節(jié)將針對該P(yáng)2P僵尸網(wǎng)絡(luò)的隱秘性進(jìn)行評估和分析,檢測命令發(fā)送過程中的心跳包,以及超級節(jié)點(diǎn)轉(zhuǎn)發(fā)命令時的流量,從而驗(yàn)證控制與命令的信息是否能夠成功的隱藏在正常的流量中。 首先檢測了這種新型的P2P僵尸網(wǎng)絡(luò)的超級節(jié)點(diǎn)在發(fā)送控制與命令信息時網(wǎng)絡(luò)的流量。在實(shí)驗(yàn)環(huán)境中模擬了P2P僵尸網(wǎng)絡(luò)結(jié)構(gòu),通過抓取網(wǎng)絡(luò)流量的心跳來進(jìn)行測試,僵尸節(jié)點(diǎn)正常瀏覽網(wǎng)頁。檢測結(jié)果如圖3所示。其中橫坐標(biāo)代表了時間(S),而縱坐標(biāo)代表了網(wǎng)絡(luò)的流量。從圖中可以看出,在15 s、60 s、110 s和155 s時,超級節(jié)點(diǎn)進(jìn)行正常的存活性探測,而在160 s時,超級節(jié)點(diǎn)進(jìn)行了命令的發(fā)送。結(jié)果是整個網(wǎng)絡(luò)的流量非常正常,僵尸網(wǎng)絡(luò)的控制與命令信息流量和正常的上網(wǎng)流量相比較來說并不顯著。 圖3 超級節(jié)點(diǎn)發(fā)送命令過程中P2P僵尸網(wǎng)絡(luò)的流量圖 使用同樣的方法對普通節(jié)點(diǎn)的流量信息進(jìn)行了測試。當(dāng)電腦主機(jī)感染了僵尸病毒,就會和其他正常的應(yīng)用程序一樣使用網(wǎng)絡(luò)資源進(jìn)行通信,那么普通節(jié)點(diǎn)可以利用這一點(diǎn),將自己的通信流量隱藏,如圖4所示,普通節(jié)點(diǎn)在5 s、47 s和110 s時有通信的流量,該流量是普通節(jié)點(diǎn)的心跳信息(心跳時間間隔可通過僵尸節(jié)點(diǎn)的參數(shù)設(shè)定),但是相對于正常的流量來說,不管從流量的大小和發(fā)送的時間來講都遠(yuǎn)遠(yuǎn)的小于正常流量。從結(jié)構(gòu)來看,這種新型的P2P僵尸網(wǎng)絡(luò)具有良好的隱秘性。 圖4 普通節(jié)點(diǎn)發(fā)送命令過程中P2P僵尸網(wǎng)絡(luò)的流量圖 3防御政策 基于P2P的僵尸網(wǎng)絡(luò)可以有效地防止傳統(tǒng)僵尸網(wǎng)絡(luò)的單點(diǎn)失效的情況,提高網(wǎng)絡(luò)的健壯性。對于本文提到的雙層架構(gòu)的僵尸網(wǎng)絡(luò),從普通節(jié)點(diǎn)來打擊僵尸網(wǎng)絡(luò),對整個僵尸網(wǎng)絡(luò)的影響是很小的。因此必須從超級節(jié)點(diǎn)層來打擊整個僵尸網(wǎng)絡(luò),超級節(jié)點(diǎn)層使用了P2P的通信結(jié)構(gòu),同時又具備網(wǎng)絡(luò)結(jié)構(gòu)的自修復(fù)能力。因此摧毀單個或多個超級節(jié)點(diǎn),整個僵尸網(wǎng)絡(luò)仍可以正常通信。在控制一些超級節(jié)點(diǎn)的情況下可以通過逆向分析和流量分析,來分析P2P通信協(xié)議,如果能夠掌握超級節(jié)點(diǎn)向鄰居節(jié)點(diǎn)請求超級節(jié)點(diǎn)列表的命令協(xié)議,將對摧毀整個僵尸網(wǎng)絡(luò)起到至關(guān)重要的作用。因?yàn)榭梢酝ㄟ^遞歸的方法,獲取整個僵尸網(wǎng)絡(luò)中超級節(jié)點(diǎn)的信息和其鄰居節(jié)點(diǎn)列表,相當(dāng)于掌握了超級節(jié)點(diǎn)這一層的拓?fù)浣Y(jié)構(gòu)。 4結(jié)語 基于P2P的僵尸網(wǎng)絡(luò)的命令控制協(xié)議大都局限于理論研究,對于P2P僵尸網(wǎng)絡(luò)的一些重要參數(shù)并未達(dá)成一致。比如在一個固定數(shù)量的僵尸網(wǎng)絡(luò)中,超級節(jié)點(diǎn)和普通節(jié)點(diǎn)的比例是多少為最佳;超級節(jié)點(diǎn)數(shù)量一定的情況下,每個超級節(jié)點(diǎn)的鄰居節(jié)點(diǎn)數(shù)量的個數(shù)是多少為最佳;超級節(jié)點(diǎn)和普通節(jié)點(diǎn)數(shù)量一定的情況下,每個普通節(jié)點(diǎn)的超級節(jié)點(diǎn)數(shù)量的個數(shù)是多少為最佳;普通節(jié)點(diǎn)選取超級節(jié)點(diǎn)的重要指標(biāo)依據(jù),這些問題都是下一步研究的重要內(nèi)容。 參考文獻(xiàn) [1]冉宏敏,柴勝,馮鐵,等.P2P僵尸網(wǎng)絡(luò)研究[J].計(jì)算機(jī)應(yīng)用研究,2010,27(10):3628-3632. [2]Vogt R, Aycock J, Jacobson Jr MJ, editors. Army of Botnets[C]. Proceedings of the 14th Annual Network and Distributed System Security Symposium, 2007. [3]Wang P, Sparks S, Zou CC. An Advanced Hybrid Peer-to-peer Botnet[C]. Dependable and Secure Computing, IEEE Transactions on,2010,7(2): 113-127. [4]Han Q, Yu W, Zhang Y, Zhao Z. Modeling and Evaluating of Typical Advanced Peer-to-peer Botnet[J]. Performance Evaluation, 2014,72:1-15. [5]Napster Website[EB/OL].[2014-10-10].http:∥www.napster.com. [6]Phatbot Trojan Analysis[EB/OL]. [2014-10-6]. http:∥en.wikipedia.org/wiki/Zeus (trojan horse). [7]Zeus Botnet[EB/OL].[2014-9-1]. http:∥en.wikipedia.org/wiki/Zeus (trojan horse). [8]Zero Access[EB/OL].[2014-10-15]. http:∥en.wikipedia.org/wiki/ZeroAccess_botnet. [9]Mayhem-a Hidden Threat for Web Servers Available[EB/OL].(2014-10-20). https:∥www.virusbtn.com/blog/2014/07_17.xml. (責(zé)任編輯陳小明) 作者簡介高見(1982—),男,山東菏澤人,講師,博士。主要研究方向?yàn)榫W(wǎng)絡(luò)安全。 基金項(xiàng)目國家自然科學(xué)基金青年科學(xué)基金項(xiàng)目(71203229)。 中圖分類號D035.3931.4 命令控制信道的設(shè)計(jì)
2.1 超級節(jié)點(diǎn)命令發(fā)送的評估
2.2 普通節(jié)點(diǎn)命令發(fā)送的評估