Japan
サイト内の現在位置
Pentest Active Directory LAB project - GOADの紹介
NECセキュリティブログ2023年4月21日
GOAD(Game Of Active Directory)とは
GOAD [1]のREADMEでは、「GOAD はペンテストActive Directoryラボプロジェクトです。このラボの目的は、ペンテスターが脆弱な Active Directory 環境上で一般的な攻撃手法を練習できるようにすることです。」と説明されています。
環境は5台のマシンで構成されており以下のような構成(図1)となっています。
READMEにはROAD MAPが記載されています。以下の項目にチェックが付いており各項目に関連する脆弱性が埋め込まれています。(2023/4/4時点)
- Password reuse between computer (PTH)
- Spray User = Password
- Password in description
- SMB share anonymous
- SMB not signed
- Responder
- Zerologon
- Windows defender
- ASREPRoast
- Kerberoasting
- AD Acl abuse
- Unconstraint delegation
- Ntlm relay
- Constrained delegation
- Install MSSQL
- MSSQL trusted link
- MSSQL impersonate
- Install IIS
- Upload asp app
- Multiples forest
- Anonymous RPC user listing
- Child parent domain
- Generate certificate and enable ldaps
- ADCS - ESC 1/2/3/8
- Certifry
- Samaccountname/nopac
- Petitpotam unauthent
- Printerbug
- Drop the mic
- Shadow credentials
- Mitm6
- Add LAPS
- GPO abuse
- Add Webdav
- Add RDP bot
環境構築手順
# apt update
# apt install -y virtualbox-guest-utils virtualbox-guest-x11 git virtualbox python3-pip
# pip3 install --upgrade pip
# pip3 install ansible-core==2.12.6
# pip3 install pywinrm
# wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
# apt update && apt install vagrant
# vagrant plugin install winrm
# vagrant plugin install winrm-elevated
# git clone https://github.com/Orange-Cyberdefense/GOAD /opt/goad
# cd /opt/goad/ansible
# ansible-galaxy install -r requirements.yml
2. 仮想マシンの作成
以下のコマンドでvagrant [5]を使用して仮想マシンを作成します。
# cd /opt/goad
# vagrant up
コマンド実行後にvirtualboxを起動すると以下のように仮想マシン5台が作成されていることが確認できます。(図2)

