mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 16:10:54 +00:00
108 lines
7.7 KiB
Markdown
108 lines
7.7 KiB
Markdown
# Sfruttare un'applicazione debuggable
|
||
|
||
{% hint style="success" %}
|
||
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Supporta HackTricks</summary>
|
||
|
||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
# **Superare i controlli di root e debuggable**
|
||
|
||
Questa sezione del post è un riassunto del post [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
|
||
|
||
## Passi per rendere un'app Android debuggable e superare i controlli
|
||
|
||
### **Rendere l'app debuggable**
|
||
|
||
Contenuto basato su https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
|
||
|
||
1. **Decompila l'APK:**
|
||
- Utilizza lo strumento APK-GUI per decompilare l'APK.
|
||
- Nel file _android-manifest_, inserisci `android:debuggable=true` per abilitare la modalità di debug.
|
||
- Ricompila, firma e zipaligna l'applicazione modificata.
|
||
|
||
2. **Installa l'applicazione modificata:**
|
||
- Usa il comando: `adb install <application_name>`.
|
||
|
||
3. **Recupera il nome del pacchetto:**
|
||
- Esegui `adb shell pm list packages –3` per elencare le applicazioni di terze parti e trovare il nome del pacchetto.
|
||
|
||
4. **Imposta l'app per attendere la connessione del debugger:**
|
||
- Comando: `adb shell am setup-debug-app –w <package_name>`.
|
||
- **Nota:** Questo comando deve essere eseguito ogni volta prima di avviare l'applicazione per garantire che attenda il debugger.
|
||
- Per persistenza, usa `adb shell am setup-debug-app –w -–persistent <package_name>`.
|
||
- Per rimuovere tutti i flag, usa `adb shell am clear-debug-app <package_name>`.
|
||
|
||
5. **Preparati per il debug in Android Studio:**
|
||
- Naviga in Android Studio su _File -> Open Profile or APK_.
|
||
- Apri l'APK ricompilato.
|
||
|
||
6. **Imposta i breakpoint nei file Java chiave:**
|
||
- Posiziona i breakpoint in `MainActivity.java` (specificamente nel metodo `onCreate`), `b.java` e `ContextWrapper.java`.
|
||
|
||
### **Superare i controlli**
|
||
|
||
L'applicazione, in determinati punti, verificherà se è debuggable e controllerà anche i binari che indicano un dispositivo rootato. Il debugger può essere utilizzato per modificare le informazioni dell'app, disattivare il bit debuggable e alterare i nomi dei binari cercati per superare questi controlli.
|
||
|
||
Per il controllo debuggable:
|
||
|
||
1. **Modifica le impostazioni dei flag:**
|
||
- Nella sezione variabili della console del debugger, naviga a: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
|
||
- **Nota:** La rappresentazione binaria di `flags = 814267974` è `11000011100111011110`, indicando che il "Flag_debuggable" è attivo.
|
||
|
||
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
|
||
|
||
Questi passaggi garantiscono collettivamente che l'applicazione possa essere debuggata e che alcuni controlli di sicurezza possano essere superati utilizzando il debugger, facilitando un'analisi o modifica più approfondita del comportamento dell'applicazione.
|
||
|
||
Il passo 2 comporta la modifica di un valore di flag a 814267972, che è rappresentato in binario come 110000101101000000100010100.
|
||
|
||
# **Sfruttare una vulnerabilità**
|
||
|
||
È stata fornita una dimostrazione utilizzando un'app vulnerabile contenente un pulsante e un textview. Inizialmente, l'applicazione visualizza "Crack Me". L'obiettivo è modificare il messaggio da "Try Again" a "Hacked" durante l'esecuzione, senza modificare il codice sorgente.
|
||
|
||
## **Controllo della vulnerabilità**
|
||
- L'applicazione è stata decompilata utilizzando `apktool` per accedere al file `AndroidManifest.xml`.
|
||
- La presenza di `android_debuggable="true"` nel AndroidManifest.xml indica che l'applicazione è debuggable e suscettibile a sfruttamento.
|
||
- Vale la pena notare che `apktool` è impiegato esclusivamente per controllare lo stato debuggable senza alterare alcun codice.
|
||
|
||
## **Preparazione dell'impostazione**
|
||
- Il processo ha comportato l'avvio di un emulatore, l'installazione dell'app vulnerabile e l'uso di `adb jdwp` per identificare le porte Dalvik VM che sono in ascolto.
|
||
- Il JDWP (Java Debug Wire Protocol) consente il debug di un'applicazione in esecuzione in una VM esponendo una porta unica.
|
||
- Il port forwarding è stato necessario per il debug remoto, seguito dall'attacco di JDB all'applicazione target.
|
||
|
||
## **Iniezione di codice durante l'esecuzione**
|
||
- Lo sfruttamento è stato effettuato impostando breakpoint e controllando il flusso dell'applicazione.
|
||
- Comandi come `classes` e `methods <class_name>` sono stati utilizzati per scoprire la struttura dell'applicazione.
|
||
- Un breakpoint è stato impostato nel metodo `onClick`, e la sua esecuzione è stata controllata.
|
||
- I comandi `locals`, `next` e `set` sono stati utilizzati per ispezionare e modificare le variabili locali, in particolare cambiando il messaggio "Try Again" in "Hacked".
|
||
- Il codice modificato è stato eseguito utilizzando il comando `run`, alterando con successo l'output dell'applicazione in tempo reale.
|
||
|
||
Questo esempio ha dimostrato come il comportamento di un'applicazione debuggable possa essere manipolato, evidenziando il potenziale per sfruttamenti più complessi come ottenere accesso shell sul dispositivo nel contesto dell'applicazione.
|
||
|
||
## Riferimenti
|
||
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
|
||
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
|
||
|
||
{% hint style="success" %}
|
||
Impara e pratica il hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Impara e pratica il hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Supporta HackTricks</summary>
|
||
|
||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
|
||
|
||
</details>
|
||
{% endhint %}
|