
Active Directoryラボ環境を構築してペネトレーションテストを練習するためのカスタムPowerShellモジュール。
このモジュールの目的は、内部侵入テストの練習用にActive Directoryラボの展開を自動化することです。
攻撃ベクトルの生成に関しては、Joe Helle氏と彼のPowerShell for Pentestersコースに感謝します。
PSModulePath に移動# PSModulePath を表示
$env:PSModulePath.split(";")
# モジュールをパスに移動
Move-Item .\ADLab\ "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\"
# グローバルモジュールをインポート
Import-Module ADLab
# ローカルモジュールをインポート
Import-Module .\ADLab.psm1
この関数は、現在のVM/コンピュータを新しいフォレストのドメインコントローラとして使用できるように準備します。静的IPアドレスを設定し、DNSサーバーをlocalhostに設定し、コンピュータ名を変更します。
# すべてのデフォルト値で現在のVMを準備し、詳細出力を表示
Invoke-DCPrep -Verbose
# カスタムホスト名を設定し、インターネットアクセスにGoogle DNSを使用
Invoke-DCPrep -Hostname "DC" -NewIPv4DNSServer "8.8.8.8"
# カスタムIPとデフォルトゲートウェイを使用し、詳細出力を表示
Invoke-DCPrep -Verbose -NewIPv4Address "192.168.1.99" -NewIPv4Gateway "192.168.1.1"
この関数は、AD DS機能をインストールし、新しいActive Directoryフォレストをユーザー入力を必要とせずにセットアップします。完了後、コンピュータを再起動します。
# FQDN "bufu-sec.local"、デフォルトのDSRMパスワード "Password!" で新しいフォレストをインストール
Invoke-ForestDeploy -Domain bufu-sec.local
# FQDN "bufu-sec.local"、DSRMパスワード "P@ssword!" で新しいフォレストをインストールし、デバッグメッセージを表示
Invoke-ForestDeploy -Domain "bufu-sec.local" -DSRMPassword "P@ssword!" -Verbose
この関数は、まずDNS機能をインストールします。次に、プライマリゾーンを追加し、サーバーフォワーダーを構成します。
# 現在のホストにDNSをインストールおよび構成し、詳細出力を表示
Invoke-DNSDeploy -Verbose -NetworkID 192.168.47.0/24 -ZoneFile "47.168.192.in-addr.arpa.dns" -ServerForwarder 1.1.1.1
この関数は、まず現在のマシンにDHCP機能をインストールします。次に、必要なセキュリティグループを追加し、新しいDHCPサーバーをドメインコントローラに承認します。最後に、指定された値で新しいDHCPスコープを構成します。
# ローカルDCにDHCPをインストールおよび構成
Invoke-DHCPDeploy -Verbose -ScopeName "Default" -ScopeID 192.168.47.0 -StartIP 192.168.47.100 -EndIP 192.168.47.200 -SubnetMask 255.255.255.0 -DNSServer 192.168.47.10 -Router 192.168.47.10
# 指定されたDCにDHCPをインストールおよび構成
Invoke-DHCPDeploy -Verbose -ScopeName "Default" -ScopeID 192.168.47.0 -StartIP 192.168.47.100 -EndIP 192.168.47.200 -SubnetMask 255.255.255.0 -DNSServer 192.168.47.10 -Router 192.168.47.10 -DCFQDN DC01.bufu-sec.local
この関数は、まずグローバル変数Groupsで定義されたグループとOUを作成します。次に、デフォルトで各OUに10個のユーザーオブジェクトを生成します。
# フォレストにオブジェクトを追加し、詳細出力を表示
Invoke-ADLabConfig -Verbose
# 各OUに50人のユーザーを作成し、詳細出力を表示
Invoke-ADLabConfig -Verbose -UserCount 50
この関数は、ドメインからランダムなユーザーを一定数取得し、それぞれに対してDoesNotRequirePreAuthフラグを設定します。Administratorやkrbtgtなどのデフォルトアカウントは除外します。デフォルトではユーザーの5%をASREP-Roastableにします。
# ユーザーの5%をASREP-Roastableにし、詳細出力を表示
Set-ASREPRoasting -Verbose
# ドメイン内のランダムなユーザー10人をASREP-Roastableにする
Set-ASREPRoasting -VulnerableUsersCount 10
# ユーザー bufu をASREP-Roastableにし、詳細出力を表示
Set-ASREPRoasting -Users bufu -Verbose
# 指定されたユーザーリストをASREP-Roastableにし、詳細出力を表示
Set-ASREPRoasting -Users ("bufu", "pepe") -Verbose
この関数は、ドメインからランダムなユーザーを一定数取得し、それぞれにSPNを追加します。Administratorやkrbtgtなどのデフォルトアカウントは除外します。デフォルトではユーザーの5%をKerberoastableにします。
# ユーザーの5%をASREP-Roastableにし、詳細出力を表示
Set-Kerberoasting -Verbose
# ドメイン内のランダムなユーザー10人をASREP-Roastableにする
Set-Kerberoasting -VulnerableUsersCount 10
# ユーザー bufu をASREP-Roastableにし、詳細出力を表示
Set-Kerberoasting -Users bufu -Verbose
# 指定されたユーザーリストをASREP-Roastableにし、詳細出力を表示
Set-Kerberoasting -Users ("bufu", "pepe") -Verbose
この関数は、まずChadsグループにDomain Adminsに対するGenericAll権限を付与します。次に、DegensグループにChadsグループに対するGenericAll権限を付与します。最後に、Degensグループの一部のユーザーに対して、Normiesグループの一部のユーザーにGenericAll権限を付与します。
# 脆弱なACLを作成し、詳細出力を表示
Set-BadACLs -Verbose
この関数はまずGPOを構成して、ドメイン参加システムへのWinRM over TCPポート5985を許可します。次に、GPOを通じてPSリモート処理を有効にします。
# PSリモート処理を有効にし、詳細出力を表示
Set-PSRemoting -Verbose