无恶意代码触发杀毒软件警报的实用测试指南

本文介绍了四种无需执行真实恶意代码即可测试杀毒软件功能的方法,包括使用EICAR测试文件检测、替代数据流测试、AMSI内存扫描测试以及通过Windows任务管理器进行行为检测测试。

如何在不执行任何恶意软件的情况下确保杀毒软件正常工作

Michael Allen //

最近,一位客户问我是否有办法在他们部署的新杀毒产品上生成警报,而无需在他们测试的系统上执行任何实际的恶意软件。他们想要测试的计算机是一个特别敏感且对业务至关重要的系统,因此在不执行任何第三方代码的情况下进行测试非常重要。此外,我无法直接访问他们正在测试的系统(这个问题是在他们的渗透测试完成后提出的),因此我分享给他们的方法需要能够轻松传达给系统管理员,并且不依赖任何可能在该环境中不可用的专业“黑客工具”,如Metasploit。

我认为这是一个其他防御者可能也会遇到的有趣场景,因此我决定在BHIS博客上分享一些我的建议。请记住,这绝不是所有可以进行的杀毒产品测试的详尽列表,也不是测试杀毒产品任何给定功能的所有不同方法。这只是一些相对容易的测试的起点,可以在没有任何第三方工具的情况下进行。

1. 使用EICAR测试文件测试恶意软件文件检测

EICAR测试文件由欧洲计算机杀毒研究协会(EICAR)和计算机杀毒研究组织(CARO)专门设计用于测试杀毒程序。它仅包含以下ASCII文本(以及一些可选的尾随空白),可以通过将文本粘贴到文本编辑器中,然后将文件保存到磁盘来轻松创建:

1
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

EICAR测试文件内容

下面的两个截图显示了一个简单的示例,将EICAR字符串粘贴到Windows记事本中,然后将其保存为带有“.EXE”扩展名的文件。

EICAR数据粘贴到记事本中

将EICAR文件保存到磁盘

该文件也可以直接从EICAR网站下载:https://secure.eicar.org/eicar.com.txt

一旦EICAR文件保存到磁盘,它应该会从计算机上安装的任何杀毒产品生成警报。一些杀毒产品将自动文件扫描限制为仅具有某些文件扩展名(例如,“.EXE”)的文件,因此我建议保存文件的多个副本,并使用您想要测试的不同扩展名。如果某些文件被检测到而其他文件没有被检测到,您就会知道您的杀毒产品不会自动扫描某些文件扩展名。例如,您可能会注意到,将文件保存为.TXT或.JPG扩展名不会导致其被检测到,而保存为.COM、.EXE或.DOCM则会。

以下是一个示例,显示了一个文件夹,其中我以各种文件扩展名保存了文件的多个副本:

EICAR文件保存为各种扩展名的文件

以下是Windows Defender检测到这些文件时显示的部分警报:

检测测试文件的警报(部分)

2. 测试替代数据流中的恶意软件检测

在使用NTFS文件系统的计算机上,恶意软件也可以存储在文件的替代数据流(ADS)中,而不是文件本身内部。这种技术已被恶意软件作者使用多年,试图在磁盘上隐藏恶意软件,因为一些杀毒产品可能不会检查存储在替代数据流中的恶意数据。

使用PowerShell,您可以轻松创建一个包含EICAR测试文件的替代数据流,并确认您的杀毒软件是否扫描ADS中的恶意软件。下面的第一个PowerShell命令创建文件“ADS_Test.txt”,其中仅包含文本字符串“Nothing to see here.”。该文件实际上不包含任何恶意代码,但第二个命令向文件添加了一个名为“EICAR”的替代数据流,并将EICAR字符串存储在ADS中。

1
2
set-content .\ADS_Test.txt Nothing to see here.
set-content .\ADS_Test.txt:EICAR X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

创建包含EICAR字符串的ADS的PowerShell命令

下面的截图显示了这两个命令的执行,以及中间的一个“Get-Content”命令,该命令仅通过显示其内容来确认“ADS_Test.txt”文件的存在。

执行上述PowerShell命令

与上一节中创建的测试文件一样,“恶意”替代数据流也被Windows Defender检测到。

检测ADS中的EICAR数据

3. 使用AMSI测试恶意脚本的内存检测

与EICAR字符串类似,微软的反恶意软件扫描接口(AMSI)有自己的测试字符串,如下所示。

