情报背景
近期,SentinelLABS的研究员补充了在首届LabsCon上介绍的Metador的Mafalda后门相关信息,对其中代码混淆的分析与仿真对抗技术进行了深入的介绍。Mafalda在一定程度上能够误导部分仿真模拟,混淆的方式也对分析工作形成阻碍。在本文将就其中的技术亮点进行阐述分析。
组织名称 |
Metador |
相关工具 |
Mafalda |
战术标签 |
防御规避 |
情报来源 |
https://www.sentinelone.com/labs/the-mystery-of-metador-unpicking-mafaldas-anti-analysis-techniques/ |
01 攻击技术分析
亮点:函数参数混淆与无意义代码
代码混淆,是指将程序代码转换成功能上等价,但是低可读性形式的行为。分析人员在面对参数被混淆的代码时往往通过编写仿真脚本模拟函数调用过程,解码混淆数据,但其结果的准确性决定了后续的分析方向。
在本次事件中,除了常规的字符串加密与混淆外,Mafalda还使用了多种混淆技术对函数参数、执行流程进行混淆,以增加静态分析的难度,同时有效对抗仿真模拟分析。
函数参数混淆
在面对参数与字符串混淆时,分析人员往往使用仿真模拟解密或解码参数和字符串信息。攻击者采用函数参数混淆的方案,以期扰乱仿真处理的执行逻辑。针对数字参数,在函数调用前Mafalda会进行一系列算数与位运算,若计算结果与预设值不匹配,则会将错误值传入函数:
经过上面的处理,通过复杂的运算使得在使用函数仿真执行时很可能会导致计算结果不正确,从而使执行流程走向错误分支,误导分析人员,将分析思路引向错误的方向。
混淆的无意义代码
在通常情况下,恶意软件会采用混淆的执行流将主要的核心逻辑保护起来,以减慢分析与响应的速度。Mafalda则反其道行之,其中被严重混淆的代码反而是没有任何功能的,作用仅仅是增加分析成本。
在实现上,Mafalda通过thunk函数在非混淆代码前插入一段无意义的混淆代码,其调用逻辑如下:
混淆代码掩盖了目标函数中的真实目的,很大程度上增加了分析的成本。通过表面是条件跳转,实则是无条件跳转、多级无条件跳转组合的方式,打乱正常执行流程,大大提高了静态分析程序逻辑的难度,有效降低了核心逻辑暴露的风险,对安全人员的应急和防护造成影响。除了执行流程中的混淆代码,执行过程中还参杂了大量的无意义指令,它们与正常指令混杂在一起,对分析工作也起到很大的阻碍:
指令 |
描述 |
rol p, 0 / ror p, 0 |
将p左移或右移0位 |
xchg p1, p2 xchg p2, p1 |
交换p1、p2的值2次 |
xchg p, p |
与自身交换值 |
…… |
…… |
02 总结
Mafalda的反分析技术使得恶意软件分析难度大幅增加,延缓了安全研究人员针对其的防御行动。对函数参数的混淆可能骗过模拟执行,导致分析时容易略过真正的恶意逻辑的实现部分;大量嵌入无意义混淆代码也严重阻碍了对恶意逻辑的分析。如何准确地去除混淆,从中抓住主要的执行逻辑,对安全响应与防护而言是一大难题。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team公众号
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
官方攻防交流群
网络安全一手资讯
攻防技术答疑解惑
扫码加好友即可拉群
往期推荐
原文始发于微信公众号(M01N Team):攻击技术研判 | 针对仿真与静态分析的代码混淆技术