返回更新列表
新发布Jul 20, 2026

msticpy v3.0.2

微软威胁情报安全工具

分享

MSTIC Jupyter 和 Python 安全工具

GitHub Actions build Azure Pipelines build Downloads

Microsoft 威胁情报 Python 安全工具。

msticpy 是一个用于在 Jupyter Notebook 中进行信息安全调查和追捕的库。它提供以下功能:

  • 从多个来源查询日志数据
  • 使用威胁情报、地理位置和 Azure 资源数据丰富数据
  • 从日志中提取活动指标 (IoA) 并解码编码数据
  • 执行高级分析,例如异常会话检测和时间序列分解
  • 使用交互式时间线、进程树和多维形态图可视化数据

它还包含一些节省时间的笔记本工具,例如用于设置查询时间边界、从列表中选择和显示项目以及配置笔记本环境的小部件。

时间线

msticpy 包最初是为支持 Microsoft SentinelJupyter 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 上的交互式演示中体验一些包功能。

Binder


日志数据采集

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 密钥。某些提供程序还会强制限制(尤其是免费层),这可能会影响批量查找。

TIProvidersTILookup 使用笔记本

地理位置数据

GeoIP 查找类允许您匹配 IP 地址的地理位置,可使用以下之一:

Folium 地图

GeoIP 查找GeoIP 笔记本

Azure 资源数据、存储和 Azure Sentinel API

AzureData 模块包含用于丰富有关 Azure 主机详细信息的函数,这些详细信息通过 Azure API 公开。AzureSentinel 模块允许您查询事件、检索检测器和追捕查询。AzureBlogStorage 让您能够读取和写入 blob 存储中的数据。

Azure 资源 APIAzure Sentinel APIAzure 存储

安全分析

此子包包含几个有助于安全调查和追捕的模块:

异常序列检测

检测 Office、Active Directory 或其他日志数据中的异常事件序列。您可以提取会话(例如,同一账户发起的活动),并识别和可视化异常的活动序列。例如,检测攻击者在某人的邮箱上设置邮件转发规则。

异常会话异常序列笔记本

时间序列分析

时间序列分析允许您识别日志数据中的异常模式,同时考虑正常的季节性变化(例如,一天中的小时、一周中的天数等事件的常规起伏)。通过分析和可视化,可以突出显示任何数据集中异常的业务流量或事件活动。

时间序列异常

时间序列

可视化

事件时间线

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

时间线

时间线时间线笔记本

进程树

进程树功能有两个主要组件:

  • 进程树创建 - 从主机获取进程创建日志,并构建数据集中进程之间的父子关系。
  • 进程树可视化 - 获取处理后的输出,使用 Bokeh 图显示交互式进程树。

还有一组实用函数,用于从处理后的数据集中提取单个和部分树。

进程树

进程树进程树笔记本

数据处理和实用函数

枢轴函数

允许您以“以实体为中心”的方式使用 MSTICPy 功能。与特定实体类型(例如 Host、IpAddress、Url)相关的所有函数、查询和查找都汇集为该实体类的方法。因此,如果您想对 IP 地址进行操作,只需加载 IpAddress 实体并浏览其方法即可。

枢轴函数枢轴函数笔记本

base64unpack

Base64 和归档 (gz, zip, tar) 提取器。它将尝试识别任何 base64 编码的字符串并尝试解码。如果结果看起来像支持的归档类型之一,它将解包内容。每次解码/解包的结果将重新检查是否包含更多 base64 内容,直到达到指定的深度。

Base64 解码Base64Unpack 笔记本

iocextract

使用正则表达式查找入侵指标 (IoC) 模式 - IP 地址、URL、DNS 域名、哈希、文件路径。输入可以是单个字符串或 pandas DataFrame。

IoC 提取IoCExtract 笔记本

eventcluster(实验性)

此模块旨在将大量事件总结为不同模式的聚类。高容量重复事件通常会使查看独特和有趣的项目变得困难。

聚类

这是一个使用 SciKit Learn DBScan 实现的无监督学习模块。

事件聚类事件聚类笔记本

auditdextract

用于加载和解码 Linux 审计日志的模块。它将共享相同消息 ID 的消息合并为单个事件,解码十六进制编码的数据字段,并执行一些特定于事件的格式化和规范化(例如,对于进程启动事件,它将重新组装进程命令行参数为单个字符串)。

syslog_utils

用于支持对仅启用 syslog 日志记录的 Linux 主机进行调查的模块。包括用于整理主机数据、聚类登录事件以及检测包含可疑活动的用户会话的函数。

cmd_line

一个支持检测已知恶意命令行活动或可疑命令行活动模式的模块。

domain_utils

一个支持调查域名和 URL 的模块,包含验证域名和截图 URL 的函数。

笔记本小部件

这些是基于 Jupyter ipywidgets 集合构建的,将信息安全工作中有用的常见功能(如列表选择器、查询时间边界设置和事件显示)分组为易于使用的格式。

时间跨度小部件

警报浏览器


示例 MSTICPy 笔记本

MSTICPy 笔记本

Azure Sentinel 笔记本 GitHub 上的更多笔记本

Azure Sentinel 笔记本

示例笔记本:

直接在 GitHub 上查看,或将链接复制粘贴到 nbviewer.org

带有保存数据的笔记本示例

有关此包实际使用的更多示例,请参阅以下笔记本:

支持的平台和包


贡献

有关(简要)开发者指南,请参阅此维基文章 贡献者指南

本项目欢迎贡献和建议。大多数贡献要求您同意一份贡献者许可协议 (CLA),声明您有权授予我们使用您贡献的权利。有关详细信息,请访问 https://cla.microsoft.com

当您提交拉取请求时,CLA 机器人会自动确定您是否需要提供 CLA,并以适当方式装饰 PR(例如,标签、评论)。只需按照机器人提供的说明操作即可。您只需要在我们使用 CLA 的所有仓库中执行此操作一次。

本项目已采用 Microsoft 开源行为准则。有关更多信息,请参阅 行为准则常见问题解答,或通过 [email protected] 联系提出任何其他问题或评论。

分类