1
‘AMSI Test Sample: 7e72c3ce-861b-4339-8740-0ac1484c1386’

AMSI测试字符串

AMSI允许杀毒产品扫描在PowerShell进程、Microsoft Office宏和Windows支持的脚本语言(如VBScript和JavaScript)内部执行的命令和脚本中的恶意代码。这一功能在防御产品中至关重要,因为许多有效负载可以被下载到内存中并执行,而无需写入磁盘——从而防止它们被传统文件扫描杀毒功能检测到,这些功能在前面的部分中进行了测试。

要测试AMSI是否在您的系统上启用并检测恶意软件,请打开一个PowerShell或PowerShell ISE窗口,并粘贴上面显示的测试样本文本。如果AMSI在您的系统上启用并工作,您应该看到类似下面显示的消息。

检测AMSI测试字符串

如果由于某种原因,测试字符串未被识别为恶意,您也可以尝试使用以下存在于知名黑客工具中的字符串。

1
2
‘amsicontext’
‘Invoke-Mimikatz’

检测黑客工具字符串

如果您对PowerShell错误消息没有扎实的理解,请确保在执行这些测试时在每个字符串的开头和结尾包含单引号字符。测试字符串默认不是有效的PowerShell语法,因此如果您在没有引号的情况下运行它们,将显示其他错误消息,这可能会引起一些混淆。

成功检测恶意字符串将生成一个错误,明确指出“此脚本包含恶意内容”,而不是更通用的错误文本,如“术语‘…’未被识别…”或“ObjectNotFound”。

4. 使用Windows任务管理器测试基于行为的检测

我将在这里演示的最后一个示例模拟了成功恶意软件执行后可能发生的行为,而不是模拟恶意软件在磁盘或内存中的存在。行为被杀毒产品检测到的频率低于已知恶意软件数据在磁盘或内存中的存在,因此根据您使用的产品,您可能需要用其他端点检测和响应(EDR)选项来补充您的杀毒软件,以看到检测。

要执行此测试,首先以提升的管理员权限执行Windows任务管理器。

从Windows开始菜单以管理员身份执行任务管理器

启动任务管理器后,单击窗口底部的“更多详细信息”按钮。

“更多详细信息”按钮

然后单击“详细信息”选项卡,并在列表中向下滚动,直到找到“lsass.exe”进程。

“lsass.exe”显示在详细信息下

右键单击“lsass.exe”,然后在出现的菜单中单击“创建转储文件”。

“创建转储文件”

此时,任务管理器将尝试读取LSASS进程的内存内容并将数据保存到文件中。LSASS进程内存通常被攻击者针对,因为它可能包含已登录系统的用户的登录凭据或密码哈希。当此过程开始时,您将看到类似下面的窗口出现。

内存转储进行中

如果您的杀毒或其他端点防御产品检测到恶意行为,任务管理器窗口可能会突然关闭,或者您可能会看到防御软件的通知。另一方面,如果行为未被检测到,转储文件将在当前用户的“Temp”目录中创建,并且您将看到以下窗口出现:

内存转储完成

仔细检查Temp目录以确保文件成功创建——这也将确认恶意行为未被阻止。如果文件存在,请确保在完成后删除它,因为它可能包含凭据或其他对攻击者有用的信息,如果您的系统被入侵。

结论

就像我在文章开头提到的,这并不意味着是一个完美或完整的测试,但希望它能给您一个起点,从中判断您的杀毒软件是否按您预期的方式工作——特别是在您将外部生成的测试文件上传到系统的能力可能受限的环境中。

请记住,检测EICAR和AMSI测试数据并不一定表明杀毒产品成功解析了给定类型的文件。毕竟,本文中创建的测试文件仅包含一个众所周知的ASCII字符串——因此它们非常容易通过基本手段检测到,并且不一定代表正确格式的程序可执行文件或文档文件,这些文件可能在宏中或至少在除第一行之外的某个地方存储恶意代码。

检测EICAR测试文件至少确认了您的杀毒产品正在扫描文件。如果检测到AMSI测试字符串,同样如此——至少您知道您的杀毒产品正在挂钩到AMSI,扫描代码,并生成警报。

最后,如果您对环境中使用的端点安全控制进行比我所描述的更全面的评估感兴趣,请查看我们的服务页面或联系我们,了解我们的命令与控制及数据外泄评估服务的信息,让我们向您展示您的杀毒软件、EDR和网络安全控制可能遗漏的盲点。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计