UTILIZE A PESQUISA!

Netcat



O Netcat é uma ferramenta usada para ler e escrever dados em conexões de rede usando o protocolo TCP/IP. Dada sua grande versatilidade, o Netcat é considerado pelos hackers o canivete suíço do TCP/IP, podendo ser usado para fazer desde portscans até brute force.

O nome netcat vem do comando "cat" do Linux. O cat concatena arquivos e envia para a saída padrão (stdout). O netcat faz praticamente o mesmo, porém ao invés de concatenar arquivos, o netcat concatena sockets TCP e UDP.

Como o Netcat funciona

A princípio o Netcat foi lançado para ser um telnet aprimorado. Até então a única utilidade que ele teria seria se conectar a um host.

Porém, como o netcat pega os dados da entrada padrão (stdin) e envia pra outra ponta da conexão, que as escreve na saída padrão (stdout), é possível utilizar ele em conjunto com o shell pra fazer inúmeras coisas.

Por exemplo: na imagem do início do post, o que está sendo feito é um "telnet reverso", no qual, na máquina onde os comandos serão executados, cria-se um servidor com nc ouvindo na porta 1234 e tudo o que chegar no netcat é enviado para o bash, que processa o que chegar e envia para outro servidor netcat ouvindo na porta 5678. Qual a utilidade disso? Aparentemente nenhuma, pois o telnet e o ssh cumprem muito melhor essa função.
Mas o Netcat tem suas utilidades sim, e alguma serão citadas abaixo:

Escaneando portas com o Netcat

Será feita uma tentativa de conexão à um IP ou host e será estipulada as portas da tentativa de conexão:

$ nc -vv localhost -z 1-3000

Aqui serão escaneadas desde a porta 1 até a 10000.

Bruteforce com Netcat

O brute-force é o método de tentativa de obtenção de senhas utilizado quando um cliente se conecta a um host e tenta se logar, utilizando uma sequência de senhas que estão em um arquivo. Ou seja, se eu pegar o Netcat eu posso me CONECTAR ao host e com uma linha de comando, posso completar o comando com a comparação para obtenção das senhas.

$ nc -vv 79 < ~/wordlist.txt > nc_log.log

Perceba, que conectaremos a porta do FINGER(79) e redirecionaremos o conteúdo do arquivo wordlists.txt para essa porta. Quando algum resultado for válido ele será salvo em nc_log.log para que você possa analizar posteriormente.

Sniffer com Netcat

O Netcat pode capturar todo o tráfego de uma rede.

Iremos nos conectar a uma porta e mandar o netcat "dar eco" nela, ou seja, exibir TUDO o que passa por ela. Após isso, é só redirecionar tudo o que o Netcat gravou para um arquivo. Veja a sintaxe, para melhor compreensão:

$ nc -vv localhost 80 > ~/sniffer.log

Transferência de arquivos com Netcat

A vantagem de transferir arquivos usando o Netcat em relação à outros métodos é a velocidade. No entanto, desde que você queira somente transferir um único arquivo, ou uns poucos, o Netcat pode ser uma excelente solução para isso:

Primeiro vamos montar nosso servidor, que ficará esperando uma conexão e direcionaremos sua saída para um arquivo, que chamaremos de arquivo.zip

nc -l 1234 > arquivo.zip

Em seguida, vamos abrir uma conexão com nosso servidor, e direcionaremos um arquivo, por exemplo original.zip, para a entrada padrão desse cliente, da seguinte forma:

nc localhost 1234 < original.zip

Chat simples usando o Netcat

Para isso crie um servidor do netcat e abra uma conexão cliente para essa porta. O que você digitar de um lado, aparecerá do outro.

nc -l 1234

nc localhost 1234

Fazendo Spoof em servidores HTTP

Você pode usar o Netcat para se conectar a um servidor web usando cabeçalhos totalmente personalizados. Você pode adicionar quaisquer USER-AGENT, referer, ou qualquer outra informação de cabeçalho HTTP.

$ nc google.com 80
GET / HTTP/1.1
Host: google.com
User-Agent: Vindex
Referrer: http://tocadoelfo.blogspot.com
Aqui o exemplo do cabeçalho (não em sua totalidade):
HTTP/1.0 200 OK
Content-Type: text/html; charset=UTF-8
Last-Modified: Fri, 02 Jul 2010 21:02:58 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Expires: Fri, 02 Jul 2010 22:07:19 GMT
Date: Fri, 02 Jul 2010 22:07:19 GMT
Cache-Control: public, max-age=0, proxy-revalidate, must-revalidate
ETag: "73202059-b4d7-4150-bdb0-e42c3bbe0c0b"
Server: GSE
X-Cache: HIT from gw.ifto.edu.br
Via: 1.0 gw.ifto.edu.br (squid/3.0.STABLE16)
Proxy-Connection: close

Clonar partições via rede com o Netcat

Somenta faça isso se realmente souber o que esta fazendo e o que isso significa.

Primeiro, crie um servidor com o Netcat e redirecione a saída dele para o comando dd:

$ nc -l 1234 | dd of=/dev/sda

Em seguida, rode o dd, que vai fazer uma varredura no disco e enviar tudo para a entrada padrão (stdin) do netcat, que se conectará ao servidor previamente configurado:

$ dd if=/dev/sdb | nc localhost 1234

É claro, você precisará estar com os discos desmontados para que o comando funcione. Ha sugestão é usar um LiveCD nas máquina. Nesse nosso caso foi conectado à mesma máquina, mas nada impede que essa conexão se dê via rede ou mesmo via internet.

Criando um servidor web simples com o netcat

Essa técnica é interessante e mostra um pouco mais da interação do shell com o netcat:

$ while true; do nc -l 80 -q 1 < pagina.html; done

Esse comando roda o netcat infinitamente e a cada vez que ele roda, o arquivo pagina.html é enviado para o cliente, no nosso caso o browser, que você pode acessar com o endereço http://localhost

Fonte: Viva o Linux

Um comentário: