图文 关于 BloodHound 攻击研究工具包

课程时长 12秒

学习期限 36个月 退款期限 不支持

优惠价格 免费 会员价格 免费

难度级别 初级 学习人次 52 综合评分 5.0

内容实用 5.0分

简洁易懂 5.0分

逻辑清晰 5.0分

52
0
0
  • 详情
  • 目录

树皮标志

BARK 代表 BloodHound 攻击研究工具包。它是一个 PowerShell 脚本,旨在帮助 BloodHound Enterprise 团队研究和持续验证滥用原语。BARK 目前专注于 Microsoft 的 Azure 产品和服务套件。

BARK 不需要第三方依赖。BARK 的功能被设计为尽可能简单和可维护。大多数函数都是非常简单的包装器,用于向各种 REST API 端点发出请求。BARK 的基本功能甚至不需要彼此 - 您可以从 BARK 中提取几乎任何 BARK 功能,并且它将作为您自己的脚本中的独立功能完美运行。

作者和贡献者

主要作者:Andy Robbins @_wald0

贡献者:Jonas Bülow Knudsen @Jonas_B_K Fabian Bader @fabian_bader CravateRouge @CravateRouge g60ocR @g60ocR

入门

多种方法可以导入 PowerShell 脚本。这是一种方法:

首先,通过克隆此存储库或简单地从 GitHub 复制/粘贴其原始内容来下载 BARK.ps1。

git clone https://github.com/BloodHoundAD/BARK

现在,cd 进入 PS1 所在的目录:

cd BARK

最后,您可以像这样点导入 PS1:

. .\BARK.ps1

按回车键,您的 PowerShell 实例现在可以访问 BARK 的所有功能。

运行你的第一个 BARK 命令

除了极少数例外,Azure API 端点需要身份验证才能与之交互。BARK 附带一些功能,可帮助您获取与 MS Graph 和 Azure REST API 交互所需的令牌。任何与需要身份验证的 Azure API 交互的 BARK 函数都需要你提供令牌。

假设您想要列出 Azure Active Directory 租户中的所有用户。您首先需要获得一个适用于 MS Graph 的令牌。有很多方法可以获得这个令牌:

如果您有该租户中 AzureAD 用户的用户名/密码组合,您可以首先使用 BARK 的函数为该用户获取刷新令牌 Get-AZRefreshTokenWithUsernamePassword

$MyRefreshTokenRequest = Get-AZRefreshTokenWithUsernamePassword -username "arobbins@contoso.onmicrosoft.com" -password "MyVeryCoolPassword" -TenantID "contoso.onmicrosoft.com"

您刚刚创建的结果对象 $MyRefreshTokenRequest 将包含一个供您的用户使用的刷新令牌。您现在可以使用此刷新令牌请求 MS Graph 范围的令牌:

$MyMSGraphToken = Get-MSGraphTokenWithRefreshToken -RefreshToken $MyRefreshTokenRequest.refresh_token -TenantID "contoso.onmicrosoft.com"

现在,这个新对象 $MyMSGraphToken 将为您的用户提供一个 MS Graph-scoped JWT 作为其属性值之一。您现在可以使用此令牌列出 AzureAD 租户中的所有用户:

$MyAADUsers = Get-AllAzureADUsers -Token $MyMSGraphToken.access_token -ShowProgress

完成后,$MyAADUsers 变量将由代表 AzureAD 租户中所有用户的对象填充。

令牌管理和操作功能

  • Parse-JWTToken 将采用 Base64 编码的 JWT 作为输入并为您解析它。用于验证正确的令牌受众和声明。
  • Get-AZRefreshTokenWithUsernamePassword 使用用户提供的用户名和密码从 login.microsoftonline.com 请求令牌集合,包括刷新令牌。如果用户有多重身份验证要求或受条件访问策略的影响,这将失败。
  • Get-MSGraphTokenWithClientCredentials 请求具有客户端 ID 和密码的 MS Graph 范围的 JWT。对于作为 AzureAD 服务主体进行身份验证很有用。
  • Get-MSGraphTokenWithRefreshToken 使用用户提供的刷新令牌请求 MS Graph 范围的 JWT。
  • Get-MSGraphTokenWithPortalAuthRefreshToken 使用用户提供的 Azure Portal Auth Refresh 令牌请求 MS Graph 范围的 JWT。
  • Get-AzureRMTokenWithClientCredentials 请求具有客户端 ID 和机密的 AzureRM 范围的 JWT。对于作为 AzureAD 服务主体进行身份验证很有用。
  • Get-ARMTokenWithPortalAuthRefreshToken 使用用户提供的 Azure Portal Auth Refresh 令牌请求 AzureRM 范围的 JWT。
  • Get-ARMTokenWithRefreshToken 使用用户提供的刷新令牌请求 AzureRM 范围的 JWT。
  • Get-AzurePortalTokenWithRefreshToken 使用用户提供的刷新令牌请求 Azure 门户身份验证刷新令牌。

