
Active Directoryドメイン侵害後に脅威アクターが展開した(可能性のある)永続化メカニズムの発見を支援することを目的としたPowerShellスクリプト
FarsightAD は、Active Directoryドメインの侵害後に脅威アクターが仕掛けた(可能性のある)永続化メカニズムを発見することを目的としたPowerShellスクリプトです。
このスクリプトは、複製メタデータのタイムスタンプで強化された様々なオブジェクトとその属性のCSV/JSONファイル出力を生成します。さらに、レプリケーション権限で実行した場合、Directory Replication Service (DRS) プロトコルを活用して、完全または部分的に隠されたオブジェクトを検出します。
詳細については、SANS DFIR Summit 2022 紹介スライド を参照してください。
FarsightAD には、PowerShell 7 と、PowerShell 7 用に更新された ActiveDirectory モジュールが必要です。
Windows 10/11 では、モジュールは オプション機能 から RSAT: Active Directory Domain Services and Lightweight Directory Services ツール としてインストールできます。既にインストールされているモジュールは、次のコマンドで更新できます:
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
モジュールが正しく更新されていれば、Get-Command Get-ADObject は次のように返します:
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-ADObject 1.0.X.X ActiveDirectory
. .\FarsightAD.ps1
Invoke-ADHunting [-Server <DC_IP | DC_HOSTNAME>] [-Credential <PS_CREDENTIAL>] [-ADDriveName <AD_DRIVE_NAME>] [-OutputFolder <OUTPUT_FOLDER>] [-OutputType <CSV | JSON>]
各コマンドレットの使用法の詳細は、Get-Help -Full <CMDLET> で取得できます。

完全に隠されたユーザーの追加

ユーザーのSID History属性を隠す

Export-ADHuntingHiddenObjectsWithDRSRepData で完全および部分隠しユーザーを発見
DRS リクエスト用の C# コードは、以下から適応されました:
MakeMeEnterpriseAdmin 作成者: @vletouxMimikatz 作成者: @gentilkiwi および @vletouxSharpKatz 作成者: @b4rtikKey Credentialsを解析する関数は、ADComputerKeys PowerShellモジュール から取得しました。
AD CS関連の永続化は、以下の研究に基づいています:
Service Principal Nameを解析する関数は、Adam Bertramの研究 に基づいています。
CC BY 4.0 ライセンス - https://creativecommons.org/licenses/by/4.0/
| コマンドレット | 概要 |
|---|
Invoke-ADHunting | 以下に記載されているすべてのFarsightAD ADハンティングコマンドレットを実行します。 |
Export-ADHuntingACLDangerousAccessRights | ドメイン内のすべてのオブジェクトに対して、危険なACE(つまり、基盤となるオブジェクトの乗っ取りを許すACE)をエクスポートします。 大規模なドメインでは時間がかかる場合があります。 |
Export-ADHuntingACLDefaultFromSchema | スキーマクラスのdefaultSecurityDescriptor属性に設定されたACLをエクスポートします。 デフォルト(Microsoftドキュメントで定義されているもの)以外のACLが識別され、潜在的に危険なACEが強調表示されます。 |
Export-ADHuntingACLPrivilegedObjects | ドメイン内の特権オブジェクトに設定されたACLをエクスポートし、潜在的に危険なアクセス権を強調表示します。 |
Export-ADHuntingADCSCertificateTemplates | 証明書テンプレートに関する情報とアクセス権をエクスポートします。 次の注目すべきパラメータが取得されます:証明書テンプレートの発行状態、証明書の用途、サブジェクトがユーザー提供データから構築されるかどうか、アクセス制御(登録/変更)。 |
Export-ADHuntingADCSPKSObjects | 機密性の高いPKSオブジェクト(NTAuthCertificates、certificationAuthority、pKIEnrollmentService)に関する情報とアクセス権をエクスポートします。 |
Export-ADHuntingGPOObjectsAndFilesACL | GPOオブジェクトとファイルのACLアクセス権情報をエクスポートし、特権ユーザーやコンピューターに適用されているGPOを強調表示します。 |
Export-ADHuntingGPOSettings | GPOによって構成された、永続化に悪用される可能性のあるさまざまな設定(特権とログオン権、制限付きグループのメンバーシップ、スケジュールタスクと即時タスク V1/V2、マシンおよびユーザーのログオン/ログオフスクリプト)に関する情報をエクスポートします。 |
Export-ADHuntingHiddenObjectsWithDRSRepData | 直接クエリではアクセスできないが、レプリケーション(Directory Replication Service (DRS) プロトコル経由)ではアクセス可能なオブジェクトの属性をエクスポートします。 レプリケーション操作ではアクセス制御は考慮されないため、特定のオブジェクト属性へのアクセスをブロックするアクセス制御を識別できます。 限られた一連の機密属性のみが評価されます。 |
Export-ADHuntingKerberosDelegations | 危険と見なされるKerberos委任(制約なし、特権サービスへの制約付き、または特権サービスへのリソースベースの制約付き)をエクスポートします。 |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | 非特権プリンシパルによって(ms-DS-MachineAccountQuotaメカニズムを使用して)ドメインに追加されたコンピューターをエクスポートします。 |
Export-ADHuntingPrincipalsCertificates | アカウントの証明書を解析してエクスポートします(userCertificate属性が空でないアカウント)。 証明書は解析され、以下のパラメータが取得されます:証明書の有効期間タイムスタンプ、証明書の目的、証明書のサブジェクトと必要に応じてSubjectAltNameなど。 |
Export-ADHuntingPrincipalsDontRequirePreAuth | Kerberos事前認証を必要としないアカウントをエクスポートします。 |
Export-ADHuntingPrincipalsOncePrivileged | 過去に特権グループのメンバーだったアカウントをエクスポートします。 |
Export-ADHuntingPrincipalsPrimaryGroupID | デフォルト以外のprimaryGroupID属性を持つアカウントをエクスポートし、特権グループに関連するRIDを強調表示します。 |
Export-ADHuntingPrincipalsPrivilegedAccounts | 特権グループのメンバーに関する詳細情報をエクスポートします。 |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | レプリケーションメタデータを使用して取得した、特権グループの現在および過去のメンバーをエクスポートします。 |
Export-ADHuntingPrincipalsSIDHistory | SID History属性が空でないアカウントをエクスポートし、関連するドメインを解決し、特権SIDを強調表示します。 |
Export-ADHuntingPrincipalsShadowCredentials | Key Credentials情報を解析してエクスポートします(msDS-KeyCredentialLink属性が空でないアカウント)。 |
Export-ADHuntingPrincipalsTechnicalPrivileged | テクニカル特権アカウント(SERVER_TRUST_ACCOUNTおよびINTERDOMAIN_TRUST_ACCOUNT)をエクスポートします。 |
Export-ADHuntingPrincipalsUPNandAltSecID | UserPrincipalNameまたはAltSecurityIdentities属性を定義するアカウントをエクスポートし、潜在的な異常を強調表示します。 |
Export-ADHuntingTrusts | フォレスト内のすべてのドメインの信頼をエクスポートします。 各信頼について、転送性、SIDフィルタリング、TGT委任など、多数のパラメータが取得されます。 |