C&C控制服務(wù)的設(shè)計(jì)和偵測(cè)方法綜述
這篇文章總結(jié)了一些我在安全工作里見到過的千奇百怪的C&C控制服務(wù)器的設(shè)計(jì)方法以及對(duì)應(yīng)的偵測(cè)方法,在每個(gè)C&C控制服務(wù)先介紹黑帽部分即針對(duì)不同目的的C&C服務(wù)器設(shè)計(jì)方法,再介紹白帽部分即相關(guān)偵測(cè)辦法,大家來感受一下西方的那一套。這里的白帽部分有一部分偵測(cè)方法需要一些數(shù)據(jù)和統(tǒng)計(jì)知識(shí),我也順便從原理上簡(jiǎn)單討論了一下用數(shù)據(jù)進(jìn)行安全分析的方法,從數(shù)學(xué)和數(shù)據(jù)原理上思考為什么這么做,可以當(dāng)作數(shù)據(jù)科學(xué)在安全領(lǐng)域的一些例子學(xué)習(xí)一下。
0x00 什么是C&C服務(wù)器
C&C服務(wù)器(又稱CNC服務(wù)器)也就是 Command & Control Server,一般是指揮控制僵尸網(wǎng)絡(luò)botnet的主控服務(wù)器,用來和僵尸網(wǎng)絡(luò)的每個(gè)感染了惡意軟件(malware)的宿主機(jī)進(jìn)行通訊并指揮它們的攻擊行為。每個(gè)malware的實(shí)例通過和它的C&C服務(wù)器通訊獲得指令進(jìn)行攻擊活動(dòng),包括獲取DDoS攻擊開始的時(shí)間和目標(biāo),上傳從宿主機(jī)偷竊的到的信息,定時(shí)給感染機(jī)文件加密勒索等。
為什么malware需要主動(dòng)和C&C服務(wù)通訊?因?yàn)槎鄶?shù)情況下malware是通過釣魚郵件啊等方法下載到感染宿主機(jī),攻擊者并不能主動(dòng)得知malware被誰下載,也不能主動(dòng)得知宿主機(jī)的狀態(tài)(是否開機(jī)是否聯(lián)網(wǎng)等),除非malware主動(dòng)告訴他,所以malware都會(huì)內(nèi)置一套尋找C&C主控服務(wù)器的方法以保持和C&C的聯(lián)絡(luò)和斷線重連。C&C控制服務(wù)的攻防要點(diǎn)在于,攻擊者能不能欺騙防御者成功隱藏C&C服務(wù):如果防御者偵測(cè)到了隱藏的C&C服務(wù),通過一些技術(shù)(封禁域名和IP等)或者非技術(shù)手段(匯報(bào)給安全應(yīng)急中心等)切斷malware和C&C之間的聯(lián)系,就可以有效的摧毀botnet。
尋找到C&C之后malware和C&C之間的通訊方式并不是本文攻防重點(diǎn),它可以是SSH文件傳輸也可以是簡(jiǎn)單的HTTP GET和POST,技巧性不是很大,不多的幾個(gè)靠傳輸來隱藏的技巧比如用DNS隧道隱藏流量這類方法如果有需要以后再來一發(fā)詳細(xì)闡述。
0x01 IP地址:難度低,易被抓
這是最常見的一類C&C服務(wù)器。攻擊者在惡意軟件的代碼里硬編碼寫上C&C服務(wù)器的IP地址,然后在需要和C&C通訊的時(shí)候用HTTP拉取需要的攻擊指令或者上傳從宿主感染機(jī)上盜取的信息等等。
這并不是一個(gè)高級(jí)的辦法,因?yàn)槿绻鹠alware的二進(jìn)制代碼被獲取,這種用IP的方法很容易被安全人員通過反向工程二進(jìn)制代碼或者檢測(cè)蜜罐流量得到C&C服務(wù)器的地址,從而匯報(bào)給服務(wù)提供商封禁IP。所以這種方法并不能有效隱藏C&C服務(wù),IP被抓了被反毒軟件更新病毒庫(kù)以后整個(gè)botnet就被摧毀了。現(xiàn)在國(guó)內(nèi)的多數(shù)malware的主控服務(wù)器都是以這種拼運(yùn)氣不被抓的方式存在,他們靠的是malware數(shù)量多,今天抓一個(gè)當(dāng)天就再出來三個(gè),市場(chǎng)競(jìng)爭(zhēng)很激烈。
國(guó)外用IP的C&C服務(wù)器一般是在Amazon AWS之類的云服務(wù)器上,通知了服務(wù)提供商很容易封禁IP。國(guó)內(nèi)的云服務(wù)商態(tài)度曖昧,不過也算還行吧。有機(jī)智的國(guó)內(nèi)malware作者在東南亞地區(qū)租用云服務(wù)IP,可以有效避開國(guó)內(nèi)監(jiān)管而且速度不錯(cuò)(我并不是教你這么做啊)。
安全人員也不要以為這個(gè)方法低級(jí)就以為能輕易有效防御,比如說如果感染機(jī)不能安裝防毒軟件或者根本你就不知道中毒了。最近的一個(gè)例子是最近比較火的植入路由器的Linux/Xor.DDOS,它的C&C控制就是在AWS上面的IP,造成的影響很大,因?yàn)槎鄶?shù)人并不知道路由器會(huì)被大規(guī)模植入惡意軟件,路由器本身也很少有防護(hù),正好適合用IP做C&C,還省去了復(fù)雜的域名算法和DNS查詢的代碼保證了軟件本身的輕量化。也由于路由本身常開的特性,路由木馬也不用擔(dān)心失去鏈接,一次C&C的通訊可以保持連接很久,降低了木馬被發(fā)現(xiàn)的機(jī)會(huì)。技巧雖然不華麗,但是用的好還是威力強(qiáng)大。該木馬的詳細(xì)分析參見http://blog.malwaremustdie.org/2015/09/mmd-0042-2015-polymorphic-in-elf.html 。
0x02 單一C&C域名:難度較低,易被抓
因?yàn)橛簿幋a的IP容易通過在二進(jìn)制碼內(nèi)的字串段批量regex掃描抓到,一個(gè)變通的辦法就是申請(qǐng)一些域名,比如idontthinkyoucanreadthisdomain.biz代替IP本身,掃描二進(jìn)制碼就不會(huì)立刻找到IP字段。這是個(gè)很廣泛使用的方法,通常C&C域名會(huì)名字很長(zhǎng),偽裝成一些個(gè)人主頁(yè)或者合法生意,甚至還有個(gè)假的首頁(yè)。即使這么用心,這種方法還是治標(biāo)不治本,偵測(cè)的方法也相對(duì)簡(jiǎn)單,原因是:
安全廠商比如Sophos等的資深安全人員經(jīng)驗(yàn)豐富,他們會(huì)很快人工定位到惡意軟件可能包含C&C域名的函數(shù),并且通過監(jiān)測(cè)蜜罐的DNS查詢數(shù)據(jù),很快定位到C&C域名。這些定位的域名會(huì)被上報(bào)給其他廠商比如運(yùn)營(yíng)商或者VirusTotal的黑名單。
新的C&C域名會(huì)在DNS數(shù)據(jù)的異常檢測(cè)里面形成一些特定的模式,通過數(shù)據(jù)做威脅感知的廠商很容易偵測(cè)到這些新出現(xiàn)的奇怪域名,并且通過IP和其他網(wǎng)絡(luò)特征判定這是可疑C&C域名。
所以常見的C&C域名都在和安全廠商的黑名單比速度,如果比安全研究員反向工程快,它就贏了,但是最近的格局是隨著基于數(shù)據(jù)的威脅感知越來越普遍,這些C&C域名的生命周期越來越短,運(yùn)氣不好的通常活不過半個(gè)小時(shí)。攻擊者也會(huì)設(shè)計(jì)更復(fù)雜的辦法隱藏自己,因?yàn)樽?cè)域名需要一定費(fèi)用,比如帶隱私保護(hù)的.com域名需要好幾十美元,尋找肉雞植入木馬也要費(fèi)很大功夫,本來準(zhǔn)備大干一場(chǎng)連攻半年結(jié)果半個(gè)小時(shí)就被封了得不償失。
在這個(gè)速度的比賽里,一個(gè)低級(jí)但是省錢方便技巧就是用免費(fèi)二級(jí)域名,比如3322家族啊vicp家族等不審查二級(jí)域名的免費(fèi)二級(jí)域名提供商,最著名的例子就是Win32/Nitol家族,搞的微軟靠法院判來3322.org的所有權(quán)把他們整個(gè)端了(雖然后來域名控制權(quán)又被要回去了)。這個(gè)方法是國(guó)內(nèi)malware作者最喜歡的一個(gè)方法,數(shù)據(jù)里常見一些漢語拼音類的C&C域名,比如woshinidie.3322.org等喜感又不忘占便宜的二級(jí)域名,可能因?yàn)樵谖覈?guó)申請(qǐng)頂級(jí)域名麻煩還費(fèi)錢容易暴露身份,不如悶聲發(fā)大財(cái)。你看,這也不是我在教你這么做啊。
真正有意思的是技術(shù)是,比較高級(jí)的C&C域名都不止一個(gè),通過一個(gè)叫做fast flux的辦法隱藏自己。
0x03 Fast flux, double flux and triple flux
攻擊者對(duì)付傳統(tǒng)蜜罐和二進(jìn)制分析的辦法就是不要依靠單一C&C,取而代之的是快速轉(zhuǎn)換的C&C域名列表(fast flux技術(shù)):攻擊者控制幾個(gè)到幾十個(gè)C&C域名,這些域名都指向同一個(gè)IP地址,域名對(duì)應(yīng)IP的DNS record每幾個(gè)小時(shí)或者幾天換一次,然后把這些C&C域名分散的寫到malware的代碼里面。對(duì)于傳統(tǒng)二進(jìn)制分析來說,掛一漏萬,如果不能把整個(gè)C&C域名列表里面的所有域名放到黑名單上,就不能有效的摧毀這個(gè)惡意軟件。這就比賽攻擊者的隱藏代碼能力和防御者的反向工程以及蜜罐監(jiān)測(cè)能力了。這種方法叫做Fast flux,專門設(shè)計(jì)用來對(duì)付安全人員的人工分析。
防御Fast flux的方法在流量數(shù)據(jù)里看相對(duì)容易,比如威脅感知系統(tǒng)只需要簡(jiǎn)單的把每個(gè)域名解析指向的IP的歷史數(shù)據(jù)按照IP做一次group by就抓住了,利用數(shù)據(jù)并不難嘛。所以應(yīng)運(yùn)而生有更高級(jí)double flux和triple flux的辦法。
如果攻擊者比較有錢,租用了多個(gè)IP地址,那么他可以在輪換C&C域名的同時(shí)輪換IP地址,這樣M個(gè)C&C域名和N個(gè)IP地址可以有M*N種組合,如果設(shè)計(jì)的輪換時(shí)間稍微分散一些,會(huì)讓蜜罐流量分析缺乏足夠的數(shù)據(jù)支持。偵測(cè)double flux的辦法需要一些簡(jiǎn)單的圖知識(shí)(請(qǐng)系好安全帶在家長(zhǎng)陪同下觀看):
如果把每個(gè)域名和IP地址當(dāng)做圖的節(jié)點(diǎn)V,一個(gè)有效的域名-IP記錄當(dāng)做對(duì)應(yīng)兩個(gè)節(jié)點(diǎn)的邊E,那么整個(gè)流量數(shù)據(jù)就可以表示為一個(gè)由V_域名指向V_IP的二分有向圖。Double flux的圖就是這個(gè)巨大二分有向圖里的互相為滿射的完全二分圖,換句人話就是,存在這樣一個(gè)子圖,當(dāng)中每個(gè)V_域名節(jié)點(diǎn)都指向同樣一個(gè)集合的V_IP節(jié)點(diǎn),而每個(gè)V_IP節(jié)點(diǎn)都被同一個(gè)集合的V_域名節(jié)點(diǎn)指向。圖示如下:

當(dāng)然了,感染的IP可以訪問別的域名,比如圖中g(shù)oogle.com。在實(shí)際情況里,由于數(shù)據(jù)采集時(shí)間的限制,每個(gè)IP節(jié)點(diǎn)都要訪問所有C&C域名這個(gè)條件可以放寬。
當(dāng)攻擊者得知安全人員居然可以用圖論的方法干掉他們的double flux這么高級(jí)的設(shè)計(jì)方法之后,更瘋狂的triple flux出現(xiàn)了:每個(gè)域名的記錄里不僅可以添加A record也就是IP的指向,還可以選定不同的命名服務(wù)器Name server來解析這個(gè)域名,如果攻擊者足夠有錢(以及有時(shí)間精力),他可以控制K個(gè)name server定時(shí)或者不定時(shí)輪換,這樣可以造成M\*N\*K種組合。
Triple flux方法看似機(jī)智,好像跑得比誰都快,其實(shí)在實(shí)現(xiàn)上聰明反被聰明誤,漏洞就在name server的設(shè)置上:多數(shù)正常服務(wù)的name server都是專有服務(wù),而多數(shù)C&C多架設(shè)在免費(fèi)name server比如DNSpod的免費(fèi)服務(wù)器上。如果攻擊者能夠控制自己的一系列name server專門作fast flux,這些server并不是常見的name server。任何非常見的服務(wù)器域名都會(huì)在流量數(shù)據(jù)的異常檢測(cè)里面被監(jiān)測(cè)出來,上一節(jié)里面提到異常檢測(cè)偵測(cè)C&C域名的方法對(duì)triple flux里面的name server也是可用的。你看,攻擊者Naive了吧。
對(duì)于fast flux這一類特定flux類方法的監(jiān)測(cè)還有另外一個(gè)基于數(shù)據(jù)和機(jī)器學(xué)習(xí)的方法:如果仔細(xì)思考一下fast flux,我們也會(huì)發(fā)現(xiàn)攻擊者試圖創(chuàng)造一個(gè)聰明的辦法,但這種辦法本身有一個(gè)致命缺陷,也就是追求fast,它的域名對(duì)IP的記錄轉(zhuǎn)換太快了,導(dǎo)致每個(gè)域名紀(jì)錄的存活時(shí)間TTL被迫設(shè)計(jì)的很短,而絕大多數(shù)的正常服務(wù)并不會(huì)有如此快速的域名對(duì)應(yīng)IP的記錄轉(zhuǎn)換,大型網(wǎng)站的負(fù)載均衡和CDN服務(wù)的IP紀(jì)錄轉(zhuǎn)換和fast flux有截然不同的特征。這些特征可以很容易被機(jī)器學(xué)習(xí)算法利用判別fast flux的僵尸網(wǎng)絡(luò),相關(guān)研究可以參看比如https://www.syssec.rub.de/media/emma/veroeffentlichungen/2012/08/07/Fastflux-Malware08.pdf等較早研究fast flux的論文。
0x04 使用隨機(jī)DGA算法:難度較高,不易被抓
DGA域名生成算法 (Domain Generation Algorithm) 是現(xiàn)在高級(jí)C&C方法的主流,多見于國(guó)外各大活躍的惡意軟件里,在VirusTotal里如果見到看似隨機(jī)的C&C域名都算這一類。它的基本設(shè)計(jì)思想是,絕不把域名字符串放到malware代碼里,而是寫入一個(gè)確定隨機(jī)算法計(jì)算出來按照一個(gè)約定的隨機(jī)數(shù)種子計(jì)算出一系列候選域名。攻擊者通過同樣的算法和約定的種子算出來同樣列表,并注冊(cè)其中的一個(gè)到多個(gè)域名。這樣malware并不需要在代碼里寫入任何字符串,而只是要卸乳這個(gè)約定就好。這個(gè)方法厲害在于,這個(gè)隨機(jī)數(shù)種子的約定可以不通過通訊完成,比如當(dāng)天的日期,比如當(dāng)天twitter頭條等。這種方法在密碼學(xué)里稱之為puzzle challenge,也就是控制端和被控端約好一個(gè)數(shù)學(xué)題,有很多答案,控制端選一個(gè),被控端都給算出來,總有一個(gè)答上了。
一個(gè)簡(jiǎn)單的例子(引用自wikipedia)比如說這段代碼可以用今天2015年11月3日當(dāng)做種子生成cqaqofiwtfrbjegt這個(gè)隨機(jī)字符串當(dāng)做今天的備選C&C域名:
def generate_domain(year, month, day):
"""Generates a domain name for the given date."""
domain = ""for i in range(16):
year = ((year ^ 8 * year) >> 11) ^ ((year & 0xFFFFFFF0) << 17)
month = ((month ^ 4 * month) >> 25) ^ 16 * (month & 0xFFFFFFF8)
day = ((day ^ (day << 13)) >> 19) ^ ((day & 0xFFFFFFFE) << 12)
domain += chr(((year ^ month ^ day) % 25) + 97)return domain
DGA方法的代表做就是Conficker,它的分析論文可以在這里找到:http://www.honeynet.org/papers/conficker 它的基本思想是用每天的日期當(dāng)做隨機(jī)數(shù)種子生成幾百到幾千不等的偽隨機(jī)字符串,然后在可選的域名后綴比如.com .cn .ws里面挑選后綴生成候選的C&C域名,攻擊者用同樣算法和種子得到同樣的列表,然后選擇一個(gè)注冊(cè)作為有效的C&C。安全人員即使抓到了二進(jìn)制代碼,在匯編語言里面反向出來這個(gè)隨機(jī)數(shù)生成算法也遠(yuǎn)比搜索字符串難的多,所以DGA是個(gè)有效防止人工破解的方法。最近幾年使用DGA算法的惡意軟件里,Conficker的方法是被研究人員反向工程成功,Zeus是因?yàn)樵创a泄漏,其他的解出來DGA算法的案例并不多。
如果一個(gè)DGA算法被破解,安全人員可以用sinkhole的辦法搶在攻擊者之前把可能的域名都搶注并指向一個(gè)無效的IP。這種方法雖然有安全公司在做,但費(fèi)時(shí)費(fèi)力,是個(gè)絕對(duì)雷鋒的做法,因?yàn)樽?cè)域名要錢啊,每天備選的域名又很多,都給注冊(cè)了很貴的。現(xiàn)在常見的Torpig之類的C&C域名被sinkhole。更便宜有效的另外一個(gè)方法就是和DNS廠商合作,比如Nominum的Vantio服務(wù)器上TheatAvert服務(wù)可以實(shí)時(shí)推送DGA名單并禁止這些域名解析,使用了ThreatAvert的服務(wù)商就不會(huì)解析這些C&C域名,從而阻斷了惡意軟件和C&C域名的通訊。
從數(shù)據(jù)分析上可以看到DGA的另一個(gè)致命缺點(diǎn)就在于生成了很多備選域名。攻擊者為了更快速的發(fā)起攻擊,比如攻擊者的客戶要求付錢之后半小時(shí)內(nèi)發(fā)起DDoS攻擊,那么C&C的查詢頻率至少是每半小時(shí),這就導(dǎo)致botnet對(duì)于C&C的查詢過于頻繁。雖然DGA本身看起來像是隱藏在眾多其他合法流量里,但是現(xiàn)在已經(jīng)有很多有針對(duì)DGA的各個(gè)特性算法研究,比如鄙人的用機(jī)器學(xué)習(xí)識(shí)別隨機(jī)生成的C&C域名里面利用到了DGA的隨機(jī)性等其它特性進(jìn)行判別,安全研究人員可以用類似算法篩選疑似DGA然后根據(jù)頻繁訪問這些DGA域名的IP地址等其他特征通過圖論或其他統(tǒng)計(jì)方法判別C&C服務(wù)和感染的IP等。
0x05 高級(jí)變形DGA:如果DGA看起來不隨機(jī)
基于DGA偵測(cè)的多數(shù)辦法利用DGA的隨機(jī)性,所以現(xiàn)在高級(jí)的DGA一般都用字典組合,比如ObamaPresident123.info等等看起來遠(yuǎn)不如cqaqofiwtfrbjegt.info可疑,攻擊者利用這種方法對(duì)付威脅感知和機(jī)器學(xué)習(xí)方法的偵測(cè)。最近的一個(gè)例子出現(xiàn)在Cisco的一篇blog里面提到的DGA就是一個(gè)很小的硬編碼在代碼里字典文件,通過單詞的組合生成C&C域名。這些字典組合的DGA看起來并不隨機(jī),多數(shù)論文和blog里針對(duì)隨機(jī)DGA機(jī)器學(xué)習(xí)的辦法就不管用了。
對(duì)于這種DGA暫時(shí)并沒有成熟有效的偵測(cè)方法,因?yàn)樽值涫俏粗模梢允怯⒄Z詞匯,可以是人名,可以是任何語言里的單詞。常用的方法還是基于隨機(jī)DGA里面用到過的n-gram方法,比如用已知的DGA的n-gram分布判斷未知DGA,同時(shí)結(jié)合其它的特征比如解析的IP等等,或者利用DGA頻繁查詢的特性用n-gram特征作聚類。相關(guān)論文可以自行使用“Algorithmically Generated Domains”等關(guān)鍵詞搜索。
0x06 多層混合C&C,跟著我左手右手一個(gè)慢動(dòng)作:難度最高,不易被抓
在DGA部分提到了,DGA的致命缺點(diǎn)在于被動(dòng)查詢,如果想要快速啟動(dòng)攻擊就必須讓malware頻繁查詢C&C,導(dǎo)致C&C查詢數(shù)據(jù)上異常于正常的查詢流量。多層混合C&C可以有效避免這個(gè)問題,是個(gè)丟卒保帥的戰(zhàn)術(shù)。這種方法在亞洲區(qū)的malware里面見到過很少幾次。
比如攻擊者設(shè)計(jì)一個(gè)兩層的C&C網(wǎng)絡(luò),Boss級(jí)的C&C使用主域名列表比如.com域名,Soldier雜兵級(jí)C&C用免費(fèi)二級(jí)域名列表比如woshinidaye.3322.org,malware每天查詢一次Boss級(jí)C&C拉取當(dāng)天雜兵C&C域名列表,然后以一分鐘一次的頻率查詢雜兵C&C域名,接受攻擊指令,示意圖如下:

偵測(cè)和封禁這類高級(jí)混合C&C難點(diǎn)在于:
在數(shù)據(jù)里,Boss級(jí)的C&C出現(xiàn)幾率很低,可以不定時(shí)也可以一周一次,如果用一些早就注冊(cè)過的域名或者通過黑進(jìn)他人服務(wù)器利用無辜域名,Boss級(jí)的C&C很容易逃過異常檢測(cè)。
數(shù)據(jù)里可以檢測(cè)到的是頻繁查詢的低級(jí)的雜兵C&C域名。如果把這些域名封禁,malware在下一輪更新雜兵C&C列表后會(huì)使這種封禁方法無效。雜兵域名就是主動(dòng)跑上來送死的,反正二級(jí)域名不要錢。
更高級(jí)的做法是,如果Boss級(jí)的C&C列表里的域名用完了,它可以通過這個(gè)兩層網(wǎng)絡(luò)實(shí)時(shí)推送新的Boss級(jí)C&C列表。你看人家都不需要DGA這么麻煩。
偵測(cè)和防御方法需要一些數(shù)據(jù)和圖論的知識(shí),具體參考偵測(cè)double flux的模型,同樣是兩層網(wǎng)絡(luò),不同點(diǎn)在于兩層節(jié)點(diǎn)都是域名節(jié)點(diǎn),留作課后作業(yè),這里就不贅述了。針對(duì)實(shí)現(xiàn)上另一個(gè)特征是,雜兵域名主要目的是來送死,他們的價(jià)格往往不高,比如免費(fèi)二級(jí)域名或者免費(fèi)的ccTLD或者gTLD后綴,利用這個(gè)特征可以把第二層網(wǎng)絡(luò)的尺度縮小,從而在圖數(shù)據(jù)庫(kù)的計(jì)算速度上有不小的提升。
0x07 利用Twitter Reddit等論壇:難度低,被抓看運(yùn)氣
前面提到的辦法多是攻擊者自己架設(shè)服務(wù)器,如果攻擊者的C&C域名被發(fā)現(xiàn)封禁了,這個(gè)botnet就被摧毀了。機(jī)智的攻擊者就想到了通過論壇發(fā)帖的辦法,比如在Twitter發(fā)一條在特定冷門話題下的包含C&C指令的tweet或者reddit上面找個(gè)十分冷門的subreddit發(fā)個(gè)包含控制指令的貼,這樣即使被運(yùn)營(yíng)商或者安全研究小組發(fā)現(xiàn)了,人家總不能把推特和reddit封了吧(我說的是美國(guó)政府沒有這個(gè)權(quán)利)。去年被抓住的名為Mac.BackDoor.iWorm的惡意軟件就是利用reddit做C&C控制服務(wù)器,具體細(xì)節(jié)請(qǐng)參考http://news.drweb.com/show/?i=5976&lng=en&c=1 也有把C&C信息隱藏在一篇看起來很正常的文章里面防止被發(fā)現(xiàn),比如MIT的這個(gè)把加密消息隱藏在一篇論文里的有趣的demo https://pdos.csail.mit.edu/archive/scigen/scipher.html 不過在實(shí)際工作里暫時(shí)還沒有看到這么高科技的C&C做法(你看我也不是教你這么做啊)。
這種方法不適合國(guó)內(nèi)的大環(huán)境,因?yàn)閲?guó)外論壇發(fā)帖是不舉報(bào)不刪帖很容易悶聲發(fā)大財(cái),但是水能載舟,亦可賽艇,國(guó)內(nèi)由于發(fā)帖的身份控制嚴(yán)格,如果用這個(gè)方法很可能被眼尖的版主發(fā)現(xiàn)匯報(bào)給警察叔叔。而且新浪微博發(fā)C&C控制微博也不現(xiàn)實(shí),微博為了防爬蟲要強(qiáng)制登陸而且微博那個(gè)API的麻煩程度你也是知道的。所以這個(gè)方法只是拓展視野,順便寫個(gè)段子。
這里必須要插入一個(gè)段子了。一個(gè)真實(shí)的故事就是,我們抓到了一個(gè)做DDoS攻擊的botnet,我們的模型告訴我這些攻擊流量和twitter.com的訪問流量有強(qiáng)相關(guān),經(jīng)過細(xì)致研究發(fā)現(xiàn),這個(gè)bot可能用twitter的關(guān)鍵詞當(dāng)隨機(jī)數(shù)種子生成攻擊DGA域名。但奇怪的是,同一個(gè)bot感染的IP列表里面,中國(guó)區(qū)IP的隨機(jī)數(shù)種子似乎有初始化的問題,每次的種子都是一樣的。我們機(jī)智的抓住了這一點(diǎn),把中國(guó)區(qū)當(dāng)做對(duì)比組反向出了DGA算法:因?yàn)橐粋€(gè)特殊的原因中國(guó)區(qū)感染IP不能訪問twitter,如果認(rèn)為中國(guó)區(qū)的DGA種子總是空字符串,我們對(duì)比中國(guó)區(qū)的DGA和其他地區(qū)的DGA差不多可以猜出來它的DGA的方法,從而反向工程出來它們的DGA算法。這里需要感謝一下國(guó)家。
0x08 一些其它的高級(jí)技術(shù)
限于篇幅限制有一些現(xiàn)階段不太常用的C&C技術(shù)在這里僅僅簡(jiǎn)單描述一下,有興趣的觀眾朋友們可以自行搜索。
利用P2P網(wǎng)絡(luò)的C&C。如果一個(gè)僵尸網(wǎng)絡(luò)里面所有的感染IP互相成為對(duì)方的C&C控制服務(wù)器,看起來很難摧毀所有的C&C。偵測(cè)重點(diǎn)在這個(gè)網(wǎng)絡(luò)初始化的時(shí)候,就好比其它的BT下載必須從一個(gè)種子或者磁力鏈開始,當(dāng)感染IP訪問初始化C&C的時(shí)候,它還是需要用上面說到的C&C方法,只是頻率很低。
IRC通訊.這是一個(gè)傳統(tǒng)歷史悠久的C&C控制方法。因?yàn)楝F(xiàn)在日常生活里IRC已經(jīng)被一些即時(shí)消息服務(wù)比如微信等等取代,很少有普通群眾會(huì)用到IRC,年輕的安全人員可能會(huì)忽視IRC這個(gè)老辦法。辦法雖老,但是用處廣泛,好比T-800機(jī)器人,"Old, but not obsolete."
你知道還可以手動(dòng)C&C么?我就見過在鄉(xiāng)鎮(zhèn)政府內(nèi)網(wǎng)留了Windows Server 2003后門手工進(jìn)去挨個(gè)啟動(dòng)的,毫無PS痕跡,嗯。
0x09 結(jié)語
說了這么多,主要目的是想介紹一下國(guó)際先進(jìn)的惡意軟件C&C設(shè)計(jì)和偵測(cè)經(jīng)驗(yàn),我們國(guó)內(nèi)的malware不能總糾結(jié)于易語言啊VC6.0啊之類的我國(guó)特色,也需要向國(guó)際靠攏。同樣的,我國(guó)的安全研究人員也需要國(guó)際先進(jìn)經(jīng)驗(yàn),走在攻擊者前面。C&C的設(shè)計(jì)和防御一直都是貓鼠游戲,不定期會(huì)出現(xiàn)一些大家都沒想到的很機(jī)智的辦法。在偵測(cè)C&C服務(wù)的過程里,數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)是很重要的工具,C&C的偵測(cè)現(xiàn)在越來越多的用到數(shù)據(jù)方法,在文中大家也看到了,攻擊者已經(jīng)設(shè)計(jì)出來一些對(duì)抗數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的更高級(jí)C&C設(shè)計(jì)方法,足以看出數(shù)據(jù)科學(xué)在安全領(lǐng)域的重要作用,連攻擊者都體會(huì)到了。很多C&C服務(wù)看似隨機(jī),分布也廣泛,但是在統(tǒng)計(jì)分析上會(huì)顯示出一些特定規(guī)律從而讓安全人員發(fā)現(xiàn)。沒有人可以騙的過統(tǒng)計(jì)規(guī)律,不是嗎?