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-02/f2c2aa78c13da69b500909cf05ea0af8.png)
![](/d/file/p/2023/12-02/c18687117ac2b76e10e3d63351993a38.png)
![](/d/file/p/2023/12-02/786110cebe92c787ba2cee6dd000ebbc.png)
![](/d/file/p/2023/12-02/aeff77a6e59e161ea03fd0baa4035656.png)
![](/d/file/p/2023/12-02/350b081dcc0cfd44f019dd729f8cdd7a.png)
![](/d/file/p/2023/12-02/c03f21ca6ee5bfab89a51d6bc012abd8.png)
![](/d/file/p/2023/12-02/404fc57ead93a538915745198690e0d0.png)
![](/d/file/p/2023/12-02/5ac7904d9216eed6f901bdc512b67bb4.png)
![](/d/file/p/2023/12-02/d5ecd15637183ee76187bdd20d39533b.png)
![](/d/file/p/2023/12-02/424857f1f43989b4e2da40638c1378a7.png)
![](/d/file/p/2023/12-02/f3f9ed8fd9e5a0d39be36997cc990c70.png)
![](/d/file/p/2023/12-02/4b783e80b719bfdababadb22d3011015.png)
![](/d/file/p/2023/12-02/7a1837cd03f5bef2fa2acaceae107df6.png)
![](/d/file/p/2023/12-02/01f41856fd49ada6d392ef3611928f6e.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-02/b3cde2c8fb0da2dc356beb2e26fc05ef.png)
![](/d/file/p/2023/12-02/430b12700e3bfbafdbafa5ecabb9e412.png)
0x3解密实现
解密实现测试效果如图:![](/d/file/p/2023/12-02/589ceb6f0ef15c198dbbd71dca2d8d0f.png)
![](/d/file/p/2023/12-02/8132a21a9202a13587d1c0e3ab2b1034.png)
![weinxin](/zone_ci_images/zone.ci.png)
评论