El kernel al ser el núcleo de cualquier sistema operativo, y la capa entre el hardware y software. Una explotación de este, deriva en que todo es ejecutado por el usuario SYSTEM
(el usuario con mayor privilegios de todos en sistemas Windows).
El proceso para encontrar vulnerabilidades de kernel y explotarlas es aproximadamente el siguiente:
- Enumeramos la versión y parches de Windows –>
systeminfo
- Buscamos exploits asociados a esa versión o parches
- Compilamos y ejecutamos –> No hace falta compilar si nos descargamos ya un exploit compilado
Hay que tener cuidado con los exploits de kernel, ya que suelen ser inestables, de un solo uso o que cause un crasheo del sistema. Por eso esta debe ser una de las últimas opciones para escalar privilegios.
Hay distintas herramientas que nos pueden ayudar a identificar este tipo de vulnerabilidades:
- Windows Exploit Suggester Next Generation
- Watson
- En metasploit: windows/gather/enum_patches
- Internet
Una vez enumerado que tipos de parches faltan o que vulnerabilidad afectan, podemos hacer uso de SecWiki, es un recurso que contiene una gran cantidad de exploits de kernel ya compilados.
Dicho esto, vamos con un caso práctico usando «Windows Exploit Suggester Next Generation»:
Lo primero de todo es obtener el systeminfo
, esto incluye pasarlo a nuestra máquina Kali. Esta parte es sencilla, ya que lo podemos hacer en un solo paso. En nuestro Linux (en mi caso, kali) nos ejecutamos un servidor samba:

El argumento pwned
es el nombre del recurso compartido, y el segundo argumento $(pwd)
es la forma en la que le indicamos la ruta donde se ejecutará el servidor, en este caso, la ruta actual (también podríamos indicarlo con solo un punto).
Teniendo el servidor montado, nos dirigimos al Windows y simplemente redirigimos la salida del comando a nuestro servidor y recurso compartido:

Podemos confirmar que ha habido conexión si nos dirigimos al kali:

De esta forma, ya tenemos la salida del systeminfo
:


Teniendo esto, vamos a hacer uso del «WESNG», lo primero es actualizar la base de datos de este. Es muy sencillo, simplemente lanzamos el siguiente comando:

Con esto, habrá actualizado el listado de CVEs.
El comando más básico de todos simplemente sería especificarle el archivo systeminfo
:

Su salida es demasiado grande como para mostrarlo

Pero no pasa nada, vamos a usar algunos argumentos para solo ver lo que nos interesa. La estructura que sigue WESNG para mostrar cada CVE al cual puede ser vulnerable la máquina Windows, es la siguiente:

El campo que nos interesa es el Impact
. Podemos ver los posibles valores de Impact
usando grep
y sort
:

De esta forma, si nos fijamos, hay un valor de este campo que puede que sea por el que nos interese filtrar. Estoy hablando de «Elevation of Privilege», ya que es lo que queremos conseguir.
Sabiendo esto, podemos especificar a «WESNG» que solo nos muestre los CVE cuyo impacto sea una elevación de privilegios:

De esta forma, acabamos de pasar de 31883 líneas a:

Que siguen siendo muchas, pero ahora es trabajo nuestro encontrar el exploit a usar. Existe otro filtrado que quizás nos interese, ya que «WESNG» muestra algunos CVE sin «Exploits» (que OJO, no quiere decir que no haya, sino que al menos, no tiene ninguno asociado):

Si no nos interesa ver los CVEs los cuales no tengan ningún exploit asociado, podemos filtrar la búsqueda añadiendo el argumento --exploits-only
:

Si vemos ahora el número de líneas, hemos bajado mucho más:

Hasta aquí posibles filtrados que nos puede interesar a la hora de buscar CVEs en «WESNG». Aun así, la herramienta tiene un panel de ayuda bastante completo y con muchas más opciones.
Llegados a este punto, ya dependerá de nosotros el exploit a escoger, con la experiencia habrá CVEs que nos suenen y vayamos al grano a probar esos según el sistema operativo. Esto ya se consigue con el tiempo y el esfuerzo.
En mi caso, voy a usar el «CVE-2019-1458», que ojo, el Windows 7 es vulnerable, y podemos encontrar exploits, sin embargo, «WESNG» indica que no tiene ninguno asociado, por lo que si hubiésemos usado el argumento --exploits-only
, lo hubiese descartado, a pesar de ser vulnerable:

Habiendo localizado el CVE, vamos a dirigirnos a SecWiki para ver si tiene el exploit compilado:


En este caso, SecWiki, no tiene ningún exploit en el repositorio. Sin embargo, en el README.md nos indica otro repositorio el cual si contiene un exploit para este CVE:

Es típico que en los repositorios de exploits de escalación de privilegios se nos haga un PoC (Proof of Concept) del exploit:

En este caso, vemos dos cosas:
- El exploit solo se puede ejecutar una vez por cada inicio del sistema (esto nos puede indicar la inestabilidad resultante del exploit en el sistema).
- El exploit sigue la estructura de:
cve-2019-1458.exe <comando a ejecutar>
Sabiendo esto y teniendo descargado el binario del exploit en el Windows 7:

Vamos a escalar privilegios.
Establecemos un servidor samba en nuestro kali, además de ponernos en escucha:

Nota: el directorio donde nos encontramos ejecutando el servidor samba, contiene el binario «nc.exe» (netcat para Windows)
Ahora, volvemos al Windows 7, y ejecutaremos el siguiente comando usando el exploit:

De esta forma, volviendo al kali:

Conseguimos shell como «nt authority\system».
En el repositorio se nos indicaba que solo era un exploit de un solo uso por cada inicio, podemos confirmarlo:

Es tal la inestabilidad de en este caso, este exploit (y en general, de los exploits que se aprovechan del kernel), que cuando apagamos la máquina nos sale lo siguiente:

Esto no pasa claramente con todos los exploits, pero sí que podemos observar la delicadeza de lidiar con el kernel.
Retomando las herramientas mencionadas al principio:
- Windows Exploit Suggester Next Generation
- Watson
- En metasploit: windows/gather/enum_patches
- Internet
Podemos usar la que más nos guste, Watson por ejemplo en este caso no nos da nada:

El módulo de metasploit también nos ayuda en esta tarea:

En este caso no nos da ningún output significativo. Si detectase alguna posible vulnerabilidad nos lo indicaría de la siguiente forma:

Por último, pero no menos importante, otra herramienta a tener en cuenta es el propio internet.
Cuando ejecutamos systeminfo
obtenemos la suficiente información como para buscar en Google alguna vulnerabilidad que afecte al Sistema Operativo y a la Versión:

De esta forma, aunque nos podamos ayudar de distintas herramientas, al final el trabajo manual y la propia investigación será lo que resulte en una escalada de privilegios exitosa.
Recommended Comments