Visitar uma URL suspeita diretamente da sua estação de trabalho de pesquisa é imprudente — mais de 70% das páginas de destino maliciosas fazem fingerprint do IP de conexão e servem uma página benigna ou bloqueiam a requisição por completo. O isolamento por proxy não é opcional; é a base para qualquer coleta de inteligência de ameaças confiável. Sem ele, você está entregando o netblock da sua infraestrutura para adversários que irão se voltar para atacar seus serviços internos em minutos.
Por que a Navegação Direta Falha para Inteligência de Ameaças
Kits de exploit e phishing modernos verificam REMOTE_ADDR em listas de bloqueio de inteligência de ameaças, bancos de dados de geolocalização e até consultas de DNS reverso. Uma conexão direta de um ASN de pesquisa conhecido aciona um redirecionamento para uma página limpa ou um 404. Pior, muitos kits usam JavaScript para enumerar o IP local do cliente via vazamentos WebRTC (RFC 8834) — expondo sua rede real mesmo atrás de uma VPN. O isolamento por proxy quebra essa cadeia ao encerrar a conexão em um intermediário remoto que não compartilha a reputação da sua infraestrutura. O próprio proxy deve ser descartável: uma instância de nuvem de uso único ou um pool de proxies residenciais rotativos. Proxies estáticos de um único provedor são queimados em dias.
Isolamento em Camadas: Proxy + VM ou Contêiner
Um proxy sozinho é insuficiente se o navegador vazar dados através de DNS, canais laterais baseados em tempo ou fingerprinting de navegador. Combine o proxy com uma VM ou contêiner criado para esse fim, sem armazenamento persistente, sem montagens do sistema de arquivos do host e com um perfil de navegador reduzido. Use iptables no contêiner para forçar toda a saída através do proxy e descartar todo o tráfego para endereços RFC 1918. Por exemplo, um contêiner Docker com --network none e um túnel SOCKS5 via ssh -D 1080 para uma jump box descartável. Isso impede que o navegador contorne o proxy via WebSocket ou WebRTC — um modo de falha comum ao usar apenas uma configuração de proxy no nível do navegador. A VM ou contêiner deve ser destruída após cada sessão; snapshots são aceitáveis apenas se você limpar todos os cookies, cache e localStorage.
Ferramentas: Burp Suite com Cadeia de Proxy e Navegadores Headless
Para análise manual, encadeie o Burp Suite através de um proxy SOCKS5 (RFC 1928) configurando User options > Connections > SOCKS Proxy para 127.0.0.1:1080 e habilitando Do DNS resolution via SOCKS proxy. Isso força todas as consultas DNS através do proxy, evitando vazamentos de DNS. Para coleta automatizada, farms de navegadores headless usando Puppeteer ou Playwright são o padrão. Abaixo está um script Puppeteer mínimo que roteia todo o tráfego através de um proxy SOCKS5 e desabilita o 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();
Essa abordagem funciona, mas cuidado: muitos navegadores headless são detectáveis via navigator.webdriver e pela ausência de chrome.runtime. Use puppeteer-extra-plugin-stealth ou os patches de stealth integrados do Playwright para reduzir o fingerprinting. Mesmo assim, kits sofisticados detectam Chrome headless verificando a falta de propriedades window.chrome ou comprimento anormal de navigator.plugins. A única contramedida confiável é executar um navegador completo (não headless) em uma VM com um driver de vídeo real — mas isso não escala bem.
Alternativas ao urlscan.io para Análise Auto-Hospedada
O urlscan.io é conveniente, mas compartilha os metadados das suas varreduras com a comunidade e registra seu IP. Para investigações sensíveis, hospede sua própria plataforma de captura. PhantomJS está morto; use Playwright com um logger HAR personalizado e uma instância local de mitmproxy. mitmproxy (--mode socks5 --listen-port 8080) registra todos os pares de requisição/resposta e permite modificação inline de cabeçalhos ou respostas. Combine com wireshark para análise de PCAP. Outra opção é ThreatPinch Lookup — uma extensão do Chrome que consulta feeds locais de inteligência de ameaças — mas não é uma solução completa de isolamento. Para varreduras em massa, implante PhishingKitTracker ou um script Python personalizado usando requests com uma lista de proxies rotativos de proxybroker. A troca: sistemas auto-hospedados exigem manutenção de pools de proxies e perfis de navegador, mas oferecem controle total sobre a retenção de dados e evitam vazar seus alvos de investigação para terceiros.