miércoles, 17 de septiembre de 2014

Playing with HOSTS file and... Pharming!

FASE: POST-EXPLOTACIÓN
ATAQUE: PHARMING

Hoy vamos a ver una de las formas de realizar Pharming (definición de Pharming aquí: http://searchsecurity.techtarget.com/definition/pharming) en la fase post-explotación, es decir una vez que hemos obtenido acceso al sistema victima. Para realizar el Pharming modificaremos un archivo del Sistema Operativo que contiene DNSs asociados a direcciones IP: El archivo HOSTS.

EL ARCHIVO HOSTS

Es una de las formas que tiene el SO para resolver nombres de dominios. Antiguamente, cuando no habia servidores DNS que resuelvan el nombre de dominio, el SO se ayudaba con este archivo. Es un archivo en texto plano que puede ser modificado por el administrador del equipo. A continuación veremos la ubicación de este archivo en distintos SSOO:


Para este ejemplo utilizaré un Windows XP, el cual ya se encuentra comprometido (tengo una sesión abierta de meterpreter en Kali).

Aquí la imagen con la ruta del archivo hosts:


El archivo luce así:


Supongamos que el pharming queremos hacerlo para obtener users y pass de hotmail, entonces,
procedemos a descargar la página de www.hotmail.com y a retocarla un poco con PHP y CSS. En la imagen siguiente se puede ver como he insertado un formulario para tener control sobre lo que ingresa el usuario:

Agregamos un formulario con campos de user y pass para luego enviar esa información a nuestra BBDD.

Para el usuario se verá así:


 
Linda no?

Luego creamos un archivo "hosts" o simplemente lo descargamos del equipo víctima (recuerden que ya tenemos acceso al sistema) y agregamos la ip de nuestro servidor (en mi caso 192.168.1.43) y la asociamos al dominio "hotmail.com".


Lo guardamos y luego subimos el archivo modificado:


Ponemos a correr nuestro servidor Apache donde tenemos alojada nuestra página falsa...

Ahora solo queda esperar que nuestra victima ingrese al sitio.

Cuando el usuario tipea hotmail.com es redirigido hacia nuestro servidor que lo recibe con una página muy similar a la de hotmail.

La victima coloca user y pass..



Mostramos un mensaje (un poco rudimentario) para informar que el servidor esta caído y que intente mas tarde. Como pueden ver, la URI "/Parametros/InsertarenMySQL.php" se nota algo sospechosa. Esto se puede mejorar de mil formas para que el usuario no sospeche, podemos armar una pagina mas elaborada (con una URI del tipo error.php) o incluso manejar sus credenciales para enviarlo al sitio legitimo de hotmail. Aquí lo muestro de esta forma dado que solo queremos ver el funcionamiento del ataque.

Bueno, solo queda comprobar en nuestra base de datos si el user y pass están ahí:


Como podemos ver, los datos han impactado en la base de datos, ya hemos cosechado algo jeje.

Cabe aclarar que para poder realizar este ataque y que funcione tenemos que tener en cuenta algunas cosas:

1- El usuario debe ingresar "sitiox.com" en lugar de "www.sitiox.com" porque sino será dirigido al sitio legítimo con el protocolo https correspondiente en lugar del sitio falso con http (la ventaja que tenemos hoy en día es que no hace falta agregar el www para navegar hacia un site y muchos usuarios ingresan de esa forma). Si queremos asegurarnos que el usuario ingrese a nuestro fake site podemos utilizar sslstrip (http://www.thoughtcrime.org/software/sslstrip/).

2- Otra cosa a importante es que nos conviene borrar la caché DNS del sistema victima para asegurarnos que el usuario ingrese a nuestro sitio falso apenas lo ingresa en el navegador. Estos podemos hacerlo desde la sesión de meterpreter pasando a la shell del SO y ejecutando el comando IPCONFIG /FLUSHDNS.

3- Hay que tener en cuenta que navegador utiliza la victima, porque si probamos hacer esto en Firefox, por su configuración predeterminada ocurre lo siguiente:


Podemos saber que browser utiliza la victima mirando los procesos que corren en su sistema a través del comando "ps" de meterpreter.

COMO PROTEGERSE DE ESTE TIPO DE PHARMING?

Es aconsejable tener algún tipo de protección para el archivo hosts, algún software que bloquee el archivo para su modificación o que nos informe si el archivo ha sido modificado. Los firewalls y algunos antivirus nos pueden brindar esta protección. Un ejemplo de firewall que nos permite esto es Tinywall (http://www.seguridadparatodos.es/2013/06/Firewall-windows-parte-2.html)

Como siempre la mejor protección será la capacitación. Instruir al usuario para que conozca cuales son los riesgos será la mejor medida preventiva que podemos adoptar para proteger nuestros sistemas.

Espero que haya sido de utilidad.

HAPPY HACKING!