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-01/49f88a2c456d0b6f9542341b42c31718.png)
![](/d/file/p/2023/12-01/b048df97b1766b544cc0501d6494449c.png)
![](/d/file/p/2023/12-01/6b207b2b4df6479613a3e8512415f585.png)
![](/d/file/p/2023/12-01/8ebbd84b6dccd5ade771c984bf7403f2.png)
![](/d/file/p/2023/12-01/83f0c5932f8ac3f55514567fb1d55e95.png)
![](/d/file/p/2023/12-01/a41c07cbd59433b55969bc20695c2ea3.png)
![](/d/file/p/2023/12-01/7eb681b34c9efe3850859e625b09715d.png)
![](/d/file/p/2023/12-01/12e8b7af3751d82c896354f5e773c520.png)
![](/d/file/p/2023/12-01/6f2eb6de1faa2671287a36e294929232.png)
![](/d/file/p/2023/12-01/2ec2f2c9743933cdae88d9ed4988ed0a.png)
![](/d/file/p/2023/12-01/af5ae8447737e71188925ffef0df7d09.png)
![](/d/file/p/2023/12-01/9fa4efb9608fb6575d6beae3c81dbccb.png)
![](/d/file/p/2023/12-01/8219ac53f4e733cb621634d87286f792.png)
![](/d/file/p/2023/12-01/fb6802d9a47f93403bb6958293d850d0.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-01/3de608cf9ea152a3f3672f0bcd3e1b6b.png)
![](/d/file/p/2023/12-01/5b109f212923f9e983baa0ef50762a53.png)
0x3解密实现
解密实现测试效果如图:![](/d/file/p/2023/12-01/5ffa859441b3ebd4422cae25f9919939.png)
![](/d/file/p/2023/12-01/0239cb667aa619545ea4b7975982ec11.png)
![weinxin](/zone_ci_images/zone.ci.png)
评论