發現殭屍網絡的常用方法

般而言,個人用戶側重發現本機上的殭屍程序,計算機安全應急組織側重發現活躍的殭屍網絡。 對於使用Windows操作系統的個人用戶來說,發現殭屍程序(Bot)的難度取決於該程序的隱蔽程度。Bot平時潛伏在被控主機上,等待控制者發來的命令,此時,Bot的網絡活動只限於與服務器之間的PING/PONG命令,引起的流量和網絡連接很少。而且,Bot未必使用IRC協議常用的TCP 6667端口,所以很難察覺。但根據CNCERT/CC的觀察,目前的Bot很少處於靜止狀態,它們總是在掃描、傳播自身(因爲很多Bot加入頻道後會將頻道主題解釋爲命令,而主題多數是掃描命令),這時,系統的網絡連接會大大增加,對系統資源的佔用也可能導致機器明顯變慢,症狀和普通的蠕蟲沒有區別。用戶可以在命令行(cmd.exe)裏輸入“netstat-an”命令,如果出現本地IP向多個目標 IP的相同端口(如135,445)發起連接的現象,則很可能是掃描行爲。發現掃描後,可以用端口與進程對應工具,如fport.exe,找到掃描進程,從而發現可疑的惡意程序。用戶也可以直接使用netstat命令觀察本機對外建立的活躍的網絡連接的情況,積累足夠的經驗之後也可以發現Bot建立的可疑連接。 如果Bot未進行掃描和拒絕服務攻擊這種引起流量突變的活動,而只是竊取用戶敏感信息,如銀行卡、郵件的賬號和密碼、CD-Key、按鍵記錄並通過郵件或網頁訪問的方式通知控制者,則難以發現。可以採取的措施是安裝防火牆。這樣,當Bot訪問互聯網時,防火牆會提示“某文件試圖訪問…是否允許?”,用戶可以根據文件名和端口判斷該程序的合法性,判斷是不是自己運行的程序或系統程序?發現可疑則禁止該文件訪問互聯網。 當然,如果Bot將訪問互聯網的功能插入到IE等進程內,則可以有效地穿透防火牆,因爲 IE總是被用戶允許的。另外,近期還發現有些Bot採用rootkit技術隱藏自身進程,不排除將來Bot利用rootkit技術隱藏網絡通信的可能,因爲隱藏進程和網絡通信是rootkit的基本功能,也都容易實現。這些都給個人用戶發現和清除Bot帶來困難,即使是計算機專業人員也如此! 因此,與殭屍網絡進行對抗、保護用戶的安全和利益,是安全組織、網管等不容推卸的責任。如果他們掌握了一個殭屍網絡的具體情況,可以在其所管理的網絡中對殭屍網絡的控制服務器地址或動態域名實施屏蔽,這樣可以更直接和快速地避免其他計算機加入到殭屍網絡中。之後再逐漸爲用戶提供工具或者諮詢,幫助用戶清除留在其計算機中的殭屍程序。國際上一些計算機安全應急組織之間開始交換這種信息,就是基於這樣的思路。在CNCERT/CC的倡議下,亞太地區也即將展開這樣的工作。 對於應急組織,發現並控制活躍的殭屍網絡是重要的工作。現有的發現殭屍網絡的方法主要有三種:(1)利用蜜罐(honeypot)捕獲Bot樣本;(2)利用IDS監測;(3)在IRC服務器上利用殭屍網絡的行爲特徵。 1.利用蜜罐(Honeypot) 部署多個蜜罐捕獲傳播中的Bot,記錄該Bot的網絡行爲(通過Honeywall)。通過人工分析網絡日誌並結合樣本分析結果,可以掌握該Bot的屬性,包括它連接的服務器(dns/ip)、端口、頻道、連接/頻道/控制密碼等信息,獲得該殭屍網絡的基本信息甚至控制權。 實驗表明,一臺未打補丁的Windows主機,接入互聯網後平均25分鐘即可感染惡意程序。所以,利用蜜罐可以捕獲Bot,從而根據Bot運行時連接的服務器發現殭屍網絡。 這種方式被證明是一種有效的手段,國際項目“honeynet project”在2004年11月到2005年3月期間,只使用兩臺蜜罐(1臺通過HoneyWall記錄日誌、1臺使用mwcollect捕獲新的樣本),就發現了180個殭屍網絡,每個殭屍網絡的規模從幾百個到幾萬個不等,共涉及到30萬個被控主機。同時還收集到5500個樣本,共800種(有些樣本是相同的)。在2004年11月到2005年1月,共觀察到406次DDoS攻擊,攻擊目標共179個。 2.利用網絡IDS 對於具有IRC協議解析能力的IDS,可以根據IRC Bot常用命令,如JOIN、PASS、PRIVMSG、NICK、TOPIC、NOTICE等及其命令參數來發現未知殭屍網絡。 如果不具有IRC 協議解析功能,也可以根據TCP數據報文的內容發現可疑殭屍網絡,可疑的數據報文包含udp、syn、ddos、http://、download、.exe、update、scan、exploit、login、logon、advscan、lsass、dcom、beagle、dameware等。 3.利用殭屍網絡的行爲特徵 ①快速加入型Bot 這類Bot通常利用蠕蟲傳播,一旦在受害主機上運行,就按預定義的參數連接IRC服務器、加入指定的頻道接受指令。短期內大量IRC客戶端加入同一服務器的同一頻道是可疑的。 ②長期連接型Bot 正常用戶很少長期停留在一個頻道中,而Bot只有在接受“退出”、“休眠”、“自殺”等命令後纔會退出。 ③發呆型Bot Bot與正常用戶另一個不同之處是Bot很少“說話”,經常“發呆”,靠ping/pong命令來維持連接。 利用行爲監測是由DdoSVax項目提出的,該項目可以針對以上類型的Bot預警。 4.三種發現方式的對比 ①發現的殭屍網絡類型和範圍不同 IDS只能發現監測範圍之內的Bot活動,而位於互聯網任何一個位置的蜜罐有可能捕獲任意有感染該蜜罐能力的Bot,進而發現該Bot所在的殭屍網絡。但是蜜罐不能發現停止傳播而單純執行命令的Bot,也不能發現對該蜜罐系統無攻擊能力的Bot,而IDS則不存在這些問題。行爲監測適合於發現較大規模且嚴格使用IRC協議的殭屍網絡。 ②蜜罐具有更強的消息收集能力 IDS的監測方法是相對單一的,它必須針對已知的(IRC)協議監測符合條件的網絡通信內容。如果Bot採用了非IRC協議或與IRC RFC不兼容的修改版本,IDS就不能發現它們的活動;而根據報文內容監測又存在高誤報的問題。蜜罐則不存在這些問題,它捕獲的Bot會收到來自殭屍網絡(包括控制命令)的所有消息,無論與IRC協議是否相關。但是,對於經過修改的IRC服務器,蜜罐可能無法收到很多消息,比如新用戶的加入,從而無法掌握殭屍網絡的規模,而監測則不存在這個問題。行爲監測法適合於發現殭屍網絡,不適合收集信息。 ③IDS有更強的發現控制者的能力 控制服務器收到控制者的命令後,會將該命令轉發給所有Bot,而轉發的信息中可能隱藏了控制者的地址,這使得蜜罐難以發現控制者的地址,而IDS則有潛力發現控制者的活動,即使控制者通過代理連接控制服務器。例如,控制者通過socks v4代理向Server發送一個“TOPIC #rBot :.advscan lsass 200 5 0 -r -s”的命令的過程: a)源地址爲控制者,目的地址爲代理 ->TOPIC #rBot :.advscan lsass 200 5 0 -r -s/n b)源地址爲代理,目的地址爲控制服務器 ->TOPIC #rBot :.advscan lsass 200 5 0 -r -s/n c) 源地址爲控制服務器,目的地址分別爲Botnet內每一個Bot <-:ControllerNICK!ControllerUSER@socks(HOST or IP) TOPIC #rBot :.advscan lsass 200 5 0 -r -s/r/n 上述網絡通信內容可以被IDS發現,而蜜罐捕獲的Bot只能收到最後一條消息,蜜罐可以從這條消息中發現代理的IP、部分IP或編碼過的IP,因爲獲得的是代理的IP,就丟失了發現控制者的機會。而IDS則有可能發現上面3個通信,即使獲得兩條,比如1和3,1的服務端在3中是發送消息端,判斷1的服務端是代理。再結合代理驗證工具確認是代理後,則1的客戶端就是可疑的控制者。對於多級代理,情況會更復雜,取決於IDS的部署範圍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章