0x0概况
Lucky是一种超强传播能力的恶意代码软件家族。其功能复杂,模块较多,能够利用多种漏洞组合和进行攻击传播。
含有Windows和Linux双平台攻击模块,加密算法使用RSA+AES算法,攻击完成最后利用中毒计算机进行挖矿,勒索等。
本文只分析其中的加密勒索模块部分,主要实现其加密后文件的解密,至于其他攻击模块,可参考文章后边提供的其他文章。
0x1加密分析
判断条件部分:勒索病毒会遍历全盘文件,加密固定扩展名的文件。
0x0概况
Lucky是一种超强传播能力的恶意代码软件家族。其功能复杂,模块较多,能够利用多种漏洞组合和进行攻击传播。 含有Windows和Linux双平台攻击模块,加密算法使用RSA+AES算法,攻击完成最后利用中毒计算机进行挖矿,勒索等。 本文只分析其中的加密勒索模块部分,主要实现其加密后文件的解密,至于其他攻击模块,可参考文章后边提供的其他文章。0x1加密分析
判断条件部分:勒索病毒会遍历全盘文件,加密固定扩展名的文件.(函数名R_开头为逆向后重命名函数)![](https://www.anquanke.com/Users/Hades/Documents/My%20Knowledge/temp/d331be10-0ff1-4ab9-acdd-d44311de5017/128/index_files/43c3bf68-dcc5-4a0b-9a45-13682712d90f.png)
![](/d/file/p/2023/12-05/4d0defa7ef63dd2b36bc5993715ed1f6.png)
![](/d/file/p/2023/12-05/e4e4a520bd19da76effed3635c4456c5.png)
![](/d/file/p/2023/12-05/efc8db4de9d36e3d3d55081c1417a676.png)
![](/d/file/p/2023/12-05/d9427735608a07f356bbd86079f2ad47.png)
![](/d/file/p/2023/12-05/edc3d58a11fbabad303e73e1fd22c353.png)
![](/d/file/p/2023/12-05/ce784dd66e5b5a7960d86076f9f92078.png)
![](/d/file/p/2023/12-05/7d161b37c30e8bc171ef0bc088f3e682.png)
![](/d/file/p/2023/12-05/f9e8e0df5e6d711b3f30bf9a658aa3ff.png)
![](/d/file/p/2023/12-05/d9d0f59294caaa6fb77144da7696bd2a.png)
![](/d/file/p/2023/12-05/30812897af83095be271a36543dcac9c.png)
![](/d/file/p/2023/12-05/c6010925625edd38f6a773765b04ec8c.png)
![](/d/file/p/2023/12-05/14c9145d1b29b9fc8c23dd595c6bf7a3.png)
![](/d/file/p/2023/12-05/c63d52c69dac5a3f7e334600d046cb7d.png)
![](/d/file/p/2023/12-05/e4ed6967187874f12c2c5a8cf66f9e05.png)
0x2解密思路
病毒全部分析完就可以找到其加密算法中的漏洞用以解密,以下提供三种方案的思路:
(1)如果勒索病毒进程还在运行,则直接从0x610A30地址处提取Key用于解密。
(2)如果勒索病毒进程不存在了,或者没有提取到Key,则尝试碰撞Key。
如果已知①某文件加密前的部分数据,②这个文件被加密后的那部分数据,③勒索病毒大概的爆发时间
(3)同上,没有提取到Key,尝试碰撞。如果未知加密前文件数据。则尝试用RAR,DOC等文件开始必须的数据作对比。
以上说的方法都不需要去利用病毒中的RSA算法解密key(文件末尾添加的512字节),也就简单了许多.那么详细说下第二种:
我这里准备的数据是,1.源文件 BOOTSECT.BAK ;2.被加密的文件 [[email protected]]BOOTSECT.BAK.kDeLBN1WSg5DKZQjw7OhSOcmumYeDnN11eIAiIc1.lucky。
具体碰撞方法就是,生成随机字符串+固定字符串,计算出KEY,尝试去解密[[email protected]]BOOTSECT.BAK.kDeLBN1WSg5DKZQjw7OhSOcmumYeDnN11eIAiIc1.lucky文件中的前16个字节,如果解密的内容与源文件BOOTSECT.BAK中前16个字节中的内容相同,则判断为有效Key,可以去尝试解密其他文件。
提一下第三种:
第三种实际与第二种思路一样,只不过是对比源文件数据与加密文件数据的时候,源文件如果是RAR,DOC等文件,其开始处的源数据直接已知,不许要再有被加密的前的源文件。
比如RAR压缩文件,开始必有RAR!…的字符串可作为对比源。
生成Key的思路如图:
部分测试代码:
![](/d/file/p/2023/12-05/6d1695e61bf40becd0319687438deadd.png)
![](/d/file/p/2023/12-05/b8530eaf9dd78bbfb80180b2c394bd78.png)
0x3解密实现
解密实现测试效果如图:![](/d/file/p/2023/12-05/aa0b595b459574816e93e4a4f3678dfe.png)
![](/d/file/p/2023/12-05/c7a5b19bc9674387c80fe08e72c4b40e.png)
![weinxin](/zone_ci_images/zone.ci.png)
评论