蘆天亮,李國友,吳 警,歐陽立,王國棟
(1.中國人民公安大學信息技術(shù)與網(wǎng)絡(luò)安全學院,北京 100038;2.國家密碼管理局商用密碼檢測中心,北京 100039)
密碼學理論是網(wǎng)絡(luò)空間安全學科的核心理論和基礎(chǔ)支撐,是保證信息安全機密性、完整性和可認證性的重要手段之一,但是密碼學理論及密碼應(yīng)用技術(shù)的發(fā)展是一把“雙刃劍”,其在發(fā)揮數(shù)據(jù)保護和認證作用的同時也會被黑客和犯罪分子等用于各類違法犯罪活動,為不法分子躲避安全產(chǎn)品的檢測、政府監(jiān)管和追蹤溯源提供了極大的便捷,今后我國的網(wǎng)絡(luò)安全及公安執(zhí)法工作將更多地面對來自高技術(shù)犯罪的密碼加密和數(shù)據(jù)破解等難題。
密碼技術(shù)的應(yīng)用加大了安防企業(yè)和政府對病毒檢測及網(wǎng)絡(luò)攻擊防范的工作量和難度,給用戶帶來巨大的經(jīng)濟損失。密碼加密手段濫用帶來的國家安全和網(wǎng)絡(luò)安全問題主要體現(xiàn)在以下3個方面:
(1)保密通信技術(shù)的使用?;诿艽a學加密和認證技術(shù)的網(wǎng)絡(luò)通信協(xié)議的應(yīng)用,為犯罪分子躲避執(zhí)法部門的追蹤提供了有力幫助。犯罪分子使用加密協(xié)議、境外代理進行網(wǎng)絡(luò)詐騙等犯罪活動,可順利繞過公安機關(guān)的調(diào)查取證。趨勢科技公司[1](Trend Micro)的分析報告指出,恐怖分子對WhatsApp、Telegram等加密通信軟件的使用使其活動更加隱蔽和猖獗,據(jù)調(diào)查,34%的恐怖分子使用匿名加密聊天服務(wù)Telegram。對加密流量的還原難度極大,現(xiàn)有研究工作主要集中在加密流量的識別,如He 等[2]提出了一種針對移動應(yīng)用加密網(wǎng)絡(luò)流量識別的方法。
(2)數(shù)據(jù)加密及設(shè)備解鎖難題。智能手機的加密強度更高,廠商解鎖手機也很困難。由于無法有效地解密數(shù)據(jù),給警方的線索調(diào)查和電子數(shù)據(jù)的取證帶來嚴重阻礙,甚至可能幫助違法者游走在法律之外,如2016年美國聯(lián)邦調(diào)查局(FBI)曾強迫蘋果公司解鎖恐怖分子使用的蘋果手機。
(3)病毒等網(wǎng)絡(luò)攻擊中密碼算法的使用。病毒編寫者將加密技術(shù)用于保護病毒樣本不被檢測、隱藏通信特征、躲避安全防護設(shè)備和加密數(shù)據(jù)勒索用戶等目的。加密手段在計算機病毒等黑客攻擊中的廣泛應(yīng)用,給用戶數(shù)據(jù)和財產(chǎn)帶來巨大損失,如2018年有多家大型醫(yī)院的醫(yī)療數(shù)據(jù)被Globelmposter勒索病毒加密,造成系統(tǒng)癱瘓無法掛號。對稱密碼、非對稱密碼以及區(qū)塊鏈等技術(shù)是勒索病毒常用的方法[3]。
加密技術(shù)在病毒中的應(yīng)用最早可追溯到1988年,“小瀑布”(Cascade)病毒是最早的能夠自我加密解密的病毒[4]。在之后的30年時間中,計算機病毒程序更加普遍地利用密碼技術(shù)達到自身防護和用戶攻擊的目的。隨著密碼算法的發(fā)展,各類高強度加密算法如DES、AES以及RSA等被用于病毒數(shù)據(jù)加密中,數(shù)據(jù)的破解難度極高。同時,各類網(wǎng)絡(luò)安全通信協(xié)議和應(yīng)用不斷出現(xiàn),如VPN、TLS、HTTPS和匿名通信網(wǎng)絡(luò)Tor等加密通信手段也開始被計算機病毒采用[5-8],尤其是被網(wǎng)絡(luò)木馬程序、僵尸網(wǎng)絡(luò)用于發(fā)送遠程控制命令和盜取數(shù)據(jù)隱秘回傳等場合,有效地躲避了網(wǎng)絡(luò)環(huán)節(jié)的監(jiān)管和追蹤溯源。
本文重點研究密碼算法在計算機病毒中的應(yīng)用,主要從病毒的樣本加殼技術(shù)、通信加密技術(shù)和數(shù)據(jù)加密勒索技術(shù)3個方面進行分析和綜述,為計算機病毒的檢測和防御工作提供參考依據(jù)。
殺毒軟件查殺病毒程序主要是基于特征碼匹配。所謂特征碼,是指安全人員對捕獲到的病毒樣本進行分析,提取出該病毒的一組特征[9-10]。特征碼需準確地標識該病毒程序,殺毒軟件通過更新特征庫即可識別出新出現(xiàn)的病毒程序。免殺,是一種“反殺毒”的技術(shù),通過對病毒樣本文件的修改,達到隱藏特征、規(guī)避殺毒軟件檢測的目的。歷史上爆發(fā)的高危病毒,除了具有極快的傳播速度和極強破壞能力,必不可少的還需要具備高水平的免殺防御能力。為了對抗基于特征碼匹配的殺毒軟件,攻擊者創(chuàng)新地推出了多種免殺技術(shù),包括:
(1)修改特征碼。利用特征碼定位工具MyCCL等,定位殺毒軟件的病毒特征碼,并通過篡改清除特征實現(xiàn)免殺。
(2)加花指令。在病毒文件頭加入一段匯編指令和在入口點內(nèi)存地址的亂跳轉(zhuǎn),使殺毒軟件無法準確識別病毒程序,達到免殺的效果。
(3)修改導入表。每個PE文件格式的病毒程序一般都有導入表,用于定位動態(tài)鏈接庫中API函數(shù)的地址,查找到導入表函數(shù)名并將其移位。
(4)加殼。殼是一種專門負責保護病毒不被修改或反編譯的一段程序,它一般是先于病毒運行、拿到控制權(quán),然后完成保護病毒不被查殺的任務(wù)[11]。當病毒加殼后,外殼段代碼首先開始運行,它把壓縮、加密后的病毒文件還原成原始病毒文件,然后按照相應(yīng)的規(guī)則將其加載映射到內(nèi)存中,再把執(zhí)行權(quán)交還給原始病毒程序。加殼病毒的結(jié)構(gòu)如圖1所示。殼分加密殼和壓縮殼,通過加殼可以有效地抵抗特征碼查殺技術(shù)[12]。壓縮殼主要是減小病毒文件的大小,如UPX和PECompact等;加密殼,即利用編碼及密碼算法對病毒文件的特征碼區(qū)段進行加密,如EncryptPE、EXECryptor和Themida等。隨著殺毒軟件技術(shù)的發(fā)展,尤其是虛擬執(zhí)行技術(shù)的出現(xiàn),殺毒軟件對于簡單的病毒加殼算法可以實現(xiàn)有效地識別和脫殼,但若有多個加殼算法可隨機選擇,將會加大脫殼難度,進一步提高病毒免殺效果。
圖1 計算機加殼病毒的結(jié)構(gòu)
為了應(yīng)對加殼等特征碼篡改技術(shù),部分學者提出了基于行為特征啟發(fā)式計算機病毒檢測方法,基于惡意 API調(diào)用序列模式檢測病毒程序[13]。
在傳統(tǒng)的靜態(tài)加殼技術(shù)下,加殼的病毒在執(zhí)行時都會有相同的編碼,因此比較容易被檢測和破解。為了更好地滿足計算機病毒保護的要求,攻擊者提出了動態(tài)加殼技術(shù)思想,充分利用隨機加密的算法,實現(xiàn)對計算機病毒程序的代碼和數(shù)據(jù)加密。為了生成不同特征的加密殼,基于隨機的密鑰加密算法可實現(xiàn)多態(tài)引擎技術(shù),在確保具有相同功能的病毒樣本前提下,利用新方法生成很多個不相同的病毒代碼序列,而且這些病毒代碼序列中特征碼是完全不相同的,使得基于單一特征碼匹配的檢測技術(shù)失效。主流的加密殼有ASProtect、EncryptPE、Themida、EXECryptor等。
(1)ASProtect加殼算法分析。ASProtect具有加密、壓縮、花指令和對抗反匯編逆向分析的防護功能[14]。ASProtect使用了 Blowfish、Twofish、TEA等復(fù)雜的對稱加密算法用于加密原始病毒文件數(shù)據(jù),還用非對稱密碼算法RSA 1024加密對稱密鑰。
(2)EncryptPE加殼算法分析。EncryptPE能加密保護內(nèi)殼文件(EXE、DLL等),防止靜態(tài)分析,對抗動態(tài)跟蹤調(diào)試,有效地起到保護病毒程序的作用;采用隨機加密技術(shù),支持100多種加密算法,病毒程序破解難度極大。
(3)Themida加殼算法分析。Themida是一個強勁的保護殼,采用多層的加密措施,可有效隱藏病毒程序代碼和數(shù)據(jù),使安全分析人員無法還原和分析病毒程序的代碼和數(shù)據(jù)[15]。
(4)EXECryptor加殼算法分析。EXECryptor是一種加密強度較強的殼,可以指定核心代碼區(qū)域?qū)嵤┒鄬蛹用鼙Wo,并擁有強大的反調(diào)試、反跟蹤和反破解技術(shù)[16]。
由于加殼的算法種類很多,尤其是在不了解加殼算法和加密密鑰的情況下,對病毒脫殼和檢測的難度很大。在對病毒脫殼之前,一般利用殼指紋特征匹配技術(shù)對殼的類型進行識別,常用的殼識別工具有Exeinfo PE和FileInfo等。加殼過程中病毒文件會被壓縮或加密處理,該過程提高了病毒文件字節(jié)分布的隨機性。借助通信領(lǐng)域信息熵的概念,可判斷病毒文件是否加殼,計算得出的信息熵越高,病毒文件字節(jié)分布的隨機性越大,即病毒加殼的可能性越大。
Xie等[17]對常用的脫殼工具和技術(shù)進行了介紹,分析了病毒代碼入口點(OEP)啟發(fā)式定位方法、運行時脫殼環(huán)境和anti-unpacking技術(shù)。Ugarte-Pedrero 等[18]分析了針對信息熵加殼檢測的繞過技術(shù),提出了一種改進的熵度量方法,實驗表明該方法達到了較高的病毒加殼檢測率和較低的誤報率。通用病毒脫殼器已經(jīng)提出,可以提取加密代碼中的病毒執(zhí)行文件,脫殼后的病毒本體文件可被傳統(tǒng)的基于特征碼的殺毒軟件檢測;然而,通用脫殼器時間消耗非常高,掃描大量被病毒感染的文件可能需要幾個小時甚至幾天。Perdisci 等[19]提出應(yīng)用模式識別技術(shù)快速檢測加殼病毒文件的方法,實現(xiàn)了對加殼病毒文件的準確識別與較低的時間消耗。
計算機病毒一般都具有網(wǎng)絡(luò)通信的功能,以方便接收黑客的指令和傳遞竊取的用戶數(shù)據(jù),典型的具有網(wǎng)絡(luò)通信功能的病毒程序包括特洛伊木馬和僵尸網(wǎng)絡(luò)。木馬是由控制端和被控端組成,被控制的用戶電腦和黑客遠程控制端需要隱蔽通信,往往采用高級加密標準(Advanced Encryption Standard,AES)等對稱加密算法,或者使用安全套接層(Secure Sockets Layer,SSL)協(xié)議加密傳輸數(shù)據(jù)。木馬設(shè)計者通常會采取端口復(fù)用、反彈端口、隱蔽通道等技術(shù)增強通信的隱蔽性。僵尸網(wǎng)絡(luò)(Botnet)是由黑客遠程控制的大量計算機群,可對目標發(fā)起網(wǎng)絡(luò)攻擊。僵尸網(wǎng)絡(luò)具有分層的網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示,受感染的用戶主機稱為“肉雞”(Bot),攻擊者(Botmaster)通過命令與控制服務(wù)器(C&C)可以操控多臺Bot發(fā)起攻擊,包括分布式拒絕服務(wù)攻擊DDoS、盜號木馬下載分發(fā)、垃圾郵件發(fā)送等。僵尸網(wǎng)絡(luò)可以分為因特網(wǎng)中繼聊天(Internet Relay Chat,IRC)、超文本傳輸協(xié)議 (HTTP)和對等網(wǎng)絡(luò) (Peer To Peer,P2P)等協(xié)議類型[20]。僵尸網(wǎng)絡(luò)可將通信流量偽裝成Web等服務(wù)的流量,繞過防火墻以及躲避IDS,增強了僵尸網(wǎng)絡(luò)隱蔽性和健壯性。
圖2 僵尸網(wǎng)絡(luò)結(jié)構(gòu)
攻擊者利用各種方法來加密和隱藏僵尸網(wǎng)絡(luò)的通信流量,使得僵尸網(wǎng)絡(luò)更加難以檢測,可有效地躲避政府的監(jiān)管。下面對典型的計算機病毒使用的加密通信算法進行分析。
3.2.1 基于SSL/TLS的加密通信
SSL協(xié)議可保護信息傳輸?shù)臋C密性和完整性。1999年,SSL被標準化并改名為傳輸層安全 (Transport Layer Security,TLS),網(wǎng)絡(luò)通信開始廣泛使用TLS協(xié)議。據(jù)統(tǒng)計,60%的網(wǎng)絡(luò)通信采用了TLS協(xié)議,但同時,各種惡意程序也逐漸使用TLS協(xié)議來增強其通信的保密性[21],約有10%的惡意程序已經(jīng)使用了TLS協(xié)議。與SSL/TLS協(xié)議相結(jié)合,僵尸網(wǎng)絡(luò)開始使用超文本傳輸安全協(xié)議(HTTP over Secure Socket Layer,HTTPS)對命令和控制信道進行加密,這一趨勢將會使得惡意程序變得更加難以探測,因為TLS的使用使普通的深度包檢測技術(shù)(Deep Packet Inspection,DPI)很難發(fā)揮作用。Anderson 等[22]提出了一種識別惡意代碼使用的TLS協(xié)議流量的方法,并且通過分析流量的特征可以將惡意代碼的家族區(qū)分開。Prasse 等[23]針對網(wǎng)絡(luò)病毒程序,提出了一種基于神經(jīng)網(wǎng)絡(luò)的HTTPS加密網(wǎng)絡(luò)流量檢測方法。
3.2.2 基于對稱密碼算法的加密通信
木馬及僵尸網(wǎng)絡(luò)程序在網(wǎng)絡(luò)通信過程中往往使用對稱加密方法,包括移位、異或、Base64編碼和AES等對稱加密算法。病毒編寫者除了使用已知的加密算法外,有時還會使用自定義的編碼和加密算法。以gh0st木馬為例,該木馬會對上線用戶的IP地址等信息進行加密,加密方式是逐個進行簡單的異或相加,然后進行Base 64編碼。
基于對稱密碼算法通信的僵尸網(wǎng)絡(luò)盛行較早,自2012年年底,IPK僵尸網(wǎng)絡(luò)作為一種新型DDoS僵尸網(wǎng)絡(luò)開始出現(xiàn)在境外。近兩年,IPK僵尸網(wǎng)絡(luò)在境外已經(jīng)處于爆發(fā)狀態(tài),在2016年年底至2017年年初的4個月內(nèi)就對全球12個國家發(fā)起了581次間接性DDoS攻擊。IPK僵尸網(wǎng)絡(luò)首先通過垃圾郵件、軟件捆綁等方式向目標用戶植入木馬,隨后執(zhí)行大規(guī)模的DDoS攻擊并繼續(xù)擴大感染范圍。在生成控制端時,對多種配置信息使用雙重XOR算法加密,同時木馬的網(wǎng)絡(luò)通信也使用該加密方式,但加密密鑰不同。雖然目前IPK僵尸網(wǎng)絡(luò)在國內(nèi)活動較少且攻擊類型不算豐富,但IPK僵尸網(wǎng)絡(luò)在通信方式上使用了雙層加密算法,大大增強了通信的安全性和隱蔽性。
3.2.3 基于匿名網(wǎng)絡(luò)的加密通信
匿名網(wǎng)絡(luò)技術(shù)已經(jīng)發(fā)展多年,I2P和Tor是當前主流的匿名網(wǎng)絡(luò),采用洋蔥路由的方式隱藏通信雙方的關(guān)系,使用高強度加密協(xié)議和中轉(zhuǎn)網(wǎng)絡(luò)層的方法加密通信內(nèi)容和隱藏通信用戶身份[24]。最近,攻擊者已經(jīng)使用Tor來隱藏僵尸網(wǎng)絡(luò)C&C服務(wù)器,所有的Tor流量都是加密傳輸?shù)模虼丝捎行Ф惚馨踩雷o系統(tǒng)以及政府的追蹤。
病毒程序逐漸開始搭建基于Tor網(wǎng)絡(luò)的通信信道。2012年,通過Tor實現(xiàn)遠程控制的Skynet僵尸網(wǎng)絡(luò)開始出現(xiàn)。Skynet的C&C服務(wù)器通過匿名網(wǎng)絡(luò)才能訪問,有效地隱藏了控制者的網(wǎng)絡(luò)位置及受感染主機的地址。Cryptowall 3.0基于I2P網(wǎng)絡(luò)實現(xiàn)加密和匿名通信[25]。2013年,“蝎子”病毒爆發(fā),該病毒會在用戶不知情下安裝Tor程序,并使用Tor網(wǎng)絡(luò)進行比特幣挖礦。2014年出現(xiàn)了首個基于Tor匿名網(wǎng)絡(luò)的Android僵尸網(wǎng)絡(luò),受感染的設(shè)備被用于DDoS攻擊和發(fā)送欺詐短信[26]。在Tor網(wǎng)絡(luò)中托管的僵尸網(wǎng)絡(luò)C&C服務(wù)器更加難以識別,加密算法和隱藏手段的不斷升級給僵尸網(wǎng)絡(luò)的監(jiān)管和阻斷造成巨大困難。但是,Tor網(wǎng)絡(luò)也會給僵尸網(wǎng)絡(luò)帶來延遲、減速和不可靠等問題,同時還需投入更多的開發(fā)工作;而且Tor網(wǎng)絡(luò)本身的流量特征非常明顯,反而增加了僵尸主機的異常性。以目前的技術(shù),基于Tor網(wǎng)絡(luò)的僵尸程序還不能達到預(yù)期的完美隱藏和可靠通信的效果,而且Tor網(wǎng)絡(luò)還面臨著各類安全威脅,如路由攻擊和流量分析等[27-28]。
木馬和僵尸網(wǎng)絡(luò)等通過加密和隧道技術(shù),將機密信息傳輸給攻擊者。對僵尸網(wǎng)絡(luò)監(jiān)控和打擊的重點是C&C服務(wù)器,C&C負責攻擊主機和所有受感染主機之間數(shù)據(jù)和指令的中轉(zhuǎn),通過網(wǎng)絡(luò)流量監(jiān)控可以發(fā)現(xiàn)它,甚至通過流量仿冒可以接管僵尸網(wǎng)絡(luò)。
潘吳斌等[29]對現(xiàn)有的加密流量識別技術(shù)進行了概述和對比。董建亞[30]從加密算法的逆向分析和通信協(xié)議的逆向分析兩個方面,提出了對加密網(wǎng)絡(luò)程序的逆向分析方法。姜鵬[31]通過統(tǒng)計正常加密流量和惡意加密流量的不同,分析網(wǎng)絡(luò)通信過程中元數(shù)據(jù)、SSL協(xié)議和數(shù)字證書的特征,實現(xiàn)了APT攻擊下C&C加密信道的檢測。網(wǎng)絡(luò)流量的加密過程會增加通信數(shù)據(jù)字節(jié)分布的隨機性,根據(jù)該特點,Dorfinger[32]提出了基于信息熵度量的加密網(wǎng)絡(luò)流量實時分析和檢測方法。Anderson等[33]提出了基于機器學習的加密惡意流量的識別方法。石小龍等[34]提出了一種基于動態(tài)污點分析的加密通信協(xié)議逆向分析方法,通過定位網(wǎng)絡(luò)數(shù)據(jù)解密后的明文,還原加密通信協(xié)議的格式。
多年以來,攻擊者已經(jīng)實現(xiàn)了一系列復(fù)雜和高強度的加密和隱蔽通信的方法,雖然部分安全研究人員提出了針對僵尸網(wǎng)絡(luò)加密通信的檢測方法[35-36],但實際上在僵尸網(wǎng)絡(luò)檢測和阻斷方面仍面臨著巨大的困難。
勒索病毒是惡意代碼的一種,利用釣魚郵件、網(wǎng)頁掛馬、漏洞攻擊等方式感染用戶設(shè)備,劫持系統(tǒng)的使用權(quán)、破壞數(shù)據(jù)可用性,通過彈窗、電話、郵件等方式告知勒索信息,要求用戶限期通過比特幣等方式支付贖金,以恢復(fù)設(shè)備使用權(quán)或解密文件數(shù)據(jù)。
2016年,全球新增電腦端勒索病毒樣本16.7萬個,近500萬用戶電腦遭到了勒索病毒攻擊,其中11.9%的受害者會支付勒索贖金[37]。據(jù)FBI發(fā)布的信息,2016年第一季度發(fā)生的網(wǎng)絡(luò)勒索事件中,被攻擊者支付的贖金超過2億美元[38]。目前主流的勒索病毒家族包括Cerber、Locky和XTBL等。勒索病毒除了攻擊普通用戶,為了獲得更大數(shù)額的贖金,還將目標轉(zhuǎn)向企業(yè)和政府部門,如LeChiffre攻陷印度3家銀行、國內(nèi)某央企受到Locky攻擊等。2017年2月召開的RSA 2017信息安全大會上,會議組織者將“勒索病毒”作為重要議題設(shè)定了整天議程。2017年5月,“蠕蟲式”勒索病毒“WannaCry”利用美國國家安全局(NSA)泄漏出來的微軟MS17-010漏洞大范圍傳播,波及150多個國家,受害者多達20萬個用戶,并且還出現(xiàn)了變種。
勒索病毒發(fā)展到今天,越來越多地使用非對稱加密算法比如RSA等,解密的私鑰是存放在攻擊者的服務(wù)器中,這使得文件解密幾乎成了不可能。
勒索病毒通過密碼算法對用戶文件進行加密,并且要保證用戶在沒有獲得解密密鑰的情況下無法恢復(fù)文件數(shù)據(jù)。勒索病毒的加密過程包括3個方面:密鑰生成、文件加密、密鑰傳輸。多種類型的密碼算法均被勒索病毒使用,病毒編寫者充分掌握和發(fā)揮各類密碼算法的優(yōu)勢,如:使用加密速度較快的對稱加密算法對大量用戶文件進行加密,提高加密強度和速度;使用非對稱密碼算法用于密鑰的安全傳輸。勒索病毒使用的加密算法主要包括以下4類:
(1)對稱密碼算法,加密過程和解密過程使用相同的密鑰。其特點是速度快,主要用來對文件加密。常用AES、3DES、RC4等算法,其中AES算法占絕大多數(shù)。
(2)非對稱密碼算法,由公鑰和私鑰組成密鑰對。其特點在于公鑰加密的數(shù)據(jù)只有私鑰可以解密,加密速度較慢,因此常常與對稱密碼算法組合使用,主要使用公鑰加密對稱密鑰,只有掌握私鑰的攻擊者才可解密。常用算法包括RSA、ECDH等。
(3)散列算法,又稱為Hash函數(shù),將輸入轉(zhuǎn)換成不可逆的固定字符串,主要對主機信息計算摘要,生成唯一ID,用于標識用戶主機。常用MD5、SHA等算法。
(4)其他算法,如Base64、deflate等算法。
為了增強破解的難度,不同勒索病毒會使用兩種甚至多種的加密算法。
4.2.1 使用自定義加密算法的勒索病毒分析
對于自定義加密算法來說,通常情況下是利用常量或循環(huán)字節(jié)組對文件數(shù)據(jù)進行逐字節(jié)異或運算。在這種情況下,算法通常比較簡單,只需逆向分析該算法的代碼,就可以知道它是如何修改或加密文件的,然后針對這些加密步驟執(zhí)行反向操作,即可恢復(fù)文件數(shù)據(jù)。下面分析一種自定義加密算法的勒索病毒。
2016年,采用自定義密碼算法的Apocalypse勒索病毒出現(xiàn),加密流程:將其密鑰內(nèi)置在病毒樣本之中,通過異或XOR實現(xiàn)對用戶文件數(shù)據(jù)的加密,被加密的文件都以.encrypted為擴展名,病毒會生成“原文件名.How_To_Decrypt.txt”的文件,用于提醒用戶被病毒攻擊并勒索贖金[39]。Apocalypse采用的自定義密碼算法屬于對稱密碼,因此解密密鑰與加密密鑰是相同的。
4.2.2 使用單一密碼算法的勒索病毒分析
除了使用自定義加密方式的勒索病毒之外,大部分勒索病毒都會使用已有的加密算法,例如AES、RSA等。其中單一加密算法主要使用AES、3DES等強度較高的對稱加密算法,加密和解密密鑰是一樣的。下面對使用單個加密算法的Jigsaw勒索病毒和Unlock92勒索病毒進行介紹。
Jigsaw勒索病毒使用了AES算法,其密鑰和初始向量內(nèi)嵌在病毒文件中,經(jīng)過逆向分析可提取出密鑰,利用該密鑰能實現(xiàn)文件解密[39];加密完成后,添加“.fun”擴展。Jigsaw勒索病毒會定期對計算機中的加密文件進行刪除,文件被刪除后將無法恢復(fù)。
病毒加密用戶文件時,通常使用運算速度較快的對稱密碼,但Unlock92勒索病毒卻使用了非對稱的RSA算法。該病毒出現(xiàn)了多個版本,不同版本加密后的用戶文件會使用不同的擴展名,以.CRRRT和以.CCCRRRPPP為常見。在加密文件的目錄下,病毒會自動生成一個“.jpg”格式的圖片文件,該圖片的內(nèi)容是提示用戶文件被加密。Unlock92勒索病毒都內(nèi)置一個RSA公鑰Pk1,與其配對的RSA私鑰Sk1掌握在攻擊者手中。加密流程:Unlock92勒索病毒采用的是兩次RSA加密,加密用戶文件時病毒會隨機生成新的RSA公私鑰對Pk2和Sk2,其中Sk2使用Pk1加密后只有攻擊者可以解密,Pk2用于加密用戶文件。因為RSA加密速度很慢,該病毒只選擇每個文件的前0x300字節(jié)進行加密。解密流程:首先獲得私鑰Sk1,然后解密出隨機RSA私鑰Sk2,最后私鑰Sk2解密用戶文件。
4.2.3 使用兩種加密算法的勒索病毒分析
為了增加解密難度和勒索行為的成功率,更多勒索病毒混合使用兩種加密算法,通常會結(jié)合對稱加密算法和非對稱加密算法,如“RSA算法+AES算法”,或者利用其他算法進行兩兩結(jié)合,以達到提高加密速度和密鑰安全傳輸?shù)哪康摹?/p>
WannaCry勒索病毒爆發(fā)于2017年5月12日,造成英國國民健康服務(wù)中心的多家醫(yī)院癱瘓,并使得日本本田公司暫時關(guān)閉[40]。該病毒主要有兩個特點:一是,利用操作系統(tǒng)漏洞大規(guī)模傳播;二是,加密過程設(shè)計比較復(fù)雜和精妙,充分利用了RSA算法和AES算法的特點和優(yōu)勢。WannaCry病毒內(nèi)嵌了RSA主公鑰,攻擊者保留RSA主私鑰。如圖3所示,加密和解密流程描述如下:加密過程,首先生成隨機的RSA子公鑰和子私鑰,使用RSA主公鑰對子私鑰加密后保存為“.eky”格式文件,將子公鑰保存為“.pky” 格式文件,隨后WannaCry生成AES密鑰,對用戶數(shù)據(jù)加密,加密后的文件為M2,之后用“.pky” 格式公鑰加密AES密鑰和文件大小等數(shù)據(jù)生成M1,最后合并M1和M2,添加“WANACRY!”文件頭后保存為加密文件;解密文件時,攻擊者將“.eky”格式用私鑰解密,解密后的私鑰保存為“.dky”格式文件,最終實現(xiàn)文件解密[41]。
圖3 WannaCry勒索病毒的加密和解密過程
Petya勒索病毒使用了兩種加密算法——ECDH算法和流密碼算法SALSA20。Petya病毒并不直接加密用戶文件數(shù)據(jù),而是通過加密磁盤分區(qū)和覆蓋MBR,使得計算機無法正常啟動。2016年3月,Cerber勒索病毒開始廣泛傳播,目前已經(jīng)出現(xiàn)了多個變種。被該病毒加密的文件擴展名為Cerber,每個目錄下還會生成額外的3個文件提示用戶被Cerber勒索病毒并索要贖金。Cerber病毒結(jié)合了RSA算法與RC4算法[39]。
勒索軟件除了攻擊個人用戶外,為了索要更多的贖金,還會攻擊大型公司,包括銀行、互聯(lián)網(wǎng)公司及工廠等。2019年3月,挪威的全球最大鋁生產(chǎn)公司Norsk Hydro受到一款名為LockerGoga的勒索病毒攻擊,造成多個工廠關(guān)閉。該勒索病毒通過偽造數(shù)字證書,躲過了病毒查殺,病毒采用了AES和RSA混合加密方式,使用CBC模式的AES算法加密用戶文件,密鑰長度為128比特,利用病毒內(nèi)嵌的RSA公鑰將AES密鑰加密后發(fā)送給攻擊者[42]。
4.2.4 使用其他軟件加密模塊的勒索病毒分析
勒索病毒為了提高解密難度以達到更好的勒索效果,除了使用更多的加密算法和增加加密層數(shù)以外,部分勒索病毒還使用其他正常軟件的加密模塊實現(xiàn)加密功能。針對該類加密方式,使用對應(yīng)的解密代碼和密鑰即可解密文件。例如,CryptoHost勒索病毒加密用戶文件時,使用了WINRAR加密模塊,加密的壓縮文件名稱由41個字符組成,壓縮密碼由RAR文件名稱和計算機登錄用戶名組成,所以較容易破解沒有給互聯(lián)網(wǎng)用戶帶來太多危害。VaultCrypt勒索病毒使用了Windows批處理文件和開源GnuPG軟件的加密模塊為用戶文件加密提供支持[43],后綴名“.vault”被附加到每個加密文件;為了說服用戶支付贖金,像大多數(shù)其他勒索病毒一樣,VaultCrypt提供了免費恢復(fù)4個被加密文件的能力,以證明它能夠做到解密。
4.3.1 勒索病毒破解技術(shù)
雖然,已經(jīng)有安全人員或安全公司發(fā)布了部分勒索病毒的文件恢復(fù)和解密工具,但實際上大部分勒索病毒還是無法破解的。病毒編寫者如果能主動釋放出解密密鑰,這樣解密將會更加容易和可靠。例如,Vault勒索病毒因其編寫者被逮捕得以破解,TeslaCrypt勒索病毒的編寫者主動釋放出了ECDH私鑰。
Palisse 等[44]通過分析主流的勒索病毒及其特性,提出了兩種在不支付贖金的情況下的解密方法,包括:利用某些勒索病毒運行模式的缺陷和通過對微軟Windows系統(tǒng)CryptoAPI的攔截,但是這兩種解密防護方法必須在勒索病毒攻擊前激活,且不能應(yīng)對所有的勒索病毒。Wecksten 等[45]對4款勒索病毒進行了分析,找到病毒編寫過程中的一個明顯漏洞,通過對文件拷貝功能的系統(tǒng)工具的重命名,能夠恢復(fù)被勒索病毒感染的數(shù)據(jù)。
4.3.2 勒索病毒檢測和防御技術(shù)
與其他病毒相比,勒索病毒的行為特征更加明顯:它會大量地讀寫用戶磁盤文件,尤其是對文檔、圖片等幾十種格式的文件頻繁讀寫;它會調(diào)用CryptoAPI等函數(shù)庫完成生成密鑰及加密過程。這些特征可以作為識別和檢測勒索病毒的重要依據(jù)。
龔琪等[46]提出了一種基于行為統(tǒng)計特征的勒索病毒檢測方法,重點對特定后綴文件格式的讀寫操作和加密函數(shù)API調(diào)用的特征進行監(jiān)控和分析。Ouerdi等[47]提出一種基于多層感知器的人工神經(jīng)網(wǎng)絡(luò)的勒索病毒分類方法,利用avclass工具標簽將勒索病毒分成了10個類別。Maiorca等[48]實現(xiàn)了一個基于機器學習的Android勒索病毒檢測系統(tǒng)R-PackDroid,通過分析病毒程序調(diào)用的系統(tǒng)API庫來提取特征,利用最新樣本測試結(jié)果表明,該系統(tǒng)能夠檢測勒索病毒,并能準確將手機勒索病毒與其他類型的病毒區(qū)分出來。Scaife 等[49]提出了一個名為CryptoDrop的勒索病毒早期預(yù)警系統(tǒng),該系統(tǒng)構(gòu)建一組勒索病毒惡意行為指標,當監(jiān)控到惡意程序大量篡改用戶文件數(shù)據(jù)時能夠及時預(yù)警和有效阻斷。
實際上,大部分勒索病毒仍然無法實現(xiàn)文件恢復(fù),而且對于加密強度較高的勒索病毒,文件恢復(fù)難度極大。因此,勒索病毒的防御工作中,事前的預(yù)防和文件備份更為重要。
計算機病毒程序是攻擊者精心設(shè)計和編寫的,尤其是病毒的加密算法的選擇、密鑰生成和存儲等環(huán)節(jié)都有周密的考慮。密碼技術(shù)的應(yīng)用,使得計算機病毒的查殺、檢測、阻斷和數(shù)據(jù)恢復(fù)等安全防護技術(shù)面臨著嚴峻的考驗,在與計算機病毒的博弈過程中,安全防護方一直處于十分被動的位置。當前的計算機病毒防御手段暴露出較多缺陷,如特征碼提取過程人工成本投入過高、新型病毒及變種不斷出現(xiàn)、病毒加密技術(shù)的應(yīng)用導致檢測響應(yīng)延時增大、特征庫龐大帶來查殺速度的下降等。在計算機病毒的檢測與防御方面,尤其是密碼算法在病毒中的應(yīng)用和對抗技術(shù),還存在著很多未解決的難題,需要更多的安全學者進一步開展深入研究。未來主要的研究思路如下:
(1)研究病毒程序中密碼算法的快速和準確識別方法,可以大大提高病毒程序分析速度和防御效果。目前,國內(nèi)外對計算機病毒密碼檢測分析缺乏系統(tǒng)性的方法,常用的密碼算法識別方法包括:基于靜態(tài)特征碼的密碼算法識別和基于動態(tài)分析的密碼算法識別[50-51]?;陟o態(tài)特征碼的密碼算法識別,會建立密碼算法和特征碼的對應(yīng)關(guān)系:在二進制層面,抽取密碼算法的靜態(tài)數(shù)據(jù)特征,包括初始化值、S盒、置換盒以及素數(shù)表等;在反匯編層面,利用逆向工程對可執(zhí)行文件進行反匯編,建立密碼函數(shù)簽名特征、匯編指令特征、程序邏輯結(jié)構(gòu)及多輪循環(huán)特征等。部分病毒樣本由于采用了加殼及指令混淆等技術(shù),加大了靜態(tài)分析的難度,密碼算法的靜態(tài)特征碼也被隱藏;大多數(shù)病毒直接調(diào)用Windows CryptAPI等密碼函數(shù)庫實現(xiàn)加密等功能,對病毒文件本身的靜態(tài)分析或者反匯編無法找到密碼算法特征。為了提高病毒加密行為識別的準確率,搭建具有計算機病毒自動分析功能的沙箱系統(tǒng),對加密函數(shù)動態(tài)庫的加載和加密API函數(shù)的調(diào)用進行監(jiān)測和分析,通過分析API函數(shù)名稱及參數(shù)特征對密碼算法準確識別,并通過提取密碼API函數(shù)的時間調(diào)用序列,構(gòu)建病毒程序?qū)Χ喾N密碼算法組合應(yīng)用的流程。
(2)勒索病毒的密碼算法破解和文件恢復(fù)難度很大,亟待加強研究,并且應(yīng)以事前防御和數(shù)據(jù)備份為主。理論上密碼算法破解難度極大,因此對勒索病毒加密的文件進行解密和恢復(fù)極為困難。從目前的研究成果看,勒索病毒被破解的情況主要包括以下幾種情況:一是通過逆向分析破解自定義的加密算法;二是密鑰保存不當,尤其是程序內(nèi)嵌的固定對稱密鑰;三是弱密鑰及長度不夠?qū)е碌谋┝ζ平獾劝踩珕栴};四是利用密鑰管理服務(wù)器存在的漏洞獲取大量用戶解密密鑰;五是利用磁盤文件恢復(fù)功能還原被加密文件。通過對目前已經(jīng)公布的破解方法和工具的統(tǒng)計,只有極少數(shù)勒索病毒是可以被破解的。從未來發(fā)展來看,勒索軟件使用的密碼算法將會更加復(fù)雜,其安全強度將進一步提升,這將大大提高加密數(shù)據(jù)恢復(fù)的難度。
(3)可信計算技術(shù)是實現(xiàn)網(wǎng)絡(luò)空間安全免疫防御體系的重要支撐,以可信計算為代表的基于密碼算法的病毒防御技術(shù)已成為當前熱點研究方向。密碼技術(shù)的發(fā)展是一把“雙刃劍”,密碼算法可以被計算機病毒濫用作為攻擊用戶的“矛”,同時密碼算法可以作為安全防護的“盾”。早在2008年,陳澤茂等[52]就已提出了基于密碼原理的計算機病毒免疫模型,該模型克服了基于訪問控制的邏輯隔離的脆弱性,可以有效阻斷計算機病毒的執(zhí)行和傳播?,F(xiàn)有的殺毒軟件的安全產(chǎn)品通過提取已知病毒的特征,可有效進行病毒查殺,但對未知病毒漏報率極高?;诿艽a算法構(gòu)建的可信計算技術(shù)可有效地對抗非預(yù)知病毒的攻擊[53]??尚庞嬎悴捎弥鲃用庖叩姆雷o機制,通過程序的數(shù)字簽名可準確識別出病毒程序。
計算機病毒的防護問題是網(wǎng)絡(luò)安全領(lǐng)域研究的熱點問題,已引起了政府部門、安防企業(yè)及科研人員的廣泛關(guān)注。網(wǎng)絡(luò)攻擊和防御的對抗是“道高一尺,魔高一丈”的過程,安全人員與病毒編寫者的博弈將持續(xù)下去,密碼算法的應(yīng)用將使得博弈更加激烈。未來更多的計算機病毒程序?qū)褂妹艽a算法及安全通信協(xié)議,更高強度的算法及更加復(fù)雜的算法組合將會出現(xiàn);作為安全防御方必須提前做好準備,提出針對加密型計算機病毒的分析檢測和安全防護方法。