恶意代码打包分类的细粒度检测方法
1. 背景与动机
在处理可执行文件时,解包一个打包病毒通常需要数十秒到数分钟不等。例如,使用Renovo解包器解包一个打包病毒平均需要约40秒。因此,如何有效地将打包恶意代码与未打包恶意代码区分开来是一个亟待解决的问题。
虽然机器学习技术已被证明在解决相关问题上是有效的,但大多数现有工作仅关注于检测恶意软件是否被打包。本文提出了一种基于字符串核函数的快速细粒度检测方法,不仅能准确判断恶意软件是否被打包,还能识别使用了哪种打包工具。识别出打包工具后,可直接将其发送给专业的解包人员进行隐藏代码提取,从而在提高病毒检测效率的同时,节省大量的处理时间。
2. 相关工作
区分打包和未打包的可执行文件是一个具有挑战性的问题,目前已有几种检测方法被提出:
- 基于签名的方法 :这类方法开发了许多工具,如PEiD。基于签名的检测器速度快,误报率相对较低,但恶意软件作者可以通过每次使用略有不同的打包算法来绕过正则表达式匹配,导致检测器产生大量的漏报。
- 动态解包器 :动态解包器通过在内存中执行和监控程序,检测动态解密代码的执行尝试。例如Omniunpack和PolyUnpack,它们试图监控内存中应用程序的执行并检测PE文件是否被打包。然而,动态解包器会引入较大的性能开销,无法在终端用户机器上作为实时系统运行。因此,一些方法通过将PE文件划分为256字节的块,仅计算每个块的熵、平均熵和最大块熵来检测文件是否被打包;还有方法引入了额外的特征来区分打包和未打包的可执行文件。
与本文最接近的工作只能检测恶意软件是否被打包,而本文提
超级会员免费看
订阅专栏 解锁全文
750

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



