CommandsStyle

miércoles, 31 de mayo de 2017

Bienvenidos a... Mañana! Pero dame tus datos hoy.


Saludos y bienvenidos a... Mañana! (No, no estoy loco, ya lo entenderéis luego :P )

En los 2 post anteriores, vimos cómo se puede hacer un Man In The Middle y cómo combinarlo con sslstrip. Si realizaste alguna prueba, habrás visto que había conexiones que seguían utilizando HTTPs en lugar de HTTP.

Lo que nos estaba pasando es que muchos servicios, utilizan una cabecera llamada HTTP Strict-Transport-Security o HSTS.

Esta cabecera le indica al navegador que debe comunicarse con el servidor utilizando un protocolo seguro. Es decir, HTTPs. Siempre. Por lo tanto, esta es la razón por la que sslstrip no funcionaba :(

Hay que tener en cuenta, que cuando instalas algunos navegadores, ya vienen con la información necesaria para que cuando conecta con ciertas webs siempre se utilice HTTPs. Otros vienen con la información de la cabecera pre-cargada para ciertas webs.

Ahora bien, cuando se envía esta cabecera, se envía junto con un periodo de tiempo en el cual es válida esta cabecera. Este periodo de tiempo se indica con el valor max-age seguido por el número de segundos que será valida la cabecera.

Por ejemplo:

Strict-Transport-Security max-age=10886400

En este caso, la cabecera es válida durante 10886400 segundos o lo que es lo mismo, 126 días.

Si un servidor envía esta cabecera a un cliente, cuando el cliente la reciba, automáticamente su navegador intentara realizar todas las comunicaciones posteriores vía HTTPs y normalmente en todas las respuestas del servidor que utilice HSTS se enviara la cabecera.
Esto nos lleva al punto en el que se fuerza constantemente el uso del protocolo HTTPs.
(Hasta aquí, todo pinta mal para poder espiar las comunicaciones, lo sé)

Por todo lo explicado anteriormente, supongamos que nuestra víctima, accede a un servicio bancario, por ejemplo www.mibancainventada.com y el servidor le envía en la primera respuesta la cabecera HSTS con un max-age de 126 días, tal y como hemos visto anteriormente.

Si queremos que funcione el sslstrip, necesitamos que la víctima no tenga esa cabecera, es decir, o hemos realizado el ataque cuando la víctima no ha visitado la web, o cuando la victima hace mas de 126 días que ha visitado la web.

Pero... ¿Que pasa si hacemos que la fecha y hora de la víctima cambien a una fecha y hora en la que la cabecera ya haya caducado?

Aquí es donde entra en juego delorean (Te puedes descargar el código, lo vas a necesitar :) ).
Delorean es un script escrito en python que nos permite responder con la información que nosotros queramos a una petición de ajuste de hora que se realice utilizando el protocolo NTP.

Esto tiene un pequeño problema, y es que cada sistema operativo tiene una política diferente para decidir cuando es un buen momento para sincronizar su fecha y hora.

En resumen, esto quiere decir que la efectividad de este ataque depende de la suerte que tengas para estar realizando un man in the middle en el momento en el que el sistema operativo de la víctima decida sincronizarse. (Aquí siempre podemos armarnos de paciencia)

De forma muy simplificada el funcionamiento del protocolo NTP es el siguiente:

Primero la victima realiza una petición a un servidor NTP.
Petición NTP
Petición NTP


Luego el servidor NTP contesta con la información necesaria para que se ajuste la fecha y hora.
Respuesta NTP
Respuesta NTP


Pero como nosotros tenemos hecho un Man In The Middle a la víctima, en realidad la petición hará lo siguiente:
Petición NTP Man In The Middle
Petición NTP Man In The Middle


Y lo que contestara delorean será:
Respuesta NTP Man In The Middle
Respuesta NTP Man In The Middle



Ahora que hemos visto la teoría, vamos a ver como montar todo esto en la práctica.