以降の手順で仮想マシンの設定を行っていくのですが、失敗した場合に復元できるようにvagrantを使ってスナップショットを作成しておくことをお勧めします。
スナップショットは以下のコマンドで作成できます。「init」という名前のスナップショットとなります。
# cd /opt/goad
# vagrant snapshot save init
3. 仮想マシンの設定
仮想マシンが作成されたら次に仮想マシンの設定を行います。
仮想マシンの設定はansible [6]を使って行います。以下のコマンドを実行します。
# cd /opt/goad/ansible
# ansible-playbook main.yml
筆者が試したときは、failが発生したため手順2.で作成したスナップショットにリストアをして再度コマンドを実行したらfailは発生せず構築できました。リストアは以下のコマンドで実行できます。
# cd /opt/goad
# vagrant snapshot restore init
4. 仮想マシンの再起動
設定後に、以下のコマンドを実行して仮想マシンを再起動します。
# cd /opt/goad
# vagrant halt
# vagrant up
公式ページで再起動を指示する記載は見つけられませんでしたが、再起動をしないと以降で紹介する脆弱性の確認がうまくいきませんでした。
脆弱性の検証
前節で環境が構築できたので、まず環境が動作しているかを確認します。
ホストマシンにcrackmapexec [7]をインストールして仮想マシンが配置されたサブネットに対してスキャンを行います。5台のマシンから応答があり動作していることが確認できます。
$ pip3 install crackmapexec
$ export PATH=$PATH:${HOME}/.local/bin
$ crackmapexec smb 192.168.56.1/24
SMB 192.168.56.23 445 BRAAVOS [*] Windows Server 2016 Standard Evaluation 14393 x64 (name:BRAAVOS) (domain:essos.local) (signing:False) (SMBv1:True)
SMB 192.168.56.22 445 CASTELBLACK [*] Windows 10.0 Build 17763 x64 (name:CASTELBLACK) (domain:north.sevenkingdoms.local) (signing:False) (SMBv1:False)
SMB 192.168.56.11 445 WINTERFELL [*] Windows 10.0 Build 17763 x64 (name:WINTERFELL) (domain:north.sevenkingdoms.local) (signing:True) (SMBv1:False)
SMB 192.168.56.10 445 KINGSLANDING [*] Windows 10.0 Build 17763 x64 (name:KINGSLANDING) (domain:sevenkingdoms.local) (signing:True) (SMBv1:False)
SMB 192.168.56.12 445 MEEREEN [*] Windows Server 2016 Standard Evaluation 14393 x64 (name:MEEREEN) (domain:essos.local) (signing:True) (SMBv1:True)
次に開発者のWriteUp [2]を参考にクレデンシャル情報の取得を試みます。
WriteUpはpart1 ~ part12まであります(2023/4/4 時点)。今回は「GOAD – part3 – enumeration with user」の冒頭部分の手順を試してみます。
crackmapexecを使用してユーザを列挙します。以下のコマンドで列挙します。
$ crackmapexec smb 192.168.56.11 --users
SMB 192.168.56.11 445 WINTERFELL [*] Windows 10.0 Build 17763 x64 (name:WINTERFELL) (domain:north.sevenkingdoms.local) (signing:True) (SMBv1:False)
SMB 192.168.56.11 445 WINTERFELL [-] Error enumerating domain users using dc ip 192.168.56.11: NTLM needs domain\username and a password
SMB 192.168.56.11 445 WINTERFELL [*] Trying with SAMRPC protocol
SMB 192.168.56.11 445 WINTERFELL [+] Enumerated domain user(s)
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\Guest Built-in account for guest access to the computer/domain
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\arya.stark Arya Stark
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\sansa.stark Sansa Stark
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\brandon.stark Brandon Stark
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\rickon.stark Rickon Stark
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\hodor Brainless Giant
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\jon.snow Jon Snow
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\samwell.tarly Samwell Tarly (Password : Heartsbane)
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\jeor.mormont Jeor Mormont
SMB 192.168.56.11 445 WINTERFELL north.sevenkingdoms.local\sql_svc sql service
複数のユーザが列挙されており一番右の列には各ユーザのDescriptionが表示されています。ユーザsamwell.tarlyのDescriptionに着目すると「Samwell Tarly (Password : Heartsbane)」と表示されておりパスワードが取得できます。これはROAD MAPに記載されていた「Password in description」に該当する脆弱性となります。Descriptionには機微情報を記載しないことが推奨されます。
さいごに
GOAD(Game Of Active Directory) での環境構築方法と環境の脆弱性の一部を紹介しました。今回は簡単な脆弱性を紹介しましたがWriteUpには複雑な攻撃手順を要する脆弱性もありますので、さらに高度なActive Directoryの攻撃手法を学ぶこともできます。
参考
- [1]GitHub - Orange-Cyberdefense/GOAD: game of active directory
https://github.com/Orange-Cyberdefense/GOAD
- [2]AD | Mayfly
https://mayfly277.github.io/categories/ad/
- [3]Oracle VM VirtualBox
https://www.virtualbox.org/
- [4]Windows 仮想マシン | Workstation Pro | VMware | JP
https://www.vmware.com/jp/products/workstation-pro.html
- [5]Vagrant by HashiCorp
https://www.vagrantup.com/
- [6]Ansible is Simple IT Automation
https://www.ansible.com/
- [7]GitHub - Porchetta-Industries/CrackMapExec: A swiss army knife for pentesting networks
https://github.com/Porchetta-Industries/CrackMapExec
執筆者プロフィール
岩川 健人(いわかわ けんと)
セキュリティ技術センター リスクハンティング・アナリシスグループ
高性能計算(HPC)分野のソフトウェア開発業務を経て、現在はペネトレーションテスト、脆弱性診断などに従事。
SANS SEC575 メダル保持。
CISSP/情報処理安全確保支援士(RISS) /情報処理技術者試験(NW,DB,ES)/GIAC(GREM,GMOB)/AWS認定(SAA,SCS)を保持。

執筆者の他の記事を読む
アクセスランキング
2025年4月6日~4月12日に読まれた記事のランキング