攻击技术研判|Roshtyak中使用的内存防御规避策略

渗透技巧 1年前 (2022) admin
501 0 0
攻击技术研判|Roshtyak中使用的内存防御规避策略

情报背景

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中使用的内存防御规避策略

共享内存内字节的直方图,每个字节都平均分布的,比较“随机”,除了最左边的0字节比其他字节出现次数略高


完成填充后,Roshtyak将从当年内存中取消映射,完成对目标进程的APC注入。添加的随机数据都是为了隐藏shellcode的存在。

攻击技术研判|Roshtyak中使用的内存防御规避策略

共享段中的shellcode代码,很难找出起始地址,因为其通常是位操作指令bt


构造ROP链清理内存痕迹

Roshtyak特别注意清理自己的攻击痕迹,当不需要某个字符串或者某段内存的时,Roshtyak就会清除或者释放它。在每层的自我保护检测中也是如此,每当一层完成工作时,就会在将执行传递到下一层之前进行自我释放。但是不能简单的自我释放。如直接在当前的内存区域上调用VirtualFree会导致整个进程崩溃。因此Roshtyak通过在层级转换期间执行ROP链来释放当前内存空间避免此问题。当当前层即将退出时,Roshtyak会在堆栈上构造并调用一个ROP链。ROP链将首先通过调用VirtualFree 和 UnmapViewOfFile释放空间,然后再进入到下一层,为了保障执行安全,下一层的返回地址被设置为RtlExitUserThread。

攻击技术研判|Roshtyak中使用的内存防御规避策略

由 VirtualFree -> UnmapViewOfFile -> next layer -> RtlExitUserThread组成放入一个简单ROP链


自定义的PE结构

Roshtyak的每层执行体应该最初都是编译生成的PE可执行文件,Roshtyak将其中除了绝对必要的数据(入口点、节区、导入表和重定向表等)等其他都被移除了,Roshtyak拥有2种自定义的格式来存储组织这些PE信息。而且这些自定义格式PE的某些部分会加密,使用一些反分析的检查结果生成的密钥进行解密。


想要将Roshtyak每层的执行体转换回独立的PE文件比较困难,必须在逆向分析Roshtyak的自定义结构的基础上重建PE头、节区、导入表等。

攻击技术研判|Roshtyak中使用的内存防御规避策略

图中显示的自定义结构,raw_size 对应 SizeOfRawData, raw_size + virtual_padding_size 对应 VirtualSize。缺少VirtualAddress和PointerToRawData等效,因为Roshtyak将按顺序加载这些节区


02 总结

防御规避中总少不了内存检测的对抗,不同于CobaltStrike一样会对整个内存的统一加密,使用反射DLL和Profile对PE格式的小改动。Roshtyak对每个变量和内存都进行控制,采取用前解密、用完释放的策略,采取大手术,花大力气创建自定义格式来改造PE格式,减少PE特征。


攻击技术研判|Roshtyak中使用的内存防御规避策略

绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。

研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。


攻击技术研判|Roshtyak中使用的内存防御规避策略

M01N Team公众号

聚焦高级攻防对抗热点技术

绿盟科技蓝军技术研究战队

攻击技术研判|Roshtyak中使用的内存防御规避策略

官方攻防交流群

网络安全一手资讯

攻防技术答疑解惑

扫码加好友即可拉群


往期推荐

攻击技术研判|利用.NET NativeAOT特性的新型攻击手法

攻击技术研判|Roshtyak中使用的内存防御规避策略

攻击技术研判|一种在行末隐藏有效载荷的新供应链攻击技术

攻击技术研判|Roshtyak中使用的内存防御规避策略

攻击技术研判|钓鱼网站反分析手法升级

攻击技术研判|Roshtyak中使用的内存防御规避策略


原文始发于微信公众号(M01N Team):攻击技术研判|Roshtyak中使用的内存防御规避策略

版权声明:admin 发表于 2022年12月12日 下午6:01。
转载请注明:攻击技术研判|Roshtyak中使用的内存防御规避策略 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...