社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 5037阅读
  • 4回复

[分享]小K学病毒分析之【Cerber Ransomware】

楼层直达
z3960 
级别: 茶馆馆主
发帖
770867
飞翔币
207694
威望
215657
飞扬币
2511641
信誉值
8



1. 样本信息


文件名称:C:UsersAdministratorDesktopb.exe文件大小:262913 字节修改时间:2017年2月22日 14:40:01MD5     :0C1BC5B8A8DFE0424030D419AB5C2F8ASHA1    :1BDF29827DADA442357C482A9E086DC3AE166728CRC32   :F3CDDB62
PEiD识别不出编译语言和编译器版本,应该是经过加壳的文件。


2. 病毒流程


主要线程:1.关闭某些进程,如sqlserver.exe,这样才能加密并删除数据库文件。2.创建N个线程,扫描磁盘文件,获取可加密文件列表。3.创建N个线程,用于加密文件,具体线程数根据本机的配置。4.创建一个隐藏窗口,用于通知加密完毕。5.修改主机桌面背景,打开提示文件并显示。6.主线程等待执行完上述操作后,等待窗口结束。


3. 流程分析



3.1 自解压和IAT重建


病毒使用了加壳技术对自身进行了加密,同时还进行了混淆,增加了静态分析的难度,这里我跳过了壳的分析,手动脱壳到病毒的OEP。

这时候把程序dump下来会发现系统的API都看不到,因为程序并没有直接调用API,而已通过一个全局函数数组,通过上图函数加载函数地址并写入的全局函数数组中。程序其他地方直接调用全局函数数组中的函数。这里dump有两个选择,一个是直接dump,不过因为混淆,增加静态分析的难度,另外一个做法就是执行完混淆还原部分,然后把混淆的函数调用给nop掉,接着dump下来,然后通过工具修复了IAT表,这样方便我后续使用IDA进行静态分析(本文采用了第二种)。

3.2 解密配置信息


接着程序运行起来了,程序获取自己的模块句柄和文件路径后,接着使用RC4算法解密获取配置信息,这部分同一放在一个函数中(另命名为f_DecryptConfigInfo)执行,该部分配置信息控制病毒后续行为和操作。

解密后的控制信息是一个json格式的文本,包含以下部分:

3.2.1 黑名单


包含感染文件类型黑名单、某些特定文件和特定目录以及部分使用地区。


3.2.2 关闭进程


可以看出主要是某些大众应用和数据库服务进程,关闭这些进程的目的是为了避免文件被占用导致加密操作失败。


3.2.3 加密设置


包含加密文件后缀,文件大小,是否启动多线程,核心线程数等等,不过部分参数会根据感染主机的情况进行适度调整。


3.2.4 RSA公钥


内容是经过了Base64加密后的内容,结果也验证猜想正确。下面是解密后的内容:


3.2.5 用户提示


这里有及部分组成,分别是语音提醒,壁纸更换提醒以及用户引导操作帮助文件,这里看出作者实在实在是用心良苦啊。帮助文件也是使用了Base64进行了加密,解密后内容是HTML文件,具体样式如下:


3.2.6 服务器


服务器这块有两部分,一部分是接收感染主机的信息和通知。另外一部分是给用户用于交付勒索款的。


3.2.7 白名单


特别关照的目录。


3.3 读取机器信息



3.3.1 读取机器的GUID


病毒从注册表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptography中读取值名称为MachineGuid的值,本测试机器的GUID值为:98abd045-77bf-4e0f-b5d2-3c805156c566这里的以‘-’为分隔符,前4个字符串都有特定的用途:
  1. 病毒创建临时目录%temp%98abd045
  2. 在前面的临时目录中创建两个文件,分别是77bf和4e0f,这两个都是后面加密算法用到的key。
  3. b5d2作为加密文件的后缀名


3.3.2 读取电脑名


读取电脑名,然后和字符串CERBER_CORE_PROTECTION_MUTEX通过计算生成类似下面格式的互斥对象名:

shell.{3817596D-ADF3-6E49-63ED-931789067A56}


3.4 网络信息发送


在进行加密前,会发送感染主机的信息,信息的格式见配置文件的data_start,同样使用了Base64进行加密,解密后内容如下:{MD5_KEY}{PARTNER_ID}{OS}{IS_X64}{IS_ADMIN}{COUNT_FILES}{STOP_REASON}{STATUS}测试环境win7 32位系统生成的内容如下:"e80ab90e699a  00064  7  0  1  0  0  0"
格式标识含义长度(单位:字节)
{MD5_KEY}77bf.tmp文件内容的MD5值的前面一部分12
{PARTNER_ID}不明(内容固定)5
{OS}操作系统版本1
{IS_X64}是否64位系统1
{IS_ADMIN}是否Administrator用户1
{COUNT_FILES}可感染文件总数1
{STOP_REASON}不明(内容固定)1
{STATUS}有枚举主机用户信息,具体代表啥没细看1

然后会对上面的字符串进行MD5加密,得到的MD5串为:808A4018E134F0629A88F82940969DF9然后取前2字节'80',作为校验码,服务器使用它来验证收到上面部分的正确性,合成字符串'e80ab90e699a0006470100080'发送为服务器。

3.5 加密模块



3.5.1 加密文件名


文件文件名是由一个函数统一生成的,和原始文件并没有任何规律可言,后缀是3.3.1中所说的GUID的第4部分,本测试机为b5d2.

3.5.2 加密文件内容


从配置信息加载扫描配置,然后对每个磁盘创建一个扫描线程,获取符合加密条件的文件列表。

接着准备加密了,在加密之前会针对机器情况调整加密线程数,同时关闭部分进程,保证加密的运行。

接下来就是文件加密,加过过程有点蛋疼。

为了减少码字,我画了一张渣渣图,思路大致是清楚的。


4. 总结


算是补充完整了,本来应该是上个星期发的,不过生病状态不太好,所以晚了点。有些细节没有深入,有兴趣的朋友可以自行研究。嗯,这种加密的病毒感觉真蛋疼。本人技术有限,如果分析有问题,请直接问指出来,谢谢 ^_^。




我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 超级版主
发帖
833785
飞翔币
226630
威望
224648
飞扬币
2443139
信誉值
0

只看该作者 1 发表于: 2023-02-11
来看一下
级别: 超级版主
发帖
833785
飞翔币
226630
威望
224648
飞扬币
2443139
信誉值
0

只看该作者 2 发表于: 2023-02-11
不错,了解了
srwam 
级别: 超级版主
发帖
633637
飞翔币
8
威望
25247
飞扬币
2856044
信誉值
0

只看该作者 3 发表于: 2023-02-12
来看看
srwam 
级别: 超级版主
发帖
633637
飞翔币
8
威望
25247
飞扬币
2856044
信誉值
0

只看该作者 4 发表于: 2023-02-12
了解一下