
msticpy v3.0.2
微软威胁情报安全工具
MSTIC Jupyter 和 Python 安全工具
Microsoft 威胁情报 Python 安全工具。
msticpy 是一个用于在 Jupyter Notebook 中进行信息安全调查和追捕的库。它提供以下功能:
- 从多个来源查询日志数据
- 使用威胁情报、地理位置和 Azure 资源数据丰富数据
- 从日志中提取活动指标 (IoA) 并解码编码数据
- 执行高级分析,例如异常会话检测和时间序列分解
- 使用交互式时间线、进程树和多维形态图可视化数据
它还包含一些节省时间的笔记本工具,例如用于设置查询时间边界、从列表中选择和显示项目以及配置笔记本环境的小部件。

msticpy 包最初是为支持 Microsoft Sentinel 的 Jupyter Notebook 编写而开发的。虽然 Azure Sentinel 仍然是我们工作的重点,但我们正在扩展数据查询/采集组件以从其他来源提取日志数据(目前支持 Splunk、Microsoft Defender for Endpoint 和 Microsoft Graph,但我们正在积极开发对其他 SIEM 平台数据的支持)。大多数组件也可以与任何来源的数据一起使用。Pandas DataFrames 被用作几乎所有组件的通用输入和输出格式。此外,还有一个数据提供程序,用于简化从本地 CSV 文件和 pickle 化 DataFrame 处理数据的过程。
该包满足安全调查人员和追捕者的三个核心需求:
- 获取和丰富数据
- 分析数据
- 可视化数据
我们欢迎反馈、错误报告、新功能建议和贡献。
安装
核心安装:
pip install msticpy
或者用于最新的开发版本:
pip install git+https://github.com/microsoft/msticpy
升级
要将 msticpy 升级到最新的公开发布的非 beta 版本,请运行:
pip install --upgrade msticpy
请注意,最佳实践是将您的 msticpyconfig.yaml 复制并存储在磁盘上(但在 msticpy 文件夹之外),并通过环境变量引用它。这可以防止您在每次更新 msticpy 安装时丢失配置。
文档
完整文档位于 ReadTheDocs
许多模块的示例笔记本位于 docs/notebooks 文件夹中以及附带的笔记本中。
您还可以浏览本文档末尾引用的示例笔记本,了解在上下文中使用的一些功能。您可以在 mybinder.org 上的交互式演示中体验一些包功能。
日志数据采集
QueryProvider 是一个可扩展的查询库,目标为 Microsoft Sentinel/Log Analytics、Microsoft XDR、Splunk、OData 和其他日志数据源。它还特别支持 Mordor 数据集和使用本地数据。
内置参数化查询允许通过单个函数调用运行复杂查询。使用简单的 YAML 模式添加您自己的查询。
数据丰富
威胁情报提供程序
TILookup 类可以跨多个 TI 提供程序查找 IoC。内置提供程序包括 AlienVault OTX、IBM XForce、VirusTotal 和 Azure Sentinel。
输入可以是单个 IoC 可观察对象,也可以是包含多个可观察对象的 pandas DataFrame。根据提供程序的不同,您可能需要一个账户和一个 API 密钥。某些提供程序还会强制限制(尤其是免费层),这可能会影响批量查找。
地理位置数据
GeoIP 查找类允许您匹配 IP 地址的地理位置,可使用以下之一:
- GeoLiteLookup - Maxmind Geolite(参见 https://www.maxmind.com)
- IPStackLookup - IPStack(参见 https://ipstack.com)

Azure 资源数据、存储和 Azure Sentinel API
AzureData 模块包含用于丰富有关 Azure 主机详细信息的函数,这些详细信息通过 Azure API 公开。AzureSentinel 模块允许您查询事件、检索检测器和追捕查询。AzureBlogStorage 让您能够读取和写入 blob 存储中的数据。
Azure 资源 API, Azure Sentinel API, Azure 存储
安全分析
此子包包含几个有助于安全调查和追捕的模块:
异常序列检测
检测 Office、Active Directory 或其他日志数据中的异常事件序列。您可以提取会话(例如,同一账户发起的活动),并识别和可视化异常的活动序列。例如,检测攻击者在某人的邮箱上设置邮件转发规则。
时间序列分析
时间序列分析允许您识别日志数据中的异常模式,同时考虑正常的季节性变化(例如,一天中的小时、一周中的天数等事件的常规起伏)。通过分析和可视化,可以突出显示任何数据集中异常的业务流量或事件活动。

可视化
事件时间线
在交互式时间线上显示任何日志事件。使用 Bokeh 可视化库,时间线控件使您能够可视化一个或多个事件流,交互式缩放到特定时间段,并查看绘制事件的详细信息。

进程树
进程树功能有两个主要组件:
- 进程树创建 - 从主机获取进程创建日志,并构建数据集中进程之间的父子关系。
- 进程树可视化 - 获取处理后的输出,使用 Bokeh 图显示交互式进程树。
还有一组实用函数,用于从处理后的数据集中提取单个和部分树。

数据处理和实用函数
枢轴函数
允许您以“以实体为中心”的方式使用 MSTICPy 功能。与特定实体类型(例如 Host、IpAddress、Url)相关的所有函数、查询和查找都汇集为该实体类的方法。因此,如果您想对 IP 地址进行操作,只需加载 IpAddress 实体并浏览其方法即可。
base64unpack
Base64 和归档 (gz, zip, tar) 提取器。它将尝试识别任何 base64 编码的字符串并尝试解码。如果结果看起来像支持的归档类型之一,它将解包内容。每次解码/解包的结果将重新检查是否包含更多 base64 内容,直到达到指定的深度。
iocextract
使用正则表达式查找入侵指标 (IoC) 模式 - IP 地址、URL、DNS 域名、哈希、文件路径。输入可以是单个字符串或 pandas DataFrame。
eventcluster(实验性)
此模块旨在将大量事件总结为不同模式的聚类。高容量重复事件通常会使查看独特和有趣的项目变得困难。

这是一个使用 SciKit Learn DBScan 实现的无监督学习模块。
auditdextract
用于加载和解码 Linux 审计日志的模块。它将共享相同消息 ID 的消息合并为单个事件,解码十六进制编码的数据字段,并执行一些特定于事件的格式化和规范化(例如,对于进程启动事件,它将重新组装进程命令行参数为单个字符串)。
syslog_utils
用于支持对仅启用 syslog 日志记录的 Linux 主机进行调查的模块。包括用于整理主机数据、聚类登录事件以及检测包含可疑活动的用户会话的函数。
cmd_line
一个支持检测已知恶意命令行活动或可疑命令行活动模式的模块。
domain_utils
一个支持调查域名和 URL 的模块,包含验证域名和截图 URL 的函数。
笔记本小部件
这些是基于 Jupyter ipywidgets 集合构建的,将信息安全工作中有用的常见功能(如列表选择器、查询时间边界设置和事件显示)分组为易于使用的格式。


示例 MSTICPy 笔记本
Azure Sentinel 笔记本 GitHub 上的更多笔记本
示例笔记本:
直接在 GitHub 上查看,或将链接复制粘贴到 nbviewer.org
带有保存数据的笔记本示例
有关此包实际使用的更多示例,请参阅以下笔记本:
支持的平台和包
- msticpy 是操作系统无关的
- 需要 Python 3.10 或更高版本
- 有关更多详细信息和版本要求,请参阅 requirements.txt
贡献
有关(简要)开发者指南,请参阅此维基文章 贡献者指南
本项目欢迎贡献和建议。大多数贡献要求您同意一份贡献者许可协议 (CLA),声明您有权授予我们使用您贡献的权利。有关详细信息,请访问 https://cla.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动确定您是否需要提供 CLA,并以适当方式装饰 PR(例如,标签、评论)。只需按照机器人提供的说明操作即可。您只需要在我们使用 CLA 的所有仓库中执行此操作一次。
本项目已采用 Microsoft 开源行为准则。有关更多信息,请参阅 行为准则常见问题解答,或通过 [email protected] 联系提出任何其他问题或评论。