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, Microsoft Windows e Macintosh 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:
root@debian-90# 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:
root@allspark# 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:
root@debian-90# nc -vlp 1500
Depois direcionamos tudo que escrevemos em um determinado terminal da máquina A para a máquina B:
root@allspark# 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:
root@allspark# telnet 192.168.1.121 1000
Vejamos como ficou:
O netcat pode servir como scanner de portas também:
root@allspark# 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.
Maravilha.. Já usei muito o Netcat para copiar dados de um HD para outro via dcfldd ou dd…
Mais uma vez, muito bom Vagner. Parabéns!!!
Muito legal !
Grande Post.
NetCat é uma ferramenta sensacional. o artigo ficou muito bom.
Grande Abraço.