Capturando senhas com tcpdump

Share

Olá pessoal!

Existem alguns tipos de técnicas para captura de pacotes destinados a terceiros, como sniffing, Man in the Middle e etc. Em todos estes casos faz-se necessário o uso de ferramentas para captura/leitura dos pacotes trafegados na rede.

Independente da ferramenta que você decida utilizar, muito provavelmente o tcpdump será o backend da aplicação (como é o caso do Wireshark, por exemplo). Neste post iremos comentar a sintaxe do tcpdump para captura de senhas em claro (enviadas via POST) e capturadas pelo tcpdump. Lembrando que nosso objetivo não é explanar a arquitetura do cenário, mas sim apresentar a sintaxe do tcpdump.

Abrindo o terminal, executaremos o seguinte comando para capturar o tráfego e salvar no arquivo “pegandoasenha-tcpdump.txt”:

 tcpdump -nAs0 -i eth0 'port 80' >> pegandoasenha-tcpdump.txt 
  • -n Não converter endereços (ou seja, endereços de hosts, números de portas, etc.) para nomes.
  • -A Imprimir cada pacote (menos seu cabeçalho ) em ASCII. Para a captura de páginas da web.
  • -s Ver todos os dados da captura
  • -i Interface de rede, no meu caso é a eth0’port 80’
  • HTTPpegandoasenha-tcpdump.txt Arquivo que eu quero salvar os dados, mas se eu não utilizasse redirecionador(») , ele mostraria na tela!

O TCPDump capturará todas as requisições que passem pelo nosso IP e salvar no arquivo. A saída do arquivo ficará mais ou menos assim:

17:40:37.142723 IP 192.168.1.3.55480 > 192.168.1.2.80: Flags [S], seq 881644111, win 29200, options [mss 1460,sackOK,TS val 662693 ecr 0,nop,wscale 7], length 0
E..<..@.@..{...........P4..O......r.V..........
.
..........
17:40:37.142778 IP 192.168.1.2.80 > 192.168.1.3.55480: Flags [S.], seq 3895379345, ack 881644112, win 28960, options [mss 1460,sackOK,TS val 1618431 ecr 662693,nop,wscale 7], length 0
E..<..@.@..f.........P......4..P..q ...........
.....
......
17:40:37.167604 IP 192.168.1.3.55480 > 192.168.1.2.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 662694 ecr 1618431], length 0
E..4..@.@..............P4..P...............
.
......
17:40:37.167833 IP 192.168.1.3.55480 > 192.168.1.2.80: Flags [P.], seq 1:499, ack 1, win 229, options [nop,nop,TS val 662694 ecr 1618431], length 498
E..&..@.@..............P4..P...............
.
......POST /formulario.php HTTP/1.1
Host: 192.168.1.2
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.7.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.2/formulario.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 53

nome=pegar+a+senha&senha=facil+ok&enviar=Enviar+dados
17:40:37.167879 IP 192.168.1.2.80 > 192.168.1.3.55480: Flags [.], ack 499, win 235, options [nop,nop,TS val 1618437 ecr 662694], length 0
E..4w.@.@.?..........P......4..B...........
.....
..
17:40:37.170762 IP 192.168.1.2.80 > 192.168.1.3.55480: Flags [P.], seq 1:230, ack 499, win 235, options [nop,nop,TS val 1618438 ecr 662694], length 229
E...w.@.@.>..........P......4..B...........
.....
..HTTP/1.1 200 OK
Date: Sat, 18 Jul 2015 20:40:37 GMT
Server: Apache/2.4.10 (Debian)
Content-Length: 25
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Dados salvos com sucesso!
17:40:37.171716 IP 192.168.1.3.55480 > 192.168.1.2.80: Flags [.], ack 230, win 237, options [nop,nop,TS val 662701 ecr 1618438], length 0
E..4..@.@..............P4..B...w.....&.....
.
......
17:40:42.173212 IP 192.168.1.3.55480 > 192.168.1.2.80: Flags [F.], seq 499, ack 230, win 237, options [nop,nop,TS val 663951 ecr 1618438], length 0
E..4..@.@..............P4..B...w.....C.....
.
!.....
17:40:42.173326 IP 192.168.1.2.80 > 192.168.1.3.55480: Flags [F.], seq 230, ack 500, win 235, options [nop,nop,TS val 1619689 ecr 663951], length 0
E..4w.@.@.?..........P.....w4..C.....a.....
.....
!.
17:40:42.174337 IP 192.168.1.3.55480 > 192.168.1.2.80: Flags [.], ack 231, win 237, options [nop,nop,TS val 663951 ecr 1619689], length 0
E..4..@.@..~...........P4..C...x....._.....
.
!.....

A linha correspondente que mostra os dados que possui a senha seria algo assim:

nome=pegar+a+senha&senha=facil+ok&enviar=Enviar+dados

Uma alternativa útil seria utilizar o grep para efetuar a busca no arquivo, desta forma:

grep -E '(nome=|name=|login=|password=|pass=)' pegandoasenha.txt

Onde:

  • -E expressão regular
  • ‘ ‘ a expressão regular deve estar entre aspas simples
  • (opção1|opção2|opção3|etc) OU lógico (OR) com as opções que deverão casar com a pesquisa
  • pegandoasenha-tcpdump.txt é o arquivo alvo do grep

Você pode aumentar sua produtividade utilizando mais informações, existe várias opções para o TCPDump:

Exemplo de comando tcpdump para mostrar quais as ligações de um determinado endereço tcp-ip à porta 80 do seu servidor:

tcpdump -ni eth0 src “numero ip” and dst port 80

tcpdump -i eth0

Conexões de origem podem ser monitoradas utilizando o parâmetro src host, um exemplo simples seria monitorarmos o tráfego que vem de 192.168.1.9 para nosso computador, com o ip 192.168.1.2. A linha de comando ficaria da seguinte forma:

tcpdump -i eth0 src host 192.168.1.9

Se quisermos monitorar as conexões especificando um host de destino, poderíamos fazê-lo com o parâmetro dst host, o exemplo abaixo mostra todo o tráfego do host 192.168.1.2 com 192.168.1.1, no caso, 192.168.1.1 é nosso gateway.

tcpdump -i eth0 dst host 192.168.1.1

Mais em:

http://www.tcpdump.org/

https://pt.wikipedia.org/wiki/Tcpdump

http://www.imartins.com.br/informix/artigos/capturando-senha-usuarios

http://terminalroot.com.br/2015/07/como-capturar-senha-com-tcpdump-com.html

Quer continuar por dentro das novidades do Blog Seja Livre? Siga o nosso perfil no TWITTER, curta a nossa página no FACEBOOK ou adicione o Blog Seja Livre nos seus círculos do GOOGLE+.