forked from hackedteam/core-android-native
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME.txt
More file actions
152 lines (99 loc) · 6.53 KB
/
README.txt
File metadata and controls
152 lines (99 loc) · 6.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
***********################################*************
***********####### 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.