首页
社区
课程
招聘
[原创]带混淆的勒索病毒
2019-11-9 00:40 3887

[原创]带混淆的勒索病毒

2019-11-9 00:40
3887

这是之前的勒索病毒样本,一直没有好好分析,在找工作期间决定好好分析,也当是复习,这是我第一次发帖,如有不足,请各位指出。

一、样本信息

文件名称:1.exe

编译时间: 2017年4月13日, 15:30:22

编译平台:Microsoft Visual C++ 6.0

是否有壳: 无

MD5::DBD5BEDE15DE51F6E5718B2CA470FC3F

SHA1::863F5956863D793298D92610377B705F85FA42B5

CRC32::1386DD7A

病毒行为:1.拷贝自身到系统目录 2.添加服务自启动 3.自删除 4.建立指定套接字连接... 

二、行为分析


样本无壳,但含附加数据


用火绒剑分析病毒行为,可以猜测病毒 1.exe 先自我复制,重命名为 dlojuo,随后删除自身,修改注册表,并添加启动项
这是病毒常见的傀儡进程操作,后面的是一些网络行为和加密目标文件,这里就不截图了


OD加载样本,程序在执行完 004118D6 直接跑飞到 774D64F4,进入函数4118B4查看情况  


4118B4 里面全部都是密密麻麻的 JE 跳转,这里就得改变以下思路。火绒剑分析病毒会创建进程,直接下 CreateProcessW/A 断点,然后F9跑起来

 
程序断下来了,可以看出,子程序以挂起方式创建,栈回溯发现地址太小,猜测是 VirtualAlloc申请出来的空间,一般申请空间后会使用 WriteProcessMemory 往空间写入,接着 VirtualAlloc 、WriteProcessMemory 下断点。


程序断了下来,申请的空间很小,写入内容为乱码,不是我们要找的内存,程序接着断在 Virtualloc


申请的空间很大,写入的是PE文件,这块内存才是真正的病毒程序  dlojuo ,选中这块内存右键直接 dump



将dump后的程序拖进 IDA、OD 详细分析
病毒会自我复制,在CopyFileW下断点,被复制的程序会在 C:\Users\用户名\Documents\下创建子程序,文件名为6位数随机字母,栈回溯去到4074CE


往上翻看后发现有拼接字符串的操作,重新运行程序发现这里拼接的是病毒程序路径,之后打开C:\Users\15pb-win7\Documents\1_dump.exe的程序,如果没有,则返回错误码0x2h,这里jnz跳转条件不成立,为了方便后序分析,这里更改为无条件跳转



接着往下单步可以发现这里调用GetFunctionAddr获取API CreateMutexW创建互斥体,然后在下面call eax处调用,防止病毒程序多开,之后获取系统版本信息


打开IDA 静态接着分析,接下来,一些不重要的函数就直接跳过不分析了


发现 PowerRaising_4108F0 函数进行提权操作


线程回调函数 sub_406EB0函数枚举当前运行的进程,查找是否有进程名为taskmg、regedi、procex、msconfi、cmd的进程在运行,若在运行,
则结束该进程


线程回调函数 4072A0通过 ShellExecuteExW 执行程序


动态调试后猜测是要删除程序,看不懂


线程回调函数413180主要作用是连接网络,将数据发送被作者,下面是病毒用到的URL



接着来到重点线程回调函数401710,往下分析来到 401920 ,该函数是整个程序的重点


401920 函数获取驱动器信息,并调用 EnumDriveDir遍历磁盘


进入EnumDriveDir函数,里面递归遍历磁盘文件


EncodeFile_401CD0 函数是加密函数,可以判断上面的表达式是筛选符合后缀的文件,对其进行加密操作


我之前通过IDA流程图找到关键函数sub_402170, 该函数作用是在内存中解密字符串,动态跟踪函数


函数内先后解密出了大量字符串,动态跟踪时注意堆栈中出现的字符串


观察调用call的返回信息可以发现有非常多的字符串 ,下面就不一一截图了,只截一些关键的字符串


 被加密文件的命名


生成勒索文本的字符串


上面的那个判断就是根据这些后缀名进行筛选



绕远了,下面接着分析 加密函数401CD0,进入查看


这里需要配合OD动态调试


设置文件属性,随后将文件读取到内存中,读取128个字节


判断文件开头128位是否为空,为空则跳转调用RtlAllocateHeap申请堆空间,这个判断是 被加密文件的特征


之后设置文件指针到文件头部,写入加密后的文本,写入成功程序继续运行,写入失败则释放堆空间,并关闭句柄



成功后跳转401f01,第二次申请堆空间


往下跑第二个函数就是勒索病毒所使用的加密算法


IDA中显示


算法片段



三、解决方案

无解,病毒所使用的加密算法为RSA4096,经评论提醒,该勒索可以解密,详情见https://bbs.pediy.com/thread-255755.htm


四、防护建议

开启防火墙,及时给杀软和操作系统打补丁,别点来历不明的文件

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2020-2-2 13:36 被比海更深.编辑 ,原因:
收藏
点赞3
打赏
分享
最新回复 (2)
雪    币: 19566
活跃值: (60248)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2019-11-9 09:39
2
0
感谢分享~
雪    币: 17421
活跃值: (5004)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
jishuzhain 7 2019-11-21 23:00
3
0
该勒索可以解密,见
https://bbs.pediy.com/thread-255755.htm
最后于 2020-1-7 09:07 被jishuzhain编辑 ,原因:
游客
登录 | 注册 方可回帖
返回