
关于py-amsi
py-amsi是一款基于Windows反恶意软件接口(AMSI)实现的强大安全工具,该工具可以利用AMSI扫描恶意软件相关的字符串与文件信息,以检测目标系统是否感染了恶意软件。
AMSI是Windows的原生接口,允许应用程序要求系统上安装的防病毒软件分析文件/字符串。需要注意的是,AMSI与Windows Defender无关。
什么是AMSI
Windows反恶意软件扫描接口(AMSI)是一种通用的接口标准,允许我们的应用程序和服务与计算机上的任何反恶意软件产品集成。AMSI可以为最终用户及其数据、应用程序和工作负载提供增强的恶意软件保护。
AMSI可以为反恶意软件产品提供最常见的恶意软件扫描和保护技术,这些技术可以集成到应用程序中,并可以执行文件和内存或流扫描、内容源URL/IP信誉检查以及其他技术。
工具安装
由于该工具部分功能使用Python开发,因此我们首先需要在本地设备上安装并配置好Python环境。
源码安装
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/Tomiwa-Ot/py-amsi.git
然后切换到项目目录下,执行安装脚本即可:
cd py-amsi/ python setup.py install
pip安装
除此之外,我们还可以直接使用pip工具安装py-amsi:
pip install pyamsi
工具使用
from pyamsi import Amsi # 扫描一个文件 Amsi.scan_file(file_path, debug=True) # debug is optional and False by default # 扫描字符串 Amsi.scan_string(string, string_name, debug=False) # debug is optional and False by default # Both functions return a dictionary of the format # { # 'Sample Size' : 68, // The string/file size in bytes # 'Risk Level' : 0, // The risk level as suggested by the antivirus # 'Message' : 'File is clean' // Response message # }
风险等级
风险等级 | 描述介绍 |
0 | AMSI_RESULT_CLEAN (文件是良性的) |
1 | AMSI_RESULT_NOT_DETECTED (未检测到威胁) |
16384 | AMSI_RESULT_BLOCKED_BY_ADMIN_START (管理员已屏蔽此威胁) |
20479 | AMSI_RESULT_BLOCKED_BY_ADMIN_END (管理员已屏蔽此威胁) |
32768 | AMSI_RESULT_DETECTED (文件与恶意软件有关) |
函数子模块
pyamsi.Amsi.scan_file
pyamsi.Amsi.scan_file(path, debug=False) 参数 path (str): 要扫描的目标文件路径 debug (bool): 显示调试信息 (默认=False, 可选) 返回 字典: Sample Size = 字符串大小 Risk Level = AMSI 提供商标记的风险等级 Message = AMSI响应
pyamsi.Amsi.scan_string
pyamsi.Amsi.scan_string(text, name, debug=False) 参数 text (str): 要扫描的字符串 name (str): 字符串名称 debug (bool): 显示调试信息 (默认=False, 可选) 返回 字典: Sample Size = 字符串大小 Risk Level = AMSI 提供商标记的风险等级 Message = AMSI响应
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
py-amsi:【GitHub传送门】
参考资料
https://learn.microsoft.com/en-us/windows/win32/amsi/antimalware-scan-interface-portal
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)