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病毒分析记录_第1张图片

查壳信息

GandCrabV2.0病毒分析记录_第2张图片GandCrabV2.0病毒分析记录_第3张图片
样本无壳,通过链接器版本以及提示判断开发环境为VS2010 C++编写。

火绒剑动态运行分析记录

1.执行监控

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

文件与行为监控

GandCrabV2.0病毒分析记录_第5张图片
GandCrabV2.0病毒分析记录_第6张图片
 病毒在C:\Documents and Settings\Administrator\Application Data\Microsoft\路径下创建iqvwlz.exePE文件,从文件的MD5与sha1值对比,可以推断初始的样本是一层包装。
GandCrabV2.0病毒分析记录_第7张图片
调用系统RSA加密库 加密算法大概率是RSA。

注册表监控GandCrabV2.0病毒分析记录_第8张图片

在这里插入图片描述
注册表除大量获取键值外,在HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\RunOnce路径下设置键值 用于所创建的iqvwlz.exe文件实现自启动。

网络监控 GandCrabV2.0病毒分析记录_第9张图片

网络行为主要是连接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病毒分析记录_第10张图片
GandCrabV2.0病毒分析记录_第11张图片
GandCrabV2.0病毒分析记录_第12张图片
首先通过VirtualProtect修改区域内存为可读可写可执行,然后执行解密函数将加密数据解密为恶意代码
解密前
GandCrabV2.0病毒分析记录_第13张图片
解密后:GandCrabV2.0病毒分析记录_第14张图片
shellcode的dump大小为0x181B8 此值取edx中的参数赋值与资源大小值参考 解密后进入shellcode代码部分执行
GandCrabV2.0病毒分析记录_第15张图片解密的shellcode代码通过获取访问fs寄存器进入PEB结构的方式获取kernel32.dll的基址 进而对dll的导出表进行遍历获得相关函数的地址
GandCrabV2.0病毒分析记录_第16张图片
GandCrabV2.0病毒分析记录_第17张图片
GandCrabV2.0病毒分析记录_第18张图片
获取kernel32.dll地址
GandCrabV2.0病毒分析记录_第19张图片
GandCrabV2.0病毒分析记录_第20张图片
在01370000处申请大小为23400h大小的内存空间 写入新的PE文件 可dump此处内存另存分析
GandCrabV2.0病毒分析记录_第21张图片
GandCrabV2.0病毒分析记录_第22张图片
解密PE文件后,程序将依次PE文件内容拷贝到0x400000处实现加载到内存,后续操作中修复PE文件IAT
GandCrabV2.0病毒分析记录_第23张图片
GandCrabV2.0病毒分析记录_第24张图片
  分析dump所得的PE文件发现病毒通过ReflectiveLoader函数装载解密出的恶意代码,将含有恶意功能的dll数据到自身进程,实现dll不落地即可执行其功能躲避杀软查杀。技术手法:反射式注入
设置bp VirtualProtect断点查找可能要执行的下一段解密数据(建立在已经知道有要改变内存属性的才能执行代码或者测试是否有类似代码存在)
GandCrabV2.0病毒分析记录_第25张图片
  在MZ位置即4120C0处设置硬件写入断点,重新运行,回溯可见解密dll数据过程,之后查找ReflectiveLoader函数,修改内存保护属性为可读可写可执行。之后即进行dll文件的IAT修复 重定位等反射式注入操作。
GandCrabV2.0病毒分析记录_第26张图片
对DUMP所得的dll进行分析 dll被反射注入加载后创建新线程执行病毒功能
GandCrabV2.0病毒分析记录_第27张图片
此处线程切换可以通过设置中断于新线程定位代码调试
GandCrabV2.0病毒分析记录_第28张图片
GandCrabV2.0病毒分析记录_第29张图片
进入新线程函数通过注册表信息查询获主机相关信息 并创建互斥体
GandCrabV2.0病毒分析记录_第30张图片
GandCrabV2.0病毒分析记录_第31张图片
互斥体使用收集到的系统信息进行CRC32加密后的ID进行拼接
GandCrabV2.0病毒分析记录_第32张图片
创建新线程 完成对杀软驱动的信息收集 释放自身到系统目录 设置注册表实现开机自启的操作
GandCrabV2.0病毒分析记录_第33张图片
GandCrabV2.0病毒分析记录_第34张图片
在这里插入图片描述
遍历并结束部分会占用勒索加密文件的进程
GandCrabV2.0病毒分析记录_第35张图片
再次收集主机相关信息完善勒索文本 发送到服务器
在这里插入图片描述
GandCrabV2.0病毒分析记录_第36张图片
GandCrabV2.0病毒分析记录_第37张图片
GandCrabV2.0病毒分析记录_第38张图片
GandCrabV2.0病毒分析记录_第39张图片
调用CSP 生成RSA加密的公钥和私钥
GandCrabV2.0病毒分析记录_第40张图片
GandCrabV2.0病毒分析记录_第41张图片
GandCrabV2.0病毒分析记录_第42张图片
回传服务器收集到的主机信息过程
1·主机信息收集同上
GandCrabV2.0病毒分析记录_第43张图片
2·公钥和私钥进行base64加密
GandCrabV2.0病毒分析记录_第44张图片
将收集的信息整合进行CRC32加密后再进行base64加密 加上协议包头部等信息发送到服务器
GandCrabV2.0病毒分析记录_第45张图片
伪装为火狐浏览器进行网络连接
GandCrabV2.0病毒分析记录_第46张图片
GandCrabV2.0病毒分析记录_第47张图片
创建nslookup进程使用管道方式实现通信 进行服务器查找 循环解析politiaromana.bit,malwarehunterteam.bit,gdcb.bit
GandCrabV2.0病毒分析记录_第48张图片
GandCrabV2.0病毒分析记录_第49张图片
GandCrabV2.0病毒分析记录_第50张图片
GandCrabV2.0病毒分析记录_第51张图片
GandCrabV2.0病毒分析记录_第52张图片

