【导读】:因工作需要,对这个勒索病毒共前后分析了两次,第一次粗浅地分析了下,就交差了。没想到第二次又碰上了,所以说嘛,第一次应该认真对待,就不会有第二次的分析了。
后来弘连约稿,就将这篇文章投给他们了。等稿子印刷出来了,我就在这里公布出来。
为了更深入地了解这个Bozon3勒索病毒,在一周后再次对它进行了分析,虽然还有些地方还不太理解,但基本脉络已清楚成型,细节部分也有所掌握了解。
这个病毒文件由三部分组成:一个母文件+两个子文件;母文件由C#编写,子文件一个是批处理文件一个为C++编写的子程序。批处理完成“勒索词和要执行的命令,关闭、杀死安全类的服务、进程以及各类数据库的进程”。C++的子程序完成“删除卷影备份、部分种类文件的加密及在尾部写入88字节的解密所需信息”。因此,这个勒索是有解的。
在分析中遇到两个奇怪的地方:一是程序中没有调试出回传地址(勒索信中写有交钱给解密工具,所以回传地址不需要了);二是母程序居然可以用winrar打开释放子程序,但母程序又不是自解压程序。
第一部分 【母体:C#部分】
1、bozon3勒索病毒隶属于Mallox家族,
2、查壳:是C# .net的,32位。
3、反编译,
入口位于Main处,如下,
4、这里面有个资源文件,
导出来,看看,
查下壳,
提示不是有效的PE文件。
5、运行下,看看发生了什么?
用cmd /c 启用了一个批处理里,后来删除了,
6、恢复后,得到:
原来是勒索词和要执行的命令,有好几块,禁服务、杀进程等跟安全相关的操作。
7、在执行的过程中,有很多次的释放资源不成功,
8、这个程序有个有意思的地方:居然可以用winrar打开,但它又不是自解压缩程序,非常奇特。
这个地方确实非常神奇,用7z这种压缩软件就看不到这样的结果。
8、解压缩后,发现这个子程序跟前面的同名的母程序不是一回事,它主要起到加密勒索的作用。
第二部分 【子体:逆向】
1、程序的整体框架:中间红框就是核心代码。
2、程序运行后,会对系统语言进行判断,如果系统使用语言为俄罗斯语、哈萨克语、白俄罗斯、乌克兰、 鞑靼语,则不勒索。
3、如果判定达成,程序首先会提取系统权限,然后破坏系统保护,删除卷影备份,禁用系统故障重启和修复功能。
(1)Deprotecion():破坏系统保护
这里破坏系统保护,主要是让 Raccine 通过镜像文件劫持对抗勒索病毒的手段失效。Raccine 是一个开源勒索软件保护程序,能够拦截有勒索病毒相关行为的进程。
(2)Delshadow():删除卷影副本
(3)killbase():关闭数据库相关服务
4、进入核心代码区sub_40611B:
(1)文件加密方式:
Bozon3勒索病毒采用家族mallox同样的加密算法:ECDH(基于椭圆曲线的Diffie-Hellman密钥交换)+ChaCha20(salsa20流加密变种算法)。
程序中首先为当前用户生成一对ECDH公私钥sk_user和pk_user,均为32字节。攻击者的ECDH公钥pk_attacker被内置于程序中,被用于和sk_user生成会话密钥ShareKey。ShareKey将被用于当前机器的文件加密。
Sub_40611b->4062c5:生成ShareKey
Pk_attacker写在程序内部。
(2)回传机器信息+加密文件+写勒索文档:
Sub_40611b->4063e2:主要由三个函数构成,以下一一分解,
(2-1)internet_send_id_pc_dc_name():
这里有个生成勒索号:
在这里 取到了机器名和 生成的 机器编号(由系统启动到现在的时间和进程PID和线程PID进行xor来生成id值)。一般情况下,这时子程序会将这串值传回C&C以作以后交赎金解密之用,但奇怪的是程序中找到了用以POST的header:“Content-Type:application/x-www-form-urlencoded”,但在调试的过程中始终IP没有出来,真是奇怪,不知道往哪回传。有几种可能情况,一是调试时没取到;二是怀疑这是个阉割版,根本就不回传,只能跟作者留下的邮箱联系,交赎金发解密程序。
(2-2)Cryptfile():
完成准备工作,程序会启动大量加密线程cryptfile->StartAddress,对文件进行加密,将文件后缀名修改文 bozon3,最后释放勒索信。
加密目标文件时,每次跳过一个指定的偏移量,均匀地从文件头部读至文件尾部进行加密并写回原偏移,每次读取0x1000字节(4KB)。
StartAddress->sub_404632:
加密算法使用ChaCha20,包括pk_user在内的解密所需信息被写入到文件尾部,共88字节。
写了3次,分别是0x28+0x10+0x20;前两个是什么东西,用OD跟一下就知道了,我不想跟了,最后32字节是pk_user。
加密工作完成后,病毒会为被加密成功后的文件添加后缀名.bozon3。
(2-3)dropletter():写勒索文件
病毒在C盘根目录下创建名为HOW TO RECOVER !!.TXT的勒索信息文件,同时会在其他所有被加密目录下创建文件RECOVERY INFORMATION.txt,二者内容一致。不同受害机器上,勒索信息中只有Personal ID是不同的,该ID字符串是将pk_user前6个字节转为16进制的大写字符的方式得到。
至此,整个勒索病毒分析完成了。