Defensive Research

Defensive Bedrohungsforschung: Besuch verdächtiger URLs durch Proxy-Isolation

3 min read Published Updated 654 words

Das direkte Aufrufen einer verdächtigen URL von Ihrem Forschungsarbeitsplatz aus ist leichtsinnig – über 70 % der bösartigen Landingpages fingerprinten die verbindende IP und liefern entweder eine harmlose Seite oder blockieren die Anfrage vollständig. Proxy-Isolation ist keine Option; sie ist die Grundlage für jede glaubwürdige Bedrohungsanalyse. Ohne sie geben Sie den Netblock Ihrer Infrastruktur an Angreifer weiter, die innerhalb von Minuten auf Ihre internen Dienste abzielen.

Warum direktes Browsen für Threat Intel versagt

Moderne Exploit-Kits und Phishing-Kits prüfen REMOTE_ADDR gegen Threat-Intel-Blocklisten, Geodatenbanken und sogar Reverse-DNS-Abfragen. Eine direkte Verbindung von einer bekannten Forschungs-ASN löst eine Weiterleitung zu einer sauberen Seite oder einen 404 aus. Schlimmer noch, viele Kits verwenden JavaScript, um die lokale IP des Clients über WebRTC-Leaks (RFC 8834) zu ermitteln – und legen so Ihr wahres Netzwerk selbst hinter einem VPN offen. Proxy-Isolation unterbricht diese Kette, indem sie die Verbindung an einem entfernten Zwischenglied beendet, das nicht den Ruf Ihrer Infrastruktur teilt. Der Proxy selbst muss wegwerfbar sein: eine einmalig genutzte Cloud-Instanz oder ein rotierender Residential-Proxy-Pool. Statische Proxys von einem einzigen Anbieter werden innerhalb von Tagen verbrannt.

Mehrschichtige Isolation: Proxy + VM oder Container

Ein Proxy allein ist unzureichend, wenn der Browser Daten über DNS, zeitbasierte Seitenkanäle oder Browser-Fingerprinting preisgibt. Kombinieren Sie den Proxy mit einer speziell entwickelten VM oder einem Container ohne persistenten Speicher, ohne Host-Dateisystem-Mounts und mit einem reduzierten Browserprofil. Verwenden Sie iptables im Container, um den gesamten ausgehenden Verkehr durch den Proxy zu zwingen und jeglichen Datenverkehr zu RFC-1918-Adressen zu verwerfen. Zum Beispiel ein Docker-Container mit --network none und einem SOCKS5-Tunnel über ssh -D 1080 in eine wegwerfbare Jump-Box. Dies verhindert, dass der Browser den Proxy über WebSocket oder WebRTC umgeht – ein häufiger Fehlermodus bei Verwendung nur einer Proxy-Einstellung auf Browser-Ebene. Die VM oder der Container sollte nach jeder Sitzung zerstört werden; Snapshots sind nur akzeptabel, wenn Sie alle Cookies, den Cache und localStorage bereinigen.

Werkzeuge: Burp Suite mit Proxy-Kette und Headless-Browsern

Für manuelle Analysen ketten Sie Burp Suite über einen SOCKS5-Proxy (RFC 1928), indem Sie User options > Connections > SOCKS Proxy auf 127.0.0.1:1080 konfigurieren und Do DNS resolution via SOCKS proxy aktivieren. Dies erzwingt alle DNS-Abfragen über den Proxy und vermeidet DNS-Leaks. Für automatisierte Sammlungen sind Headless-Browser-Farmen mit Puppeteer oder Playwright der Standard. Nachfolgend ein minimales Puppeteer-Skript, das den gesamten Datenverkehr über einen SOCKS5-Proxy leitet und WebRTC deaktiviert:

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();

Dieser Ansatz funktioniert, aber Vorsicht: Viele Headless-Browser sind über navigator.webdriver und fehlende chrome.runtime erkennbar. Verwenden Sie puppeteer-extra-plugin-stealth oder die integrierten Stealth-Patches von Playwright, um das Fingerprinting zu reduzieren. Selbst dann erkennen ausgefeilte Kits Headless-Chrome, indem sie auf fehlende window.chrome-Eigenschaften oder abnormale navigator.plugins-Länge prüfen. Die einzig zuverlässige Gegenmaßnahme ist die Ausführung eines vollständigen Browsers (nicht headless) in einer VM mit einem echten Display-Treiber – das skaliert jedoch schlecht.

Alternativen zu urlscan.io für selbst gehostete Analysen

urlscan.io ist praktisch, teilt aber Ihre Scan-Metadaten mit der Community und protokolliert Ihre IP. Für sensible Untersuchungen hosten Sie selbst eine Erfassungsplattform. PhantomJS ist tot; verwenden Sie Playwright mit einem benutzerdefinierten HAR-Logger und einer lokalen mitmproxy-Instanz. mitmproxy (--mode socks5 --listen-port 8080) zeichnet alle Request/Response-Paare auf und erlaubt Inline-Änderungen von Headern oder Antworten. Kombinieren Sie es mit wireshark für die PCAP-Analyse. Eine weitere Option ist ThreatPinch Lookup – eine Chrome-Erweiterung, die lokale Threat-Intel-Feeds abfragt – aber keine vollständige Isolationslösung. Für Bulk-Scans setzen Sie PhishingKitTracker oder ein benutzerdefiniertes Python-Skript mit requests und einer rotierenden Proxy-Liste von proxybroker ein. Der Kompromiss: Selbst gehostete Systeme erfordern die Wartung von Proxy-Pools und Browser-Profilen, geben Ihnen aber die volle Kontrolle über die Datenaufbewahrung und vermeiden, dass Ihre Untersuchungsziele an Dritte weitergegeben werden.