-
-
[原创]【病毒分析】BabyK加密器分析-Windows篇
-
发表于: 2024-5-30 13:52 12910
-
1.背景
Babuk勒索家族最早曝光于2021年1月初,在几个月内,它就跻身于最臭名昭著的勒索软件组织之列。自回归以来,它通过在地下论坛上积极宣传自己而获得了更多的知名度。在策略方面,其加密功能与其他勒索软件组织没有太大区别。随着时间的流逝,勒索软件组织通过发布新变种并致力于改进其攻击机制,成功地制造了混乱。
该加密器使用了多种加密方式:HC-128/ChaCha8 对称加密算法、椭圆曲线 Diffie-Hellman (ECDH)、SHA256 hashing等,特征也极为特殊,会将所有被加密文件后缀修改为.babyk,并且在所有加密文件的加密内容末尾附加字符串“choung dong looks like hot dog!!!”,该字符串的意义是为了标注着勒索软件与 Babuk 有关。
解析Babyk行为文章链接
以下是针对 Linux/UNIX 和 ESXi 或 VMware 系统的跨平台加密后提取的勒索信内容。
勒索信
该加密器最初的泄露是来自于一篇Twiter文章,是由其babuk的开发者泄漏的源代码。
Twiter文章:
源码泄漏地址:
其中存在三种针对不同系统类型(Linux系统、NAS系统、Windows系统)的病毒文件,本篇是针对Windows系统的分析。
这里可以通过VS生成了Builder.exe来实现对其Builder过程进行分析,可以看到主要是对这部分文件的处理与释放
文件释放列表及作用:
1 读取参数,第一个参数是文件夹路径,第二个是指定密钥文件
2 根据参数1的文件路径,来和kp.curve25519与ks.curve25519进行拼接,用于后续存储密钥
3 利用随机数函数CryptGenRandom来产生一个私钥,再利用该私钥配合curve25519算法生成一个公钥
4 或者看是否存在第三个参数,有指定私钥的文件,利用该文件内的私钥配合curve25519算法生成一个公钥
5 将私钥和外部的note.txt勒索信写入到加密器中,将私钥写入到解密器中
6 将生成的私钥和公钥写入到kp.curve25519和ks.curve25519文件中
1.整体流程就是调用随机数函数SystemFunction036,产生了32位的随机数。
2.其中systemFunction036是cryptbase.dll中的函数。
3.之后就是经过了Curve25519算法的密钥生成,得出了一个公钥和一个私钥。
程序先初始化了一下加密的句柄,使用了CryptAcquireContextW函数,获取了两次一共,第一次就是有现成的加密句柄就用现成的,第二次的话就是保障一下,如果没有就创建一个,然后第三个参数是加密的类型,这里的0x18则是对应的PROV_RSA_AES,意味着支持RSA和AES加密算法。
最后将加密句柄返回。
回到主函数,获取了输入的参数,并且判断是否存在debug参数,如果存在则开启调试模式
如果是调试模式开启,则创建一个用于记录调试模式的文件
主要比较有特点的就是,通过使用ControlService函数,来对服务发出停止操作,然后调用sleep函数直到服务成功停止后,再调用。
所停止的服务有:
调用了cmd命令实现:
获取了系统的信息,并且获得了系统的处理器的数量,并且创建了参数分别为0和1的两个加密线程。
StartAddress
一共有两种参数,0的话就是会检查一下当前的文件队列,1的话就直接开始加密。
获取shares和paths的参数,该程序格式应该是用逗号分开的。
其中shares代表了加密IPC共享资源中的文件。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)