项目地址:
https://github.com/microsoft/msticpy
msticpy是 Jupyter Notebooks 中用于信息安全调查和搜索的库。它包括以下功能:
- 查询多个来源的日志数据
- 使用威胁情报、地理位置和 Azure 资源数据丰富数据
- 从日志中提取活动指标 (IoA) 并解压编码数据
- 执行复杂的分析,例如异常会话检测和时间序列分解
- 使用交互式时间线、流程树和多维变形图可视化数据
它还包括一些节省时间的笔记本工具,例如用于设置查询时间边界、从列表中选择和显示项目以及配置笔记本环境的小部件。
msticpy包最初是为了支持 Azure Sentinel 的Jupyter Notebooks 创作 而开发的。虽然 Azure Sentinel 仍然是我们工作的重点,但我们正在扩展数据查询/获取组件以从其他来源提取日志数据(目前支持 Splunk、Microsoft Defender for Endpoint 和 Microsoft Graph,但我们正在积极致力于对数据的支持)来自其他 SIEM 平台)。大多数组件还可以与任何来源的数据一起使用。Pandas DataFrame 被用作几乎所有组件普遍存在的输入和输出格式。还有一个数据提供程序,可以轻松处理本地 CSV 文件和腌制 DataFrame 中的数据。
该软件包满足安全调查人员和猎人的三个核心需求:
- 获取和丰富数据
- 分析数据
- 可视化数据
我们欢迎反馈、错误报告、新功能和贡献的建议。
安装
对于核心安装:
pip install msticpy
如果您将MSTICPy与 Azure Sentinel 一起使用,则应使用“azsentinel”额外包进行安装:
pip install msticpy[azsentinel]
或最新的开发版本
pip install git+https://github.com/microsoft/msticpy
升级
要将 msticpy 升级到最新的公共非测试版,请运行:
pip install --upgrade msticpy
请注意,最好复制 msticpyconfig.yaml 并将其存储在磁盘上但位于 msticpy 文件夹之外,并在环境变量中引用它。这可以防止您在每次更新 msticpy 安装时丢失配置。
文档
完整文档位于ReadTheDocs
许多模块的示例笔记本位于 docs/notebooks 文件夹和随附的笔记本中。
您还可以浏览本文档末尾引用的示例笔记本,以查看上下文中使用的一些功能。您可以在 mybinder.org 上的交互式演示中使用一些包函数。
日志数据采集
QueryProvider 是一个针对 Azure Sentinel/Log Analytics、Splunk、OData 和其他日志数据源的可扩展查询库。它还特别支持 魔多数据集和使用本地数据。
内置参数化查询允许从单个函数调用运行复杂的查询。使用简单的 YAML 架构添加您自己的查询。
数据丰富
威胁情报提供商
TILookup 类可以跨多个 TI 提供商查找 IoC。内置提供程序包括 AlienVault OTX、IBM XForce、VirusTotal 和 Azure Sentinel。
输入可以是单个 IoC observable 或包含多个 observable 的 pandas DataFrame。根据提供商的不同,您可能需要一个帐户和 API 密钥。一些提供商还强制执行限制(特别是对于免费套餐),这可能会影响批量查找的执行。
地理位置数据
GeoIP 查找类允许您使用以下任一方式匹配 IP 地址的地理位置:
- GeoLiteLookup – Maxmind Geolite(参见https://www.maxmind.com)
- IPStackLookup – IPStack(参见https://ipstack.com)
Azure 资源数据、存储和 Azure Sentinel API
AzureData 模块包含通过 Azure API 公开的其他主机详细信息来丰富有关 Azure 主机详细信息的数据的功能。AzureSentinel 模块允许您查询事件、检索检测器和搜寻查询。AzureBlogStorage 允许您从 Blob 存储中读取和写入数据。
Azure 资源 API、 Azure Sentinel API、 Azure 存储
证券分析
该子包包含几个有助于安全调查和狩猎的模块:
异常序列检测
检测 Office、Active Directory 或其他日志数据中的异常事件序列。您可以提取会话(例如,由同一帐户发起的活动)并识别和可视化异常的活动序列。例如,检测攻击者在某人的邮箱上设置邮件转发规则。
时间序列分析
时间序列分析允许您识别日志数据中的异常模式,同时考虑正常的季节性变化(例如,一天中的几个小时、一周中的几天等事件的规律性潮起潮落)。使用分析和可视化可以突出显示任何数据集的异常流量或事件活动。
可视化
事件时间表
在交互式时间轴上显示所有日志事件。使用 Bokeh 可视化库,时间线控件使您能够可视化一个或多个事件流、以交互方式放大特定时间段并查看绘制事件的事件详细信息。
进程树
流程树功能有两个主要组件:
- 进程树创建 – 从主机获取进程创建日志并在数据集中的进程之间建立父子关系。
- 流程树可视化 – 这采用处理后的输出,使用散景图显示交互式流程树。
有一组实用函数可以从处理的数据集中提取单个树和部分树。
数据操作和实用功能
枢轴函数
允许您以“以实体为中心”的方式使用MSTICPy功能。与特定实体类型(例如主机、IpAddress、Url)相关的所有函数、查询和查找都作为该实体类的方法收集在一起。因此,如果您想使用 IP 地址执行操作,只需加载 IpAddress 实体并浏览其方法即可。
Base64解包
Base64 和存档(gz、zip、tar)提取器。它将尝试识别任何 Base64 编码的字符串并尝试对其进行解码。如果结果看起来像受支持的存档类型之一,它将解压缩内容。每次解码/解包的结果都会重新检查以获取更多的 Base64 内容并达到指定的深度。
Base64 解码 和 Base64Unpack Notebook
碘提取物
使用正则表达式查找妥协指示符 (IoC) 模式 – IP 地址、URL、DNS 域、哈希值、文件路径。输入可以是单个字符串或 pandas 数据帧。
事件集群(实验)
该模块旨在用于将大量事件汇总为不同模式的集群。大量重复事件通常会让人很难看到独特且有趣的项目。
这是使用 SciKit Learn DBScan 实现的无监督学习模块。
审计摘要
用于加载和解码 Linux 审核日志的模块。它将共享相同消息ID的消息折叠成单个事件,解码十六进制编码的数据字段并执行一些特定于事件的格式化和规范化(例如,对于进程启动事件,它将把进程命令行参数重新组装成单个字符串)。
系统日志实用程序
支持仅启用系统日志记录的 Linux 主机调查的模块。这包括整理主机数据、集群登录事件和检测包含可疑活动的用户会话的功能。
命令行
支持检测已知恶意命令行活动或可疑命令行活动模式的模块。
域实用程序
支持域名和 URL 调查的模块,具有验证域名和截屏 URL 的功能。
笔记本小部件
这些是从Jupyter ipywidgets集合构建的,并将信息安全任务中有用的常见功能(例如列表选择器、查询时间边界设置和事件显示)分组为易于使用的格式。
MSTICPy 笔记本示例
Azure Sentinel Notebooks GitHub 上的更多笔记本
笔记本示例:
直接在 GitHub 上查看或将链接复制并粘贴到nbviewer.org
包含已保存数据的笔记本示例
有关在实践中使用此包的更多示例,请参阅以下笔记本:
支持的平台和软件包
- msticpy 与操作系统无关
- 需要Python 3.8 或更高版本
- 有关更多详细信息和版本要求,请参阅requirements.txt 。