今天要打的是 Web Investigation Lab,分類是 Network Forensics,難度為 easy。
您是網路安全分析師,任職於BookWorld的安全營運中心 (SOC)。 BookWorld是一家大型線上書店,以其豐富的文學作品而聞名。 BookWorld致力於為全球圖書愛好者提供無縫安全的購物體驗,並以此為榮。最近,您的任務是加強公司的網路安全態勢,監控網路流量,並確保數位環境免受威脅。 一天深夜,資料庫查詢和伺服器資源使用量出現異常激增,觸發了自動警報,表示可能存在惡意活動。這一異常情況引發了人們對BookWorld客戶資料和內部系統完整性的擔憂,促使公司立即展開徹底調查。 作為此案的首席分析師,您需要分析網路流量,以揭示可疑活動的性質。您的目標包括識別攻擊向量,評估任何潛在資料外洩的範圍,以及確定攻擊者是否獲得了BookWorld內部系統的進一步存取權限。
Wireshark
篩選 HTTP 流量
Wireshark 的右下角顯示總共有超過八萬個封包,其中大部分都是 111.224.250.131 的 GET 請求,並且我們可以看到這個 IP 持續請求不同的檔案路徑:c.axd、c.bak、c.html 等,這些檔案路徑不是正常的網站資源。大量請求、非正常路徑、持續的行為,種種跡象表明這個 IP 正在進行枚舉 (enumeration)。
此外,我們還可以看到這個攻擊者嘗試 SQL Injection 並且成功了 (HTTP 200 OK)。 以上任意一點都可以讓我們推斷這個 IP 是攻擊者。
Ans:111.224.250.131
使用 IP 查詢網站查詢,我們可以看到這個 IP 位在中國石家莊
Ans:Shijiazhuang
我們可以看到有漏洞的是 search.php,攻擊者成功對它 SQLi。
Ans:search.php
使用http.request.method == GET and ip.addr == 111.224.250.131
來篩選 IP 為 111.224.250.131 且同時使用 GET 請求的封包
可以看到第一條 SQLi 是第 357 個封包,他使用 1=1 和 SQL 中的註解標記,這是典型的 SQLi 手法。
當網址中出現空格、=、?、& 等這特殊字元時,瀏覽器會將它們轉換成 % 開頭的十六進位代碼,讓伺服器能正確解析請求,這便是 URL Encode。要解碼很簡單,複製並貼到線上 URL 解碼器解碼
可以看到請求的完整 URL 是 /search.php?search=book and 1=1; -- -
Ans:/search.php?search=book and 1=1; -- -
首先使用 http.response.code == 200 and ip.addr == 111.224.250.131
來把 IP 為 111.224.250.131 並且 HTTP 回應為 200 的封包篩選出來。
然後選擇任意封包,在左下角的 packet detail 中右鍵 Request URL -> Apply as column,我們就能輕鬆的瀏覽每個封包請求的 URL 了
要讀取伺服器上所有可用資料庫要透過查詢 INFORMATION_SCHEMA.SCHEMATA,INFORMATION_SCHEMA.SCHEMATA 就像一個資料庫清單,存著伺服器上所有資料庫的元數據
可以看到第 1525 個封包查詢了 INFORMATION_SCHEMA.SCHEMATA,把它請求的 URL 解碼
Ans:/search.php?search=book' UNION ALL SELECT NULL,CONCAT(0x7178766271,JSON_ARRAYAGG(CONCAT_WS(0x7a76676a636b,schema_name)),0x7176706a71) FROM INFORMATION_SCHEMA.SCHEMATA-- -
我們可以看到一個對 bookworld_db.customers 的請求,Follow -> http stream可以看到 table 中包含了 email、姓名等資訊
Ans:customers
我們可以看到攻擊者成功存取了 admin 目錄,admin 目錄通常是網站的管理後台,一般是隱藏並不允許網站使用者存取的。
Ans:admin
用 http contains "/admin/login.php"
篩選http請求中包含 /admin/login.php 的封包
透過 Follow HTTP Stream,我們可以看到攻擊者嘗試了 username=admin&password=admin123%21 並且成功登入並被重定向到 admin 的 index 介面
URL decode
Ans:admin:admin123!
上傳檔案會使用 POST 請求,所以用http.request.method == POST and ip.addr == 111.224.250.131
篩選 IP 為 111.224.250.131 的 POST 請求
Follow index.php 這個封包的 HTTP stream
可以看到攻擊者上傳了 NVri2vhp.php。
Ans:NVri2vhp.php
今天的 lab 我們學會使用 Wireshark 的 Apply as Column 功能,讓我們能直觀地瀏覽我們指定的封包資訊,並且透過各種 Wireshark 篩選技巧,像是:http.response.code 、http.request.method 等等,成功還原從 SQLi 到惡意檔案上傳的整個攻擊脈絡。
明天我們將學習更進階的網路鑑識技術。