Microsoft Sentinel 中的威胁搜寻
作为安全分析师和调查员,你希望在查找安全威胁方面具有前瞻性,但各种系统和安全设备生成了海量数据,导致难以分析和筛选有意义的事件。 Microsoft Sentinel 提供强大的搜寻和查询工具,用于在组织的各个数据源中搜寻安全威胁。 为了帮助安全分析师主动找出未由安全应用甚至计划分析规则检测到的新异常,搜寻式查询可引导你提出正确的问题,以便在网络上已有的数据中发现问题。
例如,一个现成可用的查询可提供有关在基础结构上运行的最不常见进程的数据。 你不希望每次运行时都收到警报。 它们可能完全是误报。 但你可能需要偶尔查看一下查询,看看是否有异常情况。
搜寻查询
在 Microsoft Sentinel 中,选择“搜寻”>“查询”选项卡,运行所有查询或所选子集。 “查询”选项卡列出了所有随“内容中心”的安全解决方案一起安装的搜寻查询,以及你创建或修改的所有其他查询。 每个查询都提供它搜寻的内容以及它在哪种类型的数据上运行。 这些查询按其 MITRE ATT&CK 策略分组。 右侧的图标将对威胁类型进行分类,例如初始访问、暂留和渗透。 MITRE ATT&CK 技术在“技术”列中显示,说明搜寻查询识别的特定行为。
使用“查询”选项卡,通过查看结果计数、峰值或 24 小时内结果计数的变化,确定开始搜寻的位置。 按收藏夹、数据源、MITRE ATT&CK 策略或方法、结果、结果差异或结果差异百分比进行排序和筛选。 查看仍需要连接数据源的查询,并获取有关启用此类查询的建议。
下表介绍了搜寻仪表板中可用的详细操作:
操作 | 说明 |
---|---|
了解查询如何应用于你的环境 | 选择“运行所有查询”按钮,或者使用每行左侧的复选框选择一部分查询,然后选择“运行选定的查询”按钮。 运行查询可能需要几秒到几分钟时间,具体取决于选择的查询数目、时间范围以及要查询的数据量。 |
查看返回结果的查询 | 运行完查询后,使用“结果”筛选器查看返回了结果的查询: - 排序以查看哪些查询的结果最多或最少。 - 通过在“结果”筛选器中选择“N/A”来查看在环境中完全处于非活动状态的查询。 - 将鼠标悬停在“不适用”旁边的信息图标 (i) 上可以查看需要哪些数据源才能使此查询处于活动状态。 |
确定数据高峰 | 根据“结果差异”或“结果差异百分比”进行排序或筛选以识别数据峰值 。 将过去 24 小时的结果与前 24-48 小时的结果进行比较,突出数据量上的任何大差异或相对差异。 |
查看映射到 MITRE ATT&CK 策略的查询 | 表顶部的 MITRE ATT&CK 策略栏中列出了映射到每个 MITRE ATT&CK 策略的查询数。 策略栏会根据当前应用的筛选器集动态更新。 这样你便可在按照给定结果计数、较大结果差异、“不适用”结果或任何其他筛选器集进行筛选时查看显示的 MITRE ATT&CK 策略。 |
查看映射到 MITRE ATT&CK 方法的查询 | 查询还可映射到 MITRE ATT&CK 方法。 可以使用“方法”筛选器按照 MITRE ATT&CK 方法进行筛选或排序。 打开查询后,你能够选择方法来查看 MITRE ATT&CK 方法的说明。 |
将查询保存到收藏夹 | 每次访问“搜寻”页时,都会自动运行已保存到收藏夹的查询。 可以创建自己的搜寻式查询或是克隆并自定义现有搜寻式查询模板。 |
运行查询 | 在搜寻式查询详细信息页中选择“运行查询”,可直接从搜寻页运行该查询。 匹配项数将显示在表中的“结果”列内。 查看搜寻式查询及其匹配项的列表。 |
查看基础查询 | 在查询详细信息窗格中快速查看基础查询。 可以单击“查看查询结果”链接(在查询窗口下方)或“查看结果”按钮(在窗格底部)来查看结果 。 查询会打开“日志”(Log Analytics) 页面。在查询下方,可以查看查询的匹配项。 |
在发生泄漏之前、期间和之后使用查询来执行以下操作:
事件发生之前:等待检测是不够的。 通过每周至少运行一次与你引入工作区中的数据相关的任何威胁搜寻查询,采取主动行动。
通过主动搜寻得出的结果,可以提前了解可确定是否正在发生泄漏的事件,或者这些结果至少可显示环境中存在风险且需要关注的较薄弱区域。
发生泄漏期间:使用 livestream 持续运行特定的查询,从而在结果出现时显示出来。 当你需要主动监视用户事件时(例如,如果你需要验证特定的泄漏是否仍会发生),可使用 livestream 来帮助确定威胁行动者的下一个操作,并在调查接近结束时确认泄漏确实已结束。
发生泄漏后:发生泄漏或事件后,确保改进覆盖范围和见解,以防将来发生类似事件。
根据你从泄漏或事件中获得的见解,修改现有查询或创建新的查询,以帮助进行早期检测。
如果发现或创建了一个可以提供有关潜在攻击的宝贵见解的搜寻式查询,基于该查询创建自定义检测规则,并将这些见解作为警报传达给安全事件响应者。
查看查询的结果,然后选择“新建警报规则”>“创建 Microsoft Sentinel 警报”。 使用“分析规则向导”根据查询创建新规则。 有关详细信息,请参阅创建自定义分析规则以检测威胁。
若要查找更多查询和数据源,请转到 Microsoft Sentinel 中的“内容中心”,或参考 Microsoft Sentinel GitHub 存储库等社区资源。
现成可用的搜寻查询
许多安全解决方案都包括现成可用的搜寻查询。 从“内容中心”安装包含搜寻查询的解决方案后,该解决方案的现成可用的查询会显示在搜寻“查询”选项卡上。查询针对存储在日志表中的数据运行,用于进程创建、DNS 事件或其他事件类型。
许多可用的搜寻查询都是由 Microsoft 安全研究人员持续开发的。 他们会向安全解决方案添加新查询,并微调现有查询,以便提供一个入口点来查找新的检测和攻击。
自定义搜寻查询
创建或编辑查询并将其另存为自己的查询,或是将其与同一租户中的用户共享。 在 Microsoft Sentinel 中,从“搜寻”>“查询”选项卡创建自定义搜寻查询。
有关详细信息,请参阅在 Microsoft Sentinel 中创建自定义搜寻查询。
实时流会话
创建交互式会话,以便在事件发生时测试新创建的查询、在找到匹配项时从会话中获取通知,并在必要时启动调查。 可使用任何 Log Analytics 查询快速创建实时流会话。
在事件发生时测试新创建的查询
可测试和调整查询,而不与正在主动应用于事件的当前规则出现任何冲突。 确认这些新查询按预期工作后,可选择一个选项来将会话提升为警报,轻松地将这些查询提升到自定义警报规则。
出现威胁时接收通知
可将威胁数据馈送与聚合日志数据进行比较,并在出现匹配项时接收通知。 威胁数据馈送是正在进行的与潜在威胁或当前威胁相关的数据流,因此通知可能表示你的组织存在潜在威胁。 创建实时流会话,而不是自定义警报规则,以便就潜在的问题收到通知,而没有维护自定义警报规则的开销。
启动调查
如果有待处理的调查涉及到主机或用户等资产,在该资产上发生特定(或任何)活动时,在日志数据中查看此活动。 在活动发生时接收通知。
有关详细信息,请参阅在 Microsoft Sentinel 中使用搜寻实时流检测威胁。
用于跟踪数据的书签
威胁搜寻通常要检查大量的日志数据,查找恶意行为的证据。 在此过程中,调查者可能会发现某些事件,为了验证存在可能性的假想和了解整个攻击情况,需要记住、重新访问和分析这些事件。
在搜寻和调查过程中,你可能会遇到看上去异常或可疑的查询结果。 为这些项加入书签,以供将来引用它们(如在创建或扩充事件以进行调查的情况下)。 事件(例如潜在的根本原因、泄漏的征兆或其他值得注意的事件)应该作为书签引发。 如果已添加书签的关键事件严重到需要进行调查,请将其应升级为事件。
在结果中,标记要保留的任何行的复选框,然后选择“添加书签”。 这会为每个标记行创建一条记录(一个书签),其中包含行结果以及创建结果的查询。 你可以在每个书签中添加自己的标记和备注。
- 与计划分析规则一样,可以使用实体映射来扩充书签,以提取多个实体类型和标识符,并使用 MITRE ATT&CK 映射来关联特定策略和技术。
- 书签默认使用与生成书签结果的搜寻查询相同的实体和 MITRE ATT&CK 技术映射。
通过在“搜寻”主页中单击“书签”选项卡来查看所有添加了书签的结果 。 将标记添加到书签,以将这些书签分类,从而方便筛选。 例如,如果你正在调查某种攻击活动,可为该活动创建一个标记,将该标记应用到所有相关书签,然后根据该活动筛选所有书签。
调查单个添加了书签的结果,方法是选择该书签,然后在详细信息窗格中单击“调查”以打开调查体验。 使用交互式实体图形关系图和时间线来查看、调查和直观地传达你的发现结果。 还可以直接选择列出的实体,以查看该实体的相应实体页。
还可以从一个或多个书签创建事件,或向现有事件添加一个或多个书签。 选择要使用的任何书签左侧的复选框,然后选择“事件操作”>“创建新事件”或“添加到现有事件”。 像对待任何其他事件一样会审和调查该事件。
直接在 Log Analytics 工作区中的 HuntingBookmark 表中查看已加入书签的数据。 例如:
通过从表中查看书签,可以筛选、汇总和联接带有书签的数据及其他数据源,从而可以轻松查找证据。
若要开始使用书签,请参阅在 Microsoft Sentinel 中使用搜寻实时流检测威胁。
为调查提供支持的笔记本
当搜寻和调查变得更加复杂时,使用 Microsoft Sentinel 笔记本的机器学习、可视化和数据分析功能来增强活动。
笔记本提供一种虚拟沙盒,它配备有自己的内核,可在其中执行完整的调查。 笔记本可以包含原始数据、对该数据运行的代码、结果及其可视化效果。 保存笔记本,从而可与他人共享并在组织中重用它们。
当搜寻或调查变得太大而难以记住或无法查看详细信息,或者需要保存查询和结果时,笔记本可能会很有帮助。 为了帮助你创建和共享笔记本,Microsoft Sentinel 提供了 Jupyter Notebook,它是一个开源的、交互式开发和数据操作环境,直接集成在 Microsoft Sentinel“笔记本”页中。
有关详细信息,请参阅:
下表介绍了一些使用 Jupyter Notebook 的方法,以便为 Microsoft Sentinel 中的进程提供帮助:
方法 | 说明 |
---|---|
数据暂留、可重复性和回溯 | 如果正在处理许多查询和结果集,则很可能遭遇无法连接的情况。 需要确定要保留哪些查询和结果,以及如何在单个报告中累积有用的结果。 使用 Jupyter Notebook 在运行时保存查询和数据,使用变量重新运行具有不同值或日期的查询,或保存查询以在将来的调查中重新运行。 |
脚本和编程 | 使用 Jupyter Notebook 向查询添加编程,包括: - Kusto 查询语言 (KQL) 或 SQL 等“声明性”语言,以在可能比较复杂的单个语句中对逻辑进行编码。 - “过程”编程语言,以在一系列步骤中运行逻辑。 将逻辑拆分为步骤有助于查看和调试中间结果,添加查询语言中可能不可用的功能以及在之后的处理步骤中重用部分结果。 |
指向外部数据的链接 | 尽管 Microsoft Sentinel 表包含大多数遥测数据和事件数据,但 Jupyter Notebook 可以链接到通过网络或文件访问的任何数据。 使用 Jupyter Notebook 可以包括以下数据: - 不拥有的外部服务数据,例如地理位置数据或威胁情报源 - 仅存储在组织内部的敏感数据,例如人力资源数据库或高价值资产列表 - 尚未迁移到云的数据。 |
专用数据处理、机器学习和可视化工具 | Jupyter Notebook 提供更多可视化效果、机器学习库以及数据处理和转换功能。 例如,将 Jupyter Notebook 与以下 Python 功能结合使用: - pandas,用于数据处理、清理和工程 - Matplotlib、HoloViews 和 Plotly,用于可视化效果 - NumPy 和 SciPy,用于高级数值和科学处理 - scikit-learn,用于机器学习 - TensorFlow、PyTorch 和 Keras,用于深度学习 提示:Jupyter Notebook 支持多种语言内核。 通过 magics,可以使用其他语言执行单个单元格,从而在同一个笔记本中混合使用不同语言。 例如,可以使用 PowerShell 脚本单元格检索数据,采用 Python 处理数据,并使用 JavaScript 呈现可视化效果。 |
MSTIC、Jupyter 和 Python 安全工具
Microsoft 威胁情报中心 (MSTIC) 是由 Microsoft 安全分析师和工程师组成的团队,他们为多个 Microsoft 平台创作安全检测,并负责威胁识别和调查。
MSTIC 构建了 MSTICPy,它是用于在 Jupyter Notebook 中进行信息安全调查和搜寻的库。 MSTICPy 提供可重用的功能,旨在加快笔记本创建速度,让用户更轻松地在 Microsoft Sentinel 中读取笔记本。
例如,MSTICPy 可以:
- 查询来自多个源的日志数据。
- 使用威胁情报、地理位置和 Azure 资源数据扩充数据。
- 从日志中提取活动指标 (IoA),并解压缩编码数据。
- 执行复杂的分析,例如异常会话检测和时序分解。
- 使用交互式时间线、进程树和多维变形图表可视化数据。
MSTICPy 还包括一些省时的笔记本工具,例如用于设置查询时间边界、从列表选择和显示项以及配置笔记本环境的小组件。
有关详细信息,请参阅:
- MSTICPy 文档
- 具有 Microsoft Sentinel 搜寻功能的 Jupyter 笔记本
- 适用于 Microsoft Sentinel 中的 Jupyter Notebook 和 MSTICPy 的高级配置
有用的运算符和函数
搜寻式查询是以 Kusto 查询语言 (KQL) 生成的。KQL 是一种使用 IntelliSense 语言的强大查询语言,提供所需的强大功能和灵活性,可让你进一步提升搜寻的覆盖范围。
它是分析规则中的查询使用的语言,也是 Microsoft Sentinel 中别处的查询使用的语言。 有关详细信息,请参阅查询语言引用。
以下运算符对于 Microsoft Sentinel 搜寻查询特别有用:
where - 筛选表,获取满足谓词的行子集。
summarize - 生成可聚合输入表内容的表。
联接 - 通过匹配每个表中指定列的值,合并两个表的行以组成新表。
count - 返回输入记录集中的记录数。
top - 返回按指定列排序的前 N 个记录。
limit - 返回指定的行数。
project - 选择要包含、重命名或删除的列,并插入新的计算列。
extend - 创建计算列并将其追加到结果集中。
makeset - 返回表达式在组中所获取非重复值集的动态 (JSON) 数组
find - 在一组表中查找与谓词相匹配的行。
adx() - 此函数从 Microsoft Sentinel 搜寻体验和 Log Analytics 对 Azure 数据资源管理器数据源执行跨资源查询。