
Kernel-Privilegieneskalations-Aufzählungs- und Exploitation-Framework
kernelpop ist ein Framework zur automatisierten Aufzählung und Ausnutzung von Kernel-Sicherheitslücken auf den folgenden Betriebssystemen:
Linux
Mac
Es ist so konzipiert, dass es python-versionsunabhängig ist, d. h. es sollte sowohl mit python2 als auch mit python3 funktionieren.

$ 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 installieren (Schritte variieren je nach Build-System)$ pyinstaller kernelpop.py --onefile$ cp dist/kernelpop .Beide Methoden zum Erstellen einer Binärdatei sollten eine Binärdatei kernelpop im Projektstammverzeichnis erstellen.
user@debian:~/Desktop/kernelpop$ python3 kernelpop.py
##########################
# willkommen bei kernelpop #
# #
# lass uns ein paar Kerne knallen #
##########################
[*] Ermittle Distributionsversion und Release des zugrunde liegenden Betriebssystems (linuxdebian7)
[*] Ermittle Kernelversion mit 'uname -a'
[+] Kernel (Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux) identifiziert als:
[base]
type: linux
distro: linuxdebian7
version: 3.2.0-4
architecture: i686
[specific]
type: linux
distro: linuxdebian7
version: 3.2.41-2
architecture: i686
[*] Vergleiche Kernel mit bekannten Exploits
[+] 11 mögliche Exploits gefunden!
[[ distro kernel matched exploit available ]]
CVE20165195_32 Dirty COW race condition root priv esc für 32 Bit
[[ distro kernel version vulnerable ]]
CVE20144699 Ausnutzbare Race Condition in Linux vor 3.15.4
CVE20143153 `futex_requeue`-Schwachstelle vor 3.14.6 ermöglicht Privilegieneskalation
CVE20162384 Double-Free-Schwachstelle in `snd_usbmidi_create` (erfordert physische Nähe)
CVE20140196 `n_tty_write`-Schwachstelle vor 3.14.4 ermöglicht Privilegieneskalation zu root
CVE20132094_semtex perf_swevent_init Lokaler Root-Exploit (32 Bit)
CVE20176074 `dccp_rcv_state_process` in net/dccp/input.c behandelt Strukturen falsch und kann zu lokalem Root führen
CVE20132094_32 perf_swevent_init Lokaler Root-Exploit (32 Bit)
[[ base linux kernel vulnerable ]]
CVE20144014 Umgehung der `chmod`-Beschränkung erlaubt Benutzern, vor 3.14.8 root zu werden
CVE20177308 `packet_set_ring` in net/packet/af_packet.c kann durch manipulierte Systemaufrufe Privilegien gewähren.
CVE20171000112 ip_ufo_append_data()-Speicherkorruptionsfehler kann ausgenutzt werden, um Root-Rechte zu erlangen.
In der Ausgabe gibt es einige Kategorien. Folgendes bedeutet jede:
[[ distro kernel matched exploit available ]]
[[ distro kernel version vulnerable ]]
[[ base linux kernel vulnerable ]]
python2 oder python3
pyinstaller (falls du eine Binärdatei erstellen möchtest)
Ausführungsmodi:
(Standard) python3 kernelpop.py
(Exploit-Modus) python3 kernelpop.py -e {Exploit-Name}
(Quellcode ausgeben) python3 kernelpop.py -e {Exploit-Name} -d
(uname-Modus) python3 kernelpop.py -u {uname -a Ausgabe}
(Interaktiver Modus) python3 kernelpop.py -i # VERALTETE Option (identisch mit uname-Modus)
Sonstiges:
(Playground-Pfad) -p {neuer Pfad}
(JSON-Ausgabedatei) --digest json
Der Standardmodus verarbeitet Informationen über den Host-Kernel und vergleicht sie mit den dem Programm bekannten Kernel-Exploits.
Anschließend wird eine Liste potenziell nützlicher Sicherheitslücken und zugehöriger Exploits ausgegeben.
-e {Exploit-Name}
Der Exploit-Modus kompiliert und führt den Exploit-Quellcode dynamisch mit stdio-Interaktionen innerhalb des Programms aus.
Er kann auch Unterbrechungen durch kurzzeitig gestoppte Versuche abfangen. Verwende den Namen des Exploits, der im
ersten kernelpop-Aufzählungslauf im Standardmodus angezeigt wird.
Quellcode ausgeben (Option) -d
Exploit-Modus. Er gibt die Quelldateien für den angegebenen Exploit in die entsprechenden
Dateien im PLAYGROUND_PATH (Standard /tmp) aus. Dies ist nützlich, um den Exploit-Quellcode auf einer Box zu modifizieren oder
mit Exploits zu arbeiten, die manuelle Interaktion oder das Festcodieren von Werten erfordern. Besonders nützlich ist es, wenn
du von einer Binärdatei aus arbeitest, da du dann keinen Zugriff auf den Projektquellcode (d. h. den Exploit-Quellcode) hast.-u {uname -a Ausgabe}
Mit dieser Option kannst du die Ausgabe eines uname -a-Befehls inline an das Programm übergeben, was es für die
Integration in automatisierte Skripte oder aus anderen denkbaren Gründen verwendbar macht. Ersatz für den Interaktiven Modus.
uname-Ausgabe erforderlich]-i {uname -a Ausgabe}
Der Interaktive Modus ermöglicht es dir, eine Aufzählung nur mit der Ausgabe eines uname -a-Befehls durchzuführen,
was ihn als reines Host-seitiges Aufzählungswerkzeug nützlich macht. Dies wird durch Starten von kernelpop mit dem Flag -i
und anschließender Eingabe der Ausgabe von uname -a auf Aufforderung ausgeführt. Dies ist eine veraltete Funktion und wurde durch den uname-Modus ersetzt, wird aber weiterhin unterstützt, da -u die Mac-Aufzählung nicht unterstützt.
PLAYGROUND-Pfad-p {neuer PLAYGROUND_PATH-Ordner}
Die -p-Option setzt den Wert der globalen Variable PLAYGROUND_PATH. Dies ist der Speicherort, an den alle Exploit-Quell-
dateien geschrieben und Exploits kompiliert werden. Standardmäßig ist dies auf /tmp gesetzt. Du kannst ihn jedoch mit diesem Modifikator auf ein beliebiges Verzeichnis setzen, falls du keine Schreibrechte in /tmp hast.
--digest json
Diese Option ermöglicht es dir, die Ergebnisse eines kernelpop-Laufs für die spätere Verarbeitung in eine JSON-Datei zu speichern. Bisher
habe ich nur den json-Dump implementiert, aber ich werde an einer XML-Version arbeiten, falls dies gewünscht wird.
füge weitere Exploits hinzu! (src/to_add – falls jemand Lust hat, sich ein paar davon vorzunehmen, nur zu!)
füge Patch-Level in die Vergleiche der anfälligen Fenster ein
füge eine Möglichkeit hinzu, erkannte Einstellungen bei fehlerhafter Analyse oder widrigen Einstellungen zu überschreiben
google: CVE-XXXX-XXXX "ubuntu"
klicke den Canonical-Link (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)
klicke alle verlinkten Advisories auf usn.ubuntu.com und parse die Informationen
hole die Patch-Versionen zum Ausfüllen der Sicherheitslücken-Fenster pro Version
google: CVE-XXXX-XXXX "debian"
security-tracker.debian.org Link (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