diff --git a/src/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md b/src/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md index 006e04321..dde4a1621 100644 --- a/src/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md +++ b/src/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md @@ -12,7 +12,7 @@ Basierend auf [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1) -**Hook die \_exit()**\_ Funktion und **entschlüssle die Funktion**, damit sie das Flag in der Frida-Konsole ausgibt, wenn du auf Überprüfen drückst: +**Hook die _exit()**_ Funktion und **entschlüssle die Funktion**, damit sie die Flagge in der Frida-Konsole ausgibt, wenn du auf Überprüfen drückst: ```javascript Java.perform(function () { send("Starting hooks OWASP uncrackable1...") @@ -55,7 +55,7 @@ send("Hooks installed.") Basierend auf [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1) -**Hook rootchecks** und entschlüssle die Funktion, damit sie das Flag in der Frida-Konsole ausgibt, wenn du auf Überprüfen drückst: +**Hook rootchecks** und entschlüsseln Sie die Funktion, damit sie das Flag in der Frida-Konsole ausgibt, wenn Sie auf Überprüfen drücken: ```javascript Java.perform(function () { send("Starting hooks OWASP uncrackable1...") @@ -115,4 +115,54 @@ return false send("Hooks installed.") }) ``` +--- + +## Lösung 3 – `frida-trace` (Frida ≥ 16) + +Wenn Sie keine Hooks von Hand schreiben möchten, können Sie **Frida** die Java-Stubs für Sie generieren lassen und diese dann bearbeiten: +```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 +``` +Mit Frida 16+ verwendet der generierte Stub bereits die moderne **ES6** Template-Syntax und wird mit der integrierten *QuickJS* Laufzeit kompiliert – Sie benötigen `frida-compile` nicht mehr. + +--- + +## Lösung 4 – Einzeiler mit Objection (2024) + +Wenn Sie **Objection >1.12** installiert haben, können Sie das Flag mit einem einzigen Befehl dumpen (Objection umschließt Frida intern): +```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` gibt den im Klartext zurückgegebenen Wert der AES-Routine aus +* `set return_value false` zwingt jede Root-/Debugger-Prüfung, *false* zu melden +* `invoke` ermöglicht es, die Methode direkt aufzurufen, ohne **Verify** zu drücken. + +> HINWEIS: Auf Android 14 (API 34) müssen Sie Objection/Frida im *spawn*-Modus (`-f`) ausführen, da *attach* durch **seccomp-bpf**-Einschränkungen blockiert ist, die im Oktober 2024 eingeführt wurden. + +--- + +## Moderne Android-Notizen (2023 - 2025) + +* **libsu 5.x** und **Zygisk** verstecken *su* ziemlich gut; jedoch schlagen die auf Java basierenden Prüfungen in Level 1 fehl, wenn die Datei `/system/bin/su` existiert. Stellen Sie sicher, dass Sie die **denylist** aktivieren oder einfach `java.io.File.exists()` mit Frida hooken. +* Frida 16.1 behob einen Absturz auf **Android 12/13**, der durch Googles *Scudo*-Allocator verursacht wurde. Wenn Sie `Abort message: 'missing SHADOW_OFFSET'` sehen, aktualisieren Sie Frida (oder verwenden Sie die vorgefertigte 17.0-Nightly). +* Da Play Integrity 2023 SafetyNet ersetzt hat, rufen einige neuere Apps die **com.google.android.gms.tasks.Task** API auf. Level 1 tut dies NICHT, aber die hier gezeigte Hooking-Strategie funktioniert – hooken Sie `com.google.android.gms.safetynet.SafetyNetClient` und geben Sie einen gefälschten *EvaluationType* zurück. + +## Referenzen + +* Frida-Veröffentlichungsankündigung – "Frida 16.0 (2023-04-02): Android 12/13 Zuverlässigkeitsfixes & Überarbeitung der Spawn-API" +* Objection 1.12 – "Nur Spawn-Modus für Android 14" (BlackHat USA 2024 Vortrag Folien) + + + {{#include ../../../banners/hacktricks-training.md}}