0x0概況
Lucky是一種超強傳播能力的惡意代碼軟件家族。其功能復雜,模塊較多,能夠利用多種漏洞組合和進行攻擊傳播。
含有Windows和Linux雙平臺攻擊模塊,加密算法使用RSA+AES算法,攻擊完成最后利用中毒計算機進行挖礦,勒索等。
本文只分析其中的加密勒索模塊部分,主要實現其加密后文件的解密,至于其他攻擊模塊,可參考文章后邊提供的其他文章。
0x1加密分析
判斷條件部分:勒索病毒會遍歷全盤文件,加密固定擴展名的文件。
0x0概況
0x1加密分析
0x2解密思路
病毒全部分析完就可以找到其加密算法中的漏洞用以解密,以下提供三種方案的思路:
(1)如果勒索病毒進程還在運行,則直接從0x610A30地址處提取Key用于解密。
(2)如果勒索病毒進程不存在了,或者沒有提取到Key,則嘗試碰撞Key。
如果已知①某文件加密前的部分數據,②這個文件被加密后的那部分數據,③勒索病毒大概的爆發時間
(3)同上,沒有提取到Key,嘗試碰撞。如果未知加密前文件數據。則嘗試用RAR,DOC等文件開始必須的數據作對比。
以上說的方法都不需要去利用病毒中的RSA算法解密key(文件末尾添加的512字節),也就簡單了許多.那么詳細說下第二種:
我這里準備的數據是,1.源文件 BOOTSECT.BAK ;2.被加密的文件 [nmare@cock.li]BOOTSECT.BAK.kDeLBN1WSg5DKZQjw7OhSOcmumYeDnN11eIAiIc1.lucky。
具體碰撞方法就是,生成隨機字符串+固定字符串,計算出KEY,嘗試去解密[nmare@cock.li]BOOTSECT.BAK.kDeLBN1WSg5DKZQjw7OhSOcmumYeDnN11eIAiIc1.lucky文件中的前16個字節,如果解密的內容與源文件BOOTSECT.BAK中前16個字節中的內容相同,則判斷為有效Key,可以去嘗試解密其他文件。
提一下第三種:
第三種實際與第二種思路一樣,只不過是對比源文件數據與加密文件數據的時候,源文件如果是RAR,DOC等文件,其開始處的源數據直接已知,不許要再有被加密的前的源文件。
比如RAR壓縮文件,開始必有RAR!…的字符串可作為對比源。
生成Key的思路如圖:
部分測試代碼:
0x3解密實現