加密文件部分

进入文件加密部分后首先指定不加密文件后缀
GandCrabV2.0病毒分析记录_第53张图片
使用临界区防多开 进入加密函数后先判断磁盘类型 对每一个要加密的磁盘设备使用一个线程执行加密函数
GandCrabV2.0病毒分析记录_第54张图片
GandCrabV2.0病毒分析记录_第55张图片
进入文件加密函数后首先指定不加密文件目录,然后判断文件后缀不是.sql后创建勒索文本
GandCrabV2.0病毒分析记录_第56张图片
GandCrabV2.0病毒分析记录_第57张图片
创建勒索文本
GandCrabV2.0病毒分析记录_第58张图片
根据规则寻找到加密文件后进入具体的文件加密过程 首先检测文件名是否是不可以加密的
GandCrabV2.0病毒分析记录_第59张图片
GandCrabV2.0病毒分析记录_第60张图片
具体的文件加密函数过程上半部分
GandCrabV2.0病毒分析记录_第61张图片
随机化过程 Rand1与Rand2一样
GandCrabV2.0病毒分析记录_第62张图片
GandCrabV2.0病毒分析记录_第63张图片
GandCrabV2.0病毒分析记录_第64张图片
公钥加密过程 先拷贝Rand2到新内存空间 使用公钥进行加密 获得PubKeyR2和PubKeyR1
GandCrabV2.0病毒分析记录_第65张图片
GandCrabV2.0病毒分析记录_第66张图片
GandCrabV2.0病毒分析记录_第67张图片
GandCrabV2.0病毒分析记录_第68张图片
GandCrabV2.0病毒分析记录_第69张图片
下半部分加密文件过程 先通过CreateFileW ReadFile组合将要加密的文件内容映射到内存
GandCrabV2.0病毒分析记录_第70张图片
GandCrabV2.0病毒分析记录_第71张图片
进入数据加密函数后以0x10大小为单位与Rand1进行逐位异或
GandCrabV2.0病毒分析记录_第72张图片
GandCrabV2.0病毒分析记录_第73张图片
GandCrabV2.0病毒分析记录_第74张图片
大于10字节 进入加密函数
GandCrabV2.0病毒分析记录_第75张图片
在加密函数中先使用Rand2数据异或加密前面Rand1加密后的0x10字节
GandCrabV2.0病毒分析记录_第76张图片
GandCrabV2.0病毒分析记录_第77张图片
GandCrabV2.0病毒分析记录_第78张图片
前0x10字节处理之后,进入作者字节构造的加密函数 使用Rand2中的数值 循环移位进行加密
GandCrabV2.0病毒分析记录_第79张图片
GandCrabV2.0病毒分析记录_第80张图片
超过0x10字节 第一个被构建的加密函数 加密后的0x10字节加密后的效果
GandCrabV2.0病毒分析记录_第81张图片
GandCrabV2.0病毒分析记录_第82张图片
GandCrabV2.0病毒分析记录_第83张图片
写入Rand2公钥加密后的数据
GandCrabV2.0病毒分析记录_第84张图片
GandCrabV2.0病毒分析记录_第85张图片
GandCrabV2.0病毒分析记录_第86张图片
循环遍历目录下文件执行加密
GandCrabV2.0病毒分析记录_第87张图片
 加密结束后执行操作
GandCrabV2.0病毒分析记录_第88张图片
GandCrabV2.0病毒分析记录_第89张图片

分析总结

 复现是个相对轻松的工作,但是病毒分析复现,感觉很受限,前人已有的,找到就可以,但是细节方面哪些要继续追进去深入,哪些可能是错误的干扰都必须保持自己的思考。
 勤记录,多小结,时间尽量可控(太长时间有没有规划会把控不了整个的运行流程)。这个样本在算法方面纠缠了很长时间,但最后得承认对于新手来说,逆向一个勒索病毒算法不如dump代码进行黑盒处理或者直接找解密工具。

解密网站分享

https://www.nomoreransom.org/crypto-sheriff.php?lang=zh

参考文章

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

你可能感兴趣的:(病毒分析,勒索病毒,GandCrab2.0)