殭屍網絡研究系列文章之二 設計自動識別系統

殭屍網絡研究系列文章之二 設計自動識別系統
殭屍網絡(Botnet)研究的常規研究方法中,第一種是使用蜜網技術研究。該方法從殭屍程序(bot)入手研究Botnet的特徵,這種方法利用了Botnet的可傳播性,通過蜜罐手段獲得用於傳播擴散的bot程序樣本,然後逆向分析這些樣本,從而獲得這些bot程序中所包含的連接Botnet服務器所需要的屬性值,這樣就可以深入地跟蹤Botnet,獲得Botnet的情況。
這種方法的優點是能夠有效地捕獲比較活躍的Botnet,並且準確率比較高,同時,由於可以獲得程序中包含的一些特徵值,可以對Botnet進行更深層的研究。但這種方法對於不再傳播的Botnet是無法捕獲的。
第二種方法是基於網絡流量的研究。這種方法是將Botnet的行爲特徵通過流量變化反應出來,然後通過統計這些特徵流量來判斷Botnet的存在。這種研究方法能夠通過對網關流量的分析來判斷Botnet存在的可能性,但Botnet的流量往往會淹沒在海量的網關流量中,很難被有效地區分出來。 原因如下:  
第一,Botnet是一種惡意行爲,擁有這些Botnet的人極不願意讓其他人登錄到他的服務器中去,同時也爲了防止其他黑客奪取其Botnet,他會有意地隱藏服務器的基本信息,如連入的用戶數、可見的用戶數、服務器內所建立的頻道等,這些信息本來是需要公佈給聊天者的,現在卻被攻擊者有意隱藏了。
第二,由於加入到Botnet服務器中的所謂用戶nickname是由bot程序生成,所以這些bot的nickname應符合一定的生成算法,也就帶有了某些規律,如IP地址表示法(就是將被感染了bot程序的主機的IP地址所在國的三位縮寫放在開頭,然後在後面加入指定長度的隨機數字,如USA|8028032,CHA|8920340)和系統表示法(將被感染bot程序的主機的系統作爲開始的字母如xp、2000等,然後再在後面加上指定長度的隨機數字,如xp|8034,2000|80956)。這些命名的特徵可以從得到的bot源碼中發現並總結出來。這些用戶的nickname的規律性和正常的IRC Server中的用戶nickname的隨意性是不相同的。圖1就是截取的兩個帶有命名規律的Botnet的用戶nickname集。
第三,由於Botnet中的感染bot程序的主機是在不知情的情況下被控制的,所以在沒有Botnet控制者指令的條件下是不會有所行爲的,所以他們的行爲也會不同於正常的IRC Server中的聊天者的行爲,更形象地講他們的行爲更像一個個殭屍。
由於以上原因,在IRC協議的Botnet服務器中,存在着可以提取的有別於正常IRC服務器的特徵屬性,通過統計和使用一定的模式識別算法,最後可以將這些特徵屬性構成用來判斷服務器性質的判斷條件。
系統設計
通過上面的分析可以看到,要獲取這些信息,需要有可以自動登錄的IRC客戶端程序,同時要有一個比較合理的識別算法以便提高使用這些信息作爲判斷標準的準確率。本着這樣的設計思路,這裏給出Botnet自動識別系統。
本系統分爲四個模塊,分別爲數據收集模塊、樣本集建立模塊、規則集模塊以及檢測模塊。
數據收集模塊
根據目前Botnet存在的情況,針對IRC Botnet進行研究,在網絡中搜集bot惡意樣本分析報告,從而得到有關Botnet的服務器地址信息,以及登錄指定頻道的信息,將所需要的服務器地址信息、登錄口令、登錄頻道名稱、登錄頻道所需密碼以及nickname的命名規則提取出來存入到數據庫中供採集異常樣本時使用。另一方面將網絡中正常的IRC服務器的地址信息也提取出來,供採集正常的樣本時使用。
樣本集建立模塊
將異常和正常的數據集中的登錄信息作爲輸入,登錄到相關的IRC服務器中,獲取指定的服務器信息,存入到後臺數據庫形成異常樣本庫和正常樣本庫。
規則集模塊
使用貝葉斯算法對樣本集中的異常樣本和正常樣本進行統計,得到各個屬性在Botnet判斷中所佔比例,這樣就形成了可用於判斷的規則庫。隨着樣本數的不斷增加,不斷地修正各屬性的概率和判斷閾值,這樣就可以逐漸提高判斷的準確性。同時要不斷總結可用來判斷的新屬性,擴展規則集。
檢測模塊
在CERNET網關中提取使用IRC協議默認的通信端口6667的相關信息,得到存在於CERNET中的IRC服務器地址或與CERNET主機建立聯繫的服務器地址,然後登錄到這些IRC服務器中,通過同樣的特徵採集方法得到能夠用來判斷的服務器特徵,再通過檢測器,比對與規則集中的條件相符的屬性,採用複合概率的方法計算出符合條件的各規則的總的概率,與規定的概率閾值進行比較,得出判斷結論。根據得到的結果再存入不同的樣本集中,這樣就可以不斷地增加樣本。
系統的實現
在系統模型的各個設計模塊中,採集樣本和統計判斷概率是關鍵部分,所以主要介紹這兩部分的實現。
殭屍程序客戶端模擬
採集Botnet樣本。實現方法是編寫一個模擬的IRC客戶端程序,能夠應答各種IRC協議的指令,並且將登錄服務器後回饋的各種信息選擇出來填寫到後臺數據庫中保存,這樣就可以得到後續所需要的判斷屬性。在採集過程中儘可能多地保留各種信息。因爲在獲得Botnet樣本時,有些信息是被控制者有意修改和掩蓋的,所以往往會有某些屬性擾亂我們的判斷,只有儘可能多地比對各種屬性纔能有比較準確的判斷。
殭屍網絡判定流程
統計判斷概率部分是採用貝葉斯算法和複合概率的方法來實現的。首先要統計出某個屬性在Botnet樣本中的出現概率,然後再統計出這個屬性在正常IRC Server樣本中出現的概率,根據貝葉斯公式得到出現該屬性時服務器爲Botnet服務器的概率。依次將所有能夠採集到的屬性都進行這樣的統計計算,就形成了一個判斷條件列表。每一個需要判斷的服務器都先相應地進行屬性採集,然後對照這個判斷列表,利用複合概率的計算方法得到最終的概率。
具體實現是這樣的。
P(ti|A1) i=1,2,3,4,5,6爲該服務器爲Botnet服務器的事件發生時,即已知爲Botnet服務器時存在ti屬性的概率,計算方法爲(A1是Botnet服務器這個事件的發生):
P(ti|A1)=存在ti的Botnet服務器數/總的Botnet服務器數;
P(ti|A2) i=1,2,3,4,5,6 爲該服務器不是Botnet服務器的事件發生時,即已知該服務器爲正常IRC服務器時存在ti屬性的概率,計算方法爲(A2爲不是Botnet服務器的事件發生時):
P(ti|A2)=存在ti屬性的正常樣本的服務器數/總的正常服務器數;
根據貝葉斯公式:
P(A1|ti)= P(ti|A1)*P(A1)/[P(ti|A1)*P(A1)+P(ti|A2)*P(A2)]
假定先驗概率P(A1)=P(A2)=50%,這樣就可以計算出P(A1|ti),就形成了判斷列表。當給定一個服務器地址後,根據獲取的屬性特徵,得到可判斷的概率,公式爲:
P(A|t)=P1*P2*P3….*Pn/P1*P2*P3…Pn+(1-P1)(1-P2)(1-P3)*…(1-Pn)
其中Pi=P(A1|ti)。
系統優缺點分析
系統具備如下優點。
第一,從網關數據出發,直接找到用於Botnet控制的核心服務器。在一個網關中有着大量的基於IRC協議的通信信息,可以爲我們提供很好的IRC Server地址,通過上面的識別判斷方法可以對這些Server地址進行過濾,將Botnet Server從這些信息中挑選出來。
第二,判斷方法明確簡單,誤報率低。這些用來判斷的屬性都是從真正的在網絡中存在的Botnet樣本中挑選出來的,所以比較直接明瞭,可以很快將具有這些屬性的Server與普通的IRC Server區分開來。
第三,具有可擴展性,可以不斷地通過添加用來判斷的屬性和樣本數量,不斷提高判斷的準確性。隨着對IRC協議的深入分析,以及對Botnet特徵的全面理解,可以加強判斷的條件,使系統由可判斷有較明顯差別的Botnet Server到細緻地區分有較小差別的Botnet。
但是,系統還存在如下侷限性。
第一,漏報率比較高。Botnet服務器按照生成的形式粗略地分爲兩類:一類是依託大的IRC Servers,在這樣的服務器上建立惡意頻道,以便形成可控的Botnet。這種Botnet的優勢是規模龐大,攻擊力強,同時還可以節省自身的資源,但被發現的機率也比較大,而且一旦被發現,Botnet就會被IRC Server的系統管理員所控制,損失嚴重。另外一類Botnet是獨自建立的IRC Server,由黑客自己控制,這種Botnet規模雖然小,但容易控制,隨時可以隱藏自身,並且有着很好的可遷移性。
對於第一類Botnet,本系統目前存在較大誤差,還需要獲得Botnet更詳細的登錄信息,做進一步的判斷,才能夠得出更好的識別效果。
第二,該系統的檢測對象是針對IRC協議的Botnet,也可以擴展到基於這種集中控制的Botnet。但是對於目前已經存在的基於P2P結構的Botnet,由於不存在覈心控制的服務器,無法利用本識別系統進行判別。
任何一種檢測方法都不是萬能的,比較有效的方法是將幾種各有所長的方法集中起來,形成一個整體,這樣才能夠最大限度地提高判斷的準確性。我們下一步的工作就是着重解決對依託合法的IRC Server建立的Botnet的判斷,同時研究逐漸發展起來的基於P2P結構的Botnet,找到行之有效的判斷方法。

發佈了13 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章