adaudit
このPowerShellスクリプトは、Microsoft Active Directoryの包括的な監査を実施し、一般的なセキュリティ脆弱性や弱点を特定するために設計されています。実行により、強化が必要な重要な領域を特定し、Active Directoryを標的とした横断移動や特権昇格攻撃でよく使われる戦術からインフラを保護します。
_____ ____ _____ _ _ _
| _ | \ | _ |_ _ _| |_| |_
| | | | | | | | . | | _|
|__|__|____/ |__|__|___|___|_|_|
by phillips321
もしスクリプトで使える優れたPowerShellワンライナーがあれば、ぜひ教えてください。このスクリプトは、外部ツール(ntdsutilとcmd.exe以外)に依存せず、単一ファイルとして維持しようとしています。
DC上でDAとして直接実行してください。コードを信頼できない場合は、最初に読んでみてください。すべて無害であることがわかります!(しかし、ネットからダウンロードしたコードをDAとして実行するなら、本来は常にそうすべきですよね?)
このツールの機能
- デバイス情報
- ドメイン監査
- Get-LastWUDate
- Get-DCEval
- Get-TimeSource
- Get-PrivilegedGroupMembership
- Get-MachineAccountQuota
- Get-DefaultDomainControllersPolicy
- Get-SMB1Support
- Get-FunctionalLevel
- Get-DCsNotOwnedByDA
- Get-ReplicationType
- Get-RecycleBinState
- Get-CriticalServicesStatus
- Get-RODC
- ドメイン信頼監査
- ユーザーアカウント監査
- Get-InactiveAccounts
- Get-DisabledAccounts
- Get-LockedAccounts
- Get-AdminAccountChecks
- Get-NULLSessions
- Get-PrivilegedGroupAccounts
- Get-ProtectedUsers
- パスワード情報監査
- Get-AccountPassDontExpire
- Get-UserPasswordNotChangedRecently
- Get-PasswordPolicy
- Get-PasswordQuality
- NTDS.ditのダンプ
- コンピュータオブジェクト監査
- GPO監査(およびSYSVOLのパスワード確認)
- Get-GPOtoFile
- Get-GPOsPerOU
- Get-SYSVOLXMLS
- Get-GPOEnum
- グループの汎用AD権限確認
- ドメイン内のLAPSの存在確認
- 認証ポリシーとサイロの存在確認
- Get-AuthenticationPoliciesAndSilos
- 安全でないDNSゾーンの確認
- 新しく作成されたユーザーとグループの確認
- ADCSの脆弱性(ESC1、2、3、4、8)の確認
- 高価値のKerberoast可能なアカウントの確認
- ASREPRoast可能なアカウントの確認
- ユーザー、グループ、コンピュータ上の危険なACL権限の確認
- LDAPおよびLDAPs設定(署名、Nullセッションなど)の確認
実行時引数
以下のスイッチを組み合わせて使用できます。
-installdeps オプション機能(DSInternals)をインストール
-hostdetails ホスト名やその他有用な監査情報を取得
-domainaudit 機能レベルなどADの情報を取得
-trusts ドメイン信頼に関する情報を取得
-accounts 期限切れ、無効化などアカウントの問題を特定
-passwordpolicy パスワードポリシー情報を取得
-ntds ntdsutil を使ってNTDS.ditファイルをダンプ
-oldboxes XP/2003などドメインに参加している旧式OSを特定
-gpo GPOをXMLおよびHTMLでダンプし、後で分析
-ouperms 一般的なOU権限の問題を確認
-laps LAPSがインストールされているか確認
-authpolsilos 認証ポリシーとサイロの存在を確認
-insecurednszone 安全でないDNSゾーンを確認
-recentchanges 新しく作成されたユーザーとグループ(過去30日間)を確認
-adcs ADCSの脆弱性(ESC1、2、3、4、8)を確認
-acl ユーザー、グループ、コンピュータ上の危険なACL権限を確認
-spn 高価値のKerberoast可能なアカウントを確認
-asrep ASREPRoast可能なアカウントを確認
-ldapsecurity 複数のLDAP問題を確認
-exclude adaudit.ps1 -all -exclude ouperms,ntds,adcs のように特定のチェックを除外
-select adaudit.ps1 -all "gpo,ntds,acl" のように特定のチェックのみ選択
-all すべてのチェックを実行(例:AdAudit.ps1 -all)
子ドメインのサポート
このスクリプトはフォレストルートドメインと子ドメインの両方を完全にサポートするようになりました。
- スキーマ管理者とエンタープライズ管理者は子ドメイン(フォレストルートにのみ存在)で適切に処理されます
- スクリプトは、フォレストルートのみのグループが存在しない場合でも、適切な情報メッセージを表示して正常に完了します
- 子ドメインのシナリオでグループが見つからなくてもクラッシュやブロックエラーは発生しません
- Windows Server 2022の子ドメインでテストおよび検証済み
エラーハンドリングと堅牢性
スクリプトは全体にわたって包括的なエラーハンドリングを実装しています。
- オプションの監査機能は、スクリプトの実行をブロックせずに正常に失敗します
- GPOレポートの生成エラー(破損したGPOなど)は、他の監査の完了を妨げません
- 防御的なチェックにより、オプションの出力ファイルに対するファイル未発見例外を防ぎます
- 明確なエラー/警告/情報メッセージにより、重大な失敗と想定されるシナリオを区別します
- オプションのモジュール(DSInternals、LAPS、AdmPwd.PS)がなくてもコア監査機能は動作します
Nessus XML出力
- 後処理を必要としない、有効で適切にフォーマットされたNessus XMLを生成します
- すべての特殊文字(&、<、>、"、')はソースで適切にエスケープされます
- 出力ファイルは手動修正なしでNessusに直接インポート可能
- 後処理手順や追加の出力ファイルが不要
テスト環境
- Windows Server 2022で検証済み(フォレストルートドメインと子ドメインの両方)
- Windows Server 2008R2から2022までをサポート
- 破損したGPOや混合構成を含む複雑な本番環境でも正常に動作