14 ago 2018

KernelPop: Si haces pop… puede que tu Linux sea vulnerable

Cuando te encuentras en un pentest y llegas a una máquina Linux explotando alguna vulnerabilidad y tienes el control de la máquina, puedes necesitar elevar privilegios para lograr un mayor privilegio en la red o en la propia máquina. Ya hemos visto en otras ocasiones herramientas que ayudan a encontrar esos fallos de seguridad que la máquina no tiene solventada, como, por ejemplo,AutoLocal Privilegepara encontrar bugs de máquinas Linux, Windows Exploit Suggester, si el entorno es un Windows, OSB-Rastreatorpara encontrar bugs en funciones inseguras de repositorios de código abierto o, directamente, conocer la vulnerabilidad que afecta al sistema, el temido, en su día, dirtyCOW.

Hoy hablaremos de una herramienta que permite ahondar y verificar las vulnerabilidades que puede presentar un sistema, con las que conseguiríamos elevar privilegio. La herramienta se llama Kernelpop y está disponible en su githubpara su descarga. A día de hoy, la herramienta solo permite comprobar vulnerabilidades en entornos GNU/Linux, aunque viendo algunas carpetas puede que en el futuro ayude a detectar vulnerabilidades en sistemas macOSy Windows. 


Uno de los requisitos que tiene la herramienta es que se necesita Python3. Podemos decir que kernelpopes un pequeñoframeworkque permite enumerar las potenciales y, en algunos casos, las reales vulnerabilidades que tiene un kernel. Como se mencionó anteriormente, la herramienta encuentra vulnerabilidades en entornos GNU/Linux, pero se prevé que pueda encontrar vulnerabilidades en macOSWindows

La herramienta propone varios modos de ejecución, los cuales se muestran a continuación:
·     Por defecto.
·     Modo de enumeración por fuerza bruta.
·     Inputmode

El modo por defecto es ejecutado con Pythonkernelpop.py. Este modo compara la información recopilada del kernelcon los exploits para kerneldisponibles hasta la fecha para dicha plataforma. Como se puede ver en la imagen, lo primero es identificar la versión del kernel. Se identifican los CVE que afectan a la versión del kernely se confirma que existe la vulnerabilidad.


¿Cómo o dónde está el código que detecta la vulnerabilidad? Como se puede ver en la siguiente imagen, dentro del repositorio de kernelpop se encuentra una carpeta denominada exploits. Esta carpeta es la que consta de un módulo llamado exploit.py con el que se invoca a los ficheros python que implementan la detección de los diferentes CVE. Sistema interesante, sin duda.


El modo brute-enumeration permite realizar los mismos checks, pero permite detectar los prerrequisitos del sistema, es decir, si el sistema operativo está configurado en un estado vulnerable.


El modo input, permite intorducir un ‘uname –a’ que nos interese evaluar. Por ejemplo, podemos ejecutar la instrucción kernelpop.py –iy nos solicitarán que introduzcamos la información para su evaluación. 

En la siguiente imagen, se muestra como, primero obtenemos el uname –aque nos interese, y después, se lo pasamos a la herramienta en modo input. Los resultados obtenidos son similares a las pruebas anteriores, porque el uname –a es el de la máquina, pero si quisiéramos evaluar otro obtendríamos los resultados.  


Una buena herramienta para llevar en la mochila y tener en cuenta en el proceso de post-explotación. La herramienta está muy actualizada, ya que los últimos commits constan de hace menos de una semana. Proyecto interesante y que seguiremos de cerca. Además, propone una forma sencilla de aumentar el número de módulos para la detección de vulnerabilidades locales.

12 ago 2018

Agosto, no tengas prisa por irte

Agosto va pasando. Con 3/4 partes de la gente de vacaciones, disfrutando de la playa, de la montaña, del chiringuito, de los amigos y la familia. Pronto me toca descansar para coger fuerzas, para preparar lo que está por venir. Una vez que pasa agosto todo va muy deprisa, todo avanza, prácticamente, sin darnos cuenta. Veremos llegar a septiembre y cuando abramos los ojos diciembre estará ahí para despedir el año.

Voy haciendo balance del año, aunque pronto toca descansar y despejar la mente, lo máximo que se pueda, lo máximo que te dejen. Miro con ilusión lo que está por venir y es que el equipo de Ideas Locas cada vez funciona mejor y es un espacio tan distinto, tan original, tan especial, que espero estar mucho tiempo allí.

Pronto toca una nueva Tomatina, antes de despedir al bueno de agosto. Raúl Fuentes vuelve a superarse y consigue una IV Edición de la Tomatina, dónde estuve en la primera y segunda edición, aunque no pude acompañarle en la tercera edición. Esta vez, es un orgullo poder estar con mi amigo y con la gente de Valencia. Grande Buñol. Nos vemos el 28 de agosto.


Unos días después, llegará septiembre, vuelta al cole, vuelta al trabajo. Costará después de los mojitos, los chiringuitos, las mañanas de descanso y las noches de insomnio. Centrados en el trabajo, en seguir haciendo lo que más nos gusta y con un viaje muy especial para mí. DragonjarCON. Por primera vez estaré en DragonjarCON. El próximo 8 y 9 de septiembre.


A la vuelta, el fin de semana siguiente, los días 14 y 15 de septiembre, será la RootedCON Valencia. Por quinto año estaré impartiendo un lab, en esta ocasión Metasploit & Hacking Ético, un lab muy especial, ya que es la primera vez que se da en Valencia. En los cuatro años anteriores era un lab sobre hacking ético orientado a proyectos y parte técnica. En esta ocasión veremos el uso máximo de Metasploit en los proyectos de hacking ético. También estamos ansiosos por ver los ponentes de esta V Edición de RootedCON Valencia. Pronto se abrirá el registro para poder apuntaros :D


De momento es todo lo que se puede contar, aunque alguna sorpresa más hay. Toca reflexión, toca descansar y toca despejarse antes de comenzar con un septiembre-diciembre de mucho movimiento. Agosto, no tengas prisa por pasar...

8 ago 2018

Enviando instrucciones ocultas a través de Gmail


Una de las características menos conocidas de Gmail hace referencia a la interpretación del carácter  "." (punto) en los nombres de las cuentas de los usuarios de Gmail. Gmail no interpreta este caracter, por lo que enviar un correo electrónico a my.email@gmail.com y a myem.ail@gmail.com produce el mismo resultado; el usuario recibirá el correo electrónico correctamente, pero mostrará en el encabezado que el referer tiene el punto ubicado en un lugar diferente. Esta característica permite que la posición del punto se use para enviar mensajes secretos usando técnicas esteganográficas.

La técnica presentada puede tener muchos usos, y entre ellos, algunos maliciosos. En el caso de la creación de malware, la posición del punto se puede utilizar por ejemplo para camuflar los comandos enviados por correo electrónico desde un panel de control a los bots de una botnet, determinando la instrucción que deben realizar.

Para ampliar el número de instrucciones que podrían ocultarse sin la necesidad de crear cuentas de Gmail con nombres largos, una posibilidad que se nos ocurrió en el año 2015, y que presentamos como paper al congreso RootedCON 2016 mis compañeros Jesús Alcalde, Gonzalo Junquera y yo (aunque no fue seleccionada para conferencia), fue el uso de codificación binaria, tomando la existencia de un punto como un 1 lógico y la inexistencia del punto como un 0. Por ejemplo, una instrucción enviada al bot podría ser "myem.ai.l@gmail.com", y el código binario traducido sería el número 000101, que podría corresponder internamente con una instrucción del malware para capturar la cámara web del dispositivo troyanizado.

La siguiente figura presenta una tabla con el número de instrucciones que se pueden codificar utilizando esta técnica, dependiendo del tamaño de la cuenta de correo electrónico registrada en Gmail. Estas cuentas, según la política de Google, deben tener un tamaño de entre 6 y 30 caracteres, lo que determina un valor máximo de 2^(n-1), donde n es el valor máximo del carácter de una cuenta de Gmail, es decir, 536,870,912 comandos posibles; un valor suficiente para codificar todas las instrucciones de un malware u ocultar mensajes más complejos.


Recientemente, James Fisher publicó una interesante aproximación de esta técnica, que podría ser utilizada para Scam. Podéis leer el artículo completo aquí.

Esta técnica es habitualmente utilizada para crear múltiples cuentas en servicios de Internet, utilizando una única dirección de correo de Gmail, y aprovechando que en el registro en todos estos servicios no se comprueba si el email es "parecido" a uno ya registrado, simplemente suelen verificar si existe uno idéntico. De esta manera, pueden registrarse múltiples usuarios y todos los emails enviados por los proveedores de los servicios llegarán sin problemas a la cuenta de correo registrada de Gmail.

¡Saludos!