我一直在研究反恶意软件工具是如何工作的,我觉得我缺少一些启发分析的东西。
到目前为止我学到的东西
反恶意软件程序可以使用启发式分析和签名来确定程序是否是恶意软件。恶意软件作者使用多态代码来避免签名识别,并混淆代码中的操作以避免某些启发式。
情景
如果恶意软件作者将他们的代码分割成多个不同的二进制文件,这会被检测到吗?我设想了一个场景,其中一个简单的键盘记录器使用了许多多态可执行文件来记录键、接收命令和发送数据,从而显示为良性的工具。
我觉得这可能会产生大量的假阳性的程序,使用一个或两个键绑定和其他小工具。
我的问题
这是避免被发现的有效方法吗?
如果还没有的话,有什么办法可以防止这种情况发生吗?
发布于 2016-06-04 19:01:00
我已经为职业安全测试写了20多年的恶意软件。规避AV检测是我们客户的共同要求之一。该方法取决于应避开哪种扫描机制。
基于模式的检测在AV环境中非常简单.这就像一个正则表达式,试图识别特定恶意软件的公共部分。如果恶意软件因此身份签名而被更改,则检测将不再有效。更改二进制文件中的代码片段(例如字符串、内部名称)或代码块位置会很快完成,并且会成功。
基于启发式的检测可以做类似的事情,但不是使用代码块,而是使用“动作”。一个操作将打开一个文件,写入一个字符串并再次关闭该文件。Windows文件系统上的可疑序列可能正在创建文件并立即向其添加隐藏标志。大多数AV产品都声明这是恶意的。在大多数情况下是这样的(有多少合法的应用程序这样做?)但是,如果您在这两个任务之间等待几秒钟,或者在这两个任务之间执行其他操作(比如同时打开另一个文件),那么启发式算法将错过初始任务之间的原始连接。
将任务拆分为多个二进制文件,像多线程实例一样运行,可能会产生类似的效果。这是因为AV软件不能将来自多个进程的许多操作关联起来。挑战可能是必须将所有二进制文件部署到目标主机上才能建立框架。但这可能会在启发式分析期间引发一些标志(多次下载、执行后下载另一个二进制文件或从单个二进制文件中提取多个可执行文件)。我通常下载额外的部分,并放弃原来的“下载机”。这很好的工作,生成小的二进制文件,并且是有效的。AV检测在超小和简单的文件中效果很差。
我从来没有遇到过不可能避开AV检测的病例。这可能比平常要花更多的时间。这可能就是为什么有些人称之为AV蛇油的原因。
https://security.stackexchange.com/questions/105197
复制相似问题