无恶意软件测试:验证杀毒软件是否正常工作的4种方法
最近有客户问我,能否在不执行任何真实恶意软件的情况下,通过新部署的杀毒软件生成警报。由于测试对象是高度敏感的业务关键系统,必须确保测试过程不执行任何第三方代码。此外,我无法直接访问测试系统(该问题出现在渗透测试完成后),因此需要提供系统管理员易于操作且不依赖Metasploit等外部黑客工具的方法。
考虑到其他防御者可能遇到类似场景,我决定在BHIS博客分享以下测试方法。请注意,这些测试仅为基础验证手段,并非杀毒软件功能的完整评估方案。
1. 使用EICAR测试文件检测恶意软件文件
EICAR测试文件由欧洲计算机反病毒研究协会(EICAR)和计算机反病毒研究组织(CARO)专门设计,仅包含以下ASCII文本(可附加尾随空格),可通过文本编辑器创建后保存至磁盘:
|
|
操作步骤:
- 将EICAR字符串粘贴至Windows记事本
- 保存为带".EXE"扩展名的文件
- 也可直接从https://secure.eicar.org/eicar.com.txt下载
进阶测试: 部分杀毒软件仅自动扫描特定扩展名文件(如.EXE),建议保存多个不同扩展名的测试文件(如.TXT/.JPG/.COM/.DOCM)。若部分文件未被检测,说明杀毒软件未扫描该扩展名文件。
2. 测试备用数据流(ADS)中的恶意软件检测
在NTFS文件系统上,恶意软件可隐藏在文件的备用数据流中。通过PowerShell创建包含EICAR字符串的ADS:
|
|
执行后使用Get-Content确认文件存在。若杀毒软件支持ADS扫描,应触发检测警报。
3. 通过AMSI测试内存中的恶意脚本检测
微软反恶意软件扫描接口(AMSI)提供专用测试字符串:
|
|
测试方法:
- 打开PowerShell或PowerShell ISE
- 粘贴测试字符串(需包含首尾单引号)
- 若AMSI正常工作,将显示"此脚本包含恶意内容"的报错
备选测试字符串:
|
|
注意:未加引号会导致PowerShell语法错误,需通过特定报错信息确认检测功能。
4. 使用Windows任务管理器测试基于行为的检测
本测试模拟恶意软件执行后的行为(非文件/内存检测),需配合端点检测响应(EDR)工具:
操作流程:
- 以管理员权限启动任务管理器
- 点击"更多详细信息" → “详细信息"标签页
- 找到lsass.exe进程 → 右键选择"创建转储文件”
- 观察是否触发防御软件拦截
预期结果:
- 检测成功:任务管理器意外关闭或收到安全警报
- 未检测:转储文件生成于用户Temp目录,需手动删除(该文件可能包含登录凭证)
结论
本文测试方法虽非完整评估方案,但可在受限环境中验证杀毒软件基础功能。需注意:
- EICAR/AMSI测试仅验证基础扫描机制,不代表能检测复杂格式文件
- 行为检测需依赖EDR等进阶防护工具
- 建议通过专业服务(如命令控制与数据外泄评估)进行全面安全盲点分析