
Azure AD内のUNC2452およびその他の脅威アクターの痕跡を検出し、フェデレーションドメイン、サービスプリンシパル、アプリケーション、メールボックス権限を監査して侵害の兆候を確認するための読み取り専用PowerShellモジュールです。
このリポジトリには、UNC2452 およびその他の脅威アクターの活動の指標となる可能性があるアーティファクトを検出するための PowerShell モジュールが含まれています。一部の指標は「高精度」の侵害指標ですが、その他のアーティファクトはいわゆる「デュアルユース」アーティファクトです。デュアルユースアーティファクトは脅威アクターの活動に関連している可能性もありますが、正当な機能に関連している可能性もあります。これらについては分析と検証が必要です。UNC2452 が使用する手法の詳細については、当社のブログをご覧ください。
このツールは読み取り専用です。Microsoft 365 環境に変更を加えることはありません。
まとめると、このモジュールは次のことを行います:
次のことは行いません:
コミュニティからのフィードバックにより、このツールは IOC の検出においてより徹底される可能性があります。問題、アイデア、フィードバックがある場合は、issue を開くか、PR を送信するか、作成者に連絡してください。
このモジュールは MS Online PowerShell を使用して、Azure AD 内のフェデレーションドメインを検索および監査します。すべてのフェデレーションドメインはファイル federated domains.csv に出力されます。
any.sts が構成されているフェデレーションドメインに対してアラートを発します。これは Azure AD バックドアツールの使用を示しています。変更がどのように行われたかを判断し、侵害の他の証拠を特定するためにフォレンジック調査の実施を検討してください。!! Evidence of AAD backdoor found. Consider performing a detailed forensic investigation Domain name: foobar.com Domain federation name: Federation issuer URI: http://any.sts/16B45E3B
:bangbang: スクリプトは、[Azure AD Backdoor](https://github.com/Gerenios/AADInternals/blob/master/FederatedIdentityTools.ps1)の指標となる発行者URIとフェデレーションされたドメインを特定しました。バックドアは、デフォルトで発行者URIをhxxp://any.stsに設定します。変更がどのように行われたかを特定し、他の侵害の証拠を識別するために、フォレンジック調査を実施することを検討してください。```
!! A token signing certificate has a validity period of more than 365 days.
This may be evidence of a signing certificate not generated by AD FS.
Domain name: foobar.com
Federation issuer uri: http://sts.foobar.com
Signing cert not valid before: 1/1/2020 00:00:00
Signing cert not valid after: 12/31/2025 23:59:59
⚠️ このスクリプトは、標準の 365 日を超える有効期間を持つトークン署名証明書が設定されたフェデレーションドメインを特定しました。管理者に問い合わせて、トークン署名証明書が手動で管理されており、記載された有効期間が想定されているかどうかを確認してください。これが想定されていない場合は、フォレンジック調査の実施を検討してください。
このモジュールは Azure AD PowerShell を使用して、Azure AD のサービスプリンシパルを検索および監査します。
!! Identified first-party (Microsoft published) Service Principals with added credentials. Only in rare cases should a first-party Service Principal have an added credential. Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Display Name : Office 365 Exchange Online Key Credentials :
CustomKeyIdentifier : EndDate : 12/9/2017 2:10:29 AM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/9/2015 1:40:30 AM Type : AsymmetricX509Cert Usage : Verify Value :
:warning: このスクリプトは、資格情報が追加されたファーストパーティ(Microsoft)のサービスプリンシパルを特定しました。ファーストパーティのサービスプリンシパルには、まれなケースを除いて資格情報を追加すべきではありません。ハイブリッドモードである、または以前にハイブリッドモードであった環境では、Exchange Online、Skype for Business、およびAAD Password Protection Proxyサービスプリンシパルに資格情報が追加されている可能性があります。これは、環境内でのUNC2452アクティビティの痕跡である可能性もあります。管理者に確認し、監査ログを検索して、資格情報が正当であることを確認してください。また、Azure ADサインインブレードの「サービスプリンシパルのサインイン」タブを使用して、このサービスプリンシパルを使用したテナントへの認証を検索することもできます。```
!! Identified Service Principals with high-risk API permissions and added credentials.
Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Display Name : TestingApp
Key Credentials :
CustomKeyIdentifier :
EndDate : 1/7/2025 12:00:00 AM
KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
StartDate : 1/7/2021 12:00:00 AM
Type : Symmetric
Usage : Verify
Value :
Password Credentials :
Risky Permissions : Domain.ReadWrite.All
⚠️ このスクリプトは、高リスクなAPIアクセス許可を持つサービスプリンシパルを特定し、資格情報を追加しました。これは、一部のサードパーティ製またはカスタムビルドのアプリケーションが正常に機能するために資格情報の追加を必要とするため、予期された動作である可能性があります。また、お使いの環境におけるUNC2452の活動の痕跡である可能性もあります。管理者に相談し、監査ログを検索して資格情報が正当であることを確認してください。また、Azure ADサインインブレードの「サービスプリンシパルのサインイン」タブを使用して、このサービスプリンシパルを使用したテナントへの認証を検索することもできます。
このモジュールは、Azure AD PowerShellを使用して、Azure AD内のアプリケーションを検索および監査します。
!! High-privileged Application with credentials found. Validate that the application needs these permissions. Validate that the credentials added to the application are associated with a legitimate use case.
ObjectID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx AppID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx DisplayName: Acme Test App KeyCredentials: PasswordCredentials:
CustomKeyIdentifier : EndDate : 12/22/2021 4:01:52 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/22/2020 4:01:52 PM Value :
CustomKeyIdentifier : EndDate : 12/21/2021 6:32:54 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/21/2020 6:33:16 PM Value :
Risky Permissions: Mail.Read (Read mail in all mailboxes) Directory.Read.All (Read all data in the organization directory)
:⚠️ このスクリプトは、高リスクなAPIアクセス許可と追加された資格情報を持つアプリケーションを特定しました。これは、一部のサードパーティ製またはカスタムビルドのアプリケーションが機能するために資格情報の追加を必要とするため、予期される動作である可能性があります。また、環境内でのUNC2452アクティビティの痕跡である可能性もあります。管理者に確認し、監査ログを検索して資格情報が正当なものであることを確認してください。
### Cloud Solution Provider Program (Invoke-MandiantGetCSPInformation)
このモジュールは、テナントがCSPまたはパートナーによって管理されているかどうか、および委任された管理が有効になっているかどうかを確認します。委任された管理により、CSPはグローバル管理者と同じ権限で顧客テナントにアクセスできます。CSPプログラムはパートナーテナントに対して強力なセキュリティ制御を強制しますが、CSPを侵害した脅威アクターは顧客環境にアクセスできる可能性があります。組織は、パートナーが委任された管理者権限を必要とするかどうかを確認し、不要な場合は削除する必要があります。パートナーが委任された管理アクセスを維持する必要がある場合は、条件付きアクセスポリシーを実装してアクセスを制限することを検討してください。
組織は、[管理センター](https://admin.microsoft.com)に移動し、左側のメニューバーで`設定` -> `パートナー関係`に移動することで、パートナー関係を確認および管理できます。
### Mailbox Folder Permissions (Get-MandiantMailboxFolderPermissions)
このモジュールは、テナント内のすべてのメールボックスを監査し、疑わしいフォルダーアクセス許可の存在を確認します。具体的には、各メールボックスの「情報ストアの最上位」および「受信トレイ」フォルダーを調べ、「既定」および「匿名」ユーザーに割り当てられたアクセス許可を確認します。「なし」以外の値がある場合、メールボックスは分析対象としてフラグが立てられます。通常、既定ユーザーと匿名ユーザーにはユーザーの受信トレイへのアクセス許可は付与すべきではありません。これにより、すべてのユーザーがその内容を読めるようになるためです。一部の組織では共有メールボックスにこのアクセス許可が設定されている場合がありますが、推奨される方法ではありません。
### Application Impersonation (Get-MandiantApplicationImpersonationHolders)
このモジュールは、ApplicationImpersonationロールを保持するユーザーとグループのリストを出力します。このコマンドの出力に含まれるユーザーまたはグループのメンバーは、偽装を使用してテナント内の他のすべてのユーザーのメールボックスに「代理として」アクセスできます。組織はこのコマンドの出力を監査して、期待されるユーザーとグループのみが含まれていることを確認し、可能な場合はさらにスコープを制限する必要があります。
### Purview Audit (旧称 Advanced Audit) (Invoke-MandiantCheckAuditing)
このモジュールは、テナント内でPurview Audit Mail Items Accessedのライセンスを持つすべてのライセンスユーザーを列挙します。対象となるメールボックスでこの機能が有効になっているかどうかを文書化したCSVレポートを生成します。組織は、Mail Items Accessedの対象でありながら機能が無効になっているメールボックスをフィルタリングし、意図的なものであることを確認する必要があります。
### Unified Audit Log (Get-MandiantUnc2452AuditLogs)
このモジュールは、統合監査ログを検索するためのヘルパースクリプトです。統合監査ログの検索には、見落としやすい多くの技術的な注意点があります。このモジュールは、これらの注意点に対処し、一般的なエラーを処理するためのベストプラクティスを実装することで、検索プロセスを簡素化するのに役立ちます。
デフォルトでは、モジュールはUNC2452の手法を記録できるログエントリを検索します。ログ記録には正当な管理者アクティビティも含まれる可能性があるため、確認が必要です。
* **アプリケーションの更新** - アプリ登録の更新アクションを記録します。
* **ドメイン認証の設定** - ドメインの認証設定が変更された際(フェデレーションレルムオブジェクトの作成を含む)を記録します。これらのイベントは環境内ではまれにしか発生せず、脅威アクターがAADバックドアを構成していることを示す可能性があります。
* **フェデレーション設定の設定** - ドメインのフェデレーションレルムオブジェクトが変更された際を記録します。これらのイベントは環境内ではまれにしか発生せず、脅威アクターがGolden SAML攻撃を実行する準備をしていることを示す可能性があります。
* **アプリケーションの証明書とシークレットの更新** - シークレットまたは証明書がアプリ登録に追加された際を記録します。
* **PowerShell メールボックスログイン** - クライアントアプリケーションがPowerShellであったメールボックスログイン操作を記録します。
* **サービスプリンシパルの更新** - 既存のサービスプリンシパルへの更新が行われた際を記録します。
* **サービスプリンシパル資格情報の追加** - シークレットまたは証明書がサービスプリンシパルに追加された際を記録します。
* **アプリロール割り当ての追加** - アプリロール(アプリケーションアクセス許可)が追加された際を記録します。
* **ユーザーへのアプリロール割り当て** - アプリロールがユーザーに割り当てられた際を記録します。
* **PowerShell 認証** - ユーザーがPowerShellクライアントを使用してAzure ADに認証した際を記録します。
* **新しい管理ロールの割り当て** - 新しい管理ロールの割り当てが作成された際を記録します。これは新しいApplicationImpersonationの許可を特定するのに役立ちます。
## 使用方法
### 必要なモジュール
PowerShellモジュールでは、3つのMicrosoft 365 PowerShellモジュールのインストールが必要です。
* AzureAD
* MSOnline
* ExchangeOnlineManagement
* Microsoft.Graph
モジュールをインストールするには:
1. ローカル管理者としてPowerShellウィンドウを開きます(右クリックして「管理者として実行」を選択)
2. コマンド `Install-Module <MODULE NAME HERE>` を実行し、プロンプトに従います
### 必要なユーザーアクセス許可
PowerShellモジュールは、特定の権限が割り当てられたMicrosoft 365アカウントで実行する必要があります。
* Azure ADポータルでの「グローバル管理者」または「グローバル閲覧者」ロール
* Exchange管理センターでの「監査ログの表示のみ」
* 「User.Read.All」および「Directory.Read.All」スコープ。「グローバル閲覧者」ロール保持者はこれらのスコープを自動的に使用できるはずです。
Exchange管理センターでアカウントに「監査ログの表示のみ」を付与するには:
1. https://outlook.office365.com/ecp に移動し、グローバル管理者またはExchange管理者としてログインします(クラウドが別の場合はURLが異なる場合があります)
2. ダッシュボードの「管理者ロール」をクリックするか、左側の「ロール」タブを展開して「管理者ロール」をクリックします(新しいUIの場合)
3. 「+」記号をクリックするか、「新しいロールグループの追加」をクリックして新しい管理者ロールを作成します
4. ロールに名前とデフォルトの書き込みスコープを付与します
5. ロールに「監査ログの表示のみ」権限を追加します
6. ロールにユーザーを追加します
**注** このロールが適用されるまで最大1時間かかる場合があります
### ツールの実行
1. このツールをZIPとしてダウンロードして解凍するか、リポジトリをシステムにクローンします
2. PowerShellウィンドウを開きます
3. このモジュールの場所にディレクトリを変更します `cd C:\path\to\the\module`
4. このモジュールをインポートします `Import-Module .\MandiantAzureADInvestigator.psd1` 次の出力が表示されるはずです```
Mandiant Azure AD Investigator
Focusing on UNC2452 Investigations
PS C:\Users\admin\Desktop\mandiant>
Connect-MandiantAzureEnvironment -UserPrincipalName <your username here> を実行して Azure AD に接続します。ログインプロンプトが表示され、PowerShell ウィンドウに接続が確立されたことを示す出力が表示されるはずです。注: 問題が発生した場合は、Set-ExecutionPolicy -ExecutionPolicy RemoteSigned を実行して実行ポリシーを変更する必要がある場合があります。これには管理者権限が必要な場合があります。```The module allows access to all existing remote PowerShell (V1) cmdlets in addition to the 9 new, faster, and more reliable cmdlets.
|--------------------------------------------------------------------------| | Old Cmdlets | New/Reliable/Faster Cmdlets | |--------------------------------------------------------------------------| | Get-CASMailbox | Get-EXOCASMailbox | | Get-Mailbox | Get-EXOMailbox | | Get-MailboxFolderPermission | Get-EXOMailboxFolderPermission | | Get-MailboxFolderStatistics | Get-EXOMailboxFolderStatistics | | Get-MailboxPermission | Get-EXOMailboxPermission | | Get-MailboxStatistics | Get-EXOMailboxStatistics | | Get-MobileDeviceStatistics | Get-EXOMobileDeviceStatistics | | Get-Recipient | Get-EXORecipient | | Get-RecipientPermission | Get-EXORecipientPermission | |--------------------------------------------------------------------------|
To get additional information, run: Get-Help Connect-ExchangeOnline or check https://aka.ms/exops-docs
Account Environment TenantId TenantDomain
[email protected] AzureCloud xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test.onm...
5. すべてのチェックを実行する `Invoke-MandiantAllChecks -OutputPath <path\to\output\files>`。特定のコマンドレットを使用して個別のチェックを実行することもできます。
6. 画面および書き出されたCSVファイルの出力を確認します。
## 参考資料
UNC2452に関するMandiantの追加情報については、以下を参照してください。
* [高度に回避的な攻撃者がSolarWindsサプライチェーンを悪用し、SUNBURSTバックドアで複数のグローバル被害者を侵害](https://www.mandiant.com/resources/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor)
* [UNC2452から防御するためのMicrosoft 365の修復と強化戦略](https://www.mandiant.com/resources/remediation-and-hardening-strategies-for-microsoft-365-to-defend-against-unc2452)
UNC2452への対応は、セキュリティ業界全体での多大な取り組みであり、これらのブログでは、このツールのユーザーにとって有益な追加の貢献が数多く引用されています。ご自身の環境でのアクティビティを最もよく理解するために、これらの投稿からリンクされている資料を読むことをお勧めします。いつものように、Mandiantチームは、[こちらからお問い合わせ](https://www.mandiant.com/report-incident)いただくことで、フォローアップの質問や調査のさらなる支援に対応可能です。