O seu portal de estudos

Netcat – Um comando Multiplataforma e Multiuso

Posted by Vagner Fonseca em 13 de outubro de 2011

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:\Users\Vagner\Documents\nc\nc -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.

Anúncios

4 Respostas to “Netcat – Um comando Multiplataforma e Multiuso”

  1. Maravilha.. Já usei muito o Netcat para copiar dados de um HD para outro via dcfldd ou dd…

  2. Tiago Silva said

    Mais uma vez, muito bom Vagner. Parabéns!!!

  3. Muito legal !

  4. Achei fantástico, tenho uns pdf sobre o assunto mais você foi bem explicando o conceito.
    graças a você muita coisa agora passou a fazer sentido… thanks…
    Dá pra fazer um Netcat Parte 2? seria excelente… tenta esgotar o assunto.. nem tanto… 🙂

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: