美文网首页
CryptoWall勒索病毒分析

CryptoWall勒索病毒分析

作者: 看雪学院 | 来源:发表于2019-05-09 09:38 被阅读0次

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

    用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勒索病毒,具体版本就不知道了

    加密前,加密后

    本文由看雪论坛  与时尽现。 原创

    原文链接:[原创]CryptoWall勒索病毒分析-『软件逆向』-看雪安全论坛

    相关文章

      网友评论

          本文标题:CryptoWall勒索病毒分析

          本文链接:https://www.haomeiwen.com/subject/ruyioqtx.html