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.

No hay comentarios:

Publicar un comentario