识别导致某安全事件的最可能的 APT 组织
该程序接收一份网络安全事件报告,其中包含已被检测出在该事件中使用过的 MITRE ATT&CK 技术,并尝试识别最有可能对该事件负责的 APT 组织。
该脚本依赖 enterpriseattack 模块,以便方便地访问各种 MITRE ATT&CK 技术和组织,因此你需要先安装该模块才能使用此脚本。由于该模块要求 Python 3.6 或更高版本,此脚本也仅在上述 Python 版本下运行。
克隆仓库:
git clone https://gitlab.com/bontchev/whodunit.git
进入脚本所在目录:
cd whodunit
安装依赖项:
pip install -r requirements.txt
python whodunit.py [-h] [-v] [-n NUMGROUPS] [-b] [-u] [-d] techniques
该脚本接受以下命令行选项:
-h, --help 显示如何使用该脚本以及命令行选项的简要说明。
-v, --version 显示脚本版本并退出。
-n NUMGROUPS, --numgroups NUMGROUPS 要列出的最接近的组织数量(默认:10)。
-b, --verbose 列出报告中的 MITRE ATT&CK 技术。
-u, --update 更新本地 MITRE ATT&CK 数据副本。
-d, --deprecated 也使用已弃用的 ATT&CK 技术。
techniques 一个文本文件,包含网络安全事件期间观察到的 MITRE ATT&CK 技术列表。空行将被忽略,一行中 # 字符之后的所有内容均视为注释并被忽略。同一行可以列出多个技术,此时它们应以一个或多个空格分隔。
该仓库包含一个(虚构的)网络安全事件报告,位于 report.txt 文件中。对观察到内容的自然语言描述位于注释中。你可以按如下方式使用该脚本处理此报告:
python whodunit.py -u -b -n 5 report.txt
这将强制脚本更新本地 MITRE ATT&CK 数据副本(-u 选项)、列出事件报告中识别出的技术(-b 选项),并输出最有可能对该事件负责的 5 个 APT 组织(-n 5 选项):
Processing report file "report.txt"...
Observed techniques:
T1003.001
T1005
T1039
T1059.001
T1068
T1078.003
T1110.003
T1114.001
T1133
T1213.002
T1486
T1548.002
T1560
T1562.001
T1573.002
The 5 APT groups most likely responsible:
G0007 (APT28 ): 60.00%
G0016 (APT29 ): 53.33%
G0037 (FIN6 ): 46.67%
G0060 (BRONZE BUTLER ): 40.00%
G0114 (Chimera ): 40.00%
该脚本的工作原理是:找出每个 APT 组织已知使用的技术集合与事件报告中列出的技术集合的交集,并报告置信度较高的组织——对于这些组织而言,该交集是事件报告中所列技术的最大的一个子集。
第一列是 MITRE ATT&CK 框架中的 APT 组织标识符,第二列是该组织的通用名称,第三列是事件报告中的技术中,已知由相应 APT 组织使用的技术所占的百分比。
注意:仅支持 MITRE ATT&CK 框架的 Enterprise 矩阵(而不支持例如 Mobile 或 ICS 矩阵),因为这是 enterpriseattack 模块所支持的。
本项目采用 GNU v3.0 许可证。