Título: [Tutorial] Prueba de concepto con el HeartBleed Publicado por: Debci en 1 Mayo 2014, 17:33 pm Buenas a todos, hoy he escrito un artículo en el que explico como realizar un ataque aprovechándonos de la archi-conocida CVE-2014-0160.
Para el que no lo sepa, el pasado 1 de Abril, fue descubierta esta vulnerabilidad de carácter crítico y es que muchos servidores muy importantes se han visto directamente afectados por esta, como Facebook, Google, Instagram, Tumblr... así como otras muchas muy importantes. Esta vulnerabilidad permite al atacante mal-intencionado, revelar credenciales que hayan sido procesados por la capa del SSL vulnerable, permitiendo así que los datos sean revelados sin necesidad de asaltar el sistema. Hoy te vamos a enseñar como funciona, demostrando la falla de seguridad en openSSL con Heartbleed, para que veas con tus propios ojos, lo importante de este fallo de seguridad. En primer lugar, establezcamos el "scenario" de nuestro "ataque". Nos encontramos contra un servidor que hace uso de openSSL versión 1.0.1f, que para los mas curiosos puede ser descargado desde su web oficial para experimentar, con el siguiente comando: Código: root@hacklab:~# wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz Código: root@hacklab:~# cd /usr/share/nmap/scripts/ Código: root@hacklab:~# nmap -sV -p 443 --script=ssl-heartbleed.nse xxxx.cat Vamos a usar ahora alguno de los famosos PoC (Proof of concept para los lusers :D ), que podemos encontrar en alguno de nuestros amados repositorios de vulnerabilidades como exploitDB. Para descargarlo, tan solo tenemos que acudir al siguiente enlace y descargar el script o copiar el código en un fichero con extensión .py y darle permisos de ejecución para lanzarlo con el intérprete. Sin más, el enlace: http://www.exploit-db.com/exploits/32764/ Para ejecutar el código, vamos a lanzar el siguiente comando: Código: root@hacklab:~# python 32764.py xxxxx.cat -p 443 Vamos a considerar la conexión a la layer del SSL como un diálogo entre cliente y servidor con SSL, que podría ejemplificarse así: -Servidor, estás ahí? Si es así, devuélveme la palabra "Undersecured" cifrada, de 12 letras. -Andoni quiere "Undersecured". Toma Undersecured. Sencillo verdad? Le pedimos contenido "seguro" al servidor que supuestamente no podrá ser esnifado, puesto que viene cifrado. Nuestro fallo viene dado por hacerle creer al servidor que unos credenciales son nuestros pidiendo más información de la que nos corresponde: -Servidor, estás ahí? Si es así devuélveme la palabra "membrillo" cifrada, de 520 letras. -Andoni quiere "membrillo". Toma "membrillo pepe contraseña123 loko94 contraseñachulikah morenika92 adoroelmembrillo..." Obteniendo así del servidor, credenciales que fueron securizados con anterioridad permitiéndonos verlos en plain-text disponibles para ser usado con el consiguiente robo de información y credenciales. Como ampliación, y tal como presume el genial Chema Alonso en su blog, este ataque podría automatizarse de forma muy sencilla haciendo uso de Python o Bash Script,haciendo que dicho exploit se vaya lanzando, por ejemplo cada 10 segundos y así atrapar toda la información que los usuarios descuidados vayan introduciendo, creyendo que una layer SSL les hace inmunes. Recordad que este ataque, no es mas que una simulación realizada con mis propios servidor y que ni yo ni nadie se hace responsable del mal uso o el uso mal intencionado que se le pueda dar a esta información. Sed responsables and keep on hacking! Si os ha gustado, sería genial que compartieseis el enlace a mi página web y por supuesto, que me mandéis todas vuestras peticiones/críticas/sugerencias/agradecimientos. http://www.undersecured.com/blog/demostrando-la-falla-de-seguridad-en-openssl-con-heartbleed/ (http://www.undersecured.com/blog/demostrando-la-falla-de-seguridad-en-openssl-con-heartbleed/) Un saludo! |