Evadindo IDS, Firewalls e Honeypots: Técnicas Avançadas de Evasão
Todo pentester sério esbarra em defesas. Scan de rede bloqueado. Payloads interceptados. Tráfego estranho redirecionado para um canhoto. Neste artigo da série CEH v13 Zero to Hero, vamos dissecar como IDS, IPS, firewalls e honeypots funcionam — e, mais importante, como atacantes experientes os evadem. O objetivo é didático: entender o ataque para construir defesa melhor.
1. O que são IDS, IPS e Firewalls
Três componentes fundamentais da defesa em profundidade, cada um operando em camadas diferentes do modelo OSI.
IDS (Intrusion Detection System) — Detecta activity suspeita mas não bloqueia. É um observador passivo. Quando identifica algo anômalo, gera um alerta. Pode ser NIDS (Network IDS), monitorando tráfego de rede em tempo real, ou HIDS (Host IDS), instalado num endpoint específico monitorando logs, filesystem e processos. Existe ainda WIDS (Wireless IDS), focado em redes sem fio.
IPS (Intrusion Prevention System) — Vai além da detecção: detecta e bloqueia. Senta inline no caminho do tráfego e pode descartar pacotes, resetar conexões ou bloquear IPs. Também se divide em NIPS (rede) e HIPS (host).
Firewall — Primeira linha de defesa, controla o que entra e sai baseado em regras. Existem três gerações principais:
- Packet Filtering (Camada 3): Examina cabeçalhos IP — endereços de origem/destino, portas, protocolo. Rápido mas burro. Não entende estado da conexão nem conteúdo.
- Stateful Inspection (Camada 4): Mantém uma tabela de estado das conexões ativas. Sabe diferenciar um SYN de um ACK legítimo dentro de uma conexão estabelecida.
- Application-Level / WAF (Camada 7): Inspeção profunda do conteúdo. Entende HTTP, DNS, SMTP. WAF (Web Application Firewall) é o exemplo clássico — protege aplicações web contra SQLi, XSS, etc.
| Componente | Camada OSI | Posição | Ação | Exemplos |
|---|---|---|---|---|
| Packet Filter Firewall | 3 (Rede) | Perímetro | Bloqueia/Permite | iptables, pf |
| Stateful Firewall | 3-4 (Rede/Transporte) | Perímetro | Bloqueia/Permite com estado | PF Sense, Cisco ASA |
| NIDS | 2-7 (Data Link a Application) | Span port / TAP (offline) | Alerta apenas | Snort, Suricata |
| NIPS | 2-7 | Inline | Alerta + Bloqueia | Snort Inline, Suricata IPS |
| HIDS/HIPS | 5-7 | Endpoint | Alerta / Bloqueia | OSSEC, Wazuh |
| WAF | 7 (Application) | Frente ao web server | Inspeciona e bloqueia | ModSecurity, Cloudflare |
2. Como IDS/IPS Funcionam
Existem três abordagens principais de detecção:
Signature-based: Funciona como antivírus — compara o tráfego contra uma base de assinaturas de ataques conhecidos. Rápido e preciso para ameaças catalogadas, mas inútil contra zero-days ou payloads levemente modificados. Um pacote SYN scan contra portas específicas gera uma assinatura clara; fragmentar esse mesmo scan pode burlá-lo.
Anomaly-based: Primeiro, o sistema cria um baseline do tráfego normal durante um período de aprendizado. Depois, qualquer desvio significativo dispara alerta. Mais poderoso contra ataques desconhecidos, mas gera muitos falsos positivos — e o baseline pode ser manipulado.
Heuristic / Behavior-based: Analisa padrões de comportamento suspeito. Um scanner que tenta 100 portas em 2 segundos num host específico é comportamento anômalo mesmo que não tenha assinatura exata.
Exemplo de regra Snort:
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"WEB-MISC Apache directory traversal"; flow:to_server,established; content:"/../../../../"; nocase; sid:1000001; rev:1;)
Esta regra alerta quando tráfego TCP de qualquer origem, destinado à porta 80 de uma máquina interna, contém o padrão /../../../../ (directory traversal). O flow garante que a conexão já está estabelecida. O sid identifica unicamente a regra.
O Snort é o NIDS open-source mais conhecido. Suas regras seguem a estrutura: ação protocolo origem porta_origem -> destino porta_destino (opções). O Suricata é a alternativa moderna — multi-threaded, suporta protocolos mais complexos nativamente e pode funcionar como IDS ou IPS sem mudança de arquitetura.
3. Firewalls em Profundidade
Packet Filtering: A forma mais básica. O firewall examina cada pacote individualmente contra uma lista de ACLs (Access Control Lists). Permite ou nega baseado em IP de origem, IP de destino, porta de origem, porta de destino e protocolo (TCP/UDP/ICMP). Não sabe se o pacote faz parte de uma conexão legítima ou não — avalia cada pacote isoladamente.
# iptables exemplo: permitir HTTP, bloquear resto
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
Stateful Inspection: Mantém uma tabela de conexões. Quando um SYN sai para uma porta externa, o firewall marca aquela sessão como “established”. Quando o SYN-ACK volta, o firewall sabe que é resposta legítima — sem precisar de regra explícita para tráfego de retorno. Isso resolve o problema fundamental do packet filtering: como permitir respostas sem abrir todas as portas de entrada?
Next-Generation Firewalls (NGFW): Combinam stateful inspection com Deep Packet Inspection (DPI), awareness de aplicações (saber que aquele tráfego na porta 443 é Facebook e não HTTPS legítimo), identidade de usuário (políticas baseadas em quem está logado, não apenas IP), integração com threat intelligence feeds e sandboxing de arquivos. Fortinet FortiGate, Palo Alto Networks e Cisco Firepower são exemplos.
4. Honeypots e Honeynets
Honeypot é um sistema-isca — projetado para ser atacado. Não tem função produtiva. Qualquer interação com ele é, por definição, suspeita.
Low-interaction: Emulam serviços. Simulam um servidor SSH, um banner HTTP, um serviço SMB — mas não são serviços reais. São seguros (o atacante não ganha shell), baratos e fáceis de manter. Capturam informações limitadas mas suficientes para detectar scanning e ataques automatizados. Dionaea (emula SMB, HTTP, FTP, MySQL, MSSQL) e Honeyd são exemplos clássicos.
High-interaction: Máquinas reais com serviços reais. O atacante ganha acesso completo — e isso é intencional. Permitem observar técnicas avançadas, coletar malware, estudar TTPs (Tactics, Techniques, Procedures). Risco elevado: se mal configurados, o atacante pode pivotar para a rede real. Cowrie (honeypot SSH/Telnet) opera em modo intermediário.
Honeynets: Redes inteiras de honeypots, rodeadas por firewalls que controlam o que entra e sai. Permitem estudar ataques multi-estágio. O T-Pot é uma distribuição Linux all-in-one que empacota dezenas de honeypots (Dionaea, Cowrie, Honeytrap, ElasticPot, etc.) com visualização via ElasticStack.
Para que servem honeypots?
- Pesquisa de segurança — entender o que os atacantes fazem depois de entrar
- Detecção precoce — alertam sobre scanning e ataques antes que atinjam ativos reais
- Coleta de inteligência — malware samples, IPs de atacantes, técnicas em uso
- Distracao — desviar o atacante dos ativos reais (defesa por obscuridade, praticada)
5. Técnicas de Evasão de Nmap
Nmap é a ferramenta de scanning mais poderosa disponível — e também a mais detectável por padrão. Um SYN scan padrão contra múltiplas portas gera assinaturas óbvias em qualquer IDS. Eis como atenuar isso:
Decoys (-D RND:10): Injeta IPs falsos junto com o IP real. O IDS vê scans vindos de 11 fontes simultâneas — qual é o atacante real? O alvo recebe pacotes SYN de múltiplos IPs, mas apenas responde ao seu IP real. O IDS não sabe qual IP legítimo gerou as respostas.
# Scan com 10 decoys aleatórios
nmap -D RND:10 -sS -p 1-1000 192.168.1.50
Fragmentação (-f): Divide os pacotes em fragmentos menores (geralmente 8 bytes por fragmento). Muitos IDS reconstroem pacotes mal, especialmente se os fragmentos chegam fora de ordem ou com overlaps intencionais. O alvo (a stack TCP/IP do SO) geralmente reconstrói corretamente.
# Scan com fragmentação
nmap -f -sS -p 80,443,22 192.168.1.50
# Fragmentação com MTU específica
nmap --mtu 16 -sS -p 1-65535 192.168.1.50
Idle Scan (-sI zombie_host): Técnica sofisticada que usa um terceiro host com portas idle (IPID sequencial) para escanear o alvo. O atacante nunca envia pacotes diretamente ao alvo — o zombie faz isso. O alvo vê o zombie como origem. Totalmente stealth para o alvo.
Source Port Manipulation (--source-port 53): Muitos firewalls permitem tráfego de saída da porta 53 (DNS) sem inspeção. Usar porta 53 como origem faz o scan parecer tráfego DNS. Porta 20 (FTP data), 88 (Kerberos) e 465 (SMTPS) são outras opções comuns.
Timing (-T0 a -T5): Templates de timing controlam a velocidade. -T0 (Paranoid) envia um pacote por vez com delays de 5 minutos — praticamente invisível em IDS de alta sensibilidade mas demora horas. -T1 (Sneaky) é similar com 15s de delay. -T3 é o padrão. Timing lento evita trigger de threshold-based detection.
MTU Manipulation (--mtu): Similar à fragmentação mas com controle sobre o tamanho exato dos fragmentos. Força o IDS a lidar com pacotes de tamanhos inesperados. Funciona porque muitos IDS fazem reassembly de forma diferente da stack TCP/IP do alvo.
6. Evasão de IDS/IPS
Fragmentação de Pacotes: A base de muitas técnicas de evasão. IP fragmentation divide um pacote IP em fragmentos menores. TCP segmentation faz o mesmo a nível de TCP. Se o IDS não reconstitui os fragmentos corretamente antes de aplicar assinaturas, o ataque passa despercebido. O Fragroute é a ferramenta de referência para fragmentação e modificação de pacotes:
# Fragroute: interceptar e fragmentar tráfego
# Configuração /etc/fragroute.conf:
# ip_frag 24
# tcp_seg 1
fragroute -f /etc/fragroute.conf
# Alternativa: hping3 para fragmentação manual
hping3 -c 1 -f --frag -d 100 -S -p 80 192.168.1.50
Encryption: Se o tráfego está cifrado, o IDS não consegue inspecionar o conteúdo. Túneis SSH, VPNs (IPsec, OpenVPN), stunnel (SSL/TLS wrapping) — todos transformam payload claro em dados impenetráveis para o IDS. O IPS pode até bloquear por comportamento (taxa de transferência, timing), mas não por conteúdo.
# Stunnel: wrapping tráfego não-cifrado em TLS
stunnel -c -d 127.0.0.1:8080 -r remote_server:80
# SSH tunnel como proxy SOCKS
ssh -D 9050 -N user@remote_server
Encoding e Obfuscation: Transformar o payload de forma que a assinatura não faça match mas o alvo ainda processe corretamente:
- URL Encoding:
%2e%2e%2fem vez de../— o web server decodifica, o WAF pode não - Unicode Encoding:
..%c0%af— equivalente Unicode de../, bypass em encodings mal normalizados - Double Encoding:
%252e%252e%252f— o WAF decodifica uma vez, o web server decodifica de novo - Base64: Comum em payloads de command injection —
echo YmFzaA== | base64 -d | bash - Hex Encoding:
\x2e\x2e\x2fno lugar de../
Protocol-level Evasion: Manipular campos do header IP/TCP que o IDS não inspecia adequadamente:
- IP TTL Manipulation: Configurar TTL baixo faz o pacote expirar antes de chegar ao IDS se estiver a mais hops
- IP Options: Inserir opções como Record Route ou Loose Source Routing — muitos IDS descartam pacotes com options não suportadas, enquanto o alvo os aceita
- Source Routing: IP options que definem o caminho do pacote — o firewall/IDS pode estar fora desse caminho
7. Evasão de Firewalls
Source Port Manipulation: Um dos bypasses mais simples e eficazes. Se o firewall permite tráfego de entrada da porta 53 (DNS) ou 80 (HTTP), configurar o scanner para usar essas portas como origem pode passar pelas regras:
# Nmap: usar porta 53 (DNS) como origem
nmap -g 53 -sS -p 1-1000 192.168.1.50
# Ncat: bind shell em porta 80
ncat --exec /bin/bash -l 80
ACK Flag Scanning: Pacotes TCP com flag ACK setada (sem SYN) são geralmente considerados tráfego de retorno em conexões estabelecidas. Firewalls stateful costumam liberá-los. O Nmap -sA usa isso para mapear regras do firewall sem completar conexões.
# ACK scan — descobrir quais portas são filtradas
nmap -sA -p 1-1000 192.168.1.50
Tunneling: Encapsular tráfego dentro de protocolos permitidos pelo firewall:
- SSH Tunnel: Encapsula qualquer tráfego dentro de SSH. Se a porta 22 está aberta, tunnel é possível.
- HTTP Tunnel: Ferramentas como
httptunnelencapsulam TCP dentro de HTTP GET/POST requests. - ICMP Tunnel:
icmpsh,PingTunnel— encapsulam dados dentro de pacotes ICMP echo request/reply. Raramente bloqueados. - DNS Tunnel: iodine é a ferramenta clássica. Encapsula dados dentro de queries DNS (subdomínios como encoding). Praticamente impossível de bloquear sem quebrar DNS.
# iodine: DNS tunnel (requer domínio configurado com NS apontando para o server)
# No client (atrás do firewall):
iodine -f 198.51.100.1 tunnel.example.com
# HTTP tunnel
htc -F 127.0.0.1:8080 198.51.100.1:8080
Proxies e Chained Proxies: Encadear múltiplos proxies para ofuscar a origem real. Tor roteia tráfego por 3+ nodes. proxychains encadeia proxies SOCKS/HTTP transparentemente para qualquer aplicação:
# /etc/proxychains.conf:
# dynamic_chain
# proxy_dns
# [ProxyList]
# socks5 127.0.0.1 9050
# http 10.10.10.5 8080
proxychains nmap -sT -p 80,443 192.168.1.50
8. Evasão de Honeypots
Detectar honeypots é tão importante quanto evadi-los. Se você sabe que está interagindo com um isca, não investe tempo explorando — e não deixa TTPs expostas.
Timing Analysis: Honeypots low-interaction respondem mais rápido que serviços reais porque emulam em vez de processar. Respostas instantâneas a comandos complexos são suspeitas. Honeypots high-interaction podem ter latência inconsistente (snapshot/revert de VMs).
Service Fingerprinting: Serviços emulados em honeypots frequentemente apresentam banners inconsistentes. Um servidor Apache que reporta “Server: Apache/2.4.41” mas responde a comandos HTTP de forma diferente de um Apache real é um sinal. O Nmap -sV faz version detection que pode revelar inconsistências:
# Version detection detalhado
nmap -sV --version-intensity 5 -p 22,80,443,445 target
# OS detection (honeypots low-interaction geralmente não emulam TCP stack corretamente)
nmap -O --osscan-guess target
Behaviour Analysis: Serviços reais têm comportamentos previsíveis — rate limiting, timeouts específicos, respostas a entradas inválidas de formas particulares. Um SSH que aceita qualquer username/password sem logar falhas, ou um FTP que lista arquivos demais, é suspeito.
Nmap OS Detection contra Honeypots: A fingerprint do TCP/IP stack é difícil de emular perfeitamente. Um nmap -O pode mostrar resultados inconsistentes (“Linux 5.4” mas com window size típico de Windows). Honeypots low-interaction como Honeyd tentam emular mas raramente são perfeitos.
CAPE Sandbox Detection Evasion: Malware moderno detecta quando está rodando em sandbox (CAPE, Cuckoo, Any.Run). Técnicas comuns: verificar se é VM (CPUID, MAC address OUI de virtualização), verificar timing (delays artificiais para detectar fast-forward de sandboxes), verificar artefatos de análise (processos de monitoração, hooks de API). Do lado defensivo, honeypots usam Honeysnap para capturar e analisar atividade automatizada.
9. WAF Bypass
Web Application Firewalls são alvos privilegiados — sentam na camada 7, entre o atacante e a aplicação. Bypassá-los é arte e ciência.
Encoding Básico: A maioria dos WAFs decodifica uma vez. Double encoding bypassa isso. Unicode normalization differences entre WAF e web server criam gaps.
HTTP Parameter Pollution (HPP): Enviar múltiplos parâmetros com o mesmo nome. Dependendo de como o WAF e o backend processam (primeiro, último, concatenação), o WAF pode validar um valor enquanto o backend usa outro:
GET /search?q=normal&q=UNION SELECT 1,2,3-- HTTP/1.1
Chunked Transfer Encoding: Enviar o payload em chunks. Alguns WAFs não reconstroem o body antes de inspeção:
POST /login HTTP/1.1
Transfer-Encoding: chunked
4
UNIO
4
N SE
3
LEC
0
Unicode Normalization: Caracteres Unicode equivalentes que o backend normaliza mas o WAF não. Por exemplo, o caractere < (fullwidth less-than) vs < — podem ser equivalentes após normalização.
HTTP/2 Smuggling: Explorar diferenças entre como o frontend (WAF/proxy) e o backend interpretam requests HTTP/2 vs HTTP/1.1. Pode levar a bypass completo de regras do WAF.
SQLMap Tamper Scripts: O SQLMap inclui dezenas de scripts de tamper projetados para bypassar WAFs específicos:
# Bypass usando space2comment (substitui espaços por /**/)
sqlmap -u "http://target.com/page?id=1" --tamper=space2comment
# Bypass usando between (substitui > por BETWEEN)
sqlmap -u "http://target.com/page?id=1" --tamper=between
# Bypass usando randomcase (VARia CaSe das keywords SQL)
sqlmap -u "http://target.com/page?id=1" --tamper=randomcase
# Combinar múltiplos tamper scripts
sqlmap -u "http://target.com/page?id=1" --tamper=space2comment,between,randomcase
WAF Fingerprinting: Antes de tentar bypass, identificar qual WAF está rodando. Ferramentas como wafw00f fazem isso enviando payloads específicos e analisando a resposta:
wafw00f https://target.com
# Output: ModSecurity, Cloudflare, Akamai, Imperva, etc.
10. Hands-on: Evasão na Prática
Vamos montar um cenário prático: Snort como NIDS, Nmap como atacante, e Fragroute como ferramenta de evasão.
Setup do Snort:
# Instalação (Debian/Ubuntu)
sudo apt install snort
# Regra custom para detectar SYN scan na porta 80
# Adicionar em /etc/snort/rules/local.rules:
alert tcp any any -> 192.168.1.0/24 80 (msg:"SYN SCAN DETECTED"; flags:S; sid:1000001;)
# Regra para detectar Nmap
alert tcp any any -> any any (msg:"NMAP SCAN DETECTED"; flags:S,12; threshold:type both, track by_src, count 5, seconds 10; sid:1000002;)
Teste 1: Scan normal (detectado):
# Scan SYN normal
nmap -sS -p 80 192.168.1.50
# Snort detecta: "[Snort Alerts] [Priority: 0] SYN SCAN DETECTED"
Teste 2: Scan com decoys:
# Scan com decoys — IDS alerta 11 fontes, dificil pinpoint
nmap -D RND:10,RND:10 -sS -p 80 192.168.1.50
Teste 3: Scan com fragmentação:
# Pacotes fragmentados — Snort pode perder a assinatura
nmap -f -sS -p 80 192.168.1.50
Teste 4: Scan lento (evita threshold):
# Timing sneaky — abaixo do threshold de 5 pacotes em 10s
nmap -T1 -sS -p 80 192.168.1.50
Teste 5: Fragroute + Nmap:
# Configurar fragroute
cat > /etc/fragroute.conf << 'EOF'
ip_frag 24
tcp_seg 1
EOF
# Iniciar fragroute (intercepta tráfego via Netfilter)
fragroute 192.168.1.50
# Em outro terminal, scan via fragroute
nmap -sS -p 80 192.168.1.50
# Verificar alertas Snort — fragmentação pode evitar detecção
sudo tail -f /var/log/snort/alert
Resultado esperado:
- Scan normal: detectado imediatamente
- Decoys: detectado, mas com 11 fontes (dificulta resposta)
- Fragmentação: pode não ser detectado dependendo da configuração do Snort
- Timing lento: evita threshold-based detection
- Fragroute: maior taxa de evasão (pacotes chegam fragmentados ao IDS)
11. Contra-medidas
Defensores não são inertes. Para cada técnica de evasão, existem contra-medidas:
Tuned IDS Signatures: Assinaturas que consideram variações — não apenas o payload exato mas variações comuns (encoding, fragmentação). Snort e Suricata suportam content com nocase, http_uri, http_header para reduzir falsos negativos.
Anomaly Detection: Complementa signature-based. Um scan com decoys de 11 IPs em 5 segundos para o mesmo alvo é anômalo mesmo que cada pacote individual seja "normal". Threshold-based rules no Snort (threshold:type both, count X, seconds Y) ajudam.
SSL/TLS Inspection: Mitiga a técnica de encryption. O firewall/gateway descriptografa, inspeciona e recriptografa. Requer certificado trustado na rede. SSL Inspection é controverso (quebra SSL end-to-end) mas eficaz.
Protocol Validation: Rejeitar pacotes que violam especificações do protocolo. IP fragments com overlaps? Descartar. TCP segments com flags inconsistentes? Descartar. Reassembly estrito e validação de headers eliminam grande parte das técnicas de evasão baseadas em fragmentação.
Deep Packet Inspection (DPI): NGFWs inspeccionam conteúdo até camada 7, reconstroem sessões TCP antes de aplicar regras, e combinam informação de múltiplos pacotes para decisão. DPI bem implementado neutraliza fragmentação e encoding básico.
Threat Intelligence Feeds: Integrar feeds de IOCs (Indicators of Compromise) atualizados — IPs maliciosos, domains, hashes de malware. Permite bloqueio proativo baseado em reputação, não apenas em padrões de tráfego.
Correlação SIEM: Um único evento pode parecer normal. Três eventos correlacionados (scan na porta 80 + login anômalo + transferência grande de dados) formam um padrão de ataque claro. Splunk, ELK Stack, Wazuh — agregam logs de múltiplas fontes para detecção contextual.
| Técnica de Evasão | Contra-medida | Eficácia |
|---|---|---|
| Fragmentação | Protocol validation + strict reassembly | Alta |
| Encryption (SSH/VPN) | SSL/TLS inspection | Alta (mas quebra E2E) |
| Encoding/Obfuscation | Normalização antes de inspeção | Média-Alta |
| Decoys | Anomaly detection + rate limiting | Média |
| Timing lento | Thresholds + análise temporal longa | Média |
| DNS Tunnel | DNS monitoring + query length limits | Média (hard sem quebrar DNS) |
| ICMP Tunnel | Bloqueio ICMP ou rate limiting | Alta |
| WAF Bypass (encoding) | Normalização rigorosa + WAF atualizado | Média-Alta |
12. Próximo Artigo: Teaser Artigo 19
No próximo artigo da série, vamos mergulhar em Criptografia — desde fundamentos (simétrica vs assimétrica, hashing, PKI) até técnicas de ataque (brute force, rainbow tables, criptanálise). Sem entender criptografia, é impossível avaliar a segurança de comunicações, armazenamento de dados ou certificados digitais. A evasão que discutimos aqui depende frequentemente de entender onde a criptografia protege — e onde falha.
Série CEH v13 Zero to Hero
Este artigo faz parte da série completa de preparação para o Certified Ethical Hacker v13. Todos os conceitos aqui apresentados são para fins educacionais e éticos. Use este conhecimento para construir defesas melhores, não para atacar sem autorização.