microsoft/msticpy

GitHub: microsoft/msticpy

微软开源的 Python 安全分析库,为安全调查人员提供从数据获取、情报富化到异常检测和交互可视化的一站式 Jupyter Notebook 工作流。

Stars: 1969 | Forks: 334

# MSTIC Jupyter 和 Python 安全工具 ![GitHub Actions build](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/47d463fa68221935.svg) [![Azure Pipelines build](https://dev.azure.com/mstic-detections/mstic-jupyter/_apis/build/status/microsoft.msticpy?branchName=main)](https://dev.azure.com/mstic-detections/mstic-jupyter/_build/latest?definitionId=14&branchName=main) [![Downloads](https://pepy.tech/badge/msticpy)](https://peppy.tech/project/msticpy) Microsoft 威胁情报 Python 安全工具。 **msticpy** 是一个用于在 Jupyter Notebook 中进行信息安全 (InfoSec) 调查和溯源的库。它包含以下功能: - 从多个来源查询日志数据 - 使用威胁情报、地理位置和 Azure 资源数据来丰富数据 - 从日志中提取活动指标 并解码编码数据 - 执行复杂的分析,例如异常会话检测和时间序列分解 - 使用交互式时间线、进程树和多维 Morph Charts 可视化数据 它还包括一些节省时间的 notebook 工具,例如用于设置查询时间范围、从列表中选择和显示项目以及配置 notebook 环境的微件。 Timeline **msticpy** 包最初是为了支持为 [Microsoft Sentinel](https://www.microsoft.com/en-us/security/business/siem-and-xdr/microsoft-sentinel/) 编写 [Jupyter Notebook](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/) 而开发的。虽然 Azure Sentinel 仍然是我们工作的重点,但我们正在扩展数据查询/获取组件,以从其他来源提取日志数据(目前支持 Splunk、Microsoft Defender for Endpoint 和 Microsoft Graph,但我们正在积极努力支持来自其他 SIEM 平台的数据)。大多数组件也可以与来自任何来源的数据一起使用。Pandas DataFrame 被用作几乎所有组件的通用输入和输出格式。还提供了一个数据提供程序,以便轻松处理来自本地 CSV 文件和已序列化的 DataFrame 的数据。 该包满足了安全调查人员和溯源人员的三个核心需求: - 获取和丰富数据 - 分析数据 - 可视化数据 我们欢迎反馈、错误报告、新功能建议和贡献。 ## 安装 核心安装: `pip install msticpy` 或安装最新的开发版本: `pip install git+https://github.com/microsoft/msticpy` ## 升级 要将 msticpy 升级到最新的非 Beta 公开发行版,请运行: `pip install --upgrade msticpy` 请注意,最佳做法是复制您的 `msticpyconfig.yaml` 并将其存储在磁盘上 msticpy 文件夹之外的位置,并在环境变量中引用它。这可以防止您在每次更新 msticpy 安装时丢失配置。 ## 文档 完整文档请访问 [ReadTheDocs](https://msticpy.readthedocs.io/en/latest/) 许多模块的示例 notebook 位于 [docs/notebooks](https://github.com/microsoft/msticpy/blob/master/docs/notebooks) 文件夹及随附的 notebook 中。 您还可以浏览本文档末尾引用的示例 notebook,以查看在上下文中使用的某些功能。您可以在 mybinder.org 上的此交互式演示中体验该包的一些功能。 [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Azure/Azure-Sentinel-Notebooks/master?filepath=A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) ## 日志数据获取 QueryProvider 是一个可扩展的查询库,目标是 Microsoft Sentinel/Log Analytics、Microsoft XDR、Splunk、OData 和其他日志数据源。它还特别支持 [Mordor](https://github.com/OTRF/mordor) 数据集和使用本地数据。 内置的参数化查询允许通过单次函数调用来运行复杂的查询。使用简单的 YAML 架构添加您自己的查询。 [数据查询 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/Data_Queries.ipynb) ## 数据丰富 ### 威胁情报提供程序 TILookup 类可以跨多个威胁情报 提供程序查找 IoC。内置提供程序包括 AlienVault OTX、IBM XForce、VirusTotal 和 Azure Sentinel。 输入可以是单个 IoC 可观测对象,也可以是包含多个可观测对象的 pandas DataFrame。根据提供程序的不同,您可能需要一个账户和一个 API 密钥。某些提供程序还会实施限流(尤其是对于免费层级),这可能会影响执行批量查找。 [威胁情报提供程序](https://msticpy.readthedocs.io/en/latest/data_acquisition/TIProviders.html) 和 [TILookup 使用 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/TIProviders.ipynb) ### 地理位置数据 GeoIP 查找类允许您使用以下任一方式匹配 IP 地址的地理位置: - GeoLiteLookup - Maxmind Geolite (请参阅 ) - IPStackLookup - IPStack (请参阅 ) Folium map [GeoIP 查找](https://msticpy.readthedocs.io/en/latest/data_acquisition/GeoIPLookups.html) 和 [GeoIP Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/GeoIPLookups.ipynb) ### Azure 资源数据、存储和 Azure Sentinel API AzureData 模块包含通过 Azure API 暴露的额外主机详细信息来丰富有关 Azure 主机的数据的功能。AzureSentinel 模块允许您查询事件、检索检测器和搜寻查询。AzureBlobStorage 允许您从 Blob 存储读取和写入数据。 [Azure 资源 API](https://msticpy.readthedocs.io/en/latest/data_acquisition/AzureData.html)、[Azure Sentinel API](https://msticpy.readthedocs.io/en/latest/data_acquisition/Sentinel.html)、[Azure 存储](https://msticpy.readthedocs.io/en/latest/data_acquisition/AzureBlobStorage.html) ## 安全分析 此子包包含多个有助于进行安全调查和溯源的模块: ### 异常序列检测 检测您的 Office、Active Directory 或其他日志数据中的异常事件序列。您可以提取会话(例如,由同一账户发起的活动),并识别和可视化异常的活动序列。例如,检测攻击者在某人的邮箱上设置邮件转发规则。 [异常会话](https://msticpy.readthedocs.io/en/latest/data_analysis/AnomalousSequence.html) 和 [异常序列 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/AnomalousSequence.ipynb) ### 时间序列分析 时间序列分析允许您识别日志数据中的异常模式,同时考虑到正常的季节性变化(例如,一天中的小时、一周中的天等事件的有规律的起伏)。通过分析和可视化,可以突出显示任何数据集中异常的流量或事件活动。 Time Series anomalies [时间序列](https://msticpy.readthedocs.io/en/latest/visualization/TimeSeriesAnomalies.html) ## 可视化 ### 事件时间线 在交互式时间线上显示任何日志事件。使用 [Bokeh 可视化库](https://bokeh.org/),时间线控件使您能够可视化一个或多个事件流,交互式地放大特定时间段并查看已绘制事件的事件详细信息。 Timeline [时间线](https://msticpy.readthedocs.io/en/latest/visualization/EventTimeline.html) 和 [时间线 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/EventTimeline.ipynb) ### 进程树 进程树功能包含两个主要组件: - 进程树创建 - 从主机获取进程创建日志,并构建数据集中进程之间的父子关系。 - 进程树可视化 - 它将处理后的输出作为参数,使用 Bokeh 绘图显示交互式进程树。 提供了一组实用函数,用于从处理后的数据集中提取单独的和部分的树。 Process Tree [进程树](https://msticpy.readthedocs.io/en/latest/visualization/ProcessTree.html) 和 [进程树 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/ProcessTree.ipynb) ## 数据操作和实用函数 ### Pivot 函数 允许您以“实体为中心”的方式使用 *MSTICPy* 功能。所有与特定实体类型(例如 Host、IpAddress、Url)相关的函数、查询和查找都被收集为该实体类的方法。因此,如果您想对 IP 地址执行操作,只需加载 IpAddress 实体并浏览其方法即可。 [Pivot 函数](https://msticpy.readthedocs.io/en/latest/data_analysis/PivotFunctions.html) 和 [Pivot 函数 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/PivotFunctions.ipynb) ### base64unpack Base64 和存档 提取器。它会尝试识别任何 base64 编码的字符串并将其解码。如果结果看起来像受支持的存档类型之一,它将解包内容。每次解码/解包的结果都会被重新检查是否有进一步的 base64 内容,直到达到指定的深度。 [Base64 解码](https://msticpy.readthedocs.io/en/latest/data_analysis/Base64Unpack.html) 和 [Base64Unpack Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/Base64Unpack.ipynb) ### iocextract 使用正则表达式查找妥协指标 模式 - IP 地址、URL、DNS 域、哈希值、文件路径。输入可以是单个字符串或 pandas dataframe。 [IoC 提取](https://msticpy.readthedocs.io/en/latest/data_analysis/IoCExtract.html) 和 [IoCExtract Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/IoCExtract.ipynb) ### eventcluster (实验性) 此模块旨在将大量事件总结为不同模式的集群。大量重复发生的事件通常会使您难以查看独特且值得关注的项目。 Clustering 这是一个使用 SciKit Learn DBScan 实现的无监督学习模块。 [事件聚类](https://msticpy.readthedocs.io/en/latest/data_analysis/EventClustering.html) 和 [事件聚类 Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/EventClustering.ipynb) ### auditdextract 用于加载和解码 Linux 审计日志的模块。它将共享相同消息 ID 的消息折叠为单个事件,解码十六进制编码的数据字段,并执行一些特定事件的格式化和规范化(例如,对于进程启动事件,它会将进程命令行参数重新组合为单个字符串)。 ### syslog_utils 用于支持调查仅启用 syslog 日志的 Linux 主机的模块。这包括用于整理主机数据、聚类登录事件以及检测包含可疑活动的用户会话的函数。 ### cmd_line 一个用于支持检测已知恶意命令行活动或可疑命令行活动模式的模块。 ### domain_utils 一个用于支持调查域名和 URL 的模块,其功能包括验证域名以及对 URL 进行截图。 ### Notebook 微件 这些是基于 [Jupyter ipywidgets](https://ipywidgets.readthedocs.io/) 构建的,将 InfoSec 任务中常用的有用功能(例如列表选择器、查询时间范围设置和事件显示)组合成易于使用的格式。 Time span Widget Alert browser ## MSTICPy 示例 Notebook [MSTICPy Notebooks](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/) ## Azure Sentinel Notebooks GitHub 上的更多 Notebook [Azure Sentinel Notebooks](https://github.com/Azure/Azure-Sentinel-Notebooks) 示例 notebook: - [MSTICPy 功能概览](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) - [账户浏览器](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Account.ipynb) - [域名和 URL 浏览器](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Domain%20and%20URL.ipynb) - [IP 浏览器](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20IP%20Address.ipynb) - [Linux 主机浏览器](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Linux%20Host.ipynb) - [Windows 主机浏览器](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Windows%20Host.ipynb) - [Azure Sentinel notebook 入门](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Getting%20Started%20Guide%20For%20Azure%20Sentinel%20ML%20Notebooks.ipynb) 直接在 GitHub 上查看,或将链接复制并粘贴到 [nbviewer.org](https://nbviewer.jupyter.org/) 中 ## 包含已保存数据的 Notebook 示例 有关此包在实际应用中的更多示例,请参见以下 notebook: - [简单机器学习](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Machine%20Learning%20in%20Notebooks%20Examples.ipynb) ## 支持的平台和包 - msticpy 是跨平台 (OS-independent) 的 - 要求 [Python 3.10 或更高版本](https://www.python.org/dev/peps/pep-0494/) - 有关更多详细信息和版本要求,请参见 [requirements.txt](requirements.txt) ## 贡献 有关(简短的)开发者指南,请参阅此 wiki 文章:[贡献者指南](https://github.com/microsoft/msticpy/wiki/Contributor-guidelines) 本项目欢迎贡献和建议。大多数贡献要求您同意一份贡献者许可协议 (CLA),声明您有权并且确实授予我们使用您的贡献的权利。有关详细信息,请访问 。 当您提交拉取请求时,CLA 机器人会自动确定您是否需要提供 CLA,并适当地装饰 PR(例如,标签、评论)。只需按照机器人提供的说明进行操作即可。对于所有使用我们 CLA 的仓库,您只需执行一次此操作。 本项目已采用 [Microsoft 开源行为准则](https://opensource.microsoft.com/codeofconduct/)。有关更多信息,请参见[行为准则常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/),或通过 [opencode@microsoft.com](mailto:opencode@microsoft.com) 联系我们以提出任何其他问题或发表评论。
标签:Azure Sentinel, DNS 反向解析, IoA, IP 地址批量处理, meg, Microsoft Defender for Endpoint, Microsoft Graph, Microsoft Sentinel, MSTIC, msticpy, NoSQL, Python, 交互式时间线, 信息安全, 地理位置, 威胁丰富, 威胁情报, 子域名变形, 安全调查, 安全运营, 开发者工具, 开源安全工具, 异常检测, 微软, 扫描框架, 指标提取, 插件系统, 数据解包, 无后门, 无线安全, 日志查询, 时间序列分析, 网络安全, 网络安全审计, 进程树, 逆向工具, 逆向工程平台, 隐私保护