
framework d'énumération et d'exploitation d'escalade de privilèges du noyau
kernelpop est un framework permettant l'énumération et l'exploitation automatisées des vulnérabilités du noyau sur les systèmes d'exploitation suivants :
Linux
Mac
Il est conçu pour être indépendant de la version de python, ce qui signifie qu'il devrait fonctionner aussi bien avec python2 qu'avec 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 (les étapes varient selon le système de construction)$ pyinstaller kernelpop.py --onefile$ cp dist/kernelpop .Les deux étapes de construction du binaire devraient créer un binaire kernelpop à la racine du projet.
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.
Dans la sortie, il y a plusieurs catégories. Voici ce que chacune signifie :
[[ exploit disponible correspondant au noyau de la distribution ]]
[[ version du noyau de la distribution vulnérable ]]
[[ noyau Linux de base vulnérable ]]
python2 ou python3
pyinstaller (si vous voulez construire un binaire)
modes d'exécution :
(par défaut) python3 kernelpop.py
(mode exploit) python3 kernelpop.py -e {nom de l'exploit}
(dump-source) python3 kernelpop.py -e {nom de l'exploit} -d
(mode uname) python3 kernelpop.py -u {sortie de uname -a}
(mode interactif) python3 kernelpop.py -i # OPTION ANCIENNE (identique au mode uname)
autres :
(chemin playground) -p {nouveau chemin}
(fichier de sortie json) --digest json
Le mode par défaut traite les informations sur le noyau hôte et les compare aux exploits de noyau connus disponibles dans le programme. Il produit ensuite une liste de vulnérabilités potentiellement utiles et des exploits attachés.
-e {nom de l'exploit}
Le mode exploit compile et exécute dynamiquement le code source de l'exploit avec des interactions stdio à l'intérieur du programme. Il peut également intercepter les interruptions des tentatives avortées. Utilisez le nom de l'exploit qui apparaît lors de l'exécution initiale d'énumération kernelpop en mode par défaut.
dump-source (option) -d
exploit. Il écrit les fichiers sources de l'exploit donné dans leurs fichiers respectifs dans PLAYGROUND_PATH (par défaut /tmp). Cela est utile pour modifier le code source de l'exploit sur une machine ou pour travailler avec des exploits nécessitant une interaction manuelle ou le codage en dur de valeurs. C'est particulièrement utile lors de l'exécution à partir d'un binaire, car vous n'avez pas accès au code source du projet (c'est-à-dire le code source de l'exploit).-u {sortie de uname -a}
Cette option vous permet de passer la sortie d'une commande uname -a au programme en ligne, ce qui le rend utilisable pour l'intégration dans des scripts automatisés ou pour toute autre raison envisageable. Remplace le mode interactif.
uname]-i {sortie de uname -a}
Le mode interactif vous permet d'effectuer une énumération avec uniquement la sortie d'une commande uname -a, ce qui le rend utile comme outil d'énumération côté hôte uniquement. Il s'exécute en lançant kernelpop avec le drapeau -i, puis en passant la sortie de uname -a lorsqu'elle est demandée. Il s'agit d'une fonctionnalité ancienne remplacée par le mode uname, mais elle reste prise en charge car -u ne prend pas en charge l'énumération Mac.
PLAYGROUND-p {nouveau répertoire PLAYGROUND_PATH}
L'option -p définit la valeur de la variable globale PLAYGROUND_PATH. C'est l'emplacement où tous les fichiers sources des exploits sont écrits et où les exploits sont compilés. Par défaut, il est défini sur /tmp. Cependant, vous pouvez le définir sur n'importe quel répertoire avec ce modificateur si vous n'avez pas de droits d'écriture dans /tmp.
--digest json
Cette option vous permet de vider les résultats d'une exécution de kernelpop dans un fichier json digeste pour un traitement ultérieur. Pour l'instant, je n'ai implémenté que le vidage json, mais je travaillerai sur une version XML si elle est demandée.
ajouter plus d'exploits ! (src/to_add si quelqu'un veut se lancer dans quelques-uns, je vous en prie !)
inclure les niveaux de correctifs dans les comparaisons de fenêtres vulnérables
ajouter un moyen de remplacer les paramètres détectés en cas d'analyse incorrecte ou de paramètres adverses
google : CVE-XXXX-XXXX "ubuntu"
cliquer sur le lien canonique (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)
cliquer sur tous les avis liés sur usn.ubuntu.com et analyser les informations
récupérer les versions corrigées pour remplir les fenêtres de vulnérabilité par version
google : CVE-XXXX-XXXX "debian"
lien 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