Ao realizar testes de penetração (pentest) e hacking ético, é crucial ocultar seu verdadeiro endereço IP — não apenas para simular ataques de diferentes locais, mas também para proteger sua própria infraestrutura. Sistemas de proteção como WAF, IDS e IPS rapidamente bloqueiam atividades suspeitas de um único IP, tornando testes adicionais impossíveis. Neste artigo, vamos discutir quais proxies usar para pentest, como configurar a rotação de IP e contornar sistemas de proteção modernos.
Por que usar proxies em pentests
Testes de penetração são atividades legais realizadas com o consentimento do proprietário do sistema. No entanto, tecnicamente, elas se assemelham a um ataque, e os sistemas de proteção reagem de acordo. Os proxies resolvem várias tarefas críticas em um pentest:
1. Proteção do verdadeiro endereço IP. Mesmo em testes legais, é importante não revelar sua localização e infraestrutura reais. Se você estiver testando o perímetro externo, seu IP pode ser incluído em listas negras de vários sistemas de segurança, o que criará problemas no futuro. Além disso, ao trabalhar com programas de bug bounty, é importante manter a anonimidade até que a vulnerabilidade seja divulgada.
2. Contornando limitações de taxa e bloqueios de IP. WAFs (Web Application Firewalls) e IDSs (Intrusion Detection Systems) modernos monitoram a quantidade de solicitações de um único IP. Ao escanear portas, realizar brute force ou fuzzing, você rapidamente ultrapassará os limites e será banido. A rotação de IP através de proxies permite distribuir a carga e continuar os testes.
3. Simulação de ataques de diferentes localizações geográficas. Alguns sistemas de proteção aplicam geo-blocking ou têm regras diferentes para diferentes regiões. Para testes completos, é necessário verificar como o sistema reage a solicitações dos EUA, Europa e Ásia. Proxies com IPs de diferentes países permitem realizar esses testes sem a necessidade de deslocamento físico.
4. Testes de ataques distribuídos (simulação de DDoS). Ao testar a resistência a ataques DDoS, é necessário simular tráfego de múltiplos endereços IP. Pools de proxies permitem criar uma carga realista e verificar como os sistemas de mitigação lidam com um ataque distribuído.
5. Contornando fingerprinting e análise de TLS. Sistemas de proteção avançados analisam não apenas o IP, mas também impressões digitais de TLS, User-Agent e cabeçalhos HTTP. O uso de proxies em conjunto com a configuração correta do cliente ajuda a contornar essa análise e realizar testes mais profundos.
Quais tipos de proxies são adequados para hacking ético
Para pentests, diferentes tipos de proxies são utilizados dependendo da tarefa. Vamos considerar as principais opções e suas aplicações:
| Tipo de proxy | Vantagens | Desvantagens | Aplicação |
|---|---|---|---|
| HTTP/HTTPS | Configuração simples, operação no nível de aplicativo | Apenas tráfego web, cabeçalhos visíveis | Testes de aplicações web, escaneamento de sites |
| SOCKS5 | Qualquer protocolo, suporte a UDP, autenticação | Configuração um pouco mais complexa | Escaneamento de portas, trabalho com qualquer protocolo |
| Residenciais | IPs reais de provedores, baixo trust score | Mais caros, velocidade variável | Contornar WAFs rigorosos, testar restrições geográficas |
| Data centers | Alta velocidade, estabilidade, baixo custo | Fácil de identificar como proxies | Escaneamento em massa, brute force, fuzzing |
| Móveis | Maior trust score, IPs dinâmicos | Os mais caros, menor velocidade | Testes de aplicações móveis, contornando bloqueios rigorosos |
Protocolo SOCKS5 vs HTTP/HTTPS. Para pentests, SOCKS5 é preferível, pois opera em um nível mais baixo e permite qualquer tipo de tráfego — TCP, UDP, consultas DNS. Isso é crítico ao usar ferramentas como Nmap, Metasploit, sqlmap, que podem não funcionar apenas com HTTP. Proxies HTTP são adequados apenas para testes web através de navegadores ou scanners especializados de aplicações web (Burp Suite, OWASP ZAP).
Túneis SSH e VPN. Alguns pentesters usam túneis SSH (encaminhamento de porta dinâmica) ou VPNs em vez de proxies. Um túnel SSH funciona como um proxy SOCKS e é adequado para a maioria das tarefas, mas requer um servidor SSH. VPNs criptografam todo o tráfego e alteram o IP, mas são menos flexíveis para rotação de endereços — ao mudar o servidor VPN, todas as conexões são interrompidas.
Residenciais vs data centers: o que escolher
A escolha entre proxies residenciais e proxies de data centers depende do sistema alvo e seu nível de proteção.
Quando usar proxies residenciais:
- Testes de sistemas com detecção avançada de bots (Cloudflare, Akamai, PerimeterX)
- Verificação de restrições geográficas e versões regionais de aplicações
- Testes de aplicações móveis e APIs que bloqueiam data centers
- Programas de bug bounty, onde a máxima discrição é importante
- Engenharia social e coleta de OSINT através de redes sociais
Proxies residenciais têm endereços IP de provedores de internet reais, que são usados por usuários comuns. Sistemas de proteção não podem simplesmente bloquear todo o intervalo de um provedor, pois isso bloquearia usuários legítimos. O trust score desses IPs é significativamente mais alto, permitindo passar em verificações de detecção de bots.
Quando usar proxies de data centers:
- Escaneamento em massa de portas e serviços (Nmap, Masscan)
- Brute force de senhas e diretórios (Hydra, Gobuster, ffuf)
- Fuzzing de aplicações web (Burp Intruder, wfuzz)
- Testes de sistemas internos sem proteção rigorosa
- Tarefas onde a velocidade e o volume de tráfego são importantes
Proxies de data centers operam de 5 a 10 vezes mais rápido que os residenciais e custam significativamente menos. Para a maioria das tarefas de pentest, onde não é necessário contornar sistemas de proteção complexos, eles são a escolha ideal. A velocidade é crítica ao escanear milhares de portas ou tentar milhares de caminhos em um servidor web.
Abordagem combinada. Pentesters experientes usam ambos os tipos de proxies: data centers para reconhecimento inicial e escaneamento em massa, e residenciais para testes direcionados de vulnerabilidades específicas e contorno de proteção. Por exemplo, é possível realizar escaneamento de portas através de proxies rápidos de data centers e, em seguida, explorar as vulnerabilidades encontradas através de IPs residenciais para minimizar os riscos de detecção.
Configuração de cadeias de proxies (proxy chains)
Proxy chains é uma técnica de roteamento de tráfego através de vários servidores proxy em sequência. Cada servidor na cadeia vê apenas o IP do proxy anterior, o que dificulta significativamente o rastreamento da verdadeira origem das solicitações.
Instalação e configuração do proxychains no Linux:
# Instalação
sudo apt-get install proxychains4
# Editando a configuração
sudo nano /etc/proxychains4.conf
Exemplo de configuração do proxychains4.conf:
# Modo de operação: dynamic (ignora proxies indisponíveis)
dynamic_chain
# Modo silencioso (não exibe informações sobre proxies)
quiet_mode
# Consultas DNS através de proxy (importante para anonimato)
proxy_dns
# Lista de proxies (adicionados sequencialmente)
[ProxyList]
socks5 192.168.1.100 1080 username password
socks5 45.67.89.123 1080
http 34.56.78.90 8080 user pass
Modos de operação do proxychains:
- dynamic_chain — usa todos os proxies disponíveis na ordem, ignorando os indisponíveis. Ideal para pentests.
- strict_chain — usa todos os proxies estritamente na ordem, interrompendo a conexão se um deles estiver indisponível.
- random_chain — escolhe um número aleatório de proxies da lista para cada conexão.
Uso com ferramentas de pentest:
# Nmap através da cadeia de proxies
proxychains4 nmap -sT -Pn target.com
# Metasploit
proxychains4 msfconsole
# Sqlmap
proxychains4 sqlmap -u "http://target.com/page?id=1" --dbs
# Gobuster (brute force de diretórios)
proxychains4 gobuster dir -u http://target.com -w wordlist.txt
# Curl
proxychains4 curl https://target.com
Pontos importantes ao usar proxy chains:
- Cada proxy na cadeia adiciona latência — uma cadeia de 3 proxies pode aumentar o ping de 50ms para 500ms
- Consultas DNS devem passar pelo proxy (proxy_dns), caso contrário, seu IP real vazará através do DNS
- Nem todas as ferramentas funcionam corretamente através do proxychains — algumas usam sockets brutos
- Para Nmap, use apenas escaneamento TCP (-sT), escaneamento SYN (-sS) não funciona através de proxies
Alternativa: Tor + proxychains. É possível combinar Tor com proxies adicionais para aumentar a anonimidade. O Tor já usa uma cadeia de 3 nós, adicionar proxies antes de entrar no Tor ou após sair cria um nível adicional de proteção:
# Configuração: Proxy → Tor → Alvo
[ProxyList]
socks5 45.67.89.123 1080 # Proxy externo
socks5 127.0.0.1 9050 # Tor local
Rotação de IP: como evitar bloqueios
A rotação de endereços IP é uma técnica chave para contornar limitações de taxa e bloqueios baseados em IP. WAFs modernos monitoram a quantidade de solicitações de um único IP em um determinado período (por exemplo, 100 solicitações por minuto). Ultrapassar o limite resulta em bloqueio temporário ou permanente.
Tipos de rotação de proxies:
1. Rotação no nível do provedor de proxies (Rotating proxies). Alguns provedores oferecem um único endpoint (IP:porta), que muda automaticamente o IP de saída a cada solicitação ou em um intervalo específico. Esta é a opção mais simples — não requer alterações no código, basta indicar um endereço de proxy.
# Exemplo com rotating proxy (Python + requests)
import requests
proxies = {
'http': 'http://user:pass@rotating.proxy.com:8080',
'https': 'http://user:pass@rotating.proxy.com:8080'
}
# Cada solicitação vem de um novo IP
for i in range(100):
response = requests.get('https://api.ipify.org', proxies=proxies)
print(f"Solicitação {i}: IP = {response.text}")
2. Rotação no nível da aplicação (Proxy pool). Você recebe uma lista de proxies e implementa a lógica de troca em seu código. Isso oferece mais controle: você pode gerenciar a frequência de troca, excluir proxies não funcionais e distribuir a carga.
# Exemplo de proxy pool com rotação (Python)
import requests
import random
from itertools import cycle
# Lista de proxies
proxy_list = [
'http://user:pass@45.67.89.1:8080',
'http://user:pass@45.67.89.2:8080',
'http://user:pass@45.67.89.3:8080',
'http://user:pass@45.67.89.4:8080',
]
# Iterador cíclico para rotação sequencial
proxy_cycle = cycle(proxy_list)
def get_with_rotation(url):
proxy = next(proxy_cycle)
proxies = {'http': proxy, 'https': proxy}
try:
response = requests.get(url, proxies=proxies, timeout=10)
return response
except requests.exceptions.RequestException as e:
print(f"Erro com o proxy {proxy}: {e}")
return None
# Uso
for i in range(20):
response = get_with_rotation('https://httpbin.org/ip')
if response:
print(f"Solicitação {i}: {response.json()}")
3. Rotação baseada em sessões (Session-based). Para tarefas onde é necessário manter o estado (cookies, sessões), usa-se a vinculação de proxies à sessão. Um proxy é usado para todas as solicitações dentro de uma sessão, e depois muda para uma nova sessão.
# Rotação baseada em sessão
import requests
class ProxySession:
def __init__(self, proxy_list):
self.proxy_list = proxy_list
self.current_proxy_index = 0
def new_session(self):
session = requests.Session()
proxy = self.proxy_list[self.current_proxy_index]
session.proxies = {'http': proxy, 'https': proxy}
# Muda para o próximo proxy para a próxima sessão
self.current_proxy_index = (self.current_proxy_index + 1) % len(self.proxy_list)
return session
# Uso
proxy_manager = ProxySession(proxy_list)
# Sessão 1 com proxy 1
session1 = proxy_manager.new_session()
session1.get('https://target.com/login')
session1.post('https://target.com/api', data={'key': 'value'})
# Sessão 2 com proxy 2
session2 = proxy_manager.new_session()
session2.get('https://target.com/login')
Estratégias de rotação dependendo da tarefa:
- Brute force de senhas — mude o IP a cada 5-10 tentativas para não ultrapassar o limite de logins malsucedidos
- Escaneamento de portas — mude o IP a cada 100-500 portas para que o IDS não perceba o escaneamento de uma única fonte
- Fuzzing de formulários web — rotação a cada 20-50 solicitações, simulando diferentes usuários
- Coleta de dados OSINT — rotação a cada solicitação para APIs de redes sociais ou mecanismos de busca
Monitoramento da funcionalidade dos proxies. Durante a rotação, alguns proxies podem parar de funcionar. É importante implementar verificações e excluir proxies não funcionais:
# Verificação e filtragem de proxies
def check_proxy(proxy):
try:
response = requests.get(
'https://httpbin.org/ip',
proxies={'http': proxy, 'https': proxy},
timeout=5
)
return response.status_code == 200
except:
return False
# Filtragem da lista
working_proxies = [p for p in proxy_list if check_proxy(p)]
print(f"Proxies funcionais: {len(working_proxies)}/{len(proxy_list)}")
Integração de proxies com ferramentas de pentest
A maioria das ferramentas de pentest suporta operação através de proxies. Vamos considerar a configuração para ferramentas populares:
Burp Suite. Uma das principais ferramentas para testar aplicações web. Configuração de proxy:
- User options → Connections → Upstream Proxy Servers
- Add → insira o endereço do proxy, porta, tipo (HTTP/SOCKS)
- Para rotação, você pode usar extensões como "Proxy Rotator"
OWASP ZAP. Alternativa ao Burp Suite com código aberto:
- Tools → Options → Connection → Use outgoing proxy server
- Insira o endereço, porta, autenticação
- Suporta proxies SOCKS para todos os tipos de tráfego
Nmap. Scanner de portas e serviços. Não há suporte direto para proxies (exceto HTTP CONNECT para alguns scripts NSE), é usado através do proxychains:
# Apenas escaneamento TCP funciona através de proxies
proxychains4 nmap -sT -Pn -p 80,443,8080 target.com
# Escaneamento SYN requer sockets brutos e não funciona através de proxies
# nmap -sS target.com # NÃO FUNCIONA através do proxychains
Sqlmap. Ferramenta para busca e exploração automática de injeções SQL:
# Proxy único
sqlmap -u "http://target.com/page?id=1" --proxy="socks5://user:pass@45.67.89.1:1080"
# Arquivo com lista de proxies (rotação)
sqlmap -u "http://target.com/page?id=1" --proxy-file=proxies.txt
# Através do Tor
sqlmap -u "http://target.com/page?id=1" --tor --tor-type=SOCKS5
Metasploit Framework. Plataforma para desenvolvimento e execução de exploits:
# Execução através do proxychains
proxychains4 msfconsole
# Ou configuração dentro do Metasploit
msf6 > setg Proxies socks5:45.67.89.1:1080
msf6 > setg ReverseAllowProxy true
# Para um módulo específico
msf6 exploit(windows/smb/ms17_010_eternalblue) > set Proxies socks5:45.67.89.1:1080
Gobuster / ffuf. Ferramentas para brute force de diretórios e parâmetros:
# Gobuster
gobuster dir -u http://target.com -w wordlist.txt -p socks5://45.67.89.1:1080
# ffuf com proxy
ffuf -u http://target.com/FUZZ -w wordlist.txt -x socks5://45.67.89.1:1080
# ffuf com rotação através do replay-proxy
ffuf -u http://target.com/FUZZ -w wordlist.txt -replay-proxy http://rotating.proxy.com:8080
Hydra. Brute force de senhas para vários protocolos:
# Através do proxychains (para todos os protocolos)
proxychains4 hydra -l admin -P passwords.txt ssh://target.com
# Suporte nativo para HTTP (limitado)
hydra -l admin -P passwords.txt target.com http-get -s 8080 -m /admin
Nuclei. Scanner de vulnerabilidades moderno baseado em templates:
# HTTP proxy
nuclei -u https://target.com -proxy-url http://user:pass@45.67.89.1:8080
# SOCKS5
nuclei -u https://target.com -proxy-url socks5://user:pass@45.67.89.1:1080
# Vários proxies (rotação)
nuclei -list targets.txt -proxy-url http://proxy1.com:8080,http://proxy2.com:8080
Contornando WAF, IDS e outros sistemas de proteção
Sistemas de proteção modernos utilizam uma variedade de métodos de detecção de ataques. Proxies são apenas uma parte da estratégia de contorno. Vamos considerar uma abordagem abrangente:
1. Contornando bloqueios baseados em IP. O nível mais simples de proteção é o bloqueio por IP. Isso pode ser resolvido com a rotação de proxies, respeitando os limites de taxa:
- Use atrasos entre solicitações (time.sleep em Python)
- Mude o IP ao receber HTTP 429 (Too Many Requests)
- Imite o comportamento humano — intervalos aleatórios entre solicitações
2. Contornando geo-blocking. Alguns sistemas bloqueiam países ou regiões inteiras. Use proxies residenciais do país necessário:
# Exemplo: testes de diferentes países
countries = ['US', 'GB', 'DE', 'FR']
for country in countries:
proxy = f'http://user-country-{country}:pass@proxy.com:8080'
response = requests.get('https://target.com', proxies={'http': proxy, 'https': proxy})
print(f"{country}: Status {response.status_code}")
3. Contornando fingerprinting (impressões digitais do navegador). WAFs avançados analisam impressões digitais de TLS, cabeçalhos HTTP, ordem dos cabeçalhos. Use bibliotecas que imitam navegadores reais:
# curl-impersonate — imitação de impressões digitais de navegadores
curl_chrome116 --proxy socks5://45.67.89.1:1080 https://target.com
# Python: requests + curl_cffi (contornando Cloudflare)
from curl_cffi import requests
response = requests.get(
'https://target.com',
proxies={'https': 'socks5://45.67.89.1:1080'},
impersonate='chrome116'
)
4. Contornando detecção de bots (Cloudflare, PerimeterX, Akamai). Esses sistemas utilizam chamadas JavaScript, fingerprinting de canvas, WebGL, análise de movimento do mouse. Soluções:
- Use navegadores headless com configurações corretas (Playwright, Puppeteer)
- Aplique técnicas anti-detect: substituição de WebGL, Canvas, AudioContext
- Combine proxies residenciais com User-Agent realistas
- Use soluções prontas: undetected-chromedriver, playwright-stealth
# Playwright com proxy e anti-detect
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(
proxy={
'server': 'socks5://45.67.89.1:1080',
'username': 'user',
'password': 'pass'
}
)
context = browser.new_context(
user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
viewport={'width': 1920, 'height': 1080},
locale='en-US',
timezone_id='America/New_York'
)
# Mascarando webdriver
context.add_init_script("""
Object.defineProperty(navigator, 'webdriver', {get: () => undefined})
""")
page = context.new_page()
page.goto('https://target.com')
# ... ações adicionais
5. Contornando IDS/IPS (Sistemas de Detecção/Prevenção de Intrusões). Esses sistemas analisam o tráfego de rede em busca de assinaturas de ataques:
- Fragmentação de pacotes — divida a carga útil em partes pequenas
- Ofuscação — codifique a carga útil (base64, URL-encoding, Unicode)
- Distribuição do ataque ao longo do tempo — escaneamento lento com intervalos longos
- Rotação de proxies — cada etapa do ataque a partir de diferentes IPs
# Nmap: escaneamento lento para contornar IDS
proxychains4 nmap -sT -Pn -T2 --scan-delay 5s -p- target.com
# -T2: template de timing lento
# --scan-delay 5s: 5 segundos entre as tentativas de portas
# A combinação com rotação de proxies torna o escaneamento quase indetectável
6. Contornando CAPTCHA. Durante testes agressivos, você pode se deparar com CAPTCHA. Opções:
- Reduza a agressividade — menos solicitações, mais atraso
- Use serviços de resolução de CAPTCHA (2captcha, Anti-Captcha) — para bug bounty
- Busque endpoints alternativos sem CAPTCHA (APIs, versões móveis)
Segurança operacional (OPSEC) ao usar proxies
Mesmo ao usar proxies, é possível cometer erros que revelam sua identidade ou localização. Segurança operacional (OPSEC) é um conjunto de práticas para minimizar esses riscos.
Vazamentos comuns ao usar proxies:
1. Vazamentos de DNS. Mesmo ao usar proxies, as consultas DNS podem ir diretamente do seu provedor, revelando a localização real:
# Verificação de vazamento de DNS
dig @8.8.8.8 target.com # A consulta DNS vai diretamente para o Google DNS
# Solução: usar DNS através do proxy
# No proxychains: proxy_dns
# No Python requests: use IPs em vez de domínios ou configure DNS over HTTPS
2. Vazamentos de WebRTC (para ferramentas de navegador). WebRTC pode revelar seu IP real mesmo através de proxies:
- Desative o WebRTC no navegador ou use extensões (WebRTC Leak Shield)
- Ao usar Playwright/Puppeteer — bloqueie WebRTC através de permissões
3. Vazamentos de fuso horário e local. Seu fuso horário e configurações de idioma podem não corresponder ao IP do proxy:
# Configuração correta do fuso horário no Playwright
context = browser.new_context(
proxy={'server': 'socks5://us-proxy.com:1080'},
locale='en-US', # Corresponde ao proxy dos EUA
timezone_id='America/New_York', # Fuso horário dos EUA
geolocation={'latitude': 40.7128, 'longitude': -74.0060} # Coordenadas de NY
)
4. Vazamentos de cookies e sessões. Não use os mesmos cookies de diferentes proxies — isso vincula suas solicitações:
- Cada proxy = nova sessão com cookies limpos
- Não faça login na mesma conta de diferentes IPs sem necessidade
- Use contêineres de navegador ou perfis separados
5. Consistência de fingerprinting. A impressão digital do navegador deve corresponder ao IP do proxy:
- Proxy dos EUA + idioma russo do navegador = suspeito
- Proxy móvel + User-Agent de desktop = inconsistência
- Use ferramentas para gerar impressões digitais consistentes
Recomendações de OPSEC para pentesters:
- Use uma VM dedicada para pentest — isole-a do sistema principal
- Logs e artefatos — armazene em discos criptografados, exclua após o término do projeto
- Separação de proxies — use diferentes pools de proxies para diferentes projetos
- Não misture tráfego legal e ilegal através dos mesmos proxies
- Verifique proxies para vazamentos — teste regularmente através de ipleak.net, browserleaks.com
- Documentação — mantenha registros do uso de proxies para relatórios a clientes (quais IPs, quando)
Aspectos legais. Mesmo em pentests legais, é importante:
- Ter permissão por escrito (escopo de trabalho) do cliente
- Não ultrapassar o escopo acordado — teste apenas sistemas permitidos
- Notificar o cliente sobre os IPs de proxies utilizados para whitelist em seus sistemas
- Cumprir as leis do país onde os sistemas testados estão localizados
Conclusão
Proxies são ferramentas essenciais para o pentester moderno e especialista em segurança da informação. Eles permitem ocultar o IP real, contornar sistemas de proteção, simular ataques de diferentes localizações e distribuir a carga para evitar bloqueios. A escolha do tipo de proxy depende da tarefa: para escaneamento em massa, proxies rápidos de data centers são adequados, enquanto para contornar WAFs complexos e detecção de bots, proxies residenciais com alto trust score são recomendados.
Pontos-chave ao usar proxies para pentests: configuração correta da rotação de IP para contornar limitações de taxa, integração com ferramentas através de proxychains ou suporte nativo, e manutenção da segurança operacional para evitar vazamentos de IP real através de DNS, WebRTC ou fingerprinting. A combinação de medidas técnicas (cadeias de proxies, técnicas anti-detect, ofuscação) e a OPSEC correta garantem testes eficazes e seguros.
Para tarefas de hacking ético, recomendamos usar proxies residenciais ao testar sistemas com proteção avançada e proxies de data centers para escaneamento em massa e tarefas onde a velocidade é importante. A escolha e configuração corretas de proxies aumentam significativamente a eficácia dos testes e minimizam os riscos de detecção.