Se ha dado en llamar «pharming» al ataque que consiste en modificar la resolución de dominios a través del archivo hosts. El sistema operativo acude primero al archivo hosts a intentar resolver un dominio. Luego al primer servidor DNS configurado. Si el primer servidor DNS está caído (y sólo si está caído, no porque no encuentre el dominio en él… esto es algo que muchos confunden) acude al segundo servidor DNS a intentar resolver el dominio. ¿Qué han ideado los atacantes para aprovecharse de esta situación?
Los ataques pharming son extremadamente populares hoy en día entre los creadores de troyanos menos sofisticados. Una buena parte de la producción de malware creada en Latinoamérica hoy en día está basada en este principio del pharming. La idea es crear pequeños programas que modifiquen el archivo hosts. El usuario infectado intentará ingresar en su banco y, como el sistema le lleva hacia otra dirección IP, acabará en una especie de phishing donde el atacante capturará sus credenciales.
Variantes
En principio, es un ataque muy simple. La víctima ejecuta un troyano y su archivo hosts es modificado, por ejemplo, con esta entrada:
6.6.6.6 http://www.banco.com
Cuando el usuario acuda a banco.com, en realidad irá a 6.6.6.6 donde le espera una página copia de banco. Programar esto es extremadamente simple, pero tiene sus desventajas. Por ejemplo, ¿qué ocurre cuando la dirección IP 6.6.6.6 cae? La víctima escribirá en su navegador http://www.banco.com, acudirá a 6.6.6.6 y no irá a parar a ningún sitio. Su sensación será que la página de su banca online se ha caído. Si el troyano no tiene otros recursos (solo contaba con esa dirección IP en su código), simplemente ya no será válido y quedará obsoleto. Los programadores pronto se pusieron manos a la obra para mejorar este tipo de troyanos.
Descargar el archivo hosts
Pronto se dieron cuenta de que sería mucho más efectivo que, la asociación 6.6.6.6 con http://www.banco.com fuese, de alguna forma, dinámica. Que el propio troyano controlara hacia dónde resuelve el dominio para cuando la dirección IP no estuviese disponible. Así que comenzaron a programar un sistema por el que, en vez de integrar directamente en su código la dirección IP donde se aloja la copia, el malware acude a una URL que controlan los atacantes y descarga un archivo hosts que sustituye al original. En ese archivo hosts, van actualizando la asociación IP/dominio.
Así, si cae la dirección IP, pueden colgar en la URL datos actualizados para que los nuevos infectados acudan. Es como un pequeño sistema de «nuevas versiones» del malware.
Una URL que contiene un archivo hosts típico puede ser:
Resolver un dominio de tercer nivel
Una nueva vuelta de tuerca al sistema de pharming Al fin y al cabo, el atacante lo que desea es poder modificar la dirección IP de forma dinámica si cayese la copia de la página del banco. Esto se puede conseguir descargando de una URL un archivo hosts completo… o bien resolviendo un domino. Si el dominio es dinámico de tercer nivel, además se consigue inmediatez.
El funcionamiento sería el siguiente: el troyano está programado para modificar el archivo hosts con la dirección IP a la que resuelva dominio.no-ip.org (por ejemplo), de esta manera:
#Resolución(dominio3nivel)# http://www.banco.com
Donde #Resolución(dominio3nivel)# es una variable. El atacante, cuando el dominio resuelva ya a una dirección IP caída, solo tiene que entrar en su panel de control de no-ip.org y modificar la resolución para cambiar la variable en los sistemas infectados. El troyano comenzará a modificar los archivos hosts de sus víctimas hacia la nueva IP de forma inmediata.
Instalar un servidor web en la víctima
El atacante, cansado de que se le echen abajo las direcciones IP donde alojan sus phishings, decide simplemente que el servidor sea la propia víctima. El troyano instala un pequeño servidor web y pone a escuchar en el puerto 80. Luego modifica el archivo hosts con esta entrada:
127.0.0.1 http://www.banco.com
Ahora, la víctima acudirá a su propio ordenador cuando quiera realizar operaciones de banca online, donde él mismo alojará una copia de la página. El formulario incluirá un «action» donde se envía la información al atacante. Esta técnica de resolución local (asociar la resolución de un dominio a 127.0.0.1) se usa también normalmente para bloquear webs de seguridad (virustotal.com, windowsupdate.com… etc).
Todas las técnicas descritas anteriormente incluyen en los troyanos reales sistemas de redundancia (varias URL por si alguna cae, varios dominios de tercer nivel consultados… etc) e incluso combinaciones de todas estas.
Sergio de los Santos
Twitter: @ssantosv
Milton H. Rodríguez M. dice
Muy interesante y didáctico tu artículo. Felicitaciones.
Ronald Hernandez dice
Muy práctico, muy atinado, muy aplicable. Muchas gracias por este tipo de artículos.
De verdad se los agradezco.
Anónimo dice
es verdaderamente una antiguedad esta tecnica
Anónimo dice
Que buen artículo, muchas gracias por compartir estos temas.
Anónimo dice
Muy bueno, muy bien explicado. Espero que sigas explicando muchas cosas mas, asi como lo haces.
Godo dice
Una vez más la explicación es brillante.
¡Ánimos para seguir realizando este necesario trabajo!
Anónimo dice
Como ya han dicho otros, brillante la explicación, y bien presentada. Gracias por tu tiempo y trabajo.
Milton Israel Padilla dice
Brillante explicación este es una información que le servirá a mucha gente sobre todo a estudiantes. Felicitaciones por tan maravillosa publicación.
Raul dice
Faltaría aclarar en que sistemas operativos ocurre esto. ya que en algunos como linux el orden de búsqueda de resolutores de dominio y el propio archivo hosts se administran desde cuentas con privilegios.
Lo que requeriría que el troyano aproveche primero algún otro exploit para realizar la escalada de privilegios.
Y, de haber logrado eso, seria ridículo emplear este método de pishing pudiendo hacer guarradas de nivel superior…
Raul dice
no se porque escribi pishing…
Anónimo dice
En Windows también se administran con cuentas con privilegios. Otra cosa es que el usuario no las sepa usar, pero lógicamente, no cualquier usuario puede tocar el hosts. Tambien tendria que elevar.