如何在雲中發掘殭屍網路?
雷鋒網編者按:遠控(RAT)的歷史源遠流長,"文能提筆安天下,武能馬上定乾坤"。遠控既能用於正規用途比如遠程協作軟體teamviewer等,亦能用於非法活動比如C&C攻擊。而今天雷鋒網邀請百度安全團隊分享的的就是用於非(黑)法(產)活動的遠控。
本文從科普的角度出發介紹了在機房全流量中挖掘殭屍網路的方法。首先介紹了一種典型的主控通信協議,然後對主控的攻擊行為做了分析總結。主控通信協議與主控攻擊特點是建立殭屍網路信道發現的基石。
本文作者:百度安全
國內遠控命名五花八門,既有"養雞場"、"大灰狼"等接地氣的名字,也有"假面騎士"、"金戈鐵馬"等頗具武俠風的名字。在我們的樣本庫中,"刑天"、"天羽"、"天罰"、"天劫"等幾款遠控用名字做到獨樹一幟,因為包含了中國傳統文化推崇的"天"字,故統一命名為"天字型大小"。
一、遠控介紹
1.1 遠控家族
"野火燒不盡,春風吹又生",這句詩形容遠控家族正合適。
安全的博弈與對抗經久不息,遠控在各種殺軟廠商的合力圍剿下仍然能夠存活甚至繁衍生息,說明黑色產業鏈對黑產從業者誘惑之大。為了躲避圍剿,遠控程序也一直在升級換代,並逐步擴大戰場。肉雞程序利用白利用躲避殺軟主動防禦查殺,遠控由PC發展到安卓平台,都是遠控在逐步發展的印證。
出於不同的原因,不同的主控可能在通信協議、Server端運行機制等方面極其相似,我們將這些相似的主控劃作一個家族,方便分析和統計。同家族的主控大多是其中一個主控程序的變種,為了躲避檢測會採取修改指令結構、變化指令ID、更換加密方法等手段。由於遠控作者的編碼水平參差不齊,有的新手會簡單修改他人寫好的遠控代碼,這樣也會造成不同遠控隸屬同一家族的情況。
1.2 橫向對比
我們對每個天字型大小遠控均做了分析,從通信加密、是否包含系統監控模塊、是否包含DDos攻擊模塊、DDos攻擊類型的多樣性等四個緯度進行橫向對比,詳情如下表所示:
分析時我們發現一件有意思的事情,"天劫"的通信協議與"刑天"完全相同隸屬於同一家族並且操作界面高度相似,這著實令人尷尬。"天劫"增加了註冊登錄充值等模塊用於售賣, 在山寨的道路上越走越遠,無法想像"刑天"的開發者會是怎樣的心情。
由於"刑天"的通信協議沒有加密便於抓包分析並且攻擊類型比較豐富,比較適合進行常規的科普,所以本文選擇"刑天"作為天字型大小的典型拿出來分析。
1.3 測試環境部署
分析"刑天"的通信協議方法比較簡單,我們使用虛擬機搭建測試環境進行抓包分析,這種未加密通信協議的情況對於對不擅長逆向的同學來說是種福音。
我們在內網中使用2台windows 7 、1台Centos虛擬機為基礎部署了簡單的測試環境。一台Windows 7虛擬機A用作主控端,一台Windows 7虛擬機B用作肉雞,而Centos虛擬機C架設TCP、UDP服務用作測試靶機。部署結構如下圖所示:
我們以"刑天"為例給出部署過程。首先在A中使用刑天生成肉雞程序:
然後在B中運行肉雞程序,並開啟wireshark抓取數據包。之後我們在A中會看到B上線:
通過主控界面下方的功能區設定攻擊信息:
在 C 中我們可以簡單的使用 Python 的 SimpleHTTPServer 啟動一個 Web 服務作為 TCP 攻擊的目標,這樣做的好處是可以在 bash shell 中看到 TCP 攻擊的攻擊載荷並使用>&等重定向攻擊載荷。當然我們完全可以寫一個 UDP 服務來捕獲攻擊數據。
二、通信協議
有人質疑說許多文章在分析遠控時主要針對遠控生成的 server 端的運行機制,沒見過寫通信協議的,你這屬於耍流氓。不得不承認,分析 server 的運行機制固然重要,但是我的觀點歷來是不分場景的操作都是耍流氓。我們對遠控分析的利用場景是在全流量中發現C2 信道以及檢出惡意主機,豐富威脅情報,從而對雲的安全態勢做到瞭然於胸、知己知彼。因此,掌握各種遠控家族的通信協議對於上面的場景來說至(jing)關(shuo)重(fei)要(hua)。
為了分析的有理有據有節,下面分別從首包與C&C指令兩方面來分析。
2.1 首包
首包即上線包,指肉雞第一次連接主控時發送的數據包,可以理解為肉雞向主控表明自身存在並要求註冊的一道憑據。主控在收到首包後會認為新的 BOT 上線並要求註冊。"刑天"遠控會在首包附帶操作系統類型、內存大小、CPU 核心數及主頻、網路帶寬等信息。這樣的信息方便"牧馬人"在進行任務下發時對機器條件的考量(比如sync flood攻擊需要windows server系統而不能是win xp等個人pc)。在測試中抓取肉雞上線的首包如下圖所示:
"刑天"遠控的首包長度為184Bytes, 在 windows 7與 window xp 環境測試中首包的認證標識為 b00000007700000004080000,首包結構如下表所示:
2.2 攻擊分類
"刑天"DDoS功能分為5大類,每個大類分為若干細分功能,分類細節如下表所示:
2.3 C&C指令
2.3.1 攻擊參數
在肉雞上線之後,我們關心的是主控如何給肉雞下發攻擊命令。設定攻擊參數是DDoS型主控必要的功能。通過分析多款DDoS主控,攻擊參數主要包括以下欄位:攻擊目標、目標埠、持續時間、線程數量、攻擊方式等。
2.3.2 指令結構
刑天遠控指令結構比較簡單,分為兩個部分:指令標識 + 指令載荷。肉雞程序提取指令標識確定具體的任務類型,根據指令載荷填充任務載荷。
2.3.2.1 指令標識
指令參數長度標識與指令大類標識均為 4 位元組整形,採用小端模式而非網路位元組序。
3.3.2.2 指令載荷
根據是否需要DDoS攻擊參數,我們將指令載荷分為兩類:DDoS攻擊指令載荷、非DDoS攻擊指令載荷。參照攻擊分類,批量操作大類屬於非 DDoS攻擊指令載荷,剩餘大類均屬於DDoS攻擊指令載荷。
需要注意的是,在網站測試大類中會出現針對遊戲方式、完全穿透方式、變參的起始 ID 等擴展細分指令,刑天遠控為了統一指令載荷的結構加入了 8 位元組的擴展欄位以兼容不同大類。通過分析每個細分指令,我們總結DDoS攻擊指令載荷結構如下表所示:
「其它位元組」包含了攻擊目標、自定義攻擊載荷之類的參數,其長度為指令載荷長度減去 24 位元組。
非DDoS攻擊指令載荷結構相對簡單,分為兩種情況。對於下載下載地址、彈窗地址、更新地址等3個指令,地址就是載荷。而對於關機、重啟、卸載等3個不需要實際載荷的指令,用0x31位元組填充。
通過進一步分析每種細分攻擊的數據包,我們總結了細分指令ID如下表:
3.3.3 C&C指令結構匯總
通過上述分析,我們匯總"刑天"C&C指令結構如下:
以上就是"刑天"遠控的通信協議,包括首包結構、C&C指令結構等。
在掌握了主控通信協議的情況下,我們就可以用匹配的方法在全流量中抓取使用了明文通信協議的C2信道流量,進而鎖定肉雞及主控並豐富威脅情報庫。
三、攻擊行為分析
現在我們可以用已知通信協議捕獲匹配流量,但是不能止步於此。通信協議匹配的方法無法解決感知未知主控通信協議的問題,因此我們需要通過總結肉雞在攻擊時的行為特徵來檢出攻擊流量。在攻擊流量分析過程中,我們發現肉雞程序的發包策略很有特點,是一個很好的切入點。我們分析總結了"刑天"主控發包時的動作特點,如下所示:
3.1 TCP發包策略
3.2 UDP發包策略
3.3 ICMP發包策略
ICMP發包策略會持續發送載荷超過4000位元組的ICMP數據包。
3.4 行為分析總結
結合之前的場景,分析肉雞程序的發包策略實際上並不是我們要做抗D,我們的目的是根據發包策略篩選出口流量中的可疑流量進而鎖定雲中的可疑主機。
熟悉主控的發包策略有助於總結規律、形成方法,從雲主機的流量中及時發現可疑流量。這對探測未知主控家族的通信協議是一個很大的幫助。
本文由百度安全投稿,雷鋒網編輯。
※亞馬遜Echo新品技術解讀,如何選擇合適的麥克風陣列?
※「白象」仿冒優酷網站,借中印邊境話題再次發起釣魚攻擊
※網易推出AR遊戲《悠夢》,除了好看的場景,他們聊了更多對AR內容的探索
※替考難發覺?平安是這樣用 AI 幹掉「槍手」的
TAG:雷鋒網 |