天天看点

GandCrabV2.0病毒分析记录

分析环境

吾爱破解虚拟机(XP系统) IDA 6.8 火绒剑

样本来源

https://www.52pojie.cn/thread-712552-1-1.html

病毒文件信息

文件: C:\Documents and Settings\Administrator\桌面\GandCrabV2.0 样本 IDB\GandCrabV2.0 样本+IDB\hmieuy.exe

大小: 315912 bytes

修改时间: 2018年3月11日 星期日, 13:28:31

MD5: F42774332FB637650FF0E524CE1B1685

SHA1: 0012363A8A6EFDD93FBD4624EE5E8DDF1F7BE8D5

CRC32: 9732F21C

行为概览

GandCrabV2.0病毒分析记录

查壳信息

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

样本无壳,通过链接器版本以及提示判断开发环境为VS2010 C++编写。

火绒剑动态运行分析记录

1.执行监控

GandCrabV2.0病毒分析记录

病毒载入运行运行所需的dll 不断打开nslookup.exe进程(此进程用于查询 Internet域名信息或诊断DNS 服务器问题,获取被感染主机的公网IP信息),

文件与行为监控

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

 病毒在C:\Documents and Settings\Administrator\Application Data\Microsoft\路径下创建iqvwlz.exePE文件,从文件的MD5与sha1值对比,可以推断初始的样本是一层包装。

GandCrabV2.0病毒分析记录

调用系统RSA加密库 加密算法大概率是RSA。

注册表监控
GandCrabV2.0病毒分析记录

GandCrabV2.0病毒分析记录

注册表除大量获取键值外,在HKEY_CURRENT_USER\Software\Microsoft\Windows

\CurrentVersion\RunOnce路径下设置键值 用于所创建的iqvwlz.exe文件实现自启动。

网络监控
GandCrabV2.0病毒分析记录

网络行为主要是连接66.171.248.178:80,获取本机IP信息,nslookup.exe不断重连0.0.0.0:53初步判断可能是没有连接到C&C地址 不断进行重连尝试。

动态行为监控小结:病毒程序运行后在C:\Documents and Settings\Administrator\Application Data\Microsoft\目录下创建exe文件,通过不断设置注册表项实现exe文件开机自启动和长久驻留。期间有调用RSA库可能是用RSA算法进行加密。不断打开nslookup.exe进程查询主机ip信息。可能是由于无法与服务器C&C地址进行连接 导致一直无法运行勒索加密。

代码分析

使用IDA定位main函数入口004010B4,断点与F4结合跳过大量前面混淆进入到解密资源代码处:

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

首先通过VirtualProtect修改区域内存为可读可写可执行,然后执行解密函数将加密数据解密为恶意代码

解密前

GandCrabV2.0病毒分析记录

解密后:

GandCrabV2.0病毒分析记录

shellcode的dump大小为0x181B8 此值取edx中的参数赋值与资源大小值参考 解密后进入shellcode代码部分执行

GandCrabV2.0病毒分析记录

解密的shellcode代码通过获取访问fs寄存器进入PEB结构的方式获取kernel32.dll的基址 进而对dll的导出表进行遍历获得相关函数的地址

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

获取kernel32.dll地址

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

在01370000处申请大小为23400h大小的内存空间 写入新的PE文件 可dump此处内存另存分析

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

解密PE文件后,程序将依次PE文件内容拷贝到0x400000处实现加载到内存,后续操作中修复PE文件IAT

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

  分析dump所得的PE文件发现病毒通过ReflectiveLoader函数装载解密出的恶意代码,将含有恶意功能的dll数据到自身进程,实现dll不落地即可执行其功能躲避杀软查杀。技术手法:反射式注入

设置bp VirtualProtect断点查找可能要执行的下一段解密数据(建立在已经知道有要改变内存属性的才能执行代码或者测试是否有类似代码存在)

