关于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
https://tomiwa-ot.github.io/py-amsi/genindex.html
https://pypi.org/project/pyamsi/