利用自动数据结构混淆误导恶意软件相似性分析
恶意软件问题日益严重,安全厂商和分析师不断开发新的方法来分析恶意代码。同时,恶意软件作者也在不断改进混淆技术以躲避检测。本文将介绍一种基于GNU GCC的自动数据结构混淆技术 StructPoly,它能有效解决现有方法的不足,提高恶意软件的混淆程度。
1. 引言
随着恶意软件的不断增加,安全领域面临着巨大挑战。传统的基于指令序列的签名和静态分析方法,容易被反逆向工程技术(如代码混淆、打包、多态和变形)所伪装。动态分析方法虽然能记录恶意软件的行为,但恶意软件仍可通过触发式行为隐藏其秘密。
Laika 从运行时内存图像的相似性角度出发,采用贝叶斯无监督学习对内存中的字节向量进行聚类。然而,Lin 等人提出的数据结构布局随机化方法存在手动标记数据结构和未解决语义错误的问题。
为解决这些问题,我们提出了 StructPoly,它是一种基于 GNU GCC 的编译器扩展。其主要挑战是识别混淆可能导致的潜在语义错误,并尽可能克服不可混淆性。潜在危险主要分为四类:
1. 序列依赖访问
2. 链接一致性
3. 系统接口依赖
4. 特殊语法
StructPoly 能自动混淆数据结构布局,区分数据结构的可混淆性,并将部分不可混淆的数据结构转换为可混淆的。在对十四个真实恶意程序的评估中,类型的混淆数据结构平均比例达到 60.19%,变量的平均比例达到 60.49%。
我们的贡献如下:
- 自动识别数据结构混淆可能导致语义错误的潜在问题,并采用四种不同策略解决这些问题。这些技术不仅适用于恶意软件程序,也适用于其他应用程序。
- 将自动数据结构
超级会员免费看
订阅专栏 解锁全文
337

被折叠的 条评论
为什么被折叠?



