Native components for Android core
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
legacy_native
obfuscator
selinux_native
shared
.gitignore
README.txt
build.sh
clean_bak.sh

README.txt

***********################################*************
***********####### LEGACY_NATIVE ##########*************
***********################################*************

Contiene tutto il codice nativo per le versioni di Android senza SELinux (Android <= 4.1)

###### Contenuto ######

- suidext: contiene la shell standard (versione setuid)
- local2root: contiene tutti gli exploit local2root per le versioni di Android <= 4.1
- headers: include necessari per la compilazione



***********################################*************
***********####### SELINUX_NATIVE #########*************
***********################################*************

Contiene tutto il codice nativo per le ultime versioni di Android con SELinux attivo (Android >= 4.2.2)


###### Contenuto ######

- put_user_exploit: contiene l'exploit basato sulla put_user
- kernel_waiter_exploit: contiene l'exploit towelroot
- suidext: contiene la nuova shell demonizzata
- utils: librerie varie
- headers: include necessari per la compilazione
- remote_main: include i main per shared_library e remote

***********################################*************
***********####### SHARED ################*************
***********################################*************

Contiene codice utilizzato sia da 

###### Contenuto ######
- sqlite_stuff: Contiene alcune funzioni per effettuare query sqlite
- utils: librerie varie
- headers: header necessari alla compilazione. Contiene la configurazione dei log e della shell.

***********################################*************
***********####### CONFIGURAZIONE #########*************
***********################################*************

La configurazione della shell di root è descritta in shared/headers/shell_params.h . Questo file è comune ad entrambe le shell.

 - SHELL_PORT: porta su cui il servizio root andrà in ascolto e su cui la parte client si connetterà
 - ROOT_BIN: path d'installazione del binario che esegue il processo root. Attualmente /system/bin/ddf. 
   	     E' utilizzato sia come server al boot che come client per richiedere l'esecuzione di comandi.
 - INSTALL_SCRIPT: script di avvio al boot (wrapper a /system/bin/debuggerd)
 - INSTALL_SCRIPT_BAK: copia del binario da sostituire
 - INSTALL_REC_SCRIPT: script install-recovery.sh
 - INSTALL_REC_SCRIPT_BAK: backup di install-recovery.sh in caso lo su usi

Per avere i log a disposizione tramite logcat editare il file shared/headers/log.h commentando opportunamente "#define DEBUG".


***********################################*************
***********####### COMPILAZIONE #########*************
***********################################*************

Compilare con il comando "build.sh" e non direttamente tramite ndk-buid. Assicurarsi di avere come working directory la root del codice.
Il sistema di build genera in automatico gli exploit locali in tre versioni diverse: local, remote e shared library.

1) local: file necessari per eseguire gli exploit locali tramite l'apk.
2) remote: exploit da lanciare dalla sandbox del browser.
3) shared library: è la libreria che contiene la funzione per eseguire gli exploit da invocare tramite dlopen.

I corrispettivi file vengono creati in tre cartelle diverse:

1) bin/local: 

 - selinux_exploit: l'exploit basato su put_user
 - selinux4_exploit: l'exploit writeup di towelroot
 - selinux_suidext: la nuova shell che comprende sia il daemon, sia il client
 - selinux_check: esegue un check sull'exploitabilità del device. Restituisce 1 in caso di exploitabilità, 0 altrimenti.
 - runner: è il binario che lancia il demone di root. E' integrato direttamente in selinux_suidext.
 - suidext: shell suid vecchia per Android <= 4.1
 - expl_check: check di exploitabilità tramite exploit legacy
 - local_exploit: binario che lancia tutti gli exploit legacy disponibili

2) bin/local/Android5
 - selinux_suidext: la nuova shell compilata per Android 5

3) bin/remote
 - selinux_exploit: contiene in un unico binario i due exploit selinux e la shell di root.

4) bin/shared_lib
 - libexploit.so: shared library contenente i due exploit selinux e la shell di root.
 - libinstaller.so: shared library contenente il codice per l'installazione dell'apk  



***********################################*************
***********####### ESECUZIONE     #########*************
***********################################*************

###########################
##### 1) LOCAL EXPLOIT: ###
###########################

*** EXPLOIT SELINUX***

Deve essere lanciato passando due argomenti:

     - argv[1]: path assoluto alla nuova shell
     - argv[2]: path assoluto alla vecchia shell

L'exploit installerà automaticamente la shell vecchia se possibile o la shell nuova in base alle rilevazioni effettuate sul device.
Se l'exploit ha successo /system/bin/<shell> sarà presente ed utilizzabile in modo trasparente.

*** EXPLOIT SELINUX 4***

Deve essere lanciato passando un solo argomento

     - argv[1]: path assoluto alla nuova shell

Se l'exploit ha successo /system/bin/<shell> sarà presente ed utilizzabile in modo trasparente.


*** EXPLOIT LEGACY***

Deve essere lanciato passando una stringa come argomento che rappresenza il comando da eseguire.
NB: Alcuni exploit richiedono l'accesso a device video legati alla gesione della camera. 
    E' necessario che tali device siano accessibili in scrittura in base alla sandbox di esecuzione (privilegio CAMERA).

*** SHELL SELINUX***

Per avviare la shell in modalità daemon eseguire "selinux_suidext --daemon" oppure eseguire "selinux_suidext rt" (da root) che avvierà direttamente il demone effettuando un'installazione persistente.
Il client rispetta le specifiche della vecchia shell.

*** SHELL LEGACY***

Semplice file setuid.


############################
##### 2) REMOTE EXPLOIT: ###
############################

Va semplicemente lanciato passando come unico parametro l'apk da installare al termine dell'exploit. E' totalmente automatico.
L'exploit è asincrono di modo da non tenere il browser impegnato. Ritorna 1 se il device risulta vulnerabile e di conseguenza l'exploit viene almeno provato, 0 altrimenti.


####################################
##### 3) SHARED LIBRARY EXPLOIT: ###
####################################

-) libexploit.so: va risolto il simbolo checksum(void). La funzione esegue tutti gli exploit disponibili, sia legacy che selinux ed installa la shell di root adatta.
-) libinstaller.so: va risolto il simbolo checksum(void). La funzione esegue l'installazione dell'apk. L'installer richiede che l'apk sia nella stessa working direcory e che abbia il nome log.tmp. E' necessario aver precedentemente installato la shell di root.