跳转到主要内容

MSTIC安全工具

项目描述

MSTIC Jupyter和Python安全工具

GitHub Actions build Azure Pipelines build Downloads BlackHat Arsenal 2020

Microsoft威胁情报Python安全工具。

msticpy 是一个用于Jupyter笔记本中信息安全和狩猎的库。它包括以下功能:

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

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

Timeline

msticpy 包最初开发用于支持 Jupyter笔记本 编写用于 Azure Sentinel。虽然Azure Sentinel仍然是我们工作的重点,但我们正在扩展数据查询/获取组件以从其他来源提取日志数据(目前支持Splunk、Microsoft Defender for Endpoint和Microsoft Graph,但我们正在积极开发支持其他SIEM平台的数据)。大多数组件也可以用于任何来源的数据。Pandas DataFrames被用作几乎所有组件的通用输入和输出格式。还有一个数据提供程序,可以轻松地从本地CSV文件和pickle DataFrames中处理数据。

该包解决了安全调查员和狩猎者三个核心需求

  • 获取和丰富数据
  • 分析数据
  • 可视化数据

我们欢迎反馈、错误报告、新功能建议和贡献。

安装

对于核心安装

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上的交互式演示中尝试一些包功能。

Binder


日志数据获取

QueryProvider 是一个可扩展的查询库,针对 Azure Sentinel/Log Analytics、Splunk、OData 和其他日志数据源。它还专门支持 Mordor 数据集和本地数据。

内置的参数化查询允许通过单个函数调用运行复杂的查询。使用简单的 YAML 架构添加您自己的查询。

数据查询笔记本

数据丰富

威胁情报提供者

The TILookup 类可以在多个 TI 提供者中查找 IoC。内置提供者包括 AlienVault OTX、IBM XForce、VirusTotal 和 Azure Sentinel。

输入可以是一个IoC可观察对象,或者包含多个可观察对象的pandas DataFrame。根据提供商的不同,您可能需要一个账户和API密钥。一些提供商还实施限制速率(尤其是免费层),这可能会影响批量查找的性能。

TIProvidersTILookup 使用笔记本

地理位置数据

GeoIP查找类允许您使用以下方式匹配IP地址的地理位置:

Folium map

GeoIP 查找GeoIP 笔记本

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

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

Azure 资源 APIAzure Sentinel APIAzure 存储

安全分析

此子包包含一些模块,有助于进行安全调查和狩猎

异常序列检测

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

异常会话异常序列笔记本

时间序列分析

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

Time Series anomalies

时间序列

可视化

事件时间线

在交互式时间线中显示任何日志事件。使用 Bokeh 可视化库,时间线控件允许您可视化一个或多个事件流,交互式地放大特定时间段并查看所绘事件的事件详细信息。

Timeline

时间线时间线笔记本

进程树

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

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

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

Process Tree

进程树进程树笔记本

数据处理和实用函数

转置函数

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

转置函数转置函数笔记本

base64unpack

Base64和存档(gz、zip、tar)提取器。它将尝试识别任何Base64编码的字符串并尝试解码它们。如果结果看起来像支持的存档类型之一,它将解包内容。对每个解码/解包的结果都会重新检查以进一步查找Base64内容,并达到指定的深度。

Base64解码Base64Unpack笔记本

iocextract

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

IoC提取IoCExtract笔记本

eventcluster(实验性)

本模块旨在用于将大量事件总结为不同模式的集群。大量重复事件往往难以看到独特和有趣的项目。

Clustering

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

事件聚类事件聚类笔记本

auditdextract

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

syslog_utils

模块,用于支持仅启用syslog日志记录的Linux主机的调查。这包括汇总主机数据、聚类登录事件和检测包含可疑活动的用户会话的函数。

cmd_line

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

domain_utils

模块,用于支持调查域名和URL,包括验证域名和截图URL的函数。

笔记本小部件

这些是从 Jupyter ipywidgets 收集中构建的,并将常用功能(如列表选择器、查询时间边界设置和事件显示)组合到易于使用的格式中,以用于信息安全任务。

Time span Widget

Alert browser


示例MSTICPy笔记本

MSTICPy笔记本

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

Azure Sentinel笔记本

示例笔记本

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

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

请参阅以下笔记本,以获取更多此软件包在实际应用中使用示例

支持的平台和包


贡献

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

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

当您提交拉取请求时,CLA机器人会自动判断您是否需要提供CLA,并相应地装饰PR(例如,标签、注释)。只需遵循机器人提供的说明。您只需在整个使用我们CLA的所有仓库中做一次。

本项目已采用 微软开源行为准则。有关更多信息,请参阅行为准则FAQ或通过opencode@microsoft.com联系以获取任何额外的问题或评论。

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

msticpy-2.13.1.tar.gz (691.1 kB 查看哈希值)

上传时间 源代码

构建版本

msticpy-2.13.1-py3-none-any.whl (925.1 kB 查看哈希值)

上传时间 Python 3

由以下支持