对bozon3勒索程序的分析
2022-7-31 08:54:36 Author: MicroPest(查看原文) 阅读量:17 收藏

【导读】:因工作需要,对这个勒索病毒共前后分析了两次,第一次粗浅地分析了下,就交差了。没想到第二次又碰上了,所以说嘛,第一次应该认真对待,就不会有第二次的分析了。

后来弘连约稿,就将这篇文章投给他们了。等稿子印刷出来了,我就在这里公布出来。

为了更深入地了解这个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进制的大写字符的方式得到。

至此,整个勒索病毒分析完成了。


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NDcxMDQzNA==&mid=2247487293&idx=1&sn=9e2df94eafad55dc53b615390d536c5e&chksm=a682d9f091f550e64f5925c2a087a9a66c3ac945638b882f3e70e61ecbbea4b5aa6d6d0e6513#rd
如有侵权请联系:admin#unsafe.sh