Os significados de Nemesis
A palavra nemesis vem do grego antigo Nemesis (), originalmente o nome de uma deusa — a divindade da vingança divina, do castigo e, mais especificamente, da ira contra aqueles que agitavam a hybris, ou seja, a arrogância diante dos deuses. Ao longo dos séculos, o termo saiu da mitologia e entrou para o uso coloquial em praticamente todas as línguas ocidentais com um sentido consolidado: um rival poderoso e implacável, algo ou alguém que representa uma derrota constante, uma oposição que nunca se cala. Em português, a tradução mais direta é rival invencível, inimizade mortal, ou ainda o castigo que chega inevitavelmente. Se você diz "aquele software é minha nemesis", está usando o sentido moderno — algo que te perseguirá até você encontrar uma solução prática.
O que significa Nemesis no contexto de segurança da informação
Existe também um ferramenta de linha de comando chamada Nemesis, desenvolvida originalmente por Solar Designer e posteriormente mantida pela comunidade. Ela funciona como um canivete suíço para manipulação e análise de pacotes de rede. O que torna o Nemesis diferente de ferramentas como Wireshark ou tcpdump é que ele não se limita a capturar — ele permite construir pacotes do zero, injetar tráfego sintético, e analisar fluxos com controle fino sobre os bytes que chegam ao solo. O que significa nemesis nesse contexto prático? Significa ter um conjunto de utilitários que operam em camadas diferentes do TCP/IP — do nível Ethernet até o nível de aplicação — com suporte a ICMP, TCP, UDP, DNS, HTTP, SMTP, SSL/TLS, e protocolos de tunelamento como SSH e VPN. A ferramenta permite, por exemplo, falsificar endereços IP de origem (IP spoofing) com controle granular sobre o handshake TCP, algo que muitas pessoas acham que existe apenas em filmes de hacker dos anos 90.
Eu já usei o Nemesis em cenários reais de teste de intrusão. Um caso específico que me marcou envolveu validar se um firewall estava aplicando corretamente as regras de inspeção estado (stateful inspection) em tráfego UDP com payload construído manualmente. A abordagem padrão seria usar um script Python com scapy, mas o scapy tem limitações sérias ao lidar com sequências TCP complexas em conexão estabelecida — especialmente quando há NAT trampolim no meio. O Nemesis resolve isso nativamente porque ele gerencia o estado da conexão internamente. A técnica que eu adotei foi a seguinte: construir pacotes SYN com diferentes valores de MSS (Maximum Segment Size) e Window Scale usando o módulo nemesis tcp, enviar cada um via interface configurada com IP falsificado, e depois analisar as respostas com o módulo nemesis capture incorporado. O firewall em questão estava ignorando pacotes com opções TCP malformadas acima de um certo tamanho, o que indicava uma falha na validação das cabeças de pacote antes da inserção na tabela de conexão. Isso poderia ser explorado para burlar regras de rate-limiting.
O workaround que eu implementei foi criar um wrapper bash que aut omatizava o envio progressivo de pacotes com aumento incremental do tamanho das opções TCP, registrando timestamps de resposta e cálculo de jitter. O script levou cerca de 20 minutos para rodar contra os 47 endereços IP alvo, produzindo um arquivo CSV que serviul de base para o relatório técnico entregue ao cliente. Sem o Nemesis, eu teria que escrever tudo do zero em C ou Python, e o tempo teria sido da ordem de horas, não minutos.
Instalação e uso básico
O Nemesis está disponível em repositórios Debian/Ubuntu via apt install nemesis, e também em Fedora/Red Hat com yum install nemesis. No macOS, você pode usar o Homebrew com brew install nemesis. A instalação é direta, mas exige conhecimento prévio de rede para não causar problemas na sua própria infraestrutura. Os módulos principais são:
nemesis tcp — Para construir e enviar pacotes TCP personalizados nemesis udp — Para manipulação de tráfego UDP
nemesis icmp — Para testes de conectividade e diagnóstico com ICMP nemesis dns — Para criação de consultas DNS arbitrárias
👉 Clique no botão abaixo para saber mais sobre o assunto!
nemesis http — Para manipulação de requisições HTTP nemesis ssl — Para interagir com tráfego criptografado SSL/TLS
nemesis capture — Para captura e análise de tráfego nemesis ssh — Para tunelamento SSH
nemesis tnc — Para conexão com dispositivos via porta serial Um comando simples de teste com TCP spoofed seria:
nemesis tcp -i eth0 -s 192.168.1.50 -d 10.0.0.1 --syn Isso envia um pacote SYN da IP 192.168.1.50 (falsificado) para 10.0.0.1 na interface eth0. Note que em muitos sistemas operacionais modernos, o kernel bloqueia o envio direto de pacotes IP com IP de origem inventado a menos que você esteja rodando com privilégios de root e tenha configurado a interface em modo promíscuo adequadamente.
Pegadinhas e limitações importantes
O Nemesis não é uma bala de prata. Ele tem algumas restrições que todo profissional precisa conhecer antes de depender dele em campo. Primeiro, o suporte a SSL/TLS é limitado a versões mais antigas. Em servidores modernos que exigem TLS 1.3 com handshake completo e Extended Key Sharing, o módulo ssl do Nemesis frequentemente falha silenciosamente. Eu já perdi tempo debugging isso achando que era problema na minha sintaxe, quando na verdade o protocolo simplesmente não era compatível. A solução em cenários assim é descer para o módulo tcp e construir o handshake manualmente, o que é viável mas trabalhoso.
Segundo, a ferramenta opera em modo de usuário, o que significa que a latência de envio não é determinística. Em testes de timing attack contra aplicações web, onde a diferença entre uma resposta de 3ms e 5ms é o que separa uma exploração bem-sucedida de um fracasso, o Nemesis introduz variabilidade suficiente para invalidar os resultados. Nesses casos, eu migro para uma implementação em C com raw sockets, onde o controle temporal é muito mais fino. Terceiro, em ambientes corporativos com IDS/IPS modernos como Snort, Suricata ou Falco, o tráfego gerado pelo Nemesis é altamente detectável. Os padrões de pacotes manipulados manualmente possuem assinaturas que tools de detecção reconhecem quase instantaneamente. Isso não é um defeito do Nemesis — é uma característica do ambiente. O ponto é que usar a ferramenta em redes de produção sem autorização explícita é uma receita para ser descoberto em segundos.
Quarto, a documentação oficial é escassa e o manual do sistema (man nemesis) é útil mas incompleto. A maioria dos truques avançados só aparece em posts de fórum antigos, issues no GitHub, ou em slides de palestras de conferências como DEF CON e Black Hat. Recomendo procurar por "Nemesis tutorial advanced packet crafting" e "Nemesis tcp spoofing techniques" nos arquivos da comunidade de segurança.
Alternativas quando o Nemesis não basta
Se você precisa de algo mais moderno e com melhor suporte a TLS 1.3, considere o Scapy (Python) para prototipagem rápida, ou o Custom TCP/IP stack em Rust para projetos que exigem performance e controle total. O Burp Suite é preferível para testes de aplicação web. Para análise passiva de tráfego, o Wireshark continua sendo insubstituível. O Nemesis ocupa um nicho específico: quando você precisa de controle no nível do bit sobre pacotes de rede em tempo real, com capacidade de spoofing e injeção, e quando as ferramentas de alto nível não dão conta do recado. Para o resto, outras opções são mais adequadas.