Netcat – Um comando Multiplataforma e Multiuso

Um SysAdmin muitas vezes precisa criar soluções rápidas para problemas pequenos e grandes que podem aparecem em diversas situações. Se os problemas tem a ver com acesso a rede ou conexões de rede, a ferramenta para auxiliar nessas soluções rápidas pode ser o netcat, esse comando que é chamado de “canivete suíço do tcp/ip” realmente pode fazer muita diferença no dia a dia do SysAdmin.

Veja o que diz a Wikipedia sobre ele “O Netcat é uma ferramenta de rede, disponível para sistemas operacionais Unix, Linux[bb], Microsoft Windows[bb] e Macintosh[bb] que permite, através de comandos e com sintaxe muito sensível, abrir portas TCP/UDP e HOST. Permite forçar conexões UDP/TCP (útil para realizar rastreamento de portas ou realizar transferências de arquivos bit a bit entre os equipamentos).”

Vamos a algumas opções do nc (forma de uso do netcat):

Vejamos uma situação de um servidor que possivelmente está sofrendo uma tentativa de acesso não autorizado, que tal monitorarmos porta onde isso acontece para capturar informações sobre o possível invasor. Simularemos ter o servidor SSH instalado em nosso server para poder receber os dados da conexão, podendo inclusive guardá-los em arquivo. Veja o resultado abaixo:

Onde: O IP 192.168.1.10 cuja resolução de nomes foi Allspark.local usando a porta 35391 tentou acessar a porta 22 da minha máquina (192.168.1.90).

Que tal capturarmos informação sobre acesso a serviço HTTP (porta 80):

Onde: O IP 192.168.1.10 cuja resolução de nomes foi Allspark.local usando a porta 41680 tentou acessar a porta 80 da minha máquina (192.168.1.90). Sei que a máquina é um Linux com sistema de 64bits e usava u browser que provavelmente é o Chrome.

Bem isso foi útil e simples, mas imaginemos uma situação em que 2 máquinas com Linux/Unix precisa fazer a troca de arquivos e não tem um SCP ou RSYNC para isso mas você tem como pedir que alguém execute comandos nas duas máquinas. Pronto o netcat é a solução:

Iremos fazer o envio do diretório /var/log da máquina A(192.168.1.10) para a máquina B(192.168.1.90):

Primeiro:

Na máquina B iremos deixar uma porta aberta e um programa para tratar os arquivos:

[email protected]# nv -v -l -p 3000 | tar xvzp
Onde:
Abrimos a porta 3000 (qualquer porta não utilizada por outros serviços serve) e tudo que for recebido nessa porta será entregue para o comando tar que irá extrair no diretório local, descompactar mostrando todos os dados em tela do que está fazendo.

Segundo:

Na máquina A iremos fazer o tar juntar os arquivos de /var/log em um só arquivo e compactar com o gzip:

[email protected]# tar cvzp /var/log | nc 192.168.1.90 3000
Onde: O tar agrupa os arquivos do /var/log, compacta e entrega na mão do netcat para que ele envie para o IP 192.168.1.90 na porta 3000.

Que tal podemos trocar dados de terminal com outra máquina, ou seja, escrever em nosso terminal e o resultado sair no da outra máquina (não é instant messenger ;-)), não tem utilidade prática, mas mostra a capacidade do netcat em ler e escrever sobre conexões TCP/IP:

Primeiro abrimos a porta na máquina B:

[email protected]# nc -vlp 1500

Depois direcionamos tudo que escrevemos em um determinado terminal da máquina A para a máquina B:

[email protected]# cat < /dev/pts/0 | nc 192.168.1.90 1500

Vejamos como fica:

Como o NetCat é multiplataforma vamos mostrar que é possível no Windows usá-lo como cliente ou provedor de uma conexão, no exemplo abaixo vamos criar um “acesso remoto” via shell no Windows e acessar do Linux:

No Windows baixe e instale o nc e entre no diretório:

C:UsersVagnerDocumentsncnc -v -l -p 1000 -e cmd.exe

Para mais detalhes da conexão poderíamos usar -vv

No Linux execute:

[email protected]# telnet 192.168.1.121 1000

Vejamos como ficou:

O netcat pode servir como scanner de portas também:

[email protected]# nc -v 192.168.1.121 1-65535

Onde: O nc irá escanear as portas do host 192.168.1.121 da porta 1 até a 65535.

Lembrando que com a opção -d o NetCat executa em mode daemon e não “prende” a tela do terminal. E que como sniffer ele só ira pegar comunicações de broadcast pois os switches isolam o tráfego quando possível.

Espero que o post sirva como base para que vocês possam buscar soluções para diversos problemas e criar até alguns :-). Se você possui alguma outra solução ou uso do NetCat poste nos comentários.

Não esqueça de assinar nosso portal e continuem divulgando para que mais profissionais de TI possam conhecer nosso trabalho.