GandCrabV2.0病毒分析记录

  在MZ位置即4120C0处设置硬件写入断点,重新运行,回溯可见解密dll数据过程,之后查找ReflectiveLoader函数,修改内存保护属性为可读可写可执行。之后即进行dll文件的IAT修复 重定位等反射式注入操作。

GandCrabV2.0病毒分析记录

对DUMP所得的dll进行分析 dll被反射注入加载后创建新线程执行病毒功能

GandCrabV2.0病毒分析记录

此处线程切换可以通过设置中断于新线程定位代码调试

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

进入新线程函数通过注册表信息查询获主机相关信息 并创建互斥体

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

互斥体使用收集到的系统信息进行CRC32加密后的ID进行拼接

GandCrabV2.0病毒分析记录

创建新线程 完成对杀软驱动的信息收集 释放自身到系统目录 设置注册表实现开机自启的操作

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

遍历并结束部分会占用勒索加密文件的进程

GandCrabV2.0病毒分析记录

再次收集主机相关信息完善勒索文本 发送到服务器

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

调用CSP 生成RSA加密的公钥和私钥

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

回传服务器收集到的主机信息过程

1·主机信息收集同上

GandCrabV2.0病毒分析记录

2·公钥和私钥进行base64加密

GandCrabV2.0病毒分析记录

将收集的信息整合进行CRC32加密后再进行base64加密 加上协议包头部等信息发送到服务器

GandCrabV2.0病毒分析记录

伪装为火狐浏览器进行网络连接

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

创建nslookup进程使用管道方式实现通信 进行服务器查找 循环解析politiaromana.bit,malwarehunterteam.bit,gdcb.bit

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

加密文件部分

进入文件加密部分后首先指定不加密文件后缀

GandCrabV2.0病毒分析记录

使用临界区防多开 进入加密函数后先判断磁盘类型 对每一个要加密的磁盘设备使用一个线程执行加密函数

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

进入文件加密函数后首先指定不加密文件目录,然后判断文件后缀不是.sql后创建勒索文本

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

创建勒索文本

GandCrabV2.0病毒分析记录

根据规则寻找到加密文件后进入具体的文件加密过程 首先检测文件名是否是不可以加密的

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

具体的文件加密函数过程上半部分

GandCrabV2.0病毒分析记录

随机化过程 Rand1与Rand2一样

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

公钥加密过程 先拷贝Rand2到新内存空间 使用公钥进行加密 获得PubKeyR2和PubKeyR1

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

下半部分加密文件过程 先通过CreateFileW ReadFile组合将要加密的文件内容映射到内存

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

进入数据加密函数后以0x10大小为单位与Rand1进行逐位异或

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

大于10字节 进入加密函数

GandCrabV2.0病毒分析记录

在加密函数中先使用Rand2数据异或加密前面Rand1加密后的0x10字节

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

前0x10字节处理之后,进入作者字节构造的加密函数 使用Rand2中的数值 循环移位进行加密

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

超过0x10字节 第一个被构建的加密函数 加密后的0x10字节加密后的效果

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

写入Rand2公钥加密后的数据

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

循环遍历目录下文件执行加密

GandCrabV2.0病毒分析记录

 加密结束后执行操作

GandCrabV2.0病毒分析记录
GandCrabV2.0病毒分析记录

分析总结

 复现是个相对轻松的工作,但是病毒分析复现,感觉很受限,前人已有的,找到就可以,但是细节方面哪些要继续追进去深入,哪些可能是错误的干扰都必须保持自己的思考。

 勤记录,多小结,时间尽量可控(太长时间有没有规划会把控不了整个的运行流程)。这个样本在算法方面纠缠了很长时间,但最后得承认对于新手来说,逆向一个勒索病毒算法不如dump代码进行黑盒处理或者直接找解密工具。

解密网站分享

参考文章

https://www.52pojie.cn/thread-712552-1-1.html

https://www.52pojie.cn/thread-931175-1-1.html

继续阅读