mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/frida-tutorial
This commit is contained in:
parent
20c9ecba71
commit
c7081983ae
@ -12,7 +12,7 @@
|
||||
|
||||
Basato su [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||
|
||||
**Hook la funzione \_exit()** e **funzione di decrittazione** in modo che stampi il flag nella console frida quando premi verifica:
|
||||
**Hook la funzione _exit()** e **la funzione di decrittazione** in modo che stampi il flag nella console di frida quando premi verifica:
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
send("Starting hooks OWASP uncrackable1...")
|
||||
@ -55,7 +55,7 @@ send("Hooks installed.")
|
||||
|
||||
Basato su [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)
|
||||
|
||||
**Collegare rootchecks** e decrittare la funzione in modo che stampi il flag nella console di frida quando premi verifica:
|
||||
**Hook rootchecks** e decritta la funzione in modo che stampi il flag nella console di frida quando premi verifica:
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
send("Starting hooks OWASP uncrackable1...")
|
||||
@ -115,4 +115,52 @@ return false
|
||||
send("Hooks installed.")
|
||||
})
|
||||
```
|
||||
---
|
||||
|
||||
## Soluzione 3 – `frida-trace` (Frida ≥ 16)
|
||||
|
||||
Se non vuoi scrivere a mano i hook, puoi lasciare che **Frida** generi i stub Java per te e poi modificarli:
|
||||
```bash
|
||||
# Spawn the application and automatically trace the Java method we care about
|
||||
aadb shell "am force-stop owasp.mstg.uncrackable1"
|
||||
frida-trace -U -f owasp.mstg.uncrackable1 \
|
||||
-j 'sg.vantagepoint.a.a.a("[B","[B")[B' \
|
||||
-j 'sg.vantagepoint.a.c!*' \
|
||||
--output ./trace
|
||||
|
||||
# The first run will create ./trace/scripts/sg/vantagepoint/a/a/a__B_B_B.js
|
||||
# Edit that file and add the logic that prints the decrypted flag or
|
||||
# returns a constant for the root-checks, then:
|
||||
frida -U -f owasp.mstg.uncrackable1 -l ./trace/_loader.js --no-pause
|
||||
```
|
||||
Con Frida 16+ il codice stub generato utilizza già la moderna sintassi dei template **ES6** e verrà compilato con il runtime integrato *QuickJS* – non hai più bisogno di `frida-compile`.
|
||||
|
||||
---
|
||||
|
||||
## Soluzione 4 – One-liner con Objection (2024)
|
||||
|
||||
Se hai **Objection >1.12** installato puoi estrarre il flag con un solo comando (Objection avvolge Frida internamente):
|
||||
```bash
|
||||
objection -g owasp.mstg.uncrackable1 explore \
|
||||
--startup-command "android hooking watch class sg.vantagepoint.a.a method a \n && android hooking set return_value false sg.vantagepoint.a.c * \n && android hooking invoke sg.vantagepoint.a.a a '[B' '[B'"
|
||||
```
|
||||
* `watch class` stampa il testo in chiaro restituito dalla routine AES
|
||||
* `set return_value false` costringe ogni controllo root / debugger a segnalare *false*
|
||||
* `invoke` ti consente di chiamare il metodo direttamente senza premere **Verify**.
|
||||
|
||||
> NOTA: Su Android 14 (API 34) devi eseguire Objection/Frida in modalità *spawn* (`-f`) perché *attach* è bloccato dalle restrizioni **seccomp-bpf** introdotte nell'ottobre 2024.
|
||||
|
||||
---
|
||||
|
||||
## Note su Android moderno (2023 - 2025)
|
||||
|
||||
* **libsu 5.x** e **Zygisk** nascondono *su* piuttosto bene; tuttavia, i controlli basati su Java in Livello 1 falliscono ancora se il file `/system/bin/su` esiste. Assicurati di abilitare **denylist** o semplicemente aggancia `java.io.File.exists()` con Frida.
|
||||
* Frida 16.1 ha risolto un crash su **Android 12/13** causato dall'allocatore *Scudo* di Google. Se vedi `Abort message: 'missing SHADOW_OFFSET'`, aggiorna Frida (o usa la nightly pre-compilata 17.0).
|
||||
* Poiché Play Integrity ha sostituito SafetyNet nel 2023, alcune app più recenti chiamano l'API **com.google.android.gms.tasks.Task**. Il Livello 1 NON lo fa, ma la stessa strategia di hooking mostrata qui funziona – aggancia `com.google.android.gms.safetynet.SafetyNetClient` e restituisci un *EvaluationType* contraffatto.
|
||||
|
||||
## Riferimenti
|
||||
|
||||
* Annuncio di rilascio di Frida – "Frida 16.0 (2023-04-02): correzioni di affidabilità per Android 12/13 e revisione dell'API spawn"
|
||||
* Objection 1.12 – "Modalità solo spawn per Android 14" (diapositive della presentazione BlackHat USA 2024)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user