Pesquisa de site

8 Comando Netcat (nc) com exemplos


Netcat (ou nc em resumo) é uma ferramenta de linha de comando de rede simples, mas poderosa, usada para executar qualquer operação no Linux relacionada a TCP, UDP ou soquetes de domínio UNIX.

Netcat pode ser usado para varredura de portas, redirecionamento de portas, como um ouvinte de portas (para conexões de entrada); também pode ser usado para abrir conexões remotas e muitas outras coisas. Além disso, você pode usá-lo como backdoor para obter acesso a um servidor de destino.

Neste artigo, explicaremos os comandos de uso do Netcat com exemplos.

Como instalar e usar o Netcat no Linux

Para instalar o pacote netcat em seu sistema, use o gerenciador de pacotes padrão para sua distribuição Linux.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

Após a instalação do pacote netcat, você poderá prosseguir para aprender o uso do comando netcat nos exemplos a seguir.

Varredura de porta

O Netcat pode ser usado para varredura de portas: para saber quais portas estão abertas e executando serviços em uma máquina de destino. Ele pode verificar uma única ou várias portas abertas.

Aqui está um exemplo: a opção -z configura nc para simplesmente procurar por daemons de escuta, sem realmente enviar quaisquer dados para eles. A opção -v ativa o modo detalhado e -w especifica um tempo limite para conexão que não pode ser estabelecido.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Transferir arquivos entre servidores Linux

O Netcat permite transferir arquivos entre dois computadores ou servidores Linux e ambos os sistemas devem ter o nc instalado.

Por exemplo, para copiar um arquivo de imagem ISO de um computador para outro e monitorar o progresso da transferência (usando o utilitário pv), execute o seguinte comando no computador remetente/servidor (onde existe o arquivo ISO).

Isso executará nc no modo de escuta (flag -l) na porta 3000.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

E no computador receptor/cliente, execute o seguinte comando para obter o arquivo.

nc 192.168.1.4 3000 | pv | tar -zxf -

Crie um servidor de bate-papo de linha de comando

Você também pode usar o Netcat para criar instantaneamente um servidor simples de mensagens de linha de comando. Como no exemplo de uso anterior, nc deve ser instalado em ambos os sistemas utilizados para a sala de chat.

Em um sistema, execute o seguinte comando para criar o servidor de bate-papo escutando na porta 5000.

nc -l -vv -p 5000

No outro sistema, execute o seguinte comando para iniciar uma sessão de bate-papo em uma máquina onde o servidor de mensagens está em execução.

nc 192.168.56.1 5000

Crie um servidor Web básico

Com a opção -l do comando nc usada para criar um servidor web básico e inseguro para servir arquivos web estáticos para fins de aprendizagem. Para demonstrar isso, crie um arquivo .html conforme mostrado.

vim index.html

Adicione as seguintes linhas HTML no arquivo.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Salve as alterações no arquivo e saia.

Em seguida, sirva o arquivo acima por HTTP executando o seguinte comando, que permitirá que o servidor HTTP seja executado continuamente.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Em seguida, abra um navegador da web e acesse o conteúdo usando o seguinte endereço.

http://localhost:8080
OR
http://SERVER_IP:8080

Observe que você pode parar o servidor HTTP Netcat pressionando [Ctrl+ C].

Solucionar problemas de conexão do servidor Linux

Outro uso útil do Netcat é solucionar problemas de conexão do servidor. Aqui, você pode usar o Netcat para verificar quais dados um servidor está enviando em resposta aos comandos emitidos pelo cliente.

O comando a seguir recupera a página inicial de example.com.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

A saída do comando acima inclui os cabeçalhos enviados pelo servidor web que podem ser usados para fins de solução de problemas.

Encontre um serviço em execução na porta

Você também pode usar o Netcat para obter banners de portas. Nesse caso, ele informará qual serviço está sendo executado em uma determinada porta. Por exemplo, para saber que tipo de serviço está sendo executado na porta 22 em um servidor específico, execute o seguinte comando (substitua 192.168.56.110 pelo endereço IP do servidor de destino). O sinalizador -n significa desabilitar DNS ou pesquisas de serviço.

nc -v -n 192.168.56.110 80

Crie um soquete de fluxo

O Netcat também suporta a criação de soquetes de fluxo de domínio UNIX. O comando a seguir criará e escutará um soquete de fluxo de domínio UNIX.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

Crie uma porta dos fundos

Você também pode executar o Netcat como um backdoor. No entanto, isso exige mais trabalho. Se o Netcat estiver instalado em um servidor de destino, você poderá usá-lo para criar um backdoor, para obter um prompt de comando remoto.

Para atuar como backdoor, você precisa que o Netcat escute em uma porta escolhida (por exemplo, porta 3001) no servidor de destino e então você pode se conectar a esta porta de sua máquina da seguinte maneira.

Este é o comando destinado a ser executado no servidor remoto onde a opção -d desativa a leitura de stdin e -e especifica o comando a ser executado no sistema de destino.

nc -L -p 3001 -d -e cmd.exe 

Por último, mas não menos importante, o Netcat pode ser usado como proxy para diferentes serviços/protocolos, incluindo HTTP, SSH e muitos mais. Para obter mais informações, consulte sua página de manual.

man nc

Neste artigo, explicamos 8 exemplos práticos de uso de comandos Netcat. Se você conhece algum outro(s) caso(s) de uso prático, compartilhe conosco através do formulário de feedback abaixo. Você também pode fazer uma pergunta.