![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/6-1670843102.gif)
情报背景
AVAST的研究人员近期对Roshtyak恶意DLL进行了完整逆向,揭示了很多其使用的高级样本技巧,这些技巧非常有趣且属于首次出现,被AVAST认为Roshtyak是他们见过反分析最成功的恶意软件之一。本文选取了其中关于内存规避的方面进行了研判。
组织名称 |
未知 |
关联组织 |
未知 |
战术标签 |
防御规避 |
情报来源 |
https://decoded.avast.io/janvojtesek/raspberry-robins-roshtyak-a-little-lesson-in-trickery/ |
01 攻击技术分析
Roshtyak拥有多达14层的自我保护,每层都经过了混淆且拥有不同的执行目的。在每层有包含有许多反调试、反沙箱和反虚拟化、模拟器的技巧,一旦其中一项成功检测到分析环境,Roshtyak将根据采取4种策略来退出执行。
1. 结束进程,直接调用自身的TerminateProcess退出进程,避免显示进一步的恶意行为。
2. 故意崩溃,由于Roshtyak的高度混淆, 目前尚不清楚该崩溃是故意造成还是编写疏忽造成的漏洞
3. 无限循环,Roshtyak进入一个无限循环的流程代码中,做无效操作。
4. 释放假旗,在第8层的加密数据中同时存储了真实的第9层载荷和虚假的假旗载荷(一个名为BroAssist的广告软件),如果所有的检测都i通过Roshtyak将解密执行真实的载荷,否则将释放执行假旗载荷来欺骗分析人员。
AVAST表示Roshtyak的假旗行为非常有效,成功误导了一名恶意软件分析人员认为其只是一个古老的广告软件。
隐藏shellcode
当Roshtyak准备代码注入时,首先会创建一个大段并将其作为PAGE_READWRITE映射到当前进程中,然后使用随机数据填充,并将shellcode放置在随机数据的随机偏移处。由于shellcode只是一段较小的加载器,和大段的随机数据混合后较难区分。使整段看起来都像是随机数据。
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/9-1670843103.png)
共享内存内字节的直方图,每个字节都平均分布的,比较“随机”,除了最左边的0字节比其他字节出现次数略高
完成填充后,Roshtyak将从当年内存中取消映射,完成对目标进程的APC注入。添加的随机数据都是为了隐藏shellcode的存在。
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/10-1670843103.png)
共享段中的shellcode代码,很难找出起始地址,因为其通常是位操作指令bt
构造ROP链清理内存痕迹
Roshtyak特别注意清理自己的攻击痕迹,当不需要某个字符串或者某段内存的时,Roshtyak就会清除或者释放它。在每层的自我保护检测中也是如此,每当一层完成工作时,就会在将执行传递到下一层之前进行自我释放。但是不能简单的自我释放。如直接在当前的内存区域上调用VirtualFree会导致整个进程崩溃。因此Roshtyak通过在层级转换期间执行ROP链来释放当前内存空间避免此问题。当当前层即将退出时,Roshtyak会在堆栈上构造并调用一个ROP链。ROP链将首先通过调用VirtualFree 和 UnmapViewOfFile释放空间,然后再进入到下一层,为了保障执行安全,下一层的返回地址被设置为RtlExitUserThread。
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/7-1670843104.png)
由 VirtualFree -> UnmapViewOfFile -> next layer -> RtlExitUserThread组成放入一个简单ROP链
自定义的PE结构
Roshtyak的每层执行体应该最初都是编译生成的PE可执行文件,Roshtyak将其中除了绝对必要的数据(入口点、节区、导入表和重定向表等)等其他都被移除了,Roshtyak拥有2种自定义的格式来存储组织这些PE信息。而且这些自定义格式PE的某些部分会加密,使用一些反分析的检查结果生成的密钥进行解密。
想要将Roshtyak每层的执行体转换回独立的PE文件比较困难,必须在逆向分析Roshtyak的自定义结构的基础上重建PE头、节区、导入表等。
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/3-1670843104.png)
图中显示的自定义结构,raw_size 对应 SizeOfRawData, raw_size + virtual_padding_size 对应 VirtualSize。缺少VirtualAddress和PointerToRawData等效,因为Roshtyak将按顺序加载这些节区
02 总结
防御规避中总少不了内存检测的对抗,不同于CobaltStrike一样会对整个内存的统一加密,使用反射DLL和Profile对PE格式的小改动。Roshtyak对每个变量和内存都进行控制,采取用前解密、用完释放的策略,采取大手术,花大力气创建自定义格式来改造PE格式,减少PE特征。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/7-1670843105.jpeg)
M01N Team公众号
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/3-1670843106.jpeg)
官方攻防交流群
网络安全一手资讯
攻防技术答疑解惑
扫码加好友即可拉群
往期推荐
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/8-1670843107.png)
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/10-1670843109.png)
![攻击技术研判|Roshtyak中使用的内存防御规避策略 攻击技术研判|Roshtyak中使用的内存防御规避策略](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2022/12/0-1670843112.png)
原文始发于微信公众号(M01N Team):攻击技术研判|Roshtyak中使用的内存防御规避策略