
marco de enumeración y explotación de escalada de privilegios del kernel
kernelpop es un marco de trabajo para realizar enumeración y explotación automatizada de vulnerabilidades del kernel en los siguientes sistemas operativos:
Linux
Mac
Está diseñado para ser python-agnóstico en cuanto a versión, lo que significa que debería funcionar tanto con python2 como con python3

$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ python kernelpop.py || python3 kernelpop.py
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ ./create_executable.sh
$ ./kernelpop
pyinstaller (los pasos varían según el sistema de compilación)$ pyinstaller kernelpop.py --onefile$ cp dist/kernelpop .ambos pasos de construcción del binario deberían crear un binario kernelpop en la raíz del proyecto.
user@debian:~/Desktop/kernelpop$ python3 kernelpop.py
##########################
# welcome to kernelpop #
# #
# let's pop some kernels #
##########################
[*] grabbing distro version and release from underlying OS (linuxdebian7)
[*] grabbing kernel version from 'uname -a'
[+] kernel (Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux) identified as:
[base]
type: linux
distro: linuxdebian7
version: 3.2.0-4
architecture: i686
[specific]
type: linux
distro: linuxdebian7
version: 3.2.41-2
architecture: i686
[*] matching kernel to known exploits
[+] discovered 11 possible exploits !
[[ distro kernel matched exploit available ]]
CVE20165195_32 Dirty COW race condition root priv esc for 32 bit
[[ distro kernel version vulnerable ]]
CVE20144699 Exploitable race condition in linux before 3.15.4
CVE20143153 `futex_requeue` vulnerability before 3.14.6 allows for priv esc
CVE20162384 Double free vulnerability in the `snd_usbmidi_create` (requires physical proximity)
CVE20140196 `n_tty_write` vuln before 3.14.4 allows priv esc to root
CVE20132094_semtex perf_swevent_init Local root exploit (32 bit)
CVE20176074 `dccp_rcv_state_process` in net/dccp/input.c mishandles structs and can lead to local root
CVE20132094_32 perf_swevent_init Local root exploit (32 bit)
[[ base linux kernel vulnerable ]]
CVE20144014 `chmod` restriction bypass allows users to get root before 3.14.8
CVE20177308 `packet_set_ring` in net/packet/af_packet.c can gain privileges via crafted system calls.
CVE20171000112 ip_ufo_append_data() memory corruption flaw can be exploited to gain root privileges.
En la salida, hay algunas categorías. Esto es lo que significa cada una
[[ distro kernel matched exploit available ]]
[[ distro kernel version vulnerable ]]
[[ base linux kernel vulnerable ]]
python2 o python3
pyinstaller (si quieres construir un binario)
run modes:
(default) python3 kernelpop.py
(exploit-mode) python3 kernelpop.py -e {exploit name}
(dump-source) python3 kernelpop.py -e {exploit name} -d
(uname-mode) python3 kernelpop.py -u {uname -a output}
(interactive-mode) python3 kernelpop.py -i # LEGACY option (same as uname-mode)
other:
(playground path) -p {new path}
(json output file) --digest json
El modo default procesa información sobre el kernel del host y lo compara con los exploits de kernel conocidos disponibles para el programa. Luego genera una lista de vulnerabilidades potencialmente útiles y exploits adjuntos.
-e {exploit name}
El modo exploit compila y ejecuta dinámicamente el código fuente del exploit con interacciones stdio dentro del programa. También puede capturar interrupciones de intentos detenidos prematuramente. Usa el nombre del exploit que aparece en la ejecución inicial de enumeración de kernelpop en el modo default.
dump-source (opción) -d
exploit. Vuelca los archivos fuente del exploit dado a sus respectivos archivos en PLAYGROUND_PATH (por defecto /tmp). Esto es útil para modificar el código fuente del exploit en una máquina o para trabajar con exploits que requieren interacción manual o codificación fija de valores. Es especialmente útil cuando se ejecuta desde un binario, porque no tendrás acceso al código fuente del proyecto (es decir, el código fuente del exploit).-u {uname -a output}
Esta opción te permite pasar la salida de un comando uname -a al programa en línea, lo que lo hace utilizable para integración en scripts automatizados o por cualquier otra razón previsible. Reemplaza al modo interactivo.
uname]-i {uname -a output}
El modo interactive te permite realizar enumeración solo con la salida de un comando uname -a, lo que lo hace útil como una herramienta de enumeración solo del lado del host. Se ejecuta iniciando kernelpop con la bandera -i y luego pasando la salida de uname -a cuando se solicite. Esta es una característica heredada y reemplazada por el modo uname, pero sigue siendo compatible ya que -u no soporta la enumeración en Mac.
PLAYGROUND-p {new PLAYGROUND_PATH dir}
La opción -p establece el valor de la variable global PLAYGROUND_PATH. Esta es la ubicación donde se escriben todos los archivos fuente de exploits, y donde se compilan los exploits. Por defecto, está establecida en /tmp. Sin embargo, puedes configurarla en cualquier directorio con este modificador en caso de que no tengas permisos de escritura en /tmp.
--digest json
Esta opción te permite volcar los resultados de una ejecución de kernelpop a un archivo json digerible para su procesamiento posterior. Hasta ahora, solo he implementado el volcado json, pero trabajaré en una versión XML si se solicita.
añadir más exploits! (src/to_add si alguien quiere ponerse manos a la obra con algunos de estos, ¡adelante!)
incluir niveles de parche en las comparaciones de ventanas vulnerables
agregar forma de anular configuraciones detectadas en caso de análisis incorrecto o configuraciones adversarias
google: CVE-XXXX-XXXX "ubuntu"
hacer clic en el enlace canónico (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)
hacer clic en todos los avisos vinculados en usn.ubuntu.com y analizar la información
obtener las versiones de parche para completar las ventanas de vulnerabilidad por versión
google: CVE-XXXX-XXXX "debian"
enlace de security-tracker.debian.org (https://security-tracker.debian.org/tracker/CVE-XXXX-XXXX)
google: CVE-XXXX-XXXX "mitre"
CVE-2017-1000379
CVE-2017-1000373
CVE-2017-1000372
CVE-2017-1000371
CVE-2017-1000370
CVE-2017-1000367
CVE-2017-1000112
CVE-2017-7308
CVE-2017-6074
CVE-2017-5123
CVE-2016-5195
CVE-2016-2384
CVE-2016-0728
https://github.com/SecWiki/linux-kernel-exploits
http://exploit-db.com/
https://github.com/lucyoa/kernel-exploits
https://github.com/SecWiki/windows-kernel-exploits
Debian
CVE-2015-1328
CVE-2014-4699
CVE-2014-4014
CVE-2014-3153
CVE-2014-0196
CVE-2014-0038
CVE-2013-2094
CVE-2010-4347
CVE-2010-2959
CVE-2009-1185