BARK 中基于刷新令牌的功能基于[ https://twitter.com/424f424f](Steve Borosh)的https://github.com/rvrsh3ll/TokenTactics 中的功能[](https://twitter.com/424f424f](Steve)

滥用功能

  • Set-AZUserPassword 将尝试将另一个用户的密码设置为用户提供的新值。
  • Reset-AZUserPassword 将尝试重置另一个用户的密码。如果成功,输出将包含 Azure 生成的新用户密码
  • New-AzureRMRoleAssignment 将尝试将用户指定的 AzureRM 角色分配授予特定范围内的特定主体。
  • New-AppRegSecret 将尝试为现有的 AzureAD 应用注册创建新的机密。
  • New-ServicePrincipalSecret 将尝试为现有 AzureAD 服务主体创建新机密。
  • New-AppRoleAssignment 将尝试向服务主体授予应​​用程序角色。例如,您可以使用它来授予服务主体 RoleManagement.ReadWrite.Directory 应用程序角色。

枚举函数

  • Get-AzureRMRoleDefinitions 收集订阅范围内描述的所有角色定义,包括自定义角色。
  • Get-MGAppRoles 收集由 MS Graph 服务主体提供的应用程序角色。
  • Get-AllAzureADApps 收集所有 AzureAD 应用程序注册对象。
  • Get-AllAzureADServicePrincipals 收集所有 AzureAD 服务主体对象。
  • Get-AllAzureADUsers 收集所有 AzureAD 用户。
  • Get-AllAzureADGroups 收集所有 AzureAD 组。
  • Get-AllAzureRMSubscriptions 收集所有 AzureRM 订阅。

元函数

  • Test-AzureRMAddSelfToAzureRMRole 用于滥用验证测试,以确定具有特定权限的服务主体是否可以通过订阅授予自己用户访问管理员角色。
  • Test-AzureRMCreateFunction 用于滥用验证测试,以测试服务主体是否可以向现有函数应用程序添加新函数。
  • Invoke-AllAzureRMAbuseTests 执行所有 AzureRM 滥用验证测试并输出结果对象,该对象描述授予哪些 AzureRM 角色执行每个滥用的能力。
  • Remove-AbuseTestAzureRMRoles 是一个清理函数,用于删除在测试期间创建的 AzureRM 管理员角色。
  • Remove-AbuseTestServicePrincipals 通过删除在测试期间创建的服务主体来清理滥用测试。
  • New-TestAppReg 为滥用验证测试的明确目的创建一个应用程序注册对象。
  • New-TestSP 创建一个新的服务主体并将其与上述函数创建的应用相关联。
  • Test-MGAddSelfAsOwnerOfApp 用于滥用验证测试,以确定具有特定权限的服务主体是否可以授予自己现有 AzureAD 应用程序的所有权。
  • Test-MGAddSelfAsOwnerOfSP 用于滥用验证测试,以确定具有特定权限的服务主体是否可以授予自己现有 AzureAD 服务主体的所有权。
  • Test-MGAddSelfToAADRole 用于滥用验证测试,以确定具有特定权限的服务主体是否可以将自己添加到 AzureAD 管理员角色 - 例如全局管理员。
  • Test-MGAddSelfToMGAppRole 用于滥用验证测试,以确定具有特定权限的服务主体是否可以在未经管理员同意的情况下授予自己特定的 MS Graph 应用程序角色。
  • Test-MGAddOwnerToRoleEligibleGroup 用于测试服务主体是否可以授予自己对角色可分配组的明确所有权。
  • Test-MGAddMemberToRoleEligibleGroup 用于测试服务主体是否可以将自己添加到角色可分配组。
  • Test-MGAddSecretToSP 用于测试服务主体是否可以向现有服务主体添加新秘密。
  • Test-MGAddSecretToApp 用于测试服务主体是否可以向现有应用程序添加新机密。
  • Invoke-AllAzureMGAbuseTests 执行所有可以通过持有 MS Graph 应用程序角色来执行的滥用验证测试。返回一个对象,描述哪些权限成功执行了每个滥用测试。
  • Invoke-AllAzureADAbuseTests 执行可由授予 AzureAD 管理员角色的委托人执行的所有滥用验证测试。返回一个对象,描述哪些权限成功执行了每个滥用测试。
  • ConvertTo-Markdown 用于按摩 Invoke-Tests 函数的输出,以便在另一个平台中使用。

关于

BloodHound 攻击研究工具包

资源

自述文件

执照

GPL-3.0 许可证

星星

287 颗星

守望者

18 观看

叉子

43

发布

未发布任何版本

套餐

没有发布包

第一章 下载方法