
AzureRT - 様々なAzure Red Team戦術を実装するPowershellモジュール
攻撃者の視点からAzureおよびAzure ADとやり取りするためのさまざまなコマンドレットを実装したPowerShellモジュール。
アクセストークンベースの認証の処理、AzからAzureAD、az cliインターフェースへの切り替え、Runbookベースのコマンド実行などの簡単に使用できる事前構築済み攻撃など、便利なユーティリティ。
このツールキットにはさまざまなコマンドレットが含まれています。このセクションでは、最も重要で有用なものを強調します。
盗まれた資格情報から始まる典型的なRed Team / 監査ワークフローは、次のようにまとめられます。
Credentials Stolen -> Authenticate to Azure/AzureAD -> find whether they're valid -> find out what you can do with them
以下のコマンドレットは、このシーケンスを追跡するのに最適です。
Connect-ART - 資格情報、PSCredential、トークンなど、Azureへの認証のさまざまな手段を提供します。
Connect-ARTAD - 資格情報、PSCredential、トークンなど、Azure ADへの認証のさまざまな手段を提供します。
Get-ARTWhoami - 認証したら、これを実行して_whoami_を確認し、アクセスを検証します。
Get-ARTAccess - アクセス権があることを確認したら、Azureの状況認識を実行して、何ができるか、何が可能かを調べます。
Get-ARTADAccess - 同様に、Azure ADにスコープされた操作可能な内容を調べます。
このモジュールで実装されたコマンドレットは、次のユースケースや攻撃シナリオで役立ちます。
AzからAzureAD、そして元に戻すアクセストークンの操作。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 # OPTIONAL
Install-Module MSOnline -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module AzureADPreview -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module AADInternals -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Import-Module Az
Import-Module AzureAD
AzureRTに必要なのは最初の2つのモジュールだけですが、他のモジュールも事前にインストールしておくと良いでしょう。
次に、このモジュールをロードするには、単に次のように入力します。
PS> . .\AzureRT.ps1
これで準備完了です。
または、AzureRTにすべての依存関係をインストールおよびインポートさせることもできます。
PS> . .\AzureRT.ps1
PS> Import-ARTModules
このモジュールには、今後もツールやユーティリティが徐々に追加され、当然キルチェーンの各フェーズに分類されます。
すべてのコマンドレットには、パラメータ、説明、使用例を詳述した適切なヘルプメッセージがあります。
PS C:\> Get-Help Connect-ART
現在、以下のユーティリティが含まれています。
Get-ARTWhoami - Azure、AzureAD、Microsoft.Graph、AZ CLIインターフェースにおける認証コンテキストを表示_および検証_します。
Connect-ART - Connect-AzAccountを呼び出し、提供されたアクセストークンまたは資格情報を介して現在のセッションをAzure Portalに認証します。提供されたトークンから自動的にテナントIDとアカウントIDを抽出することで、それらを指定する手間を省きます。
Connect-ARTAD - Connect-AzureAD(およびオプションでConnect-MgGraph)を呼び出し、提供されたアクセストークンまたは資格情報を介して現在のセッションをAzure Active Directoryに認証します。提供されたトークンから自動的にテナントIDとアカウントIDを抽出することで、それらを指定する手間を省きます。
Connect-ARTADServicePrincipal - Connect-AzAccountを呼び出し、提供されたアクセストークンまたは資格情報を介して現在のセッションをAzure Portalに認証します。提供されたトークンから自動的にテナントIDとアカウントIDを抽出することで、それらを指定する手間を省きます。次に、自己署名PFX証明書を作成し、それを認証のためにサービスプリンシパルに関連付けます。その後、そのサービスプリンシパルとしてAzureADに認証し、その証明書を関連付け解除してクリーンアップします。
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スコープ指定ロールの割り当てを表示します。
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 - 指定されたAutomation Account下、選択されたWorker Groupに対してAutomation 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's 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 Red Teamアクティビティに必要な、およびオプションのPowerShellモジュールをインストールおよびインポートします。
このプロジェクトや他のプロジェクトは、寝ずの努力とたくさんの大変な作業の成果です。私の活動を気に入り、常にコミュニティに貢献していることに感謝してくれるなら、 コーヒーを一杯おごる (またはビールの方がいいかも) ことを検討してください。ありがとう! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
Get-ARTAccessTokenAzCli - az account get-access-tokenを介してaz cliからアクセストークンを取得します。
Get-ARTAccessTokenAz - Get-AzAccessTokenを介してAzモジュールからアクセストークンを取得します。
Get-ARTAccessTokenAzureAD - Azure Active Directoryからアクセストークンを取得します。作成者:Simon Wahlin, @SimonWahlin
Get-ARTAccessTokenAzureADCached - Connect-AzureAD実行後に保存された、ローカルにキャッシュされたAzureADアクセストークン(https://graph.microsoft.com)の取得を試みます。
Remove-ARTServicePrincipalKey - Connect-ARTADServicePrincipal実行後のクリーンアップアクションを実行します。
Get-ARTRolePermissions - 指定されたAzure RBACロールに付与されているすべての権限を表示します。
Get-ARTADRolePermissions - 指定されたAzure ADロールに付与されているすべての権限を表示します。
Get-ARTADDynamicGroups - Azure AD動的グループと、そのユーザーメンバーシップルール、メンバー数、現在のユーザーメンバーシップステータスを表示します。
Get-ARTApplication - 現在のユーザーが所有者であるAzure ADエンタープライズアプリケーション(-Allを使用すると既存のすべて)と、その所有者およびサービスプリンシパルを一覧表示します。
Get-ARTApplicationProxy - Application Proxyが設定されているAzure ADエンタープライズアプリケーションを一覧表示します。
Get-ARTApplicationProxyPrincipals - 指定されたApplication Proxyアプリケーションに割り当てられたユーザーとグループを表示します。
Get-ARTStorageAccountKeys - 利用可能なすべてのストレージアカウントキーを表示します。
Get-ARTKeyVaultSecrets - 利用可能なすべてのAzure Key Vaultシークレットを一覧表示します。このコマンドレットは、要求ユーザーがKeyVaultAccessToken(https://vault.azure.netにスコープ指定)を使用してAzure ADに接続し、"Key Vault Secrets User"ロール(または同等)が割り当てられていることを前提としています。
Get-ARTAutomationCredentials - 利用可能なすべてのAzure Automationアカウント資格情報を一覧表示し、その値を取得しようとします(値の取得はできません!)。
Get-ARTAutomationRunbookCode - REST APIメソッドを呼び出して、指定されたRunbookのソースコードを取得します。
Get-ARTAzVMPublicIP - Azure VMのパブリックIPアドレスを取得します。
Get-ARTResourceGroupDeploymentTemplate - 入力パラメータに基づいてリソースグループデプロイメントテンプレートJSONを表示するか、すべてを一度に取得します。
Get-ARTAzVMUserDataFromInside - VM内部からInstance Metadataエンドポイントにアクセスして、Azure VMのユーザーデータを取得します。