20 多年来,我一直在为专业安全测试编写恶意软件。逃避 AV 检测是我们客户的共同要求之一。该方法取决于应避开哪种扫描机制。
基于模式的检测在 AV 环境中非常简单。这就像一个正则表达式,它试图识别特定恶意软件的公共部分。如果恶意软件对该识别签名进行了更改,则检测将不再起作用。更改代码片段(例如字符串、内部名称)或二进制文件中的代码块位置可以快速完成并且会成功。
基于启发式的检测做类似的事情,但不是用代码块而是用“动作”。一个动作将是打开一个文件,写入一个字符串并再次关闭文件。Windows 文件系统上的可疑序列可能正在创建一个文件并立即向其添加隐藏标志。大多数 AV 产品都宣称这是恶意的。在大多数情况下,它是(有多少合法的应用程序这样做?)。但是,如果您在这两个任务之间等待几秒钟或在其间执行其他操作(例如同时打开另一个文件),启发式将错过初始任务之间的原始连接。
将任务拆分为像多线程实例一样运行的多个二进制文件可能会产生类似的效果。这是因为 AV 软件无法关联来自多个进程的那么多动作。挑战可能是您必须在目标主机上部署所有二进制文件才能建立框架。但这可能会在启发式分析期间引发一些标志(多次下载、执行后下载另一个二进制文件或从单个二进制文件中提取多个可执行文件)。我通常会下载其他部分并放弃原来的“下载器”。这很好用,生成小的二进制文件并且效率很高。AV 检测对超小和简单文件的效果相当差。
我从来没有遇到过无法绕过 AV 检测的情况。它可能比平时需要更多的时间。这可能就是为什么有人称AV蛇油的原因。