Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
AzureHunter — 一个用于在Azure和O365数据上运行威胁狩猎剧本的云取证PowerShell模块 | Kitploit
工具/GitHubGitHub/darkquasar/azurehunter
信息收集数字取证云安全威胁情报事件响应日志分析
GitHubdarkquasar/azurehunter

AzureHunter

一个用于在Azure和O365数据上运行威胁狩猎剧本的云取证PowerShell模块

查看仓库
7958453年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

azurehunter-logo

一个用于在 Azure 和 O365 数据上运行威胁狩猎剧本的 PowerShell 模块,适用于云取证目的。

ko-fi

CI PS Gallery Coverage Status Documentation Status azurehunter-demo-gif

入门指南

1. 确认您拥有正确的 O365 权限

为了能够对 UnifiedAuditLog 拥有只读访问权限,需要在 Exchange Online 中具备以下角色:View-Only Audit Logs 或 Audit Logs。

默认情况下,这些角色已分配给 Exchange 管理中心中的 Compliance Management 角色组。

注意:如果您是安全分析师、事件响应人员或威胁猎人,并且您的组织没有授予您对这些审计日志的只读访问权限,那么您需要严肃质疑他们的检测和响应策略!

更多信息:

  • 如何使用 GUI 搜索审计日志
  • 管理 Exchange Online 中的角色组
  • 如何启用 UnifiedAuditLog

注意:管理员可以通过在 Azure 租户云 shell 或连接到 Azure 的本地 PowerShell 实例中运行 Get-ManagementRoleEntry "*\Search-UnifiedAuditLog" 来验证这些要求。

2. 确保已安装 ExchangeOnlineManagement v2 PowerShell 模块

请确认您已安装 ExchangeOnlineManagement(EXOv2)。您可以在网上找到安装说明,或直接前往我在 the soc analyst scrolls 的小知识库查看。

3. 克隆仓库或从 PSGallery 安装 AzureHunter

3.1 克隆仓库

  1. 克隆此仓库
  2. 导入模块 Import-Module .\source\AzureHunter.psd1

3.2 从 PSGallery 安装 AzureHunter

只需执行以下操作:

root@kitploit:~
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter

什么是 UnifiedAuditLog?

统一审计日志包含在 Microsoft 365 管理中心或 Azure 管理门户中执行的用户、组、应用程序、域和目录活动。有关 Azure AD 事件的完整列表,请参阅 RecordTypes 列表。

UnifiedAuditLog 是云取证信息的极好来源,因为它包含关于多种类型云操作的大量数据,如 ExchangeItems、SharePoint、Azure AD、OneDrive、数据治理、数据丢失防护、Windows Defender 警报和隔离事件、Microsoft Defender for Office 365 中的威胁情报事件,等等,不一而足!

AzureHunter 数据一致性检查

AzureHunter 实现了一些有用的逻辑,以确保从 Azure 和 O365 审计日志中挖掘和导出最高的日志密度。为此,每个周期(批次)执行两项不同的操作:

  1. 自动窗口时间缩减:此检查确保时间间隔根据 ResultSizeUpperThreshold 参数(默认为 20k)缩减到最佳间隔。这意味着,如果您指定的 TimeInterval 内返回的日志数量高于 ResultSizeUpperThreshold,则会自动进行调整。
  2. 顺序数据检查:返回的记录索引是否顺序有效?

azurehunter-logical-consistency-checks

使用方法

确保您已连接到 ExchangeOnline

建议在运行任何 AzureHunter 命令之前先运行 Connect-ExchangeOnline。该程序会检查是否存在活动的远程会话并尝试连接,但某些版本的 PowerShell 不允许这样做,无论如何您都需要自行连接。

运行 AzureHunter

AzureHunter 有两个主要命令:Search-AzureCloudUnifiedLog 和 Invoke-AzHunterPlaybook。

Search-AzureCloudUnifiedLog 的目的是实现复杂的逻辑,以确保从 Azure 中挖掘到最高百分比的 UnifiedAuditLog 记录。默认情况下,它会将提取并去重后的记录导出到 CSV 文件。

Invoke-AzHunterPlaybook 的目的是为存储在 playbooks 文件夹中的狩猎剧本提供灵活的接口。这些剧本设计为任何人都可以贡献自己的分析和想法。到目前为止,只开发了两个非常简单的剧本:AzHunter.Playbook.Exporter 和 AzHunter.Playbook.LogonAnalyser。Exporter 负责对数据应用去重和排序操作后导出记录。LogonAnalyser 处于测试模式,提取 Operations 属性为 UserLoggedIn 的事件。它是一个展示如何通过剧本实现功能以及构建剧本的简单程度的示例。

