揭开病毒的面纱--恶意代码自解密技术
  

SANGFOR_智安全 2940

{{ttag.title}}
本帖最后由 某公司_智安全 于 2019-5-21 19:29 编辑

分析病毒的时候,常常遇到一种很奇怪的现象,使用查壳工具查看一个样本明明没有加壳,但是反编译或调试时,却不能显示地看到样本的恶意操作,这是为什么呢?很简单,这是因为攻击者采用了自定义的加密方法,在样本运行时实现自解密并执行真正的恶意操作,所以看到的只是样本还没解密的样子,自然分析不出恶意代码的逻辑。

下面就通过实例来窥探下恶意代码自解密的技术吧,如下是一个Ammyy病毒的下载器(MD5:28EAE907EA38B050CBDCC82BB623C00A),使用DIE查壳发现,该样本并没有加任何的壳。


然而当查找字符串时,却未能发现一些可疑的字符串(如下载器常有的恶意url),看到的只是一堆乱码,看来,该样本很有可能就是使用了自解密的技术。


反编译该样本,也难以看出它的代码逻辑,很多动态地址的call。


对于这种样本,反编译器很难看到一些重要的操作,因为大部分都是解密操作,所以只能通过调试器单步调了。单步调试没啥好技巧,遇到跑飞的call下断点然后重新调试。调试的时候,要注意VirtualAlloc、GlobalAlloc、HeapCreate这些函数,因为恶意代码通常使用这些函数来申请一段内存空间,来存放解密出来的恶意代码。如下图,该样本调用的是HeapCreate创建了0x230000这段内存。


接着恶意代码用了je + retn的方式循环解密0x230000处的数据。


解密完毕后,恶意代码调用call esi将执行流从0x40XXXX转到0x230000。


然而,0x230000处的代码并不执行核心的恶意操作,目的在于修改0x40XXXX处的原始代码。如下,它会调用VirtualProtect将0x400000的内存属性改为RW(读写),进而修改原来的代码。


修改后的0x400000内存段的属性如下。


修改完代码,调用jmp esi跳回到0x40XXXX进行执行,此时,这段内存的代码已经被修改过了,终于开始执行核心的恶意操作了。


将内存dump下来发现,现在的代码已经是解密后的恶意代码了,程序逻辑清晰可见,通过字符串查找可以找到待下载的病毒的url。


至此,该下载器的功能已经分析完毕,主要功能为从下载Ammyy病毒并运行。


由此,可以总结得出,恶意代码自解密的步骤一般为以下5步:申请内存 -> 复制数据-> 解密数据 -> 跳转到堆中执行恶意代码 -> 修改原始代码并跳回执行。不过,我们可能会有个疑惑,病毒为什么不直接在堆中执行核心的恶意操作呢,还要通过修改原始代码来在0x400000空间解密执行核心的恶意代码。这是因为,一些比较高级的沙箱、杀软会监控病毒创建大片内存空间的操作,这时一旦释放出解密代码,便会立刻被沙箱、杀软检测到,所以在堆中的代码一般不会只会直接进行核心的恶意操作。


了解了恶意代码自解密技术后,来看看最近流行的GandCrab勒索病毒(MD5:48A673157DA3940244CE0DFB3ECB58E9),使用的也是这种自解密技术,来实现免杀。使用DIE对样本进行检测,显示并未加壳。


自解密的手法跟上述提到的相似,在0x1280000处申请了一段内存空间。


堆中的代码负责修改原始代码并跳转回去执行。


跳转回来后,0x403016处的代码就是解密后的核心恶意代码,接下来就可以调试GandCrab的恶意代码了。


将内存Dump下来,也可以分析出加密文件的代码逻辑。


在VT上查询该病毒的报毒情况,只有大概半数的引擎报毒,而且报出的病毒类型大多不能定位到Ransom,看来,GandCrab使用这种自解密的方式还是起到了一定的免杀效果。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

发表新帖
热门标签
全部标签>
每日一问
新版本体验
产品连连看
功能体验
安全效果
GIF动图学习
纪元平台
【 社区to talk】
标准化排查
信服课堂视频
安装部署配置
流量管理
畅聊IT
技术笔记
每周精选
故障笔记
高手请过招
社区新周刊
全能先锋系列
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
每日一记
运维工具
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
排障笔记本
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
2023技术争霸赛专题
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
技术晨报
平台使用
技术盲盒
山东区技术晨报
文档捉虫
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
排障那些事
西北区每日一问
升级&主动服务
高频问题集锦
POC测试案例
云化安全能力
专家说
热门活动
产品动态
行业实践
产品解析
关键解决方案

本版达人

新手68983...

本周分享达人

零和一网络

本周提问达人