HackTheBox: Overwatch
偵察 — SMB 匿名アクセス → overwatch.exe
ポートスキャン
SMB (445) + WinRM (5985) + MSSQL 非標準ポート (6520) が同時に開いている。Windows ドメインコントローラの特性。
SMB 匿名ゲスト列挙
software 共有が列挙可能。匿名でアクセスできるか試行。
software 共有の内容確認
.NET バイナリ overwatch.exe と PDB (デバッグシンボル) を発見。このシンボルから開発パスやハードコード情報が漏えい可能。
バイナリダウンロードとバイナリ分析
💎 取得認証情報
sqlsvc : TI0LKcfHzZw1Vv
MSSQL 侵入 — 連携サーバ SQL07 を列挙
MSSQL への接続確認
接続文字列は SQL 認証形式だが、実際は Windows 認証 OVERWATCH\sqlsvc でアクセス可能。
linked server 列挙
Linked server SQL07 が設定されている。SQLNCLI provider で SQL Server に接続。認証情報は事前に登録されているはず。
DNS リダイレクト攻撃 — Responder で cleartext 認証情報を取得
bloodyAD で DNS レコードを追加
sqlsvc は AD で DNS レコード作成権限を持つ。SQL07 ホスト名を攻撃者 IP に向ける。
Responder で MSSQL をリッスン
Responder が MSSQL (port 1433) をリッスンしている状態で、SQL07 への接続を試みると、認証情報が cleartext で送信される。
Linked server 接続をトリガー
SQL Server が SQL07 に接続しようとし、Responder が MSSQL login パケットをキャプチャ。
Responder ログから認証情報を抽出
💎 取得認証情報
sqlmgmt : bIhBbzMMnB82yx
WinRM アクセス → user.txt 取得
WinRM 接続確認
Pwn3d! = sqlmgmt は WinRM にアクセス可能で、ローカル管理者権限を持つ可能性がある。
evil-winrm で WinRM シェル接続
user.txt 取得
🚩 user.txt
5c4872aa0fa60caacbe99d70a75659cc
WCF KillProcess 注入 → SYSTEM として code execution → root.txt
WCF サービス (localhost:8000) の確認
overwatch.exe は NSSM (Non-Sucking Service Manager) で SYSTEM ユーザとして起動されており、WCF エンドポイント http://localhost:8000/MonitorService をリッスンしている。
WCF KillProcess メソッドへの SOAP 注入
① heredoc 禁止: PowerShell の here-string (@"..."@) は netexec winrm -X 経由で改行・引用符が壊れる → 文字列結合の一行方式を使う。
② SOAPAction のクォート: $wc.Headers.Add("SOAPAction","\"http://...\"") は PS が \" をエスケープシーケンスと解釈できずエラー → 内側をシングルクォート '\"http://...\"' で囲む。
③ 出力先パス: C:\Windows\Temp\ は ACL 設定によって SYSTEM でも書き込みが失敗する場合がある → C:\ProgramData\ を使う (SYSTEM 常時書き込み可、sqlmgmt も読み取り可)。
WCF の KillProcess("processName") メソッドは内部で
Stop-Process -Name <processName> -Force
と実行する。セミコロンで区切ったコマンドが連鎖実行される (x; CMD; # パターン)。SYSTEM ユーザ権限で実行。
root.txt 取得
🚩 root.txt
0e6c769d2ccabbe43eb1da32b8c5f226
全体まとめと防御側の学び
攻撃チェーンの全体像
| 段階 | 使った脆弱性 | 取得したもの |
|---|---|---|
| 1 | SMB 匿名 + バイナリ逆算 | sqlsvc:TI0LKcfHzZw1Vv |
| 2 | MSSQL Linked server 設定 | SQL07 host 列挙 |
| 3 | AD DNS CREATE_CHILD + Responder | sqlmgmt:bIhBbzMMnB82yx (cleartext) |
| 4 | WCF KillProcess PowerShell injection | SYSTEM RCE → root.txt |
防御側の学び
- SMB 共有の厳格化: overwatch.exe など機密バイナリを SMB 共有に置かない。必要な場合は RBAC で制限する。
- ハードコード認証情報の排除: バイナリに connection string を埋め込まない。環境変数・機密管理システムを使用。
- AD DNS セキュリティ: 誰でも DNS レコードを追加できる設定は危険。DNS ダイナミック更新を制限する。
- Linked server 認証: Linked server の認証情報を暗号化・監査ログで追跡。不要な外部接続を削除。
- WCF サービスの入力検証: ProcessName など外部入力を PowerShell に直接渡さない。ホワイトリスト方式の検証を必須に。