运行 Search-AzureCloudUnifiedLog 时,您可以传入一个剧本列表,以便在每个日志批次上运行。Search-AzureCloudUnifiedLog 会通过 Invoke-AzHunterPlaybook 将批次传递给剧本。

最后,Invoke-AzHunterPlaybook 也可以独立使用。如果您有 UnifiedAuditLog 记录的导出文件,可以将其加载到 PowerShell 数组中,然后传递给此命令并指定相应的剧本。

示例 1 | 在 Azure UnifiedAuditLog 上运行搜索并将记录提取到 CSV 文件(默认行为)

root@kitploit:~
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose

此命令将:

  • 在 StartDate 和 EndDate 之间搜索数据
  • 在这两个日期之间实现一个 12 小时的窗口,用于扫描整个时间间隔(StartDate --> EndDate)。该窗口将自动缩减和调整,以在窗口内提供最大数量的记录,从而确保更高的输出质量。时间窗口按顺序滑动,直到达到 EndDate。
  • AggregatedResultsFlushSize 参数指定下游剧本将处理的记录批次。我们在此告诉 AzureHunter,一旦总记录数达到 5000,就处理该批次。这样,您可以即时获取结果,而无需等待数小时直到大量记录被导出到 CSV 文件。

示例 2 | 对 CSV 文件运行狩猎剧本

我们假设您已将 UnifiedAuditLog 记录导出到 CSV 文件,然后可以执行以下操作:

root@kitploit:~
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'

您可以通过逗号分隔运行多个剧本,它们将按顺序执行:

root@kitploit:~
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'

示例 3 | 运行狩猎剧本以生成干净的电子发现摘要报告

我们假设您已将电子发现摘要报告导出到 CSV 文件,然后可以执行以下操作:

root@kitploit:~
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'

或者,我们可以向剧本传递一些参数,如下所示:

root@kitploit:~
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}

参数 "CsvRecordsBatchSize" 将告诉剧本以每批 700 条记录的方式将记录刷新到磁盘。

为什么?

自从 SolarWinds 供应链攻击 之后,许多工具从网络取证专家的深层熔炉中涌现出来,由网络安全忍者精心开发。这些工具通常帮助您在 Azure 中执行云取证。我开发 AzureHunter 的目的不是给这个拥挤的空间增加更多噪音,但我发现自己需要解决一些我观察到的该领域某些工具存在的差距(我可能错了,因为目前工具泛滥,我并非全都了解……):

  1. Azure 云取证工具通常不解决 UnifiedAuditLog 的 PowerShell API 的复杂性。当导出大量数据时,这个 API 非常不稳定且不一致。我想开发一个足够容错的接口,以解决其中一些问题,并专注于 UnifiedAuditLog,因为它是包含用户、应用程序和服务最相关、最详细活动日志的 Azure 构件。
  2. Azure 云取证工具通常不注重开发可扩展的 Playbooks。我想提出一个简单的框架,帮助社区创建和共享新的剧本,以从相同数据中提取不同类型的信息。

然而,如果您正在寻找功能更丰富、更成熟的 Azure 云取证应用程序,我建议您查看以下由网络安全专家创建的出色应用程序:

  • CISA 的 Sparrow
  • HAWK
  • CrowdStrike Reporting Tool for Azure CRT

我相信还有更多的工具列表,但这些是我能想到的。请随时提出更多建议。

为什么选择 PowerShell?

  1. 我不想重新发明轮子
  2. 是的,Azure UnifiedAuditLog 的 PowerShell 接口不稳定,但从投入生产的时间来看,如果我使用 .NET、Golang 或 Python 等语言编写全新的接口来实现相同目标,将花费我大量的时间。与此同时,网络防御和响应的世界不会等待!

TODO

  • 指定剧本需要包含的标准元数据属性,以便 AzureHunter 能够利用它们。
  • 允许剧本指定对其他剧本的依赖关系,以便一个剧本需要在另一个之前运行。剧本章节可能产生有趣的结果并避免代码重复。
  • 开发 Pester 测试和 Coveralls 结果。
  • 在 ReadTheDocs 中开发文档。
  • 允许以 SIGMA 规则标准指定剧本(这可能需要向 SIGMA 仓库提交 PR)。

更多信息

有关更多信息

  • AzureHunter.readthedocs.io
  • github.com/darkquasar/AzureHunter
  • ThreatHunterz.com

致谢与支持者

感谢所有支持本项目和其它开源项目的人!你们正在帮助像我这样的人走上 网络战士之路,并向社区交付高质量的工具制品 :)

致谢

  • 图标由 itim2101 制作,来自 www.flaticon.com
下载工具