Lo primero que hay que hacer para realizar el ataque es configurar iptables para redirigir el tráfico que utiliza el protocolo NTP.
Es decir, redirigir el tráfico del protocolo UDP que utilice el puerto 123. Para ello utilizamos el siguiente comando:

iptables -t nat -A PREROUTING  -p udp --dport 123 -j REDIRECT --to-port 123

El segundo y último paso es descargar delorean (Gracias Jose Selvi por esta herramienta) y ejecutarlo en una terminal.

./Delorean/delorean.py

Una vez hecho esto, cuando la víctima intente sincronizarse, delorean lo detectara, y le contestara con una fecha futura (Esto es configurable mediante parámetros en la llamada del script, pero a nosotros el funcionamiento por defecto nos sirve perfectamente)

Y entonces, como la victima ha viajado al futuro, la información de las cabeceras HSTS habrá caducado, sslstrip hará su trabajo y nosotros podremos espiar las comunicaciones de la víctima.

Bueno pues ya hemos visto como viajar al futuro para espiar las comunicaciones ;). Espero que os haya gustado la entrada.
Hasta la siguiente!


miércoles, 24 de mayo de 2017

¿HTTPs? No gracias

Saludos!
En el post anterior, vimos como podíamos realizar un ataque Man In The Middle (MitM) pero... teníamos un problema. Las conexiones que están cifradas no podíamos espiarlas.

Hoy vamos a centrarnos en como espiar las comunicaciones que utilizan el protocolo HTTPs.

Un investigador llamado Moxie Marlinspike ya se topó con este problema, y le dio una solución. Esta solución se llama sslstrip.

Explicado de forma rápida, lo que hace sslstrip es permitir a un atacante, que esté realizando un ataque MitM, comunicarse con el gateway utilizando HTTPs pero reenviando el tráfico a la victima por HTTP. (y aquí está la parte divertida :) ya que las conexiones HTTP no van cifradas, y por tanto podemos espiar el tráfico )

Es decir, el tráfico HTTPs normalmente viajaría de la siguiente manera:
Conexión HTTPs Normal
Conexión HTTPs Normal


Pero cuando estamos haciendo un MitM a una víctima, realmente el tráfico viaja así:
Conexión HTTPs Man In The Middle
Conexión HTTPs Man In The Middle




Y lo que hace sslstrip es que el tráfico sea el que vemos en la siguiente imagen:
Conexión sslstrip
Conexión sslstrip


Ahora que ya hemos visto la teoría, vamos a ver cómo podemos llevar a cabo esto de forma práctica.

Lo primero que tenemos que hacer es configurar iptables. Para ello lanzamos el siguiente comando en una terminal:
iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 10000

Como podemos ver, lo que hacemos el redirigir el tráfico tcp que tenga como destino el puerto 80 al puerto 10000.

El siguiente paso, es levantar sslstrip para que haga su "magia". Esto lo hacemos lanzando el siguiente comando en una terminal:

sslstrip -l 10000

Como podemos ver, en el comando anterior invocamos a sslstrip y con el parámetro -l 1000 le indicamos que escuche el puerto 10000.

Como veis, con esto lo que conseguimos es que el tráfico que llega a nosotros con puerto de destino 80 utilizando el protocolo TCP, sea redirigido al puerto 10000. En el puerto 10000 sslstrip recibe el tráfico y lo redirige a la víctima.

Llegado este punto, ya podemos espiar las comunicaciones que utilicen el protocolo HTTPs.
Pero... si os dais cuenta, si intentáis espiar las comunicaciones de servicios bancarios, o servicios de correo muy conocidos, no podréis ya que el tráfico sigue cifrado.

¿La solución?

En el siguiente post :)

miércoles, 17 de mayo de 2017

Man In The Middle

Bueno, ha llegado el primer post del blog. Espero hacerlo bien ;)

Hoy vamos a ver paso a paso como realizar un ataque man in the middle utilizando Kali, ya que esta distribución viene con casi todas las herramientas que vamos a necesitar pre instaladas.

Este ataque busca como fin, situarnos en el medio de una comunicación, de forma que todo el tráfico pase por nosotros (y podamos espiarlo en según que condiciones, claro está).

Es decir, el flujo normal de una comunicación sería el siguiente:


Conexión Normal

Pero nosotros que somos un poco cotillas, queremos que el flujo sea el siguiente:

Conexión Man In The Middle


Lo primero que tenemos que hacer es habilitar el IP forwarding. Con esto lo que hacemos es permitir que nuestro equipo funcione como enrutador.

echo 1 > /proc/sys/net/ipv4/ip_forward

Esto es necesario activarlo ya que nuestro equipo con Kali, tendrá que manejar las comunicaciones, de forma que al situarse en el medio, la comunicación siga fluyendo. De esta forma la victima continúa trabajando como lo haría normalmente sin enterarse de que está siendo atacada.

Lo siguiente que queremos hacer es situarnos en el medio de la comunicación. Esto lo vamos a conseguir haciendo un ataque ARP Spoofing.

El protocolo ARP explicado de forma ultra rápida lo que hace es asociar una dirección MAC con una dirección IP.

Lo que vamos a hacer es enviar paquetes ARP Reply constantemente contra la víctima y contra su gateway, de forma que:

  • En la cache ARP de la víctima, se relacione la IP del gateway con nuestra dirección MAC 
  • En la cache ARP del gateway, se relacione la IP de la víctima con nuestra dirección MAC
Las siguientes tablas representan los datos de las caches ARP de la víctima y del gateway:

Cache ARP Victima
MAC IP
AA:AA:AA:AA:AA:11 10.0.0.1
AA:AA:AA:AA:AA:33 10.0.0.3
Cache ARP Gateway
MAC IP
AA:AA:AA:AA:AA:22 10.0.0.2
AA:AA:AA:AA:AA:33 10.0.0.3

Las siguientes tablas representan los datos de las caches ARP de la víctima y del gateway una vez han sido envenenadas:

Cache ARP Victima Envenenada
MAC IP
AA:AA:AA:AA:AA:33 10.0.0.1
AA:AA:AA:AA:AA:33 10.0.0.3
Cache ARP Gateway Envenenada
MAC IP
AA:AA:AA:AA:AA:33 10.0.0.2
AA:AA:AA:AA:AA:33 10.0.0.3

Para realizar este proceso, necesitamos saber con que interfaz con estamos conectando a la red y las direcciones ips del gateway y de da víctima.

Vamos a suponer que nos conectamos con la interfaz eth0 y las direcciones ya las tenemos en las figuras de arriba ;)

Abrimos una terminal, y envenenamos la cache ARP del gateway utilizando el siguiente comando:

arpspoof -i eth0 -t 10.0.0.2 10.0.0.1

Y en la otra, en una terminal nueva y sin cerrar la anterior, envenenamos la cache ARP de la víctima ejecutando el siguiente comando:

arpspoof -i eth0 -t 10.0.0.1 10.0.0.2

Con esto, ya hemos conseguido situarnos en el medio de las comunicaciones entre la víctima y su gateway. Si abrimos un sniffer de red, veremos paquetes de datos de la comunicación entre ambos.

Pero... ¿que pasa con las comunicaciones cifradas?
Lo veremos en siguientes posts ;)

miércoles, 10 de mayo de 2017

Bienvenidos

Bienvenidos al Blog del Informático Del Averno.

Aquí podréis encontrar artículos sobre todo tipo de ideas que se me pasen por la cabeza.
Mi primera idea es utilizarlo para tratar temas de programación, seguridad informática, hacking y otros temas relacionados con el mundo tecnológico.

Pero... como todo el mundo sabe, las ideas van cambiando, así que quien sabe en que terminara convirtiéndose este pequeño sitio del ciberespacio.


Un saludo y nos vemos por el averno ;)