0
雷鋒網(wǎng)編者按:遠(yuǎn)控(RAT)的歷史源遠(yuǎn)流長(zhǎng),"文能提筆安天下,武能馬上定乾坤"。遠(yuǎn)控既能用于正規(guī)用途比如遠(yuǎn)程協(xié)作軟件teamviewer等,亦能用于非法活動(dòng)比如C&C攻擊。而今天雷鋒網(wǎng)邀請(qǐng)百度安全團(tuán)隊(duì)分享的的就是用于非(黑)法(產(chǎn))活動(dòng)的遠(yuǎn)控。
本文從科普的角度出發(fā)介紹了在機(jī)房全流量中挖掘僵尸網(wǎng)絡(luò)的方法。首先介紹了一種典型的主控通信協(xié)議,然后對(duì)主控的攻擊行為做了分析總結(jié)。主控通信協(xié)議與主控攻擊特點(diǎn)是建立僵尸網(wǎng)絡(luò)信道發(fā)現(xiàn)的基石。
本文作者:百度安全
國(guó)內(nèi)遠(yuǎn)控命名五花八門(mén),既有"養(yǎng)雞場(chǎng)"、"大灰狼"等接地氣的名字,也有"假面騎士"、"金戈鐵馬"等頗具武俠風(fēng)的名字。在我們的樣本庫(kù)中,"刑天"、"天羽"、"天罰"、"天劫"等幾款遠(yuǎn)控用名字做到獨(dú)樹(shù)一幟,因?yàn)榘酥袊?guó)傳統(tǒng)文化推崇的"天"字,故統(tǒng)一命名為"天字號(hào)"。
一、遠(yuǎn)控介紹
1.1 遠(yuǎn)控家族
"野火燒不盡,春風(fēng)吹又生",這句詩(shī)形容遠(yuǎn)控家族正合適。
安全的博弈與對(duì)抗經(jīng)久不息,遠(yuǎn)控在各種殺軟廠商的合力圍剿下仍然能夠存活甚至繁衍生息,說(shuō)明黑色產(chǎn)業(yè)鏈對(duì)黑產(chǎn)從業(yè)者誘惑之大。為了躲避?chē)?遠(yuǎn)控程序也一直在升級(jí)換代,并逐步擴(kuò)大戰(zhàn)場(chǎng)。肉雞程序利用白利用躲避殺軟主動(dòng)防御查殺,遠(yuǎn)控由PC發(fā)展到安卓平臺(tái),都是遠(yuǎn)控在逐步發(fā)展的印證。
出于不同的原因,不同的主控可能在通信協(xié)議、Server端運(yùn)行機(jī)制等方面極其相似,我們將這些相似的主控劃作一個(gè)家族,方便分析和統(tǒng)計(jì)。同家族的主控大多是其中一個(gè)主控程序的變種,為了躲避檢測(cè)會(huì)采取修改指令結(jié)構(gòu)、變化指令I(lǐng)D、更換加密方法等手段。由于遠(yuǎn)控作者的編碼水平參差不齊,有的新手會(huì)簡(jiǎn)單修改他人寫(xiě)好的遠(yuǎn)控代碼,這樣也會(huì)造成不同遠(yuǎn)控隸屬同一家族的情況。
1.2 橫向?qū)Ρ?/span>
我們對(duì)每個(gè)天字號(hào)遠(yuǎn)控均做了分析,從通信加密、是否包含系統(tǒng)監(jiān)控模塊、是否包含DDos攻擊模塊、DDos攻擊類(lèi)型的多樣性等四個(gè)緯度進(jìn)行橫向?qū)Ρ?,詳情如下表所示?/p>
分析時(shí)我們發(fā)現(xiàn)一件有意思的事情,"天劫"的通信協(xié)議與"刑天"完全相同隸屬于同一家族并且操作界面高度相似,這著實(shí)令人尷尬。"天劫"增加了注冊(cè)登錄充值等模塊用于售賣(mài), 在山寨的道路上越走越遠(yuǎn),無(wú)法想象"刑天"的開(kāi)發(fā)者會(huì)是怎樣的心情。
由于"刑天"的通信協(xié)議沒(méi)有加密便于抓包分析并且攻擊類(lèi)型比較豐富,比較適合進(jìn)行常規(guī)的科普,所以本文選擇"刑天"作為天字號(hào)的典型拿出來(lái)分析。
1.3 測(cè)試環(huán)境部署
分析"刑天"的通信協(xié)議方法比較簡(jiǎn)單,我們使用虛擬機(jī)搭建測(cè)試環(huán)境進(jìn)行抓包分析,這種未加密通信協(xié)議的情況對(duì)于對(duì)不擅長(zhǎng)逆向的同學(xué)來(lái)說(shuō)是種福音。
我們?cè)趦?nèi)網(wǎng)中使用2臺(tái)windows 7 、1臺(tái)Centos虛擬機(jī)為基礎(chǔ)部署了簡(jiǎn)單的測(cè)試環(huán)境。一臺(tái)Windows 7虛擬機(jī)A用作主控端,一臺(tái)Windows 7虛擬機(jī)B用作肉雞,而Centos虛擬機(jī)C架設(shè)TCP、UDP服務(wù)用作測(cè)試靶機(jī)。部署結(jié)構(gòu)如下圖所示:
我們以"刑天"為例給出部署過(guò)程。首先在A中使用刑天生成肉雞程序:
然后在B中運(yùn)行肉雞程序,并開(kāi)啟wireshark抓取數(shù)據(jù)包。之后我們?cè)贏中會(huì)看到B上線(xiàn):
通過(guò)主控界面下方的功能區(qū)設(shè)定攻擊信息:
在 C 中我們可以簡(jiǎn)單的使用 Python 的 SimpleHTTPServer 啟動(dòng)一個(gè) Web 服務(wù)作為 TCP 攻擊的目標(biāo),這樣做的好處是可以在 bash shell 中看到 TCP 攻擊的攻擊載荷并使用>&等重定向攻擊載荷。當(dāng)然我們完全可以寫(xiě)一個(gè) UDP 服務(wù)來(lái)捕獲攻擊數(shù)據(jù)。
二、通信協(xié)議
有人質(zhì)疑說(shuō)許多文章在分析遠(yuǎn)控時(shí)主要針對(duì)遠(yuǎn)控生成的 server 端的運(yùn)行機(jī)制,沒(méi)見(jiàn)過(guò)寫(xiě)通信協(xié)議的,你這屬于耍流氓。不得不承認(rèn),分析 server 的運(yùn)行機(jī)制固然重要,但是我的觀點(diǎn)歷來(lái)是不分場(chǎng)景的操作都是耍流氓。我們對(duì)遠(yuǎn)控分析的利用場(chǎng)景是在全流量中發(fā)現(xiàn)C2 信道以及檢出惡意主機(jī),豐富威脅情報(bào),從而對(duì)云的安全態(tài)勢(shì)做到了然于胸、知己知彼。因此,掌握各種遠(yuǎn)控家族的通信協(xié)議對(duì)于上面的場(chǎng)景來(lái)說(shuō)至(jing)關(guān)(shuo)重(fei)要(hua)。
為了分析的有理有據(jù)有節(jié),下面分別從首包與C&C指令兩方面來(lái)分析。
2.1 首包
首包即上線(xiàn)包,指肉雞第一次連接主控時(shí)發(fā)送的數(shù)據(jù)包,可以理解為肉雞向主控表明自身存在并要求注冊(cè)的一道憑據(jù)。主控在收到首包后會(huì)認(rèn)為新的 BOT 上線(xiàn)并要求注冊(cè)。"刑天"遠(yuǎn)控會(huì)在首包附帶操作系統(tǒng)類(lèi)型、內(nèi)存大小、CPU 核心數(shù)及主頻、網(wǎng)絡(luò)帶寬等信息。這樣的信息方便"牧馬人"在進(jìn)行任務(wù)下發(fā)時(shí)對(duì)機(jī)器條件的考量(比如sync flood攻擊需要windows server系統(tǒng)而不能是win xp等個(gè)人pc)。在測(cè)試中抓取肉雞上線(xiàn)的首包如下圖所示:
"刑天"遠(yuǎn)控的首包長(zhǎng)度為184Bytes, 在 windows 7與 window xp 環(huán)境測(cè)試中首包的認(rèn)證標(biāo)識(shí)為 b00000007700000004080000,首包結(jié)構(gòu)如下表所示:
2.2 攻擊分類(lèi)
"刑天"DDoS功能分為5大類(lèi),每個(gè)大類(lèi)分為若干細(xì)分功能,分類(lèi)細(xì)節(jié)如下表所示:
2.3 C&C指令
2.3.1 攻擊參數(shù)
在肉雞上線(xiàn)之后,我們關(guān)心的是主控如何給肉雞下發(fā)攻擊命令。設(shè)定攻擊參數(shù)是DDoS型主控必要的功能。通過(guò)分析多款DDoS主控,攻擊參數(shù)主要包括以下字段:攻擊目標(biāo)、目標(biāo)端口、持續(xù)時(shí)間、線(xiàn)程數(shù)量、攻擊方式等。
2.3.2 指令結(jié)構(gòu)
刑天遠(yuǎn)控指令結(jié)構(gòu)比較簡(jiǎn)單,分為兩個(gè)部分:指令標(biāo)識(shí) + 指令載荷。肉雞程序提取指令標(biāo)識(shí)確定具體的任務(wù)類(lèi)型,根據(jù)指令載荷填充任務(wù)載荷。
2.3.2.1 指令標(biāo)識(shí)
指令參數(shù)長(zhǎng)度標(biāo)識(shí)與指令大類(lèi)標(biāo)識(shí)均為 4 字節(jié)整形,采用小端模式而非網(wǎng)絡(luò)字節(jié)序。
2.3.2.2 指令載荷
根據(jù)是否需要DDoS攻擊參數(shù),我們將指令載荷分為兩類(lèi):DDoS攻擊指令載荷、非DDoS攻擊指令載荷。參照攻擊分類(lèi),批量操作大類(lèi)屬于非 DDoS攻擊指令載荷,剩余大類(lèi)均屬于DDoS攻擊指令載荷。
需要注意的是,在網(wǎng)站測(cè)試大類(lèi)中會(huì)出現(xiàn)針對(duì)游戲方式、完全穿透方式、變參的起始 ID 等擴(kuò)展細(xì)分指令,刑天遠(yuǎn)控為了統(tǒng)一指令載荷的結(jié)構(gòu)加入了 8 字節(jié)的擴(kuò)展字段以兼容不同大類(lèi)。通過(guò)分析每個(gè)細(xì)分指令,我們總結(jié)DDoS攻擊指令載荷結(jié)構(gòu)如下表所示:
“其它字節(jié)”包含了攻擊目標(biāo)、自定義攻擊載荷之類(lèi)的參數(shù),其長(zhǎng)度為指令載荷長(zhǎng)度減去 24 字節(jié)。
非DDoS攻擊指令載荷結(jié)構(gòu)相對(duì)簡(jiǎn)單,分為兩種情況。對(duì)于下載下載地址、彈窗地址、更新地址等3個(gè)指令,地址就是載荷。而對(duì)于關(guān)機(jī)、重啟、卸載等3個(gè)不需要實(shí)際載荷的指令,用0x31字節(jié)填充。
通過(guò)進(jìn)一步分析每種細(xì)分攻擊的數(shù)據(jù)包,我們總結(jié)了細(xì)分指令I(lǐng)D如下表:
2.3.3 C&C指令結(jié)構(gòu)匯總
通過(guò)上述分析,我們匯總"刑天"C&C指令結(jié)構(gòu)如下:
以上就是"刑天"遠(yuǎn)控的通信協(xié)議,包括首包結(jié)構(gòu)、C&C指令結(jié)構(gòu)等。
在掌握了主控通信協(xié)議的情況下,我們就可以用匹配的方法在全流量中抓取使用了明文通信協(xié)議的C2信道流量,進(jìn)而鎖定肉雞及主控并豐富威脅情報(bào)庫(kù)。
三、攻擊行為分析
現(xiàn)在我們可以用已知通信協(xié)議捕獲匹配流量,但是不能止步于此。通信協(xié)議匹配的方法無(wú)法解決感知未知主控通信協(xié)議的問(wèn)題,因此我們需要通過(guò)總結(jié)肉雞在攻擊時(shí)的行為特征來(lái)檢出攻擊流量。在攻擊流量分析過(guò)程中,我們發(fā)現(xiàn)肉雞程序的發(fā)包策略很有特點(diǎn),是一個(gè)很好的切入點(diǎn)。我們分析總結(jié)了"刑天"主控發(fā)包時(shí)的動(dòng)作特點(diǎn),如下所示:
3.1 TCP發(fā)包策略
3.2 UDP發(fā)包策略
3.3 ICMP發(fā)包策略
ICMP發(fā)包策略會(huì)持續(xù)發(fā)送載荷超過(guò)4000字節(jié)的ICMP數(shù)據(jù)包。
3.4 行為分析總結(jié)
結(jié)合之前的場(chǎng)景,分析肉雞程序的發(fā)包策略實(shí)際上并不是我們要做抗D,我們的目的是根據(jù)發(fā)包策略篩選出口流量中的可疑流量進(jìn)而鎖定云中的可疑主機(jī)。
熟悉主控的發(fā)包策略有助于總結(jié)規(guī)律、形成方法,從云主機(jī)的流量中及時(shí)發(fā)現(xiàn)可疑流量。這對(duì)探測(cè)未知主控家族的通信協(xié)議是一個(gè)很大的幫助。
本文由百度安全投稿,雷鋒網(wǎng)編輯。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。