一个数据加密恶意样本分析
一个数据加密恶意样本分析
- PlaneJun ・2021-12-22 14:23
该样本为帖子[讨论]抠下来的,过火绒-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com看到的,当时闲的没事下载来看了看。样本运行后会对电脑文件加密,并且删除了卷影文件,防止通过磁盘工具恢复。
运行效果以及行为
弹出网页
隐藏了所有的文件夹,并创建了新的文件夹,实则为快捷方式,右键属性可看到重定向。
加密了文件,无法打开
对文件进行了截断操作,加密。
手动检查启动项后发现,在启动中添加了一个html,该html为样本弹出的html。
样本分析:
MD5 | 8f2050c9937f5f21b118c18dce3054fb |
---|---|
SHA1 | 0df872ae7916dd70e69b3a319ef57612e0ace739 |
SHA256 | 32e504c5664ee16d00149c1d8fe8184b872b07f9fad93ed3bce2bf11c1cc7c3a |
突破口:通过VirusTotal和微云沙盒分析的得知可能的操作有分配内存,写内存。在给WriteProcessMemory下断调试观察参数时发现当前区域为动态分配的内存,
故其首先调用了VirtualAlloc,ida进行交叉引用可到
1 | int __thiscall sub_2001DC0(int this, struct tagCREATESTRUCTA *a2) |
该函数内部进行了shellcode初始化及解密后进行调用
在dbg里对VirtualAlloc下断后跟踪后可得到解密的内容
这里直接对shellcode进行dump。
因为是从EF0000开始dump,所以拖进ida分析的时候需要修复一下头部,从28开始。
ShellCode分析
函数进来后会进行初始化字符串。
然后调用InitProcAddr获取LoadLibrary和GetProcAddress地址。InitProcAddr的实现也是从Ldr中去遍历
紧接着分别获取以下这些函数地址
1 | GetModuleFileNameW |
随后获取了AppData和StartUp的路径,其中AppData进行了以下拼接
%AppData%\CSIDL_
%AppData%\CSIDL_X
然后检查当前运行的实例是否存在于其中一个目录中,如果不存在则自我复制后,将文件设置为隐藏状态(单独分析shellcode时路径不存在,猜测为主程序创建目录)
中间存在一些对文件读写操作,经过分析后发现是为了给新的shellcode申请空间。
老规矩,直接弄出他的shellcode。
ShellCode1分析
以0,1和0,0不同参数执行了两次call
函数进来会进行字符串初始化,用于后面调用api
1 | strcpy(str_kernel32, "kernel32.dll"); |
初始化完毕后,根据参数值进行分支操作,由于第一个参数为1,这里从1开始。
首先进行了一些看不懂的文件操作。
然后开始解密新的shellcode
然后开始进行一下虚拟机检测之类的东西
然后是运行一个脚本,但是这个脚本在整个分析过程中没有碰到。
该shellcode的内容比较多,最后会执行到比较核心的内容。
首先是判断电脑是否存在浏览器。
如果IE存在,则启动IE浏览器,以IE浏览器为目标程序,解密一个资源文件并内存加载到IE中。反之自启动一份作为目标进程。
动态调试直接捕获到最终加载的**恶意样本(7396C43A6E8CCA2F811939EF1BE71B73)**。
ShellCode2
MD5 | 7396c43a6e8cca2f811939ef1be71b73 |
---|---|
SHA1 | a7dace43bcc5e7108a9827dd3a7e03c30acdeeba |
SHA256 | 5548fec3bae254f7882d9b681080261ba588bc05cb63a81a28107ff49f71c513 |
File size | 52.00 KB (53248 bytes)} |
该样本首先创建一个互斥名作为单例启动。
随后删除了卷影文件,防止通过该文件进行文件恢复。
然后开始加密文件。
加密过程主要是遍历电脑磁盘和移动硬盘文件。
然后查看文件是否为需要加密的文件。
以下为该样本所要加密的文件后缀。
加密后的文件在文件的头部会存在一个CRC32的值,该值由原文件前128个字节计算来的。样本会判断前面这个CRC32的值来判断是否需要加密。
之后开始进行隐藏文件和创建快捷方式
隐藏文件。
创建快捷方式,并重定向为临时目录的样本文件。
然后进行疑似横向感染操作。
然后开始解密HTML数据,就是运行样本后弹出的那个网页。
该样本在运行之初会判断是否为管理员运行,如果不是管理员,会以管理员模式运行,并关闭当前进程。
该样本中还存在疑似公钥的东西,估计是可以用来解密,但是本人对加密这一块比较弱,就没去详细分析。
至于提供样本的那个老哥问怎么解决,我这边建议闲鱼5元包邮送出远方。