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