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-04/75cc0ffec50818599f7b8db2cbcef3ce.png)
![](/d/file/p/2023/12-04/49d3b2cb8de225ebe12a3cc65b9a95bc.png)
![](/d/file/p/2023/12-04/25c83b954aa100feb9d64665e13163c3.png)
![](/d/file/p/2023/12-04/57775009fc2100f280f63c11df9acfea.png)
![](/d/file/p/2023/12-04/4e027f93cc55569eae60aa96bf595972.png)
![](/d/file/p/2023/12-04/459336a05171aa8864d09a99c04bd83d.png)
![](/d/file/p/2023/12-04/f6a8878d0f6510fb2766ff9cf2f44e54.png)
![](/d/file/p/2023/12-04/2925586c145fabe81f1f25966c03ee15.png)
![](/d/file/p/2023/12-04/e02862083b9c70ade12d56ed9a1f7859.png)
![](/d/file/p/2023/12-04/cf312b70ccb2687853a91bbffddd546d.png)
![](/d/file/p/2023/12-04/e0d3d10bd3f4cfaa9451f6496c129825.png)
![](/d/file/p/2023/12-04/a655be4dec8cd628ce35ab860860425a.png)
![](/d/file/p/2023/12-04/358829cf106016bec1e7229c0e46f131.png)
![](/d/file/p/2023/12-04/50574d3312c723a17ad5910a551311b2.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-04/c494e75dd5a94de3e03d3a139b52bf1b.png)
![](/d/file/p/2023/12-04/c6cc59f29a1988826ff12b9a4ca497ba.png)
0x3解密实现
解密实现测试效果如图:![](/d/file/p/2023/12-04/be98f56a790453e1ad4cbe542bfb45c8.png)
![](/d/file/p/2023/12-04/8d5ff124010111248a0d4abdf8135606.png)
![weinxin](/zone_ci_images/zone.ci.png)
评论