一个Powershell模块,实现了从攻击角度与Azure和Azure AD交互的各种cmdlet。
提供了一些有用的实用工具,用于处理基于访问令牌的身份验证、在Az与AzureAD及az cli接口之间切换,以及易于使用的预构建攻击,例如基于Runbook的命令执行等。
本工具集包含多种cmdlet。本节重点介绍最重要且最有用的部分。
典型的红队/审计工作流程,从窃取的凭据开始,可以总结如下:
窃取凭据 -> 认证到Azure/AzureAD -> 判断凭据是否有效 -> 找出能利用它们做什么
以下cmdlet正是为帮助你遵循这一流程而设计的:
Connect-ART - 提供多种认证到Azure的方式——凭据、PSCredential、令牌
Connect-ARTAD - 提供多种认证到Azure AD的方式——凭据、PSCredential、令牌
Get-ARTWhoami - 当你完成认证后,运行此命令检查_whoami_并验证你的访问权限
Get-ARTAccess - 然后,在你知道自己有访问权限后,通过执行Azure态势感知来找出你能做什么以及有哪些可能性
Get-ARTADAccess - 类似地,你可以找出在Azure AD范围内你能做什么。
模块中实现的cmdlet在以下使用和攻击场景中很有帮助:
Az、AzureAD与az cli之间切换访问令牌Az、AzureAD、Microsoft.Graph和az cli中漂亮地打印认证上下文(即_whoami_)此模块依赖于预先安装的Powershell Az和AzureAD模块。Microsoft.Graph和az cli是可选的,但非常有用。
在开始使用Azure进行攻击前,可以使用以下命令准备攻击环境:
Install-Module Az -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module AzureAD -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module Microsoft.Graph -Force -Confirm -AllowClobber -Scope CurrentUser # 可选
Install-Module MSOnline -Force -Confirm -AllowClobber -Scope CurrentUser # 可选
Install-Module AzureADPreview -Force -Confirm -AllowClobber -Scope CurrentUser # 可选
Install-Module AADInternals -Force -Confirm -AllowClobber -Scope CurrentUser # 可选
Import-Module Az
Import-Module AzureAD
尽管AzureRT只需要前两个模块,但最好也预装其他模块。
然后,加载此模块,只需输入:
PS> . .\AzureRT.ps1
即可开始使用。
或者,你也可以让AzureRT自动安装并导入所有依赖:
PS> . .\AzureRT.ps1
PS> Import-ARTModules
此模块将逐步加入后续工具和实用程序,自然地归类到攻击链的各个阶段。
每个cmdlet都有详细的帮助信息,说明参数、描述和示例用法:
PS C:\> Get-Help Connect-ART
目前包含以下实用程序:
Get-ARTWhoami - 在Azure、AzureAD、Microsoft.Graph和AZ CLI接口上显示_并验证_我们的认证上下文。
Connect-ART - 调用Connect-AzAccount,通过提供的访问令牌或凭据认证当前会话到Azure门户。通过自动从提供的令牌中提取租户ID和帐户ID,省去了手动提供这些信息的麻烦。
Connect-ARTAD - 调用Connect-AzureAD(可选地Connect-MgGraph),通过提供的访问令牌或凭据认证当前会话到Azure Active Directory。通过自动从提供的令牌中提取租户ID和帐户ID,省去了手动提供这些信息的麻烦。
Connect-ARTADServicePrincipal - 调用Connect-AzAccount,通过提供的访问令牌或凭据认证当前会话到Azure门户。然后创建自签名PFX证书并将其与服务主体关联以进行认证。之后,以该服务主体身份认证到Azure AD,并在清理时取消关联该证书。
- 通过从az cli获取访问令牌。
Get-ARTAccess - 执行Azure态势感知。
Get-ARTADAccess - 执行Azure AD态势感知。
Get-ARTTenants - 列出当前认证用户(或基于提供的访问令牌)可用的租户。
Get-ARTDangerousPermissions - 分析可访问的Azure资源以及用户对其拥有的关联权限,找出所有可能被攻击者滥用的危险权限。
Get-ARTResource - 使用提供的访问令牌认证到https://management.azure.com,并拉取令牌所有者可访问的资源及其权限。
Get-ARTRoleAssignment - 以更容易阅读的方式显示分配给当前主体的Azure RBAC角色。
Get-ARTADRoleAssignment - 显示当前用户或所有Azure AD用户的Azure AD角色分配。
Get-ARTADScopedRoleAssignment - 显示当前用户或所有Azure AD用户与管理员单元关联的作用域Azure AD角色分配。
Get-ARTRolePermissions - 显示指定Azure RBAC角色的所有授予权限。
Add-ARTADGuestUser - 发送Azure AD来宾用户邀请邮件,允许外部攻击者扩展对AAD租户的访问,并返回用于轻松接受邀请的邀请兑换URL。
Set-ARTADUserPassword - 滥用Authentication Administrator角色分配来重置其他非管理员用户的密码。
Add-ARTUserToGroup - 将指定Azure AD用户添加到指定Azure AD组。
Add-ARTUserToRole - 将指定Azure AD用户添加到指定Azure AD角色。
Add-ARTADAppSecret - 为Azure AD应用程序添加客户端密码。作者:Nikhil Mittal, @nikhil_mitt
Invoke-ARTAutomationRunbook - 在指定自动化帐户下创建一个自动化Runbook,并针对选定的工作程序组。该Runbook将包含要在所有受影响的Azure VM上执行的Powershell命令。
Invoke-ARTRunCommand - 滥用针对指定Azure VM的virtualMachines/runCommand权限来运行自定义Powershell命令。
Update-ARTAzVMUserData - 通过直接API调用修改Azure VM用户数据脚本。
Invoke-ARTCustomScriptExtension - 创建新的或修改Azure VM自定义脚本扩展,导致远程代码执行。
Get-ARTTenantID - 检索当前用户的租户ID,或基于提供的域名返回租户ID。
Get-ARTPRTToken - 使用Dirk-Jan Mollema的ROADtoken检索当前用户的PRT(主刷新令牌)值。
Get-ARTPRTNonce - 检索当前用户的PRT(主刷新令牌)nonce值。
Get-ARTUserId - 通过Az模块获取当前用户或参数中指定的ObjectId用户。
Get-ARTSubscriptionId - 辅助工具,收集当前订阅ID。
Parse-JWTtokenRT - 解析输入的JWT令牌并漂亮地打印出来。
Invoke-ARTGETRequest - 获取访问令牌,并针对指定URI执行GET REST API请求。还会验证提供的令牌是否具有所需的受众。
Import-ARTModules - 为Azure红队活动安装并导入必需及可选的Powershell模块。
该项目以及其他项目都是无数个不眠之夜和大量辛勤工作的成果。如果你喜欢我所做的,并且欣赏我始终回馈社区的行为, 请考虑给我买杯咖啡 (或者更好,买杯啤酒) 表示感谢!💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
Get-ARTAccessTokenAzCliaz account get-access-tokenGet-ARTAccessTokenAz - 通过Get-AzAccessToken从Az模块获取访问令牌。
Get-ARTAccessTokenAzureAD - 从Azure Active Directory获取访问令牌。作者:Simon Wahlin, @SimonWahlin
Get-ARTAccessTokenAzureADCached - 尝试检索本地缓存的AzureAD访问令牌(https://graph.microsoft.com),该令牌在`Connect-AzureAD`之后存储。
Remove-ARTServicePrincipalKey - 在运行Connect-ARTADServicePrincipal后执行清理操作。
Get-ARTADRolePermissions - 显示指定Azure AD角色的所有授予权限。
Get-ARTADDynamicGroups - 显示Azure AD动态组及其用户成员规则、成员数量和当前用户成员状态。
Get-ARTApplication - 列出当前用户是所有者的Azure AD企业应用程序(当使用-All时列出所有现有应用程序),以及其所有者和服务主体。
Get-ARTApplicationProxy - 列出设置了应用程序代理的Azure AD企业应用程序。
Get-ARTApplicationProxyPrincipals - 显示分配给指定应用程序代理应用程序的用户和组。
Get-ARTStorageAccountKeys - 显示所有可用的存储帐户密钥。
Get-ARTKeyVaultSecrets - 列出所有可用的Azure Key Vault机密。此cmdlet假设请求用户已连接到Azure AD并拥有KeyVaultAccessToken(作用域为https://vault.azure.net)且分配了“Key Vault Secrets User”角色(或等价角色)。
Get-ARTAutomationCredentials - 列出所有可用的Azure自动化帐户凭据,并尝试提取其值(无法提取值!)。
Get-ARTAutomationRunbookCode - 调用REST API方法提取指定Runbook的源代码。
Get-ARTAzVMPublicIP - 检索Azure VM的公网IP地址。
Get-ARTResourceGroupDeploymentTemplate - 根据输入参数显示资源组部署模板JSON,或一次拉取所有模板。
Get-ARTAzVMUserDataFromInside - 通过访问实例元数据端点,从虚拟机内部检索Azure VM用户数据。