Defensive Research

防禦性威脅研究:透過 Proxy 隔離造訪可疑 URL

3 min read Published Updated 654 words

直接從你的研究工作站造訪可疑 URL 是魯莽的行為——超過 70% 的惡意登陸頁面會對連線 IP 進行指紋辨識,然後提供無害頁面或直接封鎖請求。代理隔離並非可有可無,而是任何可信威脅情資收集的基礎。沒有它,你等於將基礎架構的網段拱手交給攻擊者,他們會在幾分鐘內轉而針對你的內部服務。

為何直接瀏覽對威脅情資無效

現代的漏洞攻擊套件與釣魚套件會檢查 REMOTE_ADDR,比對威脅情資封鎖清單、地理定位資料庫,甚至進行反向 DNS 查詢。從已知研究 ASN 直接連線,會觸發重新導向至乾淨頁面或回傳 404。更糟的是,許多套件利用 JavaScript 透過 WebRTC 洩漏(RFC 8834)列舉客戶端的本機 IP——即使你使用 VPN,仍會暴露真實網路。代理隔離透過在遠端中介點終止連線來打破這個鏈結,該中介點不共享你基礎架構的信譽。代理本身必須是可拋棄的:一個一次性雲端實例或輪換的住宅代理池。來自單一供應商的靜態代理在幾天內就會被識破。

分層隔離:代理 + 虛擬機或容器

如果瀏覽器透過 DNS、時間側通道或瀏覽器指紋辨識洩漏資料,單靠代理是不夠的。將代理與專用的虛擬機或容器結合使用,該環境沒有持久儲存、沒有主機檔案系統掛載,並使用精簡的瀏覽器設定檔。在容器中使用 iptables 強制所有對外流量通過代理,並丟棄所有發往 RFC 1918 位址的流量。例如,一個使用 --network none 的 Docker 容器,並透過 ssh -D 1080 建立 SOCKS5 隧道連接到一次性跳板機。這可以防止瀏覽器透過 WebSocket 或 WebRTC 繞過代理——這是僅使用瀏覽器層級代理設定時常見的失敗模式。每次工作階段結束後應銷毀該虛擬機或容器;只有在清除所有 Cookie、快取和 localStorage 後,才可接受使用快照。

工具:搭配代理鏈的 Burp Suite 與無頭瀏覽器

對於手動分析,將 Burp Suite 透過 SOCKS5 代理(RFC 1928)串聯,設定 User options > Connections > SOCKS Proxy127.0.0.1:1080,並啟用 Do DNS resolution via SOCKS proxy。這會強制所有 DNS 查詢透過代理進行,避免 DNS 洩漏。對於自動化收集,使用 Puppeteer 或 Playwright 的無頭瀏覽器農場是標準做法。以下是一個最小化的 Puppeteer 腳本,它將所有流量路由通過 SOCKS5 代理並停用 WebRTC:

const puppeteer = require('puppeteer');
const proxy = 'socks5://127.0.0.1:1080';

const browser = await puppeteer.launch({
  args: [
    `--proxy-server=${proxy}`,
    '--disable-webrtc',
    '--no-sandbox',
    '--disable-setuid-sandbox'
  ]
});
const page = await browser.newPage();
await page.authenticate({ username: 'user', password: 'pass' });
await page.goto('http://malicious.example', { waitUntil: 'networkidle0' });
// Capture screenshot, HAR, DOM snapshot
await page.screenshot({ path: 'screenshot.png' });
await browser.close();

這種方法可行,但要注意:許多無頭瀏覽器可透過 navigator.webdriver 及缺少 chrome.runtime 被偵測。使用 puppeteer-extra-plugin-stealth 或 Playwright 內建的隱藏修補程式來減少指紋辨識。即便如此,複雜的套件仍會透過檢查缺少的 window.chrome 屬性或例外的 navigator.plugins 長度來偵測無頭 Chrome。唯一可靠的對策是在虛擬機中執行完整瀏覽器(非無頭),搭配真實顯示驅動程式——但這在擴展性上表現不佳。

urlscan.io 的替代方案:自架分析平台

urlscan.io 雖然方便,但會將你的掃描元資料分享給社群,並記錄你的 IP。對於敏感調查,請自架一個擷取平台。PhantomJS 已淘汰;請使用 Playwright 搭配自訂 HAR 記錄器與本機 mitmproxy 實例。mitmproxy--mode socks5 --listen-port 8080)會記錄所有請求/回應配對,並允許即時修改標頭或回應。搭配 wireshark 進行 PCAP 分析。另一個選項是 ThreatPinch Lookup——一個查詢本機威脅情資來源的 Chrome 擴充功能——但它並非完整的隔離方案。對於大量掃描,可部署 PhishingKitTracker 或使用 requests 搭配來自 proxybroker 的輪換代理清單的自訂 Python 腳本。取捨在於:自架系統需要維護代理池與瀏覽器設定檔,但能讓你完全掌控資料保留,並避免將調查目標洩漏給第三方。