Kate Li (Taiwan)的部落格

首頁

探索點對點僵屍網路

作者 urbin 時間 2020-03-19
all

點對點以及兩者之間的一切

早在十月份,我就厭倦了無休止的密碼鎖和PoS特洛伊木馬,所以决定看看一些老派的東西,那就是Kelihos。從那時起,我開始意識到P2P僵屍網路監控結合了我最喜歡的兩個安全領域:逆向工程和程式設計。作為一個有趣的小項目,我决定開始一個P2P僵屍網路監控系統的工作,它將顯示細節,如僵屍網路的大小和節點的地理分佈(這仍然是一個工作在進行中,但你可以在這裡找到它)。

它是如何工作的?

在點對點僵屍網路中,能够接收傳入連接的機器人充當服務器(稱為超級節點),而那些不能僅僅從僵屍主機(稱為工人)執行任務的機器人充當服務器。超級節點連接到其他超級節點,並在它們之間傳遞消息以保持網絡同步,然後工人連接到多個超級節點以檢索命令。為了讓工作人員保持超級節點的最新清單,每個超級節點用它知道的其他超級節點的IP清單響應對等請求命令(此清單的大小取決於僵屍網路;例如,Kelihos發送500個IP,而ZeroAccess2+只發送16個)。工作人員將從多個超級節點下載對等清單並將其存儲在本地,以確保即使在超級節點的環境不斷變化的情况下,他們也可以保持與僵屍網路的連接。

映射超級節點

首先我們需要一個或多個線上超級節點的IP,然後我們可以編寫一個程式連接到每個超級節點並發送一個對等請求,然後連接到返回的所有IP,遞迴地重複這個過程。對於較新的ZeroAccess節點,超級節點在內部存儲大量的超級節點ip,但作為對每個對等請求的響應,只返回16個線上ip:這意味著,在一次爬網中,我們可能只找到一個最近聯系的超級節點的小集群,而不是每個線上節點

為了確保發現整個網絡,我們應該使用多個超級節點IP啟動爬網程式,並將找到的所有IP存儲到一個資料庫中,然後每次重新啟動爬網程式時,我們都會使用在上一個爬網程式中找到的IP清單為其種子;重複此過程幾個小時,確保找到所有聯機節點。

如果你和我一樣,想知道僵屍網路地圖在視覺化時是什麼樣子的,那就不要再看下去了。以下是從ZeroAccess 3僵屍網路的一次抓取中獲取的一些數據,並使用d3進行視覺化

測繪工作者

這有點棘手,因為工作IP不會以任何管道暴露在僵屍網路中;但是,它們仍然需要連接到多個超級節點來檢索對等清單和命令。為了映射所有的worker,我們需要在botnet上設定多個超級節點來記錄傳入的連接(顯然每個worker並不是同時連接到每個超級節點,所以我們的超級節點在botnet中有更强大的存在是很重要的)。

根據僵屍網路機器人使用各種不同的方法來决定要聯系哪些節點,這可能是:年齡、線上時間、延遲或信任。以ZeroAccess 2為例,它是年齡。ZA2工作人員按照從最新到最舊的順序保存了一個連接到的超級節點IP地址的內部清單;囙此,為了在僵屍網路上建立良好的狀態,最好有一個具有多個IP的服務器,並經常添加新的IP地址,確保盡可能多地通知其他超級節點我們的新IP地址(我們可以使用從爬網程式獲得的超級節點IP的綜合清單!)。

目的是什麼?

在我的例子中,僵屍網路追踪器除了成為一個有趣的項目外沒有任何真正的目的,但在威脅情報領域,它可以提供有價值的情報。如果我們知道僵屍網路上所有工作人員的IP地址,我們可以主動防止他們可能採取的任何惡意行為:例如,如果僵屍網路是一個垃圾郵件僵屍網路,我們可以在他們發送一封電子郵件之前將所有IP地址標記為垃圾郵件。我們還可以使用這些數據自動通知企業,如果他們的地址空間中的IP出現在僵屍網路上,允許他們在造成任何傷害之前處理漏洞

結論

這篇文章只是對我當前項目的一個小的瞭解,隨著它的進展,我可能會發佈更多的數據和數據視覺化。如果你有任何建議,請在twitter(@MalwareTechBlog)上留言或DM me。

如果您有興趣閱讀更多關於ZeroAccess3的內容,請查看我與Kryptos Logic:ZeroAccess3分析公司的合作。