检测引擎对熵值的敏感如何影响壳的设计

逆向病毒分析 2年前 (2022) admin
578 0 0

工作来源

Entropy 2021

工作背景

EEE 是用于 Windows 下基于熵值的多态加壳程序,基于 UPX 开源程序开发。用于应对一种被称为 EnTS 的方法,该方法通过熵的情况检测恶意软件。此前已经证明过可以通过技术手段来绕过该类检测方法。

工作设计

整体架构如下所示:

检测引擎对熵值的敏感如何影响壳的设计

设计的五种方案:

① 标准的 UPX 方案
② 标准的 UPX 方案+异或加密
③ 标准的 UPX 方案+异或加密+固定受控熵值区(CER)
④ 标准的 UPX 方案+异或加密+可变受控熵值区(CER)+随机搜索+延迟执行
⑤ 标准的 UPX 方案+异或加密+可变受控熵值区(CER)+遗传搜索+延迟执行+ oligomorphic

检测引擎对熵值的敏感如何影响壳的设计

可变时间的延迟脱壳、受控熵值区(CER)位置等输入参数都受遗传算法控制。遗传算法方案如下所示:

检测引擎对熵值的敏感如何影响壳的设计

适应度是 VirusTotal 检出引擎数量的百分比,适者生存找到更好的方案。

工作准备

EEE 的代码开源,在六台机器的集群上进行实验,每台计算机 24 核+128GB 内存。

EEE 代码仓库

https://github.com/hdg7/EEE

通过 VirusShare 的数据库,从 2015 年 6 月到 2016 年 1 月的 4677 个使用 UPX 的 Windows 恶意软件。文件大小(KB)如下所示:

检测引擎对熵值的敏感如何影响壳的设计

工作评估

实验演化的进程如下所示:

检测引擎对熵值的敏感如何影响壳的设计

不同版本的 EEE 的检测率情况如下所示,添加的新功能在短时间内是可以有效保护的。但随着时间的推移,检测引擎也会学习提高检测能力。

检测引擎对熵值的敏感如何影响壳的设计

小提琴图显示,VirusTotal 对最原始恶意软件的检测率是 81.2%,UPX 加壳后就下降到 51.8%,再经过异或加密后可将检测率拉到 30.4%。在异或加密的情况下,很多引擎将其标记为 Yoda Protector,是因为其最初就是使用异或加密的。在使用固定受控熵值区(CER)后,检测率可以进一步降低到 12.3%。

检测引擎对熵值的敏感如何影响壳的设计

如下左侧可见,VirusTotal 也在快速进化,第一天检测了 27.15% 变种,第四天就达到了 32.55%,第七天检测率没有显著增加。VirusTotal 上的引擎仅用了三天就学习到了检测特征,但这种检测也导致了误报。如下右侧可见,第三天的四分位数从7%下降到5%,引擎可以在两天内删除这些导致误报的特征。

检测引擎对熵值的敏感如何影响壳的设计

遗传算法选用50个个体,每一代选择30个个体进行遗传繁殖,选择最好的十个个体遗传给下一代。交叉概率为 0.58,突变概率为 0.1。终止条件为二十代或者连续五代适应度不提高。

第一代初始化是随机搜索,最后一代时中位检出率从 21.8% 下降到 19.6%。两代做了 Wilcoxon 统计检验,结果为0.0098<0.05 即存在明显差异。

遗传算法加 oligomorphic 的情况下可以获得最佳保护效果,将检测率降低到 19.6%。

检测引擎对熵值的敏感如何影响壳的设计

当然,并不是所有引擎都可以被骗过的。AV16、AV17、AV18 和 AV19 四家引擎都可以以 90% 以上的概率检测出恶意样本。

检测引擎对熵值的敏感如何影响壳的设计

深入分析了生成文件的各个部分的相似之处。首先是 UPX0,在任何时候都相同,预留给执行时将程序解压到的虚拟段。其次是 UPX1 中包含加壳代码和 stub,不同变种的加壳代码都不相同,但 stub 是有相似之处的。最后是 UPX2 中的导入表和程序 overlay(不被读入内存且作为文件读取的部分)。消除掉这些相似的部分,再提交给 VirusTotal 进行检测。

检测引擎对熵值的敏感如何影响壳的设计

处理 IMP、OVE、UPX2 和 XOR 的结果都大致相同,可以将检测率从 57.1% 降低到 35.7%-38.7% 之间。针对 CER 的检测更多,处理 CER 后可降到 32.1%。而完全抹除 STUB 可以一口气下降到 20.5%。说明检测引擎认为 STUB 为检测特征,而 CER 并不是最重要的。

56 个引擎中,有 46 个引擎进行了检出,其中 39 个引擎的检出率超过 60%,34 个引擎的检出率超过 80%。改进 CER 后,只有三个引擎(AV15、AV2、AV19)能保持在 60% 以上。重新提交之前,7个引擎减少了签名导致检测能力降低,39个引擎增加了签名更难规避。第二次改进后,有 4 个引擎能够保持在 60% 以上。

典型的四个引擎的检测情况如下所示,AV19 的效果可以说明显要好。另外,从趋势来看,AV16和AV17、AV18和AV19的走势大体相似,这些引擎间应该也在共享信息。

检测引擎对熵值的敏感如何影响壳的设计

工作思考

由于 VirusTotal 的许可条款,我们并不可知表现较好的几个引擎都是什么,可以竞猜下到底是哪些引擎呢?(你心中的 AV19 是卡巴吗?)尽管高熵值过往被认为是恶意软件的典型特征,但是恶意软件也会有低熵值的情况,此前在顶会上也有相关的研究。

攻击者一旦适应了新的检测技术,双方的竞争又会回到拉锯战的状态。攻击者每次只需要小修小改就能绕过现有的检测手段,防御者要使用几乎全新的检测技术才能避免和攻击者绕圈子。

原文始发于微信公众号(威胁棱镜):检测引擎对熵值的敏感如何影响壳的设计

版权声明:admin 发表于 2022年6月28日 上午9:01。
转载请注明:检测引擎对熵值的敏感如何影响壳的设计 | CTF导航

相关文章

暂无评论

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