引言勒索病毒Wannacry爆發已經過去一周了,由於該病毒採用加密用戶文件方式進行勒索,許多朋友對該病毒文件加解密過程比較感興趣。在已見到的病毒分析報告[1-4]中對文件加解密過程描述的比較零散。為便於全面理解病毒使用的密碼技術,本文綜合多家的分析報告,從密碼技術角度勾勒出該病毒文件加解密基本框架。包括加密策略、密鑰結構、密鑰生成與保護等,為有興趣者提供該病毒使用密碼技術的畫像。文章最後指出了病毒文件加解密分析遺留的問題。
1.密碼要素
RSA2048非對稱密碼算法國際標準非對稱密碼算法。其功能由Windows系統提供API接口,病毒調用該算法對密鑰實施加密保護。算法使用一對公、私鑰進行加解密操作:公鑰負責加密,私鑰負責解密(反之亦可,同於數字籤名)。密鑰長度2048比特(256個字節)。AES-128對稱密碼算法
美國標準,國際流行對稱密碼算法。編程庫函數編譯連接到病毒程序中。該算法對感染主機文件實施加密。算法採用128比特數據分組加密方式,加解密密鑰相同,密鑰長度128比特(16個字節)。網絡密鑰對(WK)
由病毒攻擊者生成,一組全網使用的公私鑰對(WKp,WKs)。作用於RSA2048算法,保護受感染主機的「主機密鑰TK」,其公鑰(WKp)隨病毒文件傳播,私鑰(WKs)由病毒攻擊者掌握。主機密鑰對(TK)病毒在每個感染主機上生成的公私鑰對(TKp,TKs)。作用於RSA2048算法,保護「文件密鑰FK」,其公鑰(TKp)明存在00000000.pky文件中,私鑰(TKs)由網絡密鑰對(WKp)加密存放在00000000.eky文件中。文件密鑰(FK)
病毒加密文件時生成的隨機數。每加密一個文件生成一個FK。
本文將以上要素用圖例表示:
2.三級密鑰結構病毒採用網絡密鑰對WK、主機密鑰對TK以及文件密鑰FK三級密鑰結構,以保證加密文件勒索過程的安全性。由WK用RSA算法保護TK,TK用RSA算法保護FK,FK用AES算法對文件進行加密。文件解密時,由WK解密TK,TK解密FK,FK解密文件。病毒執行後生成一組公私鑰對作為「主機密鑰對TK」
主機密鑰對-公鑰(TKp)保存在00000000.pky文件中;
主機密鑰對-私鑰(TKs)經網絡密鑰對-公鑰(WKp)加密,記RSA(TKs)WKp,保存在00000000.eky文件中,待病毒攻擊者使用網絡密鑰對-私鑰(WKs)進行脫密。
為什麼不採用兩級密鑰?由網絡密鑰WK直接加密文件密鑰FK,省掉主機密鑰TK。去掉主機密鑰TK,安全性上沒有問題,但由於FK需要在攻擊者伺服器端進行脫密,全網受感染主機每個文件解密都要與攻擊者伺服器進行密鑰解密通信,將造成通信瓶頸。
3.文件加密病毒為每個加密文件生成一個文件密鑰(FK);病毒遍歷主機文件進行加密,如圖2。
4.文件密鑰FK保護每一個文件加密後,用主機密鑰對-公鑰(TKp)對每個文件密鑰FK1、FK2、FK3…FKn進行加密生成RSA(FKn)TKp,並存入對應的加密文件頭結構中。如圖3所示。
5.文件解密雖然到目前為止還沒有用戶交贖金後加密文件被解密的報告,根據其密鑰結構設計以及病毒代碼分析可以確定文件的解密邏輯。受害人操作病毒提示界面,通過網絡(匿名網Tor)向病毒攻擊者交付贖金(比特幣),病毒將RSA(TKs)WKp(由網絡密鑰對-公鑰WKp加密的主機密鑰對-私鑰TKs)發送給攻擊者,如圖4①②所示。
病毒攻擊者(伺服器)確認收到贖金,用自己的網絡密鑰-私鑰(WKs)對RSA(TKs)WKp進行解密還原TKs,並發回受害人主機,存入00000000.dky文件,如圖4③④⑤所示。受害人點擊病毒界面「Decypt」按鈕,病毒程序從每個加密文件中讀取RSA(FKn)TKp,使用00000000.dky文件TKs對其進行解密,還原文件密鑰FKn;病毒程序用解密後的FKn對加密文件進行解密。
6.文件加密策略為兼容性考慮,病毒不對主機所有的文件進行加密;為效率考慮,對較大的文件(如大於1.5MB),只加密文件中的一部分(10%左右);病毒攻擊者為使受害人相信被加密的文件可以恢復,除了本文以上介紹的密鑰,攻擊者在病毒程序中預製了另一對公私鑰,用法與主機密鑰TK一樣,以明文方式存放在病毒代碼中,讓受害人不用交贖金,自己操作解密一部分文件。(實際上,使用這對公私鑰沒有意義,因為私鑰是明存的,對FK的加密已失去保護意義,直接將FK明存在加密文件中即可。)
7.有待研究的問題由於沒有發現交贖金後病毒通過Tor網絡與攻擊者建立聯繫實例,尚無病毒與攻擊者伺服器目標地址分析報告。因此,還需進一步對文件解密過程進行再現驗證;對網絡密鑰對(WK)真實性,以及其RSA密鑰的符合性進行分析;
進一步分析主機密鑰對-私鑰(WKs)生成後,其加密、存儲過程,找出其明現的蛛絲馬跡;國內受害人一般不使用Tor(匿名網),因此如果攻擊者有一天一旦出現,可以對加密文件進行恢復,我們應該如何應對?
參考文獻[1]http://news.163.com/17/0518/12/CKNID17N00014AEE.html[2]http://www.tuicool.com/articles/UJjm6rU[3]http://www.2cto.com/article/201705/639532.html[4]https://modexp.wordpress.com/2017/05/15/wanacryptor/?from=groupmessage&isappinstalled=0