邱凌志 顧弘
1引言
惡意軟件是互聯(lián)網(wǎng)中最嚴(yán)重的網(wǎng)絡(luò)安全威脅之一,受害主機一旦感染惡意軟件便可能被用作發(fā)送垃圾郵件、進行拒絕服務(wù)攻擊以及竊取敏感數(shù)據(jù)。作為攻擊的關(guān)鍵步驟,攻擊者需要將惡意軟件安裝在盡可能多的受害主機上。攻擊的過程一般分為3個步驟:①注入代碼,這一階段攻擊者的目的是在受害主機上執(zhí)行一小段代碼,這段代碼通常被稱為shellcode。比如,攻擊者首先準(zhǔn)備一個包含漏洞利用代碼的網(wǎng)站,當(dāng)受害者訪問惡意網(wǎng)頁后,漏洞利用代碼強制瀏覽器執(zhí)行shellcode;②注入成功后,shellcode下載真正的二進制惡意軟件并加載;③惡意軟件一旦啟動,這一階段將呈現(xiàn)其惡意行為,典型的行為比如連接遠(yuǎn)程命令控制服務(wù)器(C&Cserver)。
對于保護用戶避免受到惡意軟件侵害,過去的研究主要關(guān)注于第①階段與第③階段。一部分工作是通過對掛馬網(wǎng)頁的檢測,將相關(guān)域名或url列入黑名單,阻止瀏覽器訪問惡意頁面;另一部工作則是聚焦于控制階段,目的在于檢測終端惡意代碼的執(zhí)行,例如,反病毒軟件通過特征識別惡意軟件。然而,惡意軟件可以通過域名變換、文件重打包和分布式主機等手段逃避檢測。
目前為止,很少有研究關(guān)注到第②階段,即shellcode下載惡意軟件安裝的過程。shellcode通常利用http請求從遠(yuǎn)端服務(wù)器下載程序,并在本地安裝執(zhí)行惡意軟件。這些請求一般通過用戶瀏覽器進行簡單的功能調(diào)用,從網(wǎng)絡(luò)角度來說,與用戶的正常軟件下載請求很難區(qū)分??墒?,當(dāng)進入大規(guī)模網(wǎng)絡(luò),便會發(fā)現(xiàn)大量惡意軟件通過不同主機下載,而這些惡意主機又均與某一服務(wù)端相關(guān),呈現(xiàn)出惡意軟件基礎(chǔ)設(shè)施分布,這種分布與CDN網(wǎng)絡(luò)有些類似,但仍有不同。
本文提出一種在大規(guī)模網(wǎng)絡(luò)中檢測惡意軟件分布的方法,該方案聚焦于惡意軟件基礎(chǔ)設(shè)施之間的網(wǎng)絡(luò)關(guān)系,在大規(guī)模網(wǎng)絡(luò)中區(qū)分正常和惡意流量,用以發(fā)現(xiàn)傳統(tǒng)檢測方法無法檢測到的惡意軟件。作者已經(jīng)實現(xiàn)了方案的原型系統(tǒng),并使用真實的2天城域網(wǎng)級別流量作為訓(xùn)練集、7天城域網(wǎng)級別流量作為測試集進行實驗評估,結(jié)果表明方案能夠在大規(guī)模網(wǎng)絡(luò)中有效挖掘惡意軟件網(wǎng)絡(luò)分布,2個數(shù)據(jù)集對應(yīng)的檢測準(zhǔn)確率分別為87.3 %,64.2 %。此外,實驗表明方案還具備檢測未公布的惡意軟件網(wǎng)絡(luò)基礎(chǔ)設(shè)施的能力。
2惡意軟件研究
作者對超過500條近半年的互聯(lián)網(wǎng)公開威脅情報研究發(fā)現(xiàn),惡意軟件無論是利用暴力破解各類服務(wù)端口方式傳播、或者是利用釣魚郵件方式傳播、亦或是利用瀏覽器漏洞的水坑攻擊方式傳播,在注入shellcode之后,會從服務(wù)端下載真正的惡意程序,然后開展挖礦、勒索、信息竊取、組成僵尸網(wǎng)絡(luò)等惡意行為。上述行為可以使用洛克希德·馬丁公司提出的威脅情報驅(qū)動防御模型“網(wǎng)絡(luò)殺傷鏈(Cyber-Kill-Chain)”進行描述。該模型用于指導(dǎo)識別攻擊者為了達到入侵網(wǎng)絡(luò)的目的所需完成的活動,共7個步驟:偵察跟蹤、武器構(gòu)建、載荷投遞、漏洞利用、安裝植入、命令與控制、目標(biāo)達成。發(fā)現(xiàn)前4個步驟的攻擊方式具有變化多、更新快的特點,惡意軟件使用加密、混淆方式逃脫檢測,甚至利用“0day”“1day”“Nday”等最新漏洞,不利于提煉通用的惡意軟件檢測方法。后面2個步驟———安裝植入、命令與控制呈現(xiàn)出一定通用性,一般利用木馬后門通過Web訪問方式下載真正的惡意程序。我們的研究正是聚焦于這一階段。
基于這500多條公開威脅情報的IOCs信息,提取了992條惡意url記錄。其中使用https協(xié)議的記錄為57條,占比5.7 %;剩余935條記錄全部使用http協(xié)議,占比達到94.3 %??梢钥闯觯m然越來越多的互聯(lián)網(wǎng)應(yīng)用使用加密的https協(xié)議,但惡意軟件由于成本低、傳播便利的因素,大多數(shù)仍使用http協(xié)議。因此,我們的研究對象也聚焦于http協(xié)議報文。
在這992條惡意url中,按照文件后綴類型統(tǒng)計,exe后綴最多,txt后綴次之,占比分別達到41 %,8 %。我們對所有惡意url進行重放,檢測訪問請求所下載的文件類型,選取部分代表性的后綴類型。我們發(fā)現(xiàn),exe后綴對應(yīng)的文件100 %為可執(zhí)行類型application/octet-stream;zIP后綴對應(yīng)的文件75 %為可執(zhí)行類型application/octet-stream,25 %為html文本類型text/ html;而png后綴對應(yīng)的文件無一例圖片類型image/gif,50 %為普通文本類型text/plain,41.7 %為可執(zhí)行類型application/ octet-stream,剩余8.3 %為html文本類型text/html。可以看出,惡意軟件通過改變文件后綴躲避檢測,我們的檢測系統(tǒng)將會識別這種情形。
3系統(tǒng)設(shè)計
MDD系統(tǒng)的整個檢測過程可以分為3個階段:提取階段、篩選階段、分析階段。
3.1提取階段
MDD系統(tǒng)的輸入數(shù)據(jù)為大規(guī)模網(wǎng)絡(luò)中的http流量。根據(jù)ISP提供的流量數(shù)據(jù),每日的http請求報文數(shù)量達到10億級別。我們不可能直接檢測這一數(shù)量級的報文,因此,在這一階段我們的目的是利用白名單方法過濾掉大部分非惡意流量。
正如第二章討論的那樣,惡意軟件經(jīng)常修改后綴類型,因此,不能基于http返回報文中的Content-Type字段判斷文件類型。我們需要重放http請求報文,根據(jù)下載文件的MIME字段判斷文件的真實類型,結(jié)果如在預(yù)先制定的白名單范圍內(nèi),則過濾掉該報文。否則,我們提取源IP、目的IP、文件hash、完整請求url等字段生成待檢測記錄。
3.2篩選階段
在篩選階段,針對惡意攻擊者常用的4種技術(shù)進行檢測。
①服務(wù)端多態(tài)。為了躲避檢測,惡意攻擊者會經(jīng)常改變服務(wù)端惡意文件下載路徑,甚至使用不同的域名,這些方式被稱為服務(wù)端變化。對此特性,我們將進行檢測。
②分布式主機。惡意攻擊者為確保惡意服務(wù)端有效,通常會使用多個服務(wù)端,這種分布式的主機與CDN網(wǎng)絡(luò)有些相似。在這里,我們使用機器學(xué)習(xí)的分類算法區(qū)分正常CDN與惡意分布式網(wǎng)絡(luò)。
③專用惡意主機。惡意攻擊者可能通過重定向技術(shù)將受害主機重定向至惡意域名,而這些專用惡意域名與正常網(wǎng)頁在html頁面、CSS文件、JavaScript腳本程序方面有許多不同。我們對此加以區(qū)分。
④掛馬網(wǎng)頁。受害主機首先通過瀏覽器訪問惡意網(wǎng)頁,被注入shellcode后會再次連接惡意服務(wù)端,我們可考慮利用User-Agent字段識別這樣的網(wǎng)絡(luò)行為。但用戶使用不同瀏覽器訪問同一網(wǎng)站或者NAT網(wǎng)絡(luò)可能造成誤報,對此我們需要加以區(qū)分。
3.3分析階段
基于上述2個階段篩選出的可疑記錄,生成惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖,直觀展現(xiàn)惡意軟件的網(wǎng)絡(luò)分布。惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖是無向圖,由以下元素構(gòu)成:完整url、文件路徑uri、文件名file、服務(wù)端IP、客戶端IP、完整域名FQDN、頂級域名domain以及文件hash值。
4系統(tǒng)實現(xiàn)
4.1過濾預(yù)處理
在提取階段,首先將存儲在HDFS的海量http流量請求報文檢索出來。為了提升下一步重放報文的效率,檢索過程同樣采用域名白名單的方法。域名白名單的制定由統(tǒng)計平均和經(jīng)驗總結(jié)相結(jié)合,包含傳統(tǒng)互聯(lián)網(wǎng)頭部企業(yè)域名,例如baidu.com,qq.com,也包含新興流行互聯(lián)網(wǎng)應(yīng)用域名,例如yximgs.com, miwifi.com。由此,我們制定了域名白名單top100。
第二步,遍歷檢索出的http請求報文,如果包含文件下載的請求,則重放該報文。然而,下載文件開銷很大,尤其是大文件。幸運的是,我們可以使用wget命令只下載文件的前1kb。此后,通過linux的file命令判斷文件類型,file命令通過文件頭判斷文件真實類型,而不依據(jù)文件后綴。如果命中MIME白名單(如視頻、音頻、圖片等格式)則舍棄,否則計算文件hash值,并提取IP,url,user-agent等字段作為一條記錄,進入下面檢測階段。
4.2服務(wù)端多態(tài)檢測
第一個檢測機制是捕捉惡意軟件發(fā)布者嘗試?yán)@過反病毒軟件基于簽名檢測的行為。反病毒軟件會對已識別的惡意程序進行hash簽名,為了避免在終端被檢測到,惡意軟件發(fā)布者頻繁地變更他們的惡意文件。典型的,惡意軟件發(fā)布者利用一系列不同的加密密鑰對惡意程序進行重打包。檢測方法是檢索滿足如下2個條件的下載記錄:①只有單一的uri;②下載超過個不同的文件,文件依據(jù)上一階段的hash值進行區(qū)分,的取值我們在實驗中將進行評估。實際的例子觸發(fā)這一檢測機制的uri如/dlq.rar,該uri有多種域名變化,如www.9530.ca,585872. com。可以看出,發(fā)布者不僅重打包惡意軟件,而且通過域名變換增加了惡意軟件的魯棒性。
4.3分布式主機檢測
惡意軟件發(fā)布者大多會采取一些手段確保自己的惡意軟件長期有效,從而獲取更多收益,因此,會在許多服務(wù)主機及域名上對惡意軟件進行備份,這與傳統(tǒng)的內(nèi)容分發(fā)網(wǎng)絡(luò)CDN類似。但是和傳統(tǒng)的CDN有些不同的是,惡意軟件發(fā)布主機需要防止殺毒軟件的封殺,因而會對惡意軟件發(fā)布集群進行一些改造,我們的研究正是利用這些被改造的特性來分類惡意軟件發(fā)布集群。我們的方法分為2個階段:首先,我們試圖找到CDN;然后我們使用一個分類器區(qū)分正常CDN與惡意CDN。
第一步,根據(jù)文件hash值將所有記錄進行聚類,即當(dāng)2條下載記錄擁有相同的hash值h,而對應(yīng)的url分別為u1和u2時,將這2條記錄關(guān)聯(lián),形成一個cluster。如果2個cluster存在相同的domain或服務(wù)端IP,則將這2個cluster合并為一個。我們認(rèn)為所有的cluster至少包含2個記錄,否則無法構(gòu)成CDN網(wǎng)絡(luò)。
第二步,使用機器學(xué)習(xí)的方法在上一階段的結(jié)果中區(qū)分正常CDN與惡意cluster,檢測分布式惡意軟件主機,通過對數(shù)據(jù)手工打標(biāo)簽的方式,訓(xùn)練我們的分類器。在此選擇隨機森林的算法作為分類器,以滿足需求。根據(jù)對惡意軟件基礎(chǔ)設(shè)施的研究,我們總結(jié)以下6個分類特征:
域名共存:為了減少開銷,惡意軟件常常將很多域名放在同一臺服務(wù)器上,這臺服務(wù)器提供同一個惡意軟件,只是軟件名不同,正常CDN不會出現(xiàn)這種情況,因為這種行為違反了信息冗余性和負(fù)載均衡,這個特征值等于一個cluster中所有的域名數(shù)、IP數(shù)。
頂級域名數(shù):為了逃避域名黑名單的檢測,惡意軟件通常會使用一系列不同的頂級域名,正常的CDN一般使用同一頂級域名下的二級域名。
每個域名上的路徑數(shù)、文件名數(shù):正常的CDN為了使用戶下載更加方便快捷,會有良好的目錄組織而發(fā)布惡意軟件的集群逃避黑名單檢測,通常會在集群主機中設(shè)置不一樣的目錄結(jié)構(gòu)與文件名。對于上述特征我們計算路徑數(shù)、文件名數(shù)或域名數(shù)。
每個域名上的uri數(shù)量:惡意軟件發(fā)布者在每個域名上通常只使用很少的uri數(shù)量,最常見的情形只有一個。相較而言,正常的CDN有大量的目錄結(jié)構(gòu)。我們將此作為篩選惡意軟件的一個指標(biāo)。對于這一特征,我們計算集群域名中所有uri數(shù)量或域名數(shù)。
文件類型:正常CDN會提供不同的文件類型供用戶下載,而惡意軟件服務(wù)端提供最多的是可執(zhí)行文件。我們計算集群中所有主機的可執(zhí)行文件數(shù)或所有文件數(shù),作為特征指標(biāo)。
4.4專用惡意主機
惡意軟件發(fā)布者經(jīng)常使用專用主機隱藏在僵尸網(wǎng)絡(luò)幕后,因此,難以被檢測到。但是,這些專用惡意主機也有很明顯的特征,我們注意到,這些主機通常只會存放少量的可執(zhí)行文件,很少有其他類型的文件,最多包含個別html頁面,因為它的首要目的就是發(fā)布惡意軟件。這與提供正常Web服務(wù)的主機有很大不同,正常主機包含了html頁面、css文件以及JavaScript腳本等,利用這個特征,可以檢測出專用惡意主機。據(jù)此,我們發(fā)現(xiàn)了112adfdae.tk這個域名,它被KingMiner挖礦網(wǎng)絡(luò)用來傳播挖礦程序。
4.5掛馬網(wǎng)頁
受害主機通過瀏覽器訪問惡意網(wǎng)頁,被注入shellcode后會再次連接惡意服務(wù)端,在某些情況下,存在shellcode的服務(wù)器和存放惡意軟件的服務(wù)器是同一個主機。觀察這種情形的網(wǎng)絡(luò)流量行為特征:連續(xù)2條請求報文,一條來自瀏覽器,一條來自shellcode。因此,我們的目標(biāo)是尋找來自同一源IP,但user-agent字段有不同的連續(xù)http請求報文。其中,第一個請求的文件類型必須是可執(zhí)行文件。然而,NAT環(huán)境會對檢測產(chǎn)生干擾,對此,我們可以設(shè)定一個請求報文的時間間隔閾值,實際檢測過程中設(shè)定為1分鐘,當(dāng)時間間隔小于這個閾值時,則認(rèn)為其是惡意軟件行為。符合這一策略的是znshuru.com域名下的setup_pgytg001.exe文件,瀏覽器下載后會再次下載.dat格式的惡意文件,user-agent字段為NULL。
4.6惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖
正如3.3節(jié)所述,定義惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖為篩選出的可疑記錄之間存在關(guān)系的惡意行為集合。一個最簡單的網(wǎng)絡(luò)圖由8個節(jié)點構(gòu)成,我們關(guān)心以下節(jié)點之間的關(guān)系:
url屬于同一完整域名FQDN或頂級域名domain;
同一url下載的不同文件hash;
同一服務(wù)端IP的不同域名;
相同uri或文件名file。
開始圖中只有一個url節(jié)點,然后我們添加url到各節(jié)點的邊,當(dāng)2條記錄存在上述關(guān)系時,合并2條記錄。如此迭代,直到圖無法增長或達到預(yù)先設(shè)定的大?。ū热?00個節(jié)點)。
一旦惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖生成,安全分析人員可以直觀地看出圖中的哪個url節(jié)點或服務(wù)端節(jié)點(包括域名、IP)是惡意的。這基于簡單的規(guī)則:如果節(jié)點越孤立,則可能性越低,否則,屬于惡意的概率越大。當(dāng)然,為了量化這一概率,我們需要先對邊賦值:
邊url-hash,權(quán)重為1;邊url-server,權(quán)重為1;邊url-client,權(quán)重為4;其余的邊權(quán)重均為2,然后,我們給出節(jié)點j的惡意概率j的計算公式:
5結(jié)果分析
在討論實驗結(jié)果之前,需要先明確判斷下載文件是否為惡意軟件的標(biāo)準(zhǔn)。使用virustotal檢測url、域名以及IP,virustotal使用多個反病毒引擎,當(dāng)有2個及以上反病毒引擎檢測結(jié)果為惡意時,我們判斷該對象為惡意的。對于那些可疑,但virustotal未檢測為惡意的,通過沙箱結(jié)合人工的方式進行驗證。此外,實驗中使用的惡意樣本集為通過互聯(lián)網(wǎng)公開威脅情報收集的url、域名和IP等信息。
服務(wù)端多態(tài):的目標(biāo)是檢索那些url相同,但文件hash不同的記錄。我們在4.2節(jié)討論過,不同文件hash數(shù)量n的取值,我們在實驗中進行評估。在訓(xùn)練集中,當(dāng)= 2時,檢測惡意url的數(shù)量為55。然而此時,反病毒軟件的升級請求數(shù)量為423,會造成大量誤報,極高的假陽率影響檢測。因此,我們一方面通過域名白名單對反病毒軟件進行過濾,另一方面根據(jù)實驗結(jié)果,取= 10。改善后,該方法的檢測準(zhǔn)確率達到93.4 %,假陽率僅為6.6 %。
分布式主機:實驗中使用隨機森林作為分類器區(qū)分正常CDN和惡意CDN。在訓(xùn)練集中,初始參數(shù)的隨機森林成績僅有0.87左右,經(jīng)過參數(shù)調(diào)整優(yōu)化,方案對分布式主機的檢測準(zhǔn)確率達到92.1 %。在測試集中,經(jīng)驗證實際的準(zhǔn)確率稍有降低,數(shù)值為85.2 %。
整體評估:專用惡意主機,檢索只有一個可執(zhí)行文件的域名,此外最多可有一個html或js頁面。掛馬網(wǎng)頁,檢索域名、源IP相同,user-agent字段不同的記錄集合,且集合中至少包含一個可執(zhí)行文件下載記錄。實驗中發(fā)現(xiàn)這2種檢測方法相較前2種方法準(zhǔn)確率稍微低一些,這是因為有小部分正常的流量請求也滿足檢索條件。將4種檢測方法結(jié)合,在表1中給出整體實驗結(jié)果,評估方案的有效性。
在訓(xùn)練集中,檢測結(jié)果去重后給出166條惡意記錄,通過驗證后,發(fā)現(xiàn)其中存在21條誤報,準(zhǔn)確率為87.3 %。在測試集中,檢測結(jié)果去重后給出369條惡意記錄,通過驗證后,發(fā)現(xiàn)其中存在132條誤報,準(zhǔn)確率為64.2 %??梢钥吹剑S著測試數(shù)據(jù)的增多,系統(tǒng)的準(zhǔn)確率也出現(xiàn)了下降。幸運的是,由于惡意軟件基礎(chǔ)設(shè)施變化較快,檢測對象為一段時間T內(nèi)的流量數(shù)據(jù),T的取值一般為最近一天,最長一周。如果T時間太長,許多設(shè)施便會無法訪問。
此外,使用樣本集共161條惡意流量數(shù)據(jù)進行測試,MDD共檢測出其中108條,假陰率為32.9 %。這是因為,樣本集中有一些獨立的惡意url,比如doc,jar為后綴的,與其他url未呈現(xiàn)相關(guān)性,MDD對此難以識別。不過,傳統(tǒng)惡意軟件可以通過黑名單的方式檢測,我們的目標(biāo)是輔助傳統(tǒng)檢測方法,而不是代替它。
最后,在2019年11月的測試集中,MDD檢測到一個惡意域名es.ldbdhm.xyz,它被用作發(fā)布眾多jpg后綴的惡意文件,這些文件實際上是可執(zhí)行pe文件。我們關(guān)注到,2019年12月互聯(lián)網(wǎng)公開了相關(guān)威脅情報,它是“紫狐”木馬使用的最新惡意域名。由于未被標(biāo)記,傳統(tǒng)的黑名單檢測方法無法檢測到該域名,而MDD卻可以挖掘到該惡意軟件的最新基礎(chǔ)設(shè)施,這表明了MDD的有效性。
惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖中包含14條檢測記錄,由于部分節(jié)點相同,因此節(jié)點數(shù)小于14乘以字段數(shù)8,實際共79個節(jié)點。實驗中,我們在訓(xùn)練集、測試集中分別生成了30、66幅惡意軟件基礎(chǔ)設(shè)施網(wǎng)絡(luò)分布圖,它們按照大小進行統(tǒng)計的結(jié)果,占比最多的為節(jié)點數(shù)小于50的生成圖。節(jié)點數(shù)小于50的生成圖網(wǎng)絡(luò)關(guān)系比較簡單甚至無相關(guān)性,因此MDD的誤報也集中在這一區(qū)間。
6結(jié)束語
本文提出一種新的在大規(guī)模網(wǎng)絡(luò)中挖掘惡意軟件分布的方法。區(qū)別于傳統(tǒng)惡意軟件檢測方案,MDD不使用黑名單或終端行為特征檢測技術(shù),而是聚焦于挖掘惡意軟件網(wǎng)絡(luò)基礎(chǔ)設(shè)施,輔助發(fā)現(xiàn)那些多變化的惡意軟件,彌補傳統(tǒng)檢測方案的不足。然而,在大規(guī)模網(wǎng)絡(luò)流量中區(qū)分正常和惡意報文給我們的工作帶來挑戰(zhàn),我們使用白名單、機器學(xué)習(xí)分類技術(shù),結(jié)合網(wǎng)絡(luò)關(guān)系可視化,完成了檢測方案的設(shè)計。本文實現(xiàn)了MDD系統(tǒng)的原型,分別選擇真實的2天http城域網(wǎng)級別流量作為訓(xùn)練集、7天城域網(wǎng)級別http流量作為測試集,對系統(tǒng)進行了評估。實驗表明,MDD系統(tǒng)能夠有效檢測大規(guī)模網(wǎng)絡(luò)中的惡意軟件網(wǎng)絡(luò)分布關(guān)系,以及尚未公布的惡意軟件網(wǎng)絡(luò)基礎(chǔ)設(shè)施。