首页
社区
课程
招聘
[原创]CryptoWall勒索病毒分析
2019-5-2 20:23 8377

[原创]CryptoWall勒索病毒分析

2019-5-2 20:23
8377

引用


前几天给的样本,分析完之后,感觉还是比较经典的,且网上并没有相关分析,所以跟大家分析一下我的思路

用PEID查看,并没有加壳,但是竟然有附加数据

用LoadPe查看导入表信息,明显很奇怪



用火绒剑分析进行行为分析,发现创建了一个跟自己同名的子进程

载入Od,在这个call里程序就跑飞了

跟踪进入,一脸懵*

全都是这样的代码,既然创建了进程,于是直接下API断点

CreateProcessW  CreateProcessA


栈回溯发现地址很小,明显是申请的堆空间,且这个进程是被挂起来的,经验告诉我,既然是挂起,肯定是要修改OEP,活者是写入一段shellcode等操作

继续下 WriteProcessMemory断点



和我想的不太一样,虽然写入了内存,但是发现是把所有的区段都给改了,包括PE头,多次写入,不用想这块内存肯定我们真实的病毒程序

经过分析这块内存是利用VirtualAlloc申请出来的,把内存中的数据复制过来并解密,然后写入挂起的线程

直接把这块内存dump出来



经过测试,dump出来的程序确实真正的病毒程序

下面开始分析病毒的行为

用火绒剑过滤的时候发现病毒会复制到

C:\Users\用户名\Documents\yfqgbh.exe

名字是六位数的随机字母

在CopyFileW上下断




栈回溯发现下面有创建新的进程,这个进程就是我们复制过去的病毒,往上看的话肯定是判断



往上走,发现有拼接字符串,下F2断,重新跑起来



发现在获取目得的路径




然后打开这个位置的病毒,很显然,这个位置并没有我们的程序,所以GetLastError会返回错误代码2





这样我们的跳转实现不了(实现不了则会复制文件到目标目录)为了分析方面我直接把这个jnz改成jmp分析

单步往下跟踪

发现先创建了一个互斥体,防止多开




到这里我们可以先用IDA静态分析,配合OD动态验证我们的猜想


在IDA里我们可以看到                  ,在获取系统版本之后,下面有几个call

第一个call跟进去之后,发现明显是在提权

第二个call,发现看不到什么,回到OD,继续单步






发现返回值是CreateThread


继续单步,发现创建了一个线程,回调函数地址是我们传进来的参数a1



IDA反编译查看该线程的源码,发现是在枚举进程



经过动态分析这个线程


0217FF40   0217FF48  UNICODE "<"

0217FF44   00000000

0217FF48   0000003C

0217FF4C   00000040

0217FF50   00000000

0217FF54   005A3038  UNICODE "runas"

0217FF58   005A33E8  UNICODE "vssadmin.exe"

0217FF5C   005A3410  UNICODE " Delete Shadows /All /Quiet "

静默删除 影子 ?不知道是下要干什么

分析完线程,回到主函数,继续单步发现创建了很多线程,因为文章篇幅,我们直接以找到感染函数和加密函数 为目的分析(毕竟是勒索病毒,分析重点)

单步跟踪发现,有个设置线程优先级的,想象一下,把这个线程设置成了空闲状态




该线程回调函数地址地址为0x401710,IDA中跟随到该函数,发现里面在递归遍历磁盘,既然都遍历了,碰到合适的肯定要加密一下嘛,

进入递归函数,目录是肯定不会加密的,所以里面必不少的就是判断,目录,后缀名为我们需要加密的程序…等




设置属性,读取到内存,又写入,很有可能是在加密,在该函数位置下断

00401C85    E8 46000000     CALL <dump.sub_401CD0>                   ; 感染函数


加密函数肯定是要加密我们的文本的,我在C:\backup放入一个txt文本

跑起来程序,发现这个位置确实放了我们的文件,F9运行

断到读取我们放入的文本时,继续单步跟进

发现要CreateFileW我们的文本了


读取到内存


先读取128个字节,并判断开头处是否为空,如果是则是已经加密过的,如果不是则会申请一段堆空间 

把读取的内容放到这个空间


往下单步跟踪发现又申请了一段堆空间,然后有两个可以函数,经过测试

这个位置的call是加密函数

00401FAE    E8 FD1A0000     CALL <dump.sub_403AB0>


最后就是设置文件指针,然后写入加密后的文本了


IDA里面还是比较清晰的


以下为加密函数


如果这个加密是可逆的,那么我们就可以恢复原始文件了。弹出来的框框显示的是RSA-4096不可逆,有兴趣的可以研究

根据这个样本的特征我推测是CryptoWall勒索病毒,具体版本就不知道了




加密前,加密后








[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞6
打赏
分享
最新回复 (18)
雪    币: 452
活跃值: (6123)
能力值: (RANK:580 )
在线值:
发帖
回帖
粉丝
UzJu 8 2019-5-2 23:53
2
0
前排卖瓜子 花生 八宝粥
雪    币: 310
活跃值: (1917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
niuzuoquan 2019-5-3 15:16
3
0
mark
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
嗨丶石先森 2019-5-4 10:09
4
0
都是高手。
雪    币: 625
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Hacker.wang 2019-5-4 12:30
5
0
厉害
雪    币: 625
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Hacker.wang 2019-5-4 12:30
6
0
厉害
雪    币: 314
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
皮豪 2019-5-4 21:49
7
0
后排吃瓜子壳,西瓜皮,八宝粥罐头盒子
最后于 2019-5-4 21:50 被皮豪编辑 ,原因:
雪    币: 1725
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vincen9931 2019-5-5 08:58
8
0
不明觉厉
雪    币: 10
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
暖气上的糖果 2019-5-5 09:22
9
0
很不错呀
雪    币: 5616
活跃值: (2243)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
一剑飞雪o 2019-5-7 09:58
10
0
膜拜高手
雪    币: 2694
活跃值: (80)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
BlackJZero 2019-5-7 10:24
11
0
写的很用心,不过居然没有打广告
雪    币: 1197
活跃值: (15)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
林蚩尤 2019-5-9 15:05
12
0
病毒样本可以发给我一份吗,想按照你报告调调看
雪    币: 9
活跃值: (145)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
yber 2019-6-14 16:59
13
0
病毒样本可以发给我一份吗,想按照你报告调调看
雪    币: 258
活跃值: (124)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
406 2019-6-20 21:48
14
0
大佬,病毒样本能发一份不,
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_xljaclpi 2019-6-26 15:24
15
0
大佬,病毒样本能发一份不, 想按照你报告调调看 
雪    币: 6402
活跃值: (2284)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuyangzjg 2019-6-28 10:46
16
0
不明觉厉
雪    币: 83
活跃值: (1047)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
killpy 2 2019-7-1 14:11
17
0
样本发我一份 可以吗
雪    币:
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
推理能手 2020-5-16 23:07
19
0
楼主发一份样本呀
游客
登录 | 注册 方可回帖
返回