miércoles, enero 18, 2017

Cómo buscar exploits automáticamente para elevar privilegios en GNU/Linux #Linux #Pentesting

La automatización es uno de los procesos más necesarios en muchas de las tareas técnicas, y en el mundo del pentesting no es, por supuesto, un tema menor. En otras ocasiones hemos comentado cómo automatizar el uso de los payloads en un proyecto de Ethical Hacking a través de herramientas como WinPayloads, cómo se pueden automatizar los ataques de Pharming con dispositivos de red o cómo generar un proceso automatizado para la búsqueda de vulnerabilidades en repositorios de código fuente a través de la detección de funciones potencialmente vulnerables.

Figura 1: Cómo buscar exploits automáticamente para elevar privilegios en GNU/Linux

Es muy común, en el día a día, buscar la posibilidad de llevar a cabo la automatización de cualquier tarea de gran tamaño, pesada o que se repite con frecuencia y, como he comentado anteriormente, en el pentesting o en las investigación de seguridad, es algo que hacemos con regularidad, e incluso en ElevenPaths tenemos automatizada la mayor parte de las pruebas de seguridad que hacemos en los servicios de Pentesting Persistente que damos con Faast y Vamps, que luego un auditor de seguridad gestiona.

Figura 2: Panel de control de evolución de vulnerabilidades en Faast

Debe ser el auditor o el pentester el que aporte inteligencia y rigor a la hora de tomar decisiones, de interpretar resultados, de confirmar lo que una herramienta sugiere o afirma. El auditor debe controlar en todo momento el proceso que lleva a cabo, apoyándose en las herramientas automáticas solo para mejorar el alcance y posibilidades reales. Aún así, hay muchas tareas en los procesos de pentesting que si no se automatizan, hacen que sea infinita o, en su defecto, insuficiente, las jornadas de trabajo de un profesional para mantener de forma actualizada un foto de la seguridad de un sistema.

Figura 3: Conferencia sobre la búsqueda de vulnerabilidades en repositorios de código

En el artículo de hoy, hablaré de una herramienta interesante como es AutoLocalPrivilegeEscalation. Esta herramienta, disponible en un script de bash o en un script de Python, que proporciona al auditor la posibilidad de buscar en un repositorio de exploits, como es exploit-db, aquellos que pueden tener potencial para aprovecharse de vulnerabilidades que provoquen la escalada de privilegios en sistemas más o menos fortificados de GNU/Linux.

Figura 4: AutoLocalPrivilegeEscalation en GitHub

AutoLocalPrivilegeEscalation utiliza por debajo la herramienta searchsploit, disponible en Kali Linux 2. Searchsploit permite realizar búsquedas de exploits sobre la base de datos en local de exploit-db, es decir, si nos fijamos, en Kali Linux se tiene almacenado en la ruta /usr/share/exploit-db todos los exploits disponibles en la web, cada uno escrito en el lenguaje original en el que fue escrito.

Por ejemplo, la mayoría de los exploits locales para Linux estarán escritos en Lenguaje C muy común en los amantes del Linux Exploiting, pero si echamos un ojo también encontraremos algunos escritos en Ruby. Estos escritos en Ruby realmente son módulos escritos para Metasploit con el objeto de aprovecharse de las funciones de las sesiones remotas y escalada de privilegios.

Instalando AutoLocalPrivilegeEscalation

Para obtener esta herramienta de automatización podemos utilizar git clone para descargarlo en nuestro sistema Kali Linux 2. No requiere instalación, solamente tenemos que descargarlo y podemos ejecutar tanto el script en bash auto_priv_exploit.sh y el script en Python auto_searchsploit.py.

Figura 5: Instalación de AutoLocalPrivilegeEscalation

Una vez descargado tenemos disponible la herramienta, cuyo uso es prácticamente trivial. De todos modos, se puede consultar la ayuda en el sitio de Github de la propia herramienta. Hay que tener en cuenta que searchsploit debería estar lo más actualizado posible.

Buscando los exploits potencialmente válidos

La herramienta tiene un parámetro de entrada que es la versión del kernel del que se quiere encontrar un exploit potencialmente válido. Para mirar la versión del kernel, se puede ejecutar en una consola de Linux el comando uname -a o uname -r.

Figura 6: Búsqueda de exploits. Se necesita la versión del kernel

Para realizar búsquedas, simplemente se debe ejecutar el script con el parámetro de la versión del kernel de Linux sobre el que queremos obtener exploits potenciales. Como se puede ver en la imagen, tras indicar una versión del kernel, se obtiene un listado de exploits, la mayoría en Lenguaje C. Es importante mantener actualizada la base de datos de exploit-db, y por ello se recomienda actualizar searchsploit.

Figura 7: Lista de posibles exploits para la versión del kernel 2.6

Lógicamente, esto nos ofrece una ayuda a la hora de buscar los exploits adecuados, pero al final debemos mirar la información adecuada para cada caso. En el caso de DirtyCow, la cual ya la hemos visto en este blog, es sencillo. Con el uso de la herramienta AutoLocalPrivilegeEscalation nos sale la posibilidad y llevamos a cabo la compilación.

Figura 8: Ejecución de DirtyCow para elevar privilegios

Además, hay que tener en cuenta que AutoLocalPrivilegeEscalation proporciona la posibilidad de obtener los exploits para dicha versión del kernel y nos preguntará si queremos llevar a cabo la compilación.


Figura 9: Demostración de DirtyCow


En definitiva, como vimos en su día con herramientas como Exploit Suggester para buscar exploits para MS Windows, la automatización o simplificación de procesos puede ayudar. Esta herramienta nos permite optimizar o automatizar el uso de searchsploit y la búsqueda de exploits. Sin duda, otra herramienta que debemos tener a mano en la mochila en un pentesting ante la posibilidad de tener una shell en Linux y no disponer de una shell como root.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

3 comentarios:

GIE dijo...

Gracias Pablo.

Anónimo dijo...

no se x la gente sigue pensando q linux es más seguro cuando ya existen tantas pruebas en contra que hoy dia ya es mejor usar un Windows 10 totalmente actualizado.

Unknown dijo...

Depende de que distribución de linux.

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares