DNS Spoofing + SET

En este post vamos a dar una pequeña explicación sobre qué es el DNS Spoofing y un par de maneras de aprovecharlo para realizar ataques en LAN.

DNS


O Domain Name System es un servicio de directorio que traduce los nombres de hosts en direcciones IP. DNS es una base de datos distribuida implementada jerarquicamente en servidores dns y además el protocolo de la capa de aplicación (53 UDP) que permite a los hosts consultar dicha base de datos. Más información: RFC 1034



Funcionamiento de DNS


Imaginemos que entramos en internet, y escribimos google.es en la barra de direcciones. El navegador invocará al lado del cliente DNS, diciendole que quiere saber la ip de google.es. Si el servidor DNS local no tiene esa tupla host-ip en cache manda un mensaje de consulta a la red. Entonces se producen una serie de consultas entre servidores DNS de mayor a menor nivel, hasta que uno, tiene la tupla host-ip guardada. En ese momento, el servidor DNS local, hace la consulta directamente al servidor que tiene la tupla host-ip. Este servidor, le devuelve la IP de google.es.


DNS Spoofing


Siguiendo el mismo ejemplo, en este caso mucho más acortado. El navegador, invoca nuevamente al cliente DNS, y este pasa la petición a la red. En la red, hay un atacante que detecta esa solicitud DNS y le devuelve al cliente DNS una ip que no se corresponde con la del host solicitado, pero hace parecer que si.

Adjunto 2 imagenes, sobre cómo serían las consultas DNS en una LAN sin DNS Spoofing y con DNS Spoofing

Sin DNS Spoofing

Con DNS Spoofing
Para realizar el DNS Spoofing podemos ayudarnos de herramientas como ettercap o dsniff. En el caso de ettercap primero hay que localizar el archivo etter.dns, y modificarlo. El archivo tiene esta pinta:
############################################################################
#                                                                          #
#  ettercap -- etter.dns -- host file for dns_spoof plugin                 #
#                                                                          #
#  Copyright (C) ALoR & NaGA                                               #
#                                                                          #
#  This program is free software; you can redistribute it and/or modify    #
#  it under the terms of the GNU General Public License as published by    #
#  the Free Software Foundation; either version 2 of the License, or       #
#  (at your option) any later version.                                     #
#                                                                          #
############################################################################
#                                                                          #
# Sample hosts file for dns_spoof plugin                                   #
#                                                                          #
# the format is (for A query):                                             #
#   www.myhostname.com A 168.11.22.33                                      #
#   *.foo.com          A 168.44.55.66                                      #
#                                                                          #
# or for PTR query:                                                        #
#   www.bar.com A 10.0.0.10                                                #
#                                                                          #
# or for MX query:                                                         #
#    domain.com MX xxx.xxx.xxx.xxx                                         #
#                                                                          #
# or for WINS query:                                                       #
#    workgroup WINS 127.0.0.1                                              #
#    PC*       WINS 127.0.0.1                                              #
#                                                                          #
# NOTE: the wildcarded hosts can't be used to poison the PTR requests      #
#       so if you want to reverse poison you have to specify a plain       #
#       host. (look at the www.microsoft.com example)                      #
#                                                                          #
############################################################################

################################
# microsoft sucks ;)
# redirect it to www.linux.org
#

microsoft.com      A   198.182.196.56
*.microsoft.com    A   198.182.196.56
www.microsoft.com  PTR 198.182.196.56      # Wildcards in PTR are not allowed

##########################################
# no one out there can have our domains...
#

www.alor.org  A 127.0.0.1
www.naga.org  A 127.0.0.1

###############################################
# one day we will have our ettercap.org domain
#

www.ettercap.org           A  127.0.0.1
ettercap.sourceforge.net   A  216.136.171.201

###############################################
# some MX examples
#

alor.org   MX  127.0.0.1
naga.org   MX  127.0.0.1

###############################################
# This messes up NetBIOS clients using DNS
# resolutions. I.e. Windows/Samba file sharing.
#

LAB-PC*  WINS  127.0.0.1

# vim:ts=8:noexpandtab
Podemos ver que han incluido varios ejemplos con distintos tipos de registro y una breve explicación de como redireccionar host-ip. En nuestro caso necesitamos un registro de tipo A (Address – Este registro se usa para traducir nombres de hosts a direcciones IPv4.)

Vamos a introducir unos registros en el archivo:
google.es A [ip]          //redirige google.es a la ip
*.google.es A [ip]        //redirige todos los dominios de google.es
                          //maps.google.es, gmail.google.es...) a la ip
* A [ip]                  //redirige todas las direcciones a la ip

Una vez guardado el archivo, hay que ejecutar ettercap:
ettercap -T -q -i eth0 -P dns_spoof -M arp // //
Explico los argumentos:
              -T : Interfaz de sólo texto
              -q : Modo silencioso (no muestra el contenido de los paquetes)
        -i eth0 : Seleccionamos la interfaz de red a utilizar
-P dns_sniff : Activamos el plugin de dns_sniff
 -M arp // // : MitM (Man in the Middle) arp // //. Decimos que afecta a todas las máquinas de la red.


Ahora vamos a comparar unas capturas hechas con Wireshark, para ver que diferencia hay entre una petición DNS Spoofeada y sin spoofear:

Peticion DNS sin spoof vs con spoof

Respuesta DNS sin spoof vs con spoof
Como podemos observar en la primera imagen, la petición DNS es exactamente igual en los 2 casos. Sin embargo, en la segunda podemos ver como en el primer caso, nos indica la ip correcta de twitter y en el segundo caso nos devuelve la ip con la que estamos haciendo el spoof.

Podemos observar también en las capturas, si hacemos un filtrado del protocolo ARP, que en la captura no spoofeada, no hay ninguna petición ARP, mientras que en la segunda hay bastantes. Eso es a causa del ARP poisoning que se realiza para hacer el dns spoofing. Esta es una de las maneras de las que se controla en una red que no haya ARP Poisoning ni ataques MitM, controlando la cantidad de paquetes ARP. Si hay muchos algo raro pasa.

En la captura sin spoof, ningun paquete arp. En la captura con spoof hay notablemente más paquetes arp


SET


SET o Social Engineering Toolkit es una suite dedicada a la ingeniería social escrita en python. Aprovecha muchas de las funcionalidades de Metasploit automatizandolas. Tiene varios tipos de "Vectores de ataque" entre ellos:
  • Ataques de phising (sitio falso, envio masivo de mails...)
  • Ataques Web (copia de un sitio web con robo de credenciales, explotación de sistemas mediante Java, tabnabbing...)
  • Infección de medios (payloads reversos aprovechando la "vulnerabilidad" autorun de los sistemas windows)
  • Payload y listener (exactamente lo mismo que haríamos con Metasploit, pero automatizado)
  • Envio masivo de correos
  • Ataques usb en dispositivos teensy
  • SMS Spoofing
  • Ataques wireless
  • Además permite el uso de módulos de terceros.
   
He grabado un par de videos, para demostrar la potencia del DNS Spoofing y la suite SET. El primero, realiza la explotación de un sistema mediante Java, mientras que el segundo, hace un "Credential Harvester" que aprovecha el DNS Spoofing para no levantar sospechas.






Agradecimientos:
flu-project
irongeek
Metasploit
ettercap