
framework di enumerazione e sfruttamento dell'escalation dei privilegi del kernel
kernelpop è un framework per eseguire enumerazione e sfruttamento automatizzato delle vulnerabilità del kernel sui seguenti sistemi operativi:
Linux
Mac
È progettato per essere indipendente dalla versione di python, il che significa che dovrebbe funzionare sia con python2 che 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 (i passaggi variano a seconda del sistema di build)$ pyinstaller kernelpop.py --onefile$ cp dist/kernelpop .entrambi i passaggi per la creazione del binario dovrebbero creare un binario kernelpop nella radice del progetto.
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.
Nell'output ci sono alcune categorie. Ecco cosa significa ciascuna
[[ distro kernel matched exploit available ]]
[[ distro kernel version vulnerable ]]
[[ base linux kernel vulnerable ]]
python2 o python3
pyinstaller (se vuoi creare 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
La modalità default elabora le informazioni sul kernel host e le confronta con gli exploit del kernel noti disponibili per il programma. Quindi restituisce un elenco di potenziali vulnerabilità utili e relativi exploit.
-e {exploit name}
La modalità exploit compila ed esegue dinamicamente il codice sorgente dell'exploit con interazioni stdio all'interno del programma. Può anche intercettare gli interrupt da tentativi interrotti prematuramente. Usa il nome dell'exploit che appare nell'esecuzione iniziale di enumerazione di kernelpop in modalità default.
dump-source (opzione) -d
exploit. Scarica i file sorgente per l'exploit specificato nei rispettivi file in PLAYGROUND_PATH (predefinito /tmp). È utile per modificare il sorgente dell'exploit su una macchina o per lavorare con exploit che richiedono interazione manuale o hard-coding di valori. È particolarmente utile quando si esegue da un binario, perché non avrai accesso al codice sorgente del progetto (cioè il sorgente dell'exploit).-u {uname -a output}
Questa opzione consente di passare l'output di un comando uname -a al programma inline, rendendolo utilizzabile per l'integrazione in script automatizzati o per qualsiasi altro motivo prevedibile. Sostituisce la modalità interattiva.
uname]-i {uname -a output}
La modalità interactive consente di eseguire l'enumerazione solo con l'output di un comando uname -a, rendendolo utile come strumento di enumerazione solo lato host. Viene eseguita avviando kernelpop con il flag -i e poi passando l'output di uname -a quando richiesto. Questa è una funzionalità legacy e sostituita dalla modalità uname, ma rimane supportata poiché -u non supporta l'enumerazione su Mac.
PLAYGROUND-p {new PLAYGROUND_PATH dir}
L'opzione -p imposta il valore della variabile globale PLAYGROUND_PATH. Questa è la posizione in cui vengono scritti tutti i file sorgente degli exploit e compilati gli exploit. Di default è impostata su /tmp. Tuttavia, puoi impostarla su qualsiasi directory con questo modificatore nel caso non abbia accesso in scrittura su /tmp.
--digest json
Questa opzione consente di scaricare i risultati di un'esecuzione di kernelpop in un file json elaborabile per un'elaborazione successiva. Finora ho implementato solo il dump json, ma lavorerò su una versione XML se richiesto.
aggiungere più exploit! (src/to_add se qualcuno vuole cimentarsi con alcuni di questi, si accomodi!)
includere i livelli di patch nei confronti delle finestre di vulnerabilità
aggiungere un modo per sovrascrivere le impostazioni rilevate in caso di parsing errato o impostazioni avversarie
cercare su Google: CVE-XXXX-XXXX "ubuntu"
cliccare sul link canonical (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)
cliccare su tutti gli advisory collegati su usn.ubuntu.com e analizzare le informazioni
ottenere le versioni delle patch per riempire le finestre di vulnerabilità per versione
cercare su Google: CVE-XXXX-XXXX "debian"
security-tracker.debian.org link (https://security-tracker.debian.org/tracker/CVE-XXXX-XXXX)
cercare su 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