Conociendo un ataque de DNS Spoofing + Phishing
¿En qué consiste un ataque DNS Spoofing y Phishing?
El término “Spoofing” hace referencia a una “suplantación de identidad” que realiza un ciberatacante mediante el empleo de distintas técnicas de falsificación de los datos en una comunicación. Así pues, podemos decir que un ataque de “DNS Spoofing” consiste en la falsificación de una dirección IP (suplantación de identidad) al realizarse una consulta de resolución de nombre al sistema de nombres de dominio (DNS).
Por tanto, si lanzamos un ataque de “DNS Spoofing” (Domain Name System) lo que estamos realizando a grandes rasgos es que, al introducir la víctima en su navegador una dirección web (nombre de dominio), como por ejemplo “www.google.com”, ésta sea redireccionada a otra dirección web (a otro nombre de dominio) previamente establecido por el atacante en la configuración del ataque. Dicho de otra manera, cuando la víctima introduzca un nombre de dominio que haya sido “spoofeado” por el atacante, la víctima accederá a la página web que el atacante haya especificado para ese nombre de dominio.
Esto se realiza a través de un envenenamiento de la caché DNS de la máquina víctima conocido como “DNS Poisoning”. Ni qué decir tiene que si la página web a la que la víctima es redireccionada es un plagio de una web original, estaremos hablando de un ataque de “phishing”, normalmente con fines maliciosos aunque posiblemente también investigativos, como es nuestro caso.
¿Cómo podemos llevar a cabo un ataque combinado?
Podemos lanzar un ataque de “phishing” a través de un “DNS Spoofing”. El caso que voy a exponer a continuación consiste en un ataque de “phishing” en área local para conseguir las credenciales de acceso de cuentas de las redes sociales “Twitter” y “Facebook”.
El usuario, tras introducir en su navegador la web de “Twitter” o “Facebook”, será redireccionado automáticamente a nuestra web maliciosa, idéntica a la original, mediante el ataque de DNS Spoofing. Una vez el usuario haya ingresado sus credenciales, éstas quedarán guardadas en un archivo de texto del lado del servidor del atacante, y pasados tres segundos será redireccionado a la web original simulando un error de envío en las credenciales de acceso.
Posteriormente, tras el ingreso de las credenciales en la web original, la víctima ingresará sin problemas y continuará su navegación sin haberse percatado de nada de lo sucedido. Así podremos obtener tantas credenciales de usuarios de la organización, como páginas webs de servicios seamos capaces de “clonar”.
Comenzando la fase de clonado manual y automatizado con SEToolkit
Clonar una web de la categoría de estas organizaciones como “Twitter” o “Facebook” tiene sus complicaciones, ya que sus programadores han realizado un gran esfuerzo en intentar que no se consiga fácilmente. Es por ello que expondré el código que he programado de una manera básica, diseñado para capturar las credenciales al ser éstas introducidas en la web trampa, con la consiguiente redirección a la web original.
En el caso de “Twitter”, deberemos encontrar en el archivo “index.html” el “form action”, que será ejecutado una vez el usuario pulse el botón de aceptar (“submit”) tras la introducción de sus credenciales de acceso. Esto deberemos cambiarlo hacia nuestro archivo “post.php”, que será el encargado de “obtener las credenciales introducidas”.
Nuestro archivo “post.php” será el encargado de almacenar las credenciales introducidas por el usuario en el archivo “contenido.txt”, y de redireccionarlo posteriormente a la web original de “Twitter” para no levantar sospechas.
En el caso de “Facebook”, deberemos encontrar en su archivo “index.html” de igual manera el “action” para cambiarlo hacia nuestro archivo “texto.php”, programado para capturar las credenciales una vez que el usuario haya pulsado el botón de “enviar”.
El contenido del archivo “texto.php” que será ejecutado tras la pulsación del botón “enviar” será el siguiente:
Normalmente, un atacante que tenga la intención de realizar el lanzamiento de un ataque de este tipo, lo hará a través del empleo de un kit de herramientas llamado “SEToolkit” (Social Engineer Toolkit). Esta suite de herramientas constituye el kit por excelencia para la preparación de ataques de ingeniería social. Así pues, “SEToolkit” permite automatizar ataques de phishing en cuestión de segundos, clonando cualquier página web y poniéndola en marcha en un servidor web propio. Esta suite de herramientas de ingeniería social la podemos descargar desde “https://github.com/trustedsec/social-engineer-toolkit”.
A continuación vamos a mostrar cómo clonar una web y colocarla en nuestro servidor web, que correrá bajo nuestra máquina atacante. Posteriormente realizaremos un ataque de DNS Spoofing con “ettercap”, para redireccionar las peticiones web de la máquina víctima hacia nuestro servidor web, donde se alojará la web clonada preparada para el robo de credenciales.
Lanzamos “SEToolkit” desde la línea de comandos y vemos lo siguiente:
Como podemos observar, esta herramienta nos permite crear diferentes vectores de ataque entre los que destacan los ataques de ingeniería social, como bien hemos mencionado anteriormente.
Elegimos esta primera opción y nos lleva al siguiente menú:
Aquí podemos observar la cantidad de vectores de ataque que nos brinda la herramienta.
A través de la primera opción se puede configurar un ataque de e-mails dirigidos contra una víctima en concreto.
La segunda opción será la que nosotros escogeremos para la realización de la clonación de una página web, con la que poder engañar a una víctima y robarle las credenciales de acceso.
La tercera opción nos permite la creación de medios (usb, hdd…) infectados, empleando como vector de infección el clásico “autorun.inf”.
Con la cuarta opción podemos crear ficheros maliciosos (cliente y servidor), empleando los “payloads” que ofrece metasploit simplificando el trabajo al atacante.
La quinta opción, como su propio nombre indica, nos permite el envío masivo de e-mails personalizados a numerosas víctimas.
La sexta opción trata de crear un vector de ataque contra una plataforma Arduino; y el resto de las opciones quedan aclaradas con su única lectura.
Continuando con la práctica, elegimos la opción “Website Attacks Vectors” y llegamos al siguiente menú:
Como podemos ver en la imagen anterior, se nos detalla una descripción de cada opción. La opción que nosotros vamos a elegir es la tercera, la cual nos permitirá clonar una página web, e iniciar directamente en nuestra propia máquina un servidor web, donde alojará de manera automática la web clonada y preparada para el robo de credenciales.
En este momento elegimos la segunda opción “Site Cloner” y procedemos a ello.
Exclusivamente se nos solicita la dirección IP de nuestra máquina atacante donde iniciar el servidor web en el que alojar la página clonada, y posteriormente se nos pide la dirección web de la página que queremos clonar. Una vez realizado esto, ya se nos prepara todo el escenario para empezar a lanzar nuestro ataque de “DNS Spoofing”, con el que forzar a la víctima a conectarse a nuestro servidor web. Por cierto, la página web clonada ha sido la de “Facebook”, un clásico.
Fase de ejecución y captura de credenciales
Llegados a este punto vamos a ver cómo realizar el ataque de “DNS Spoofing”. Vamos a realizarlo empleando “ettercap”. Primeramente con el escenario que hemos preparado de manera automática con SEToolkit; y posteriormente con el escenario preparado de manera propia, ya que es más didáctico debido a que requiere una metodología más manual y universal.
Ejecutando el ataque con Ettercap y SEToolkit
Partimos de la base de que tenemos ambas webs clonadas y preparadas para la sustracción de credenciales. SEToolkit levanta su propio servido HTTP en el puerto 80 por defecto, por supuesto modificable. Con las páginas web clonadas que tienen seguridad en la transmisión de datos (TLS/SSL), y corren en el puerto 443, será conveniente emplear certificados digitales como los proporcionados de manera gratuita por “Let’s Encrypt” (https://letsencrypt.org/es/), para que no se levanten sospechas en las firmas, a la hora de que el navegador visite la web.
Ahora, para dar comienzo al ataque de “DNS Spoofing” debemos configurar el archivo “etter.dns”, que en el caso de “Kali Linux” lo encontraremos en “/etc/ettercap/etter.dns”. En el archivo deberemos escribir la dirección de la página web que queremos sustraer las credenciales, y posteriormente la dirección IP del servidor donde esté la web “trampa”, donde queramos redireccionar a la víctima. Esto lo haremos como sigue a continuación.
Una vez configurado el archivo “etter.dns” ya podemos iniciar “ettercap”. Lo podemos hacer de manera gráfica o por línea de comandos. En nuestra máquina atacante lo haremos de manera gráfica, que siempre será más fácil e intuitivo; pero si resulta que queremos iniciar “ettercap” en una máquina previamente explotada, con la finalidad de capturar credenciales del área local de una organización, lo haremos por línea de comandos.
Cuando iniciamos el programa debemos elegir nuestra red inalámbrica, que en este caso es “wlan0”.
Posteriormente hacemos un escaneo de la red local y procedemos a clasificar los equipos de los que queremos capturar/esnifar el tráfico de red. En el “target 1” colocaremos la dirección IP de la puerta de enlace, por la que pasarán todos los paquetes de red antes de salir al “exterior”; y en el “target 2” colocaremos las direcciones IP de las máquinas de la organización de las que queramos capturar/esnifar el tráfico de red.
Acto seguido lanzamos el ataque de MITM (Man In The Middle) con el que nos colocaremos en medio de las transmisiones de datos, entre las máquinas de la organización y el router que les da “salida a internet”. De esta manera interceptaremos todos los paquetes enviados, entre los cuales podremos capturar sus credenciales, además de lanzar el ataque de “DNS Spoofing” que es el tema que nos atañe en este preciso momento. Realizamos el “envenenamiento de la tabla ARP” como sigue a continuación.
Posteriormente, una vez iniciado el envenenamiento de la tabla ARP y habiendo iniciado el “sniffing”, procedemos a activar el plugin “dns_spoof” con el cual lanzaremos el ataque de “DNS Spoofing”.
En este preciso momento, cuando la víctima vaya a visitar la página de “Facebook”, será direccionada a la dirección IP especificada en el archivo “etter.dns”. Exactamente igual ocurrirá con la página de “Twitter”. Ahora ya tenemos todo el escenario preparado para que el ataque tenga éxito, y la víctima visite las webs especificadas e introduzca sus credenciales de acceso.
Una vez que la víctima se conecte al servidor atacante, podremos verlo con cierto detalle:
La máquina víctima será redirigida a nuestra web en la que introducirá sus credenciales de acceso.
Una vez la víctima pulse el botón “enviar” sus credenciales serán nuestras:
Posteriormente, la víctima será redireccionada a la página original la cual se abrirá sin solicitar credencial alguna, si la sesión “cookie” sigue activa en su máquina por un ingreso anterior a la plataforma. La prueba de ello es que las credenciales introducidas en este caso son falsas y, sin embargo, hemos ingresado en la plataforma sin problemas.
Ejecutando el ataque de manera manual
En el inicio de este artículo habíamos clonado las webs de Facebook y Twitter de manera manual. Llegados a este punto vamos a proceder iniciando un servidor HTTP (apache en este caso) en una máquina con IP 192.168.4.88, donde se alojará la web de Twitter, y otro servidor HTTP en otra máquina con IP 192.168.4.111 donde se alojará la web de Facebook.
Ahora, ejecutamos al ataque de “DNS Spoofing” con “ettercap” como ya hemos visto anteriormente, con el archivo “etter.dns” como vemos en la siguiente imagen:
Así pues, si la víctima en este momento visita la web de Facebook, será redireccionada al servidor HTTP de la máquina con IP 192.168.4.111 y verá lo siguiente:
Tras introducir sus credenciales, éstas se guardarán en nuestro archivo “texto.txt” que está en el servidor, y posteriormente la víctima será redireccionada a la web oficial de Facebook, como bien hemos programado en “texto.php” a través de la instrucción “header («Location:https://www.facebook.com»);”.
De la misma manera, si la víctima en este momento visita la web de Twitter será redireccionada al servidor HTTP de la máquina con IP 192.168.4.88 y verá la página clonada:
Tras introducir sus credenciales, éstas se guardarán en nuestro archivo “contenido.txt”, localizado en el servidor, y posteriormente la víctima será redireccionada a la web oficial de Twitter pasados tres segundos, como bien lo hemos programado en el archivo “post.php” a través de la instrucción “<meta http-equiv=»refresh» content=»3; url=https://www.twitter.com» />”.
Conclusiones y recomendaciones
A lo largo del ejercicio hemos podido comprobar la “relativa” facilidad que tienen los ciberdelincuentes para preparar distintos escenarios con los que ejecutar ataques de phishing. Mediante el uso de herramientas automatizadas como SEToolkit, y a través de conocimientos básicos en programación, hemos visto cómo preparar un escenario medianamente decente con fines investigativos. Evidentemente los vectores de ataque por los que se puede sacar partido a estos escenarios son muy diversos; desde el empleo de Man In The Middle (MITM) como el que hemos visto en este ejercicio, hasta el envío de e-mails muy bien preparados, mensajes SMS, y otros vectores de ingeniería social en definitiva.
En referencia a un ataque de phishing, normalmente se puede identificar rápidamente al comprobar que la web visitada no cumple con los estándares de seguridad, ya que debemos asegurarnos que comience por “https”, y tenga el icono de un candado cerrado verificando la conexión segura mediante la comprobación de firmas digitales válidas.
De forma extraordinaria, en Operaciones Red Team muy sofisticadas nos podemos encontrar con ataques mucho más preparados que empleen certificados digitales válidos empleando el protocolo HTTPS, que permitan evadir ciertos controles de detección. En estos casos habrá que tener una buena formación de concienciación en ciberseguridad para poder reconocer muy bien los posibles vectores de ataque por ingeniería social, así como los distintos tipos de ataques en redes internas.
En referencia a un ataque de Man In The Middle (MITM), que deriva en DNS Spoofing, debemos saber que hoy en día el 80% de los dispositivos informáticos avisan a través de sus sistemas antivirus y de los propios navegadores web de que están sufriendo un posible ataque, donde los datos del usuario pueden ser interceptados. En ese mismo momento el usuario debe desconectarse de la red en la que esté, ya que hay muchas probabilidades de que haya un ciberatacante intentando capturar tráfico de red para malos fines, ya sea para obtener credenciales de la víctima, o para redirigirle a una página web en concreto como hemos visto en este ejercicio, o para realizarle una auto descarga de malware bajo la etiqueta de “actualización de Windows”, entre otros. De forma extraordinaria, en ciertas Operaciones Red Team donde se debe cumplir como objetivo principal el no ser detectado, se pueden ejecutar estos tipos de ataques a redes de datos a través del uso de dispositivos diseñados para tal efecto, como por ejemplo la “piña WiFi” (https://shop.hak5.org/products/wifi-pineapple), la cual realiza este tipo de ataques a nivel “hardware”, proporcionando al atacante una suite de herramientas de post-explotación muy variada (captura de credenciales, portal cautivo, etc.). Lo único que habría que conseguir en estos casos, es que la víctima se conecte a la red WiFi trampa que el atacante ha diseñado para la Operación.