Android-Anwendungen Pentesting

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Android Applications Basics

Es wird dringend empfohlen, diese Seite zuerst zu lesen, um die wichtigsten Teile im Zusammenhang mit Android-Sicherheit und die gefährlichsten Komponenten in einer Android-Anwendung kennenzulernen:

Android Applications Basics

ADB (Android Debug Bridge)

This is the main tool you need to connect to an android device (emulated or physical).
ADB ermöglicht die Steuerung von Geräten entweder über USB oder Network von einem Computer aus. Dieses Tool erlaubt das Kopieren von Dateien in beide Richtungen, die Installation und Deinstallation von Apps, die Ausführung von Shell-Befehlen, das Sichern von Daten, das Lesen von Logs, sowie andere Funktionen.

Sieh dir die folgende Liste der ADB Commands an, um zu lernen, wie man adb benutzt.

Smali

Manchmal ist es interessant, den Anwendungscode zu modifizieren, um auf versteckte Informationen zuzugreifen (z. B. stark obfuskierte Passwörter oder Flags). Dann kann es sinnvoll sein, die APK zu dekompilieren, den Code zu ändern und die APK neu zu kompilieren.
In diesem Tutorial kannst du lernen, wie man eine APK dekompiliert, Smali code modifiziert und die APK mit der neuen Funktionalität neu kompiliert. Dies kann sehr nützlich als Alternative für mehrere Tests während der dynamischen Analyse sein, die vorgestellt werden. Behalte diese Möglichkeit also immer im Hinterkopf.

Other interesting tricks

adb shell pm list packages
com.android.insecurebankv2

adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk

adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
  • Alle Splits und base apks mit APKEditor zusammenführen:
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk

# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed

Android Enterprise & Work Profile Angriffe

Android Enterprise Work Profile Bypass

Fallstudien & Schwachstellen

Air Keyboard Remote Input Injection

Android Rooting Frameworks Manager Auth Bypass Syscall Hook

Statische Analyse

Zuerst sollten Sie zum Analysieren einer APK den Java-Code ansehen und dazu einen Decompiler verwenden.
Bitte lesen Sie hier, um Informationen über verschiedene verfügbare Decompiler zu finden.

Nach interessanten Informationen suchen

Schon durch das Betrachten der strings der APK können Sie nach passwords, URLs (https://github.com/ndelphit/apkurlgrep), api keys, encryption, bluetooth uuids, tokens und allem Interessanten suchen… achten Sie sogar auf Code-Execution backdoors oder Authentifizierungs-Backdoors (hartkodierte Admin-Zugangsdaten in der App).

Firebase

Achten Sie besonders auf firebase URLs und prüfen Sie, ob diese schlecht konfiguriert sind. Mehr Informationen darüber, was Firebase ist und wie man es ausnutzen kann, finden Sie hier.

Grundlegendes Verständnis der Anwendung - Manifest.xml, strings.xml

Die Untersuchung der Manifest.xml und der strings.xml Dateien einer Anwendung kann potenzielle Sicherheitslücken aufdecken. Auf diese Dateien kann mit Decompilern zugegriffen werden oder indem die APK-Endung in .zip geändert und entpackt wird.

Schwachstellen, die aus der Manifest.xml identifiziert werden können, umfassen:

  • Debuggable-Anwendungen: Anwendungen, die in der Manifest.xml als debuggable (debuggable="true") gesetzt sind, stellen ein Risiko dar, da sie Verbindungen erlauben, die zu einer Ausnutzung führen können. Für ein tieferes Verständnis, wie man debuggable-Anwendungen ausnutzt, siehe Tutorials zum Finden und Ausnutzen von debuggable-Anwendungen auf einem Gerät.
  • Backup-Einstellungen: Das Attribut android:allowBackup="false" sollte explizit für Anwendungen gesetzt werden, die mit sensiblen Informationen arbeiten, um unautorisierten Daten-Backup via adb zu verhindern, besonders wenn USB-Debugging aktiviert ist.
  • Netzwerksicherheit: Benutzerdefinierte network security Konfigurationen (android:networkSecurityConfig="@xml/network_security_config") in res/xml/ können Sicherheitsdetails wie certificate pins und HTTP-Traffic-Einstellungen spezifizieren. Ein Beispiel ist das Zulassen von HTTP-Traffic für bestimmte Domains.
  • Exported Activities und Services: Das Identifizieren von exportierten Activities und Services im Manifest kann Komponenten aufzeigen, die missbraucht werden könnten. Weitere Analyse während dynamischer Tests kann aufdecken, wie diese Komponenten ausgenutzt werden können.
  • Content Providers und FileProviders: Offen gelegte Content Providers könnten unbefugten Zugriff oder Modifikation von Daten erlauben. Auch die Konfiguration von FileProviders sollte genau geprüft werden.
  • Broadcast Receivers und URL-Schemes: Diese Komponenten könnten für Exploits genutzt werden, wobei besonderes Augenmerk darauf liegen sollte, wie URL-Schemes Eingaben behandeln.
  • SDK-Versionen: Die Attribute minSdkVersion, targetSDKVersion und maxSdkVersion geben die unterstützten Android-Versionen an und unterstreichen die Bedeutung, veraltete, verwundbare Android-Versionen nicht zu unterstützen.

Aus der strings.xml Datei können sensible Informationen wie API keys, custom schemas und andere Entwicklerhinweise entdeckt werden, was die Notwendigkeit einer sorgfältigen Überprüfung dieser Ressourcen betont.

Tapjacking

Tapjacking ist ein Angriff, bei dem eine malicious application gestartet wird und sich über eine Opfer-Anwendung legt. Sobald sie die Opfer-App sichtbar überdeckt, ist ihre Benutzeroberfläche so gestaltet, dass der Benutzer dazu verleitet wird, mit ihr zu interagieren, während die Interaktion an die Opfer-App weitergereicht wird.
Im Effekt wird der Benutzer davon abgehalten zu erkennen, dass er eigentlich Aktionen in der Opfer-App ausführt.

Mehr Informationen finden Sie in:

Tapjacking

Task Hijacking

Eine activity mit dem launchMode auf singleTask ohne definierte taskAffinity ist für Task Hijacking anfällig. Das bedeutet, dass eine application installiert werden kann und, wenn sie vor der echten Anwendung gestartet wird, den Task der echten Anwendung kapern könnte (so wird der Benutzer mit der malicious application interagieren und denken, er benutzt die echte).

Mehr Infos in:

Android Task Hijacking

Unsichere Datenspeicherung

Interner Speicher

In Android sind Dateien, die im internal storage abgelegt werden, so konzipiert, dass sie ausschließlich von der app, die sie erstellt hat, zugänglich sind. Diese Sicherheitsmaßnahme wird vom Android-Betriebssystem durchgesetzt und ist in der Regel ausreichend für die Sicherheitsanforderungen der meisten Anwendungen. Entwickler nutzen jedoch manchmal Modi wie MODE_WORLD_READABLE und MODE_WORLD_WRITABLE, um Dateien zwischen verschiedenen Anwendungen zu teilen. Diese Modi beschränken den Zugriff auf diese Dateien jedoch nicht gegenüber anderen Anwendungen, einschließlich potenziell bösartiger.

  1. Statische Analyse:
  • Stellen Sie sicher, dass die Verwendung von MODE_WORLD_READABLE und MODE_WORLD_WRITABLE sorgfältig geprüft wird. Diese Modi können Dateien unbeabsichtigt oder unautorisiert offenlegen.
  1. Dynamische Analyse:
  • Überprüfen Sie die Berechtigungen auf Dateien, die von der App erstellt wurden. Prüfen Sie speziell, ob Dateien für alle les- oder schreibbar gesetzt wurden. Dies kann ein erhebliches Sicherheitsrisiko darstellen, da jede installierte Anwendung, unabhängig von Herkunft oder Absicht, diese Dateien lesen oder verändern könnte.

Externer Speicher

Beim Umgang mit Dateien auf external storage, wie z. B. SD-Karten, sollten bestimmte Vorsichtsmaßnahmen getroffen werden:

  1. Zugänglichkeit:
  • Dateien auf external storage sind global les- und schreibbar. Das bedeutet, jede Anwendung oder jeder Benutzer kann auf diese Dateien zugreifen.
  1. Sicherheitsbedenken:
  • Aufgrund der leichten Zugänglichkeit sollte keine sensiblen Informationen auf external storage gespeichert werden.
  • Externer Speicher kann entfernt oder von jeder Anwendung eingesehen werden, was ihn weniger sicher macht.
  1. Umgang mit Daten aus externem Speicher:
  • Führen Sie immer Input-Validierung für Daten durch, die aus externem Speicher geladen werden. Das ist entscheidend, da die Daten aus einer untrusted Quelle stammen.
  • Das Speichern von ausführbaren Dateien oder class files auf externem Speicher zum dynamischen Nachladen wird stark abgeraten.
  • Wenn Ihre Anwendung ausführbare Dateien aus externem Speicher laden muss, stellen Sie sicher, dass diese Dateien signiert und kryptographisch verifiziert sind, bevor sie dynamisch geladen werden. Dieser Schritt ist wesentlich, um die Sicherheitsintegrität Ihrer Anwendung zu wahren.

External storage kann in /storage/emulated/0 , /sdcard , /mnt/sdcard zugegriffen werden

Tip

Starting with Android 4.4 (API 17), the SD card has a directory structure which limits access from an app to the directory which is specifically for that app. This prevents malicious application from gaining read or write access to another app’s files.

Sensitive data stored in clear-text

  • Shared preferences: Android erlaubt jeder Anwendung, XML-Dateien im Pfad /data/data/<packagename>/shared_prefs/ zu speichern, und manchmal lassen sich dort sensitive Informationen im Klartext finden.
  • Databases: Android erlaubt jeder Anwendung, sqlite-Datenbanken im Pfad /data/data/<packagename>/databases/ zu speichern, und manchmal lassen sich dort sensitive Informationen im Klartext finden.

Fehlerhaftes TLS

Accept All Certificates

Aus irgendwelchen Gründen akzeptieren Entwickler manchmal alle Zertifikate, selbst wenn z. B. der Hostname nicht übereinstimmt, mit Codezeilen wie der folgenden:

SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

Eine gute Möglichkeit, dies zu testen, ist zu versuchen, den Traffic mit einem Proxy wie Burp abzufangen, ohne das Burp CA im Gerät zu autorisieren. Außerdem können Sie mit Burp ein Zertifikat für einen anderen Hostnamen erzeugen und verwenden.

Fehlerhafte Kryptographie

Schlechte Prozesse zur Schlüsselverwaltung

Einige Entwickler speichern sensible Daten im lokalen Speicher und verschlüsseln sie mit einem im Code hardcodierten/vorhersehbaren Schlüssel. Das sollte nicht gemacht werden, da Reverse-Engineering Angreifern erlauben könnte, die vertraulichen Informationen zu extrahieren.

Verwendung unsicherer und/oder veralteter Algorithmen

Entwickler sollten keine veralteten Algorithmen für Autorisierungsprüfungen, Speicherung oder Übertragung von Daten verwenden. Einige dieser Algorithmen sind: RC4, MD4, MD5, SHA1… Wenn hashes z. B. zum Speichern von Passwörtern verwendet werden, sollten brute-force-resistente hashes mit salt verwendet werden.

Weitere Prüfungen

  • Es wird empfohlen, die APK zu obfuskieren, um die Arbeit des Reverse-Engineerings für Angreifer zu erschweren.
  • Wenn die App sensibel ist (z. B. Banking-Apps), sollte sie eigene Prüfungen durchführen, ob das Mobilgerät gerootet ist, und entsprechend reagieren.
  • Wenn die App sensibel ist (z. B. Banking-Apps), sollte sie prüfen, ob ein Emulator verwendet wird.
  • Wenn die App sensibel ist (z. B. Banking-Apps), sollte sie ihre Integrität vor der Ausführung prüfen, um festzustellen, ob sie modifiziert wurde.
  • Verwenden Sie APKiD, um zu prüfen, welcher Compiler/Packer/Obfuscator zum Erstellen der APK verwendet wurde

React Native Application

Lies die folgende Seite, um zu lernen, wie man einfach auf den JavaScript-Code von React-Anwendungen zugreift:

React Native Application

Xamarin Applications

Lies die folgende Seite, um zu lernen, wie man einfach auf C#-Code einer Xamarin-Anwendung zugreift:

Xamarin Apps

Superpacked Applications

Laut diesem Blogpost ist superpacked ein Meta-Algorithmus, der den Inhalt einer Anwendung in eine einzelne Datei komprimiert. Der Blog beschreibt die Möglichkeit, eine App zu erstellen, die diese Art von Apps dekomprimiert… und einen schnelleren Weg, der darin besteht, die Anwendung auszuführen und die dekomprimierten Dateien vom Dateisystem zu sammeln.

Automated Static Code Analysis

Das Tool mariana-trench ist in der Lage, Vulnerabilities zu finden, indem es den Code der Anwendung scannt. Dieses Tool enthält eine Reihe von known sources (die dem Tool die Stellen anzeigen, an denen die Eingabe vom Benutzer kontrolliert wird), sinks (die dem Tool gefährliche Stellen anzeigen, an denen bösartige Benutzereingaben Schaden verursachen könnten) und rules. Diese Regeln geben die Kombination von sources-sinks an, die auf eine Verwundbarkeit hinweist.

Mit diesem Wissen wird mariana-trench den Code prüfen und mögliche Vulnerabilities darin finden.

Secrets leaked

Eine Anwendung kann Secrets (API keys, Passwörter, versteckte URLs, Subdomains…) enthalten, die Sie möglicherweise entdecken können. Sie könnten ein Tool wie https://github.com/dwisiswant0/apkleaks verwenden.

Bypass Biometric Authentication

Bypass Biometric Authentication (Android)

Other interesting functions

  • Code execution: Runtime.exec(), ProcessBuilder(), native code:system()
  • Send SMSs: sendTextMessage, sendMultipartTestMessage
  • Native functions declared as native: public native, System.loadLibrary, System.load
  • Read this to learn how to reverse native functions
  • In-memory native code execution via JNI (downloaded shellcode → mmap/mprotect → call):

In Memory Jni Shellcode Execution

Other tricks

content:// protocol



Dynamische Analyse

Zuerst benötigen Sie eine Umgebung, in der Sie die Anwendung und die gesamte Umgebung (Burp CA cert, Drozer und Frida hauptsächlich) installieren können. Daher wird ein gerootetes Gerät (emuliert oder nicht) dringend empfohlen.

Online Dynamic analysis

Sie können ein kostenloses Konto unter: https://appetize.io/ erstellen. Diese Plattform erlaubt es Ihnen, APKs hochzuladen und auszuführen, sodass sie nützlich ist, um zu sehen, wie sich eine APK verhält.

Sie können sogar die Logs Ihrer Anwendung im Web sehen und sich über adb verbinden.

Dank der ADB-Verbindung können Sie Drozer und Frida innerhalb der Emulatoren verwenden.

Lokale dynamische Analyse

Verwendung eines Emulators

  • Android Studio (Sie können x86- und arm-Geräte erstellen, und laut diesem unterstützen aktuelle x86-Versionen ARM-Bibliotheken, ohne einen langsamen ARM-Emulator zu benötigen).
  • Lernen Sie, es auf dieser Seite einzurichten:

AVD - Android Virtual Device

  • Genymotion (kostenlose Version: Personal Edition, Sie müssen ein Konto erstellen. Es wird empfohlen, die Version MIT VirtualBox herunterzuladen, um potenzielle Fehler zu vermeiden.)
  • Nox (kostenlos, unterstützt jedoch Frida oder Drozer nicht).

Tip

Wenn Sie einen neuen Emulator auf einer beliebigen Plattform erstellen, denken Sie daran: Je größer der Bildschirm ist, desto langsamer läuft der Emulator. Wählen Sie also wenn möglich kleine Bildschirme.

Um Google Services (wie AppStore) in Genymotion zu installieren, müssen Sie auf den rot markierten Button im folgenden Bild klicken:

Beachten Sie außerdem, dass Sie in der Konfiguration der Android-VM in Genymotion den Bridge Network mode auswählen können (das ist nützlich, wenn Sie von einer anderen VM aus auf die Android-VM mit den Tools zugreifen möchten).

Verwendung eines physischen Geräts

Sie müssen die Entwicklungsoptionen (Developer options) aktivieren; es ist außerdem sinnvoll, wenn Sie es rooten können:

  1. Settings.
  2. (Ab Android 8.0) Wählen Sie System.
  3. Wählen Sie About phone.
  4. Drücken Sie Build number 7-mal.
  5. Gehen Sie zurück und Sie finden die Developer options.

Sobald Sie die Anwendung installiert haben, sollten Sie sie zuerst ausprobieren und untersuchen, was sie tut, wie sie funktioniert und sich damit vertraut machen.
Ich empfehle, diese anfängliche dynamische Analyse mit MobSF dynamic analysis + pidcat durchzuführen, damit wir lernen, wie die Anwendung funktioniert, während MobSF viele interessante Daten erfasst, die Sie später überprüfen können.

Magisk/Zygisk quick notes (recommended on Pixel devices)

  • Patch boot.img with the Magisk app and flash via fastboot to get systemless root
  • Enable Zygisk + DenyList for root hiding; consider LSPosed/Shamiko when stronger hiding is required
  • Keep original boot.img to recover from OTA updates; re-patch after each OTA
  • For screen mirroring, use scrcpy on the host

Unintended Data Leakage

Logging

Entwickler sollten vorsichtig sein, DEBUG-Informationen öffentlich zugänglich zu machen, da dies zu sensitiven data leaks führen kann. Die Tools pidcat und adb logcat werden empfohlen, um Anwendungslogs zu überwachen und sensible Informationen zu identifizieren und zu schützen. Pidcat wird wegen seiner Benutzerfreundlichkeit und Lesbarkeit bevorzugt.

Warning

Beachten Sie, dass ab neueren Versionen als Android 4.0 Anwendungen nur noch auf ihre eigenen Logs zugreifen können. Anwendungen können also nicht auf die Logs anderer Apps zugreifen.
Trotzdem wird weiterhin empfohlen, keine sensiblen Informationen zu loggen.

Copy/Paste Buffer Caching

Das clipboard-basierte Framework von Android ermöglicht Copy-Paste-Funktionalität in Apps, birgt jedoch das Risiko, dass andere Anwendungen auf die Zwischenablage zugreifen und dadurch sensible Daten exponieren können. Es ist wichtig, Copy/Paste-Funktionen für sensitive Bereiche einer Anwendung, wie Kreditkartendaten, zu deaktivieren, um Data Leaks zu verhindern.

Crash Logs

Wenn eine Anwendung crasht und Logs speichert, können diese Logs Angreifern helfen, insbesondere wenn die Anwendung nicht reverse-engineered werden kann. Um dieses Risiko zu mindern, vermeiden Sie Logging bei Crashes, und wenn Logs über das Netzwerk gesendet werden müssen, sorgen Sie dafür, dass sie über einen SSL-Kanal übertragen werden.

Als Pentester, sehen Sie sich diese Logs an.

Analytics Data Sent To 3rd Parties

Anwendungen integrieren häufig Dienste wie Google Adsense, die aufgrund fehlerhafter Implementierung durch Entwickler versehentlich sensitive data an Dritte senden können. Um mögliche Datenlecks zu erkennen, empfiehlt es sich, den Traffic der Anwendung abzufangen und zu prüfen, ob sensible Informationen an Third-Party-Services gesendet werden.

SQLite DBs

Die meisten Anwendungen verwenden interne SQLite-Datenbanken, um Informationen zu speichern. Schauen Sie während des Pentests in die erstellten Datenbanken, die Namen der Tabellen und Spalten sowie alle gespeicherten Daten, da Sie dort sensitive Informationen finden könnten (was eine Verwundbarkeit wäre).
Datenbanken sollten sich in /data/data/the.package.name/databases befinden, z. B. /data/data/com.mwr.example.sieve/databases

Wenn die Datenbank vertrauliche Informationen speichert und verschlüsselt ist, Sie aber das Passwort innerhalb der Anwendung finden können, ist das immer noch eine Vulnerabilität.

Enumerieren Sie die Tabellen mit .tables und listen Sie die Spalten der Tabellen mit .schema <table_name> auf.

Drozer (Exploit Activities, Content Providers and Services)

Aus den Drozer Docs: Drozer erlaubt es Ihnen, die Rolle einer Android-App anzunehmen und mit anderen Apps zu interagieren. Es kann alles tun, was eine installierte Anwendung tun kann, wie z. B. Androids Inter-Process Communication (IPC)-Mechanismus nutzen und mit dem zugrunde liegenden Betriebssystem interagieren.
Drozer ist ein nützliches Tool, um exportierte activities, exportierte services und Content Providers auszunutzen, wie Sie in den folgenden Abschnitten lernen werden.

Exploiting exported Activities

Read this if you want to refresh what is an Android Activity.
Denken Sie auch daran, dass der Code einer Activity in der onCreate-Methode startet.

Authorisation bypass

Wenn eine Activity exportiert ist, können Sie ihren Screen von einer externen App aus aufrufen. Daher könnten Sie, wenn eine Activity mit sensiblen Informationen exportiert ist, die Authentifizierungsmechanismen umgehen, um darauf zuzugreifen.

Learn how to exploit exported activities with Drozer.

Sie können eine exportierte Activity auch über adb starten:

  • PackageName is com.example.demo
  • Exported ActivityName is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity

HINWEIS: MobSF wird die Verwendung von singleTask/singleInstance als android:launchMode in einer activity als bösartig erkennen, aber aufgrund von this ist dies anscheinend nur auf alten Versionen (API-Versionen < 21) gefährlich.

Tip

Note that an authorisation bypass is not always a vulnerability, it would depend on how the bypass works and which information is exposed.

Sensitive information leakage

Activities can also return results. Wenn du eine exportierte und ungeschützte activity findest, die die Methode setResult aufruft und sensitive information zurückgibt, liegt eine sensitive information leakage vor.

Tapjacking

Wenn Tapjacking nicht verhindert wird, könntest du die exportierte activity missbrauchen, damit der Benutzer unerwartete Aktionen ausführt. For more info about what is Tapjacking follow the link.

Exploiting Content Providers - Accessing and manipulating sensitive information

Read this if you want to refresh what is a Content Provider.
Content providers werden grundsätzlich verwendet, um share data. Wenn eine App verfügbare Content providers hat, könntest du möglicherweise extract sensitive Daten daraus extrahieren. Es ist auch wichtig, mögliche SQL injections und Path Traversals zu testen, da diese verwundbar sein könnten.

Learn how to exploit Content Providers with Drozer.

Exploiting Services

Read this if you want to refresh what is a Service.
Denke daran, dass die Aktionen eines Service in der Methode onStartCommand beginnen.

Ein Service ist im Grunde etwas, das can receive data, process it und returns (oder nicht) eine Antwort. Wenn eine Anwendung also Services exportiert, solltest du den code prüfen, um zu verstehen, was er tut, und ihn dynamically testen, um vertrauliche Informationen zu extrahieren, Authentifizierungsmaßnahmen zu umgehen…
Learn how to exploit Services with Drozer.

Exploiting Broadcast Receivers

Read this if you want to refresh what is a Broadcast Receiver.
Denke daran, dass die Aktionen eines Broadcast Receiver in der Methode onReceive starten.

Ein broadcast receiver wartet auf eine bestimmte Art von Nachricht. Abhängig davon, wie der Receiver die Nachricht verarbeitet, könnte er verwundbar sein.
Learn how to exploit Broadcast Receivers with Drozer.

You can look for deep links manually, using tools like MobSF or scripts like this one.
You can open a declared scheme using adb or a browser:

adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]

Beachte, dass du den Paketnamen weglassen kannst und das Mobilgerät automatisch die App aufruft, die diesen Link öffnen sollte.

<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>

Code executed

Um den Code, der in der App ausgeführt wird, zu finden, gehe zur Activity, die vom deeplink aufgerufen wird, und suche die Funktion onNewIntent.

Sensible Informationen

Jedes Mal, wenn du einen deep link findest, prüfe, ob er nicht sensible Daten (wie Passwörter) über URL-Parameter empfängt, denn jede andere Anwendung könnte den deep link impersonate und diese Daten stehlen!

Parameter im Pfad

Du musst auch prüfen, ob ein deep link einen Parameter innerhalb des Pfads der URL verwendet, z. B.: https://api.example.com/v1/users/{username}. In diesem Fall kannst du eine Path Traversal erzwingen, indem du z. B. aufrufst: example://app/users?username=../../unwanted-endpoint%3fparam=value .
Beachte, dass du, wenn du die korrekten Endpunkte in der Anwendung findest, möglicherweise eine Open Redirect (wenn ein Teil des Pfads als Domain-Name verwendet wird), eine account takeover (wenn du Benutzerdaten ohne CSRF token ändern kannst und der verwundbare Endpoint die richtige Methode verwendet) und andere Vulns verursachen kannst. More info about this here.

More examples

An interesting bug bounty report about links (/.well-known/assetlinks.json).

Transport Layer Inspection and Verification Failures

  • Certificates werden nicht immer korrekt von Android-Anwendungen überprüft. Es ist üblich, dass diese Anwendungen Warnungen übersehen und self-signed certificates akzeptieren oder in einigen Fällen auf HTTP-Verbindungen zurückfallen.
  • Die Verhandlungen während des SSL/TLS-Handshakes sind manchmal schwach, es werden unsichere Cipher-Suites verwendet. Diese Schwäche macht die Verbindung anfällig für MITM-Angriffe und ermöglicht Angreifern das Entschlüsseln der Daten.
  • Offenlegung privater Informationen ist ein Risiko, wenn Anwendungen für Authentifizierung sichere Kanäle verwenden, dann aber für andere Transaktionen über nicht-gesicherte Kanäle kommunizieren. Dieser Ansatz schützt sensible Daten, wie Session-Cookies oder Benutzerdetails, nicht vor Abfangen durch bösartige Parteien.

Certificate Verification

Wir konzentrieren uns auf die Certificate Verification. Die Integrität des Server-Zertifikats muss verifiziert werden, um die Sicherheit zu erhöhen. Das ist entscheidend, da unsichere TLS-Konfigurationen und die Übertragung sensibler Daten über unverschlüsselte Kanäle erhebliche Risiken darstellen können. Für detaillierte Schritte zur Überprüfung von Server-Zertifikaten und zur Behebung von Schwachstellen bietet this resource umfassende Anleitungen.

SSL Pinning

SSL Pinning ist eine Sicherheitsmaßnahme, bei der die Anwendung das Server-Zertifikat mit einer bekannten Kopie vergleicht, die innerhalb der Anwendung gespeichert ist. Diese Methode ist essentiell, um MITM-Angriffe zu verhindern. Die Implementierung von SSL Pinning wird dringend für Anwendungen empfohlen, die sensible Informationen verarbeiten.

Traffic Inspection

Um HTTP-Traffic zu inspizieren, ist es nötig, das Zertifikat des Proxy-Tools (z. B. Burp) zu installieren. Ohne die Installation dieses Zertifikats ist verschlüsselter Traffic möglicherweise nicht über den Proxy sichtbar. Für eine Anleitung zum Installieren eines custom CA-Zertifikats, click here.

Anwendungen mit Ziel-API Level 24 and above erfordern Änderungen an der Network Security Config, um das CA-Zertifikat des Proxys zu akzeptieren. Dieser Schritt ist wichtig, um verschlüsselten Traffic zu inspizieren. Für Anweisungen zur Änderung der Network Security Config, refer to this tutorial.

Wenn Flutter verwendet wird, musst du den Anweisungen auf this page folgen. Das liegt daran, dass das einfache Hinzufügen des Zertifikats zum Store nicht ausreicht, da Flutter seine eigene Liste gültiger CAs hat.

Static detection of SSL/TLS pinning

Bevor du Runtime-Bypässe versuchst, kartiere schnell, wo Pinning im APK durchgesetzt wird. Statische Erkennung hilft dir, Hooks/Patches zu planen und dich auf die richtigen Code-Pfade zu konzentrieren.

Tool: SSLPinDetect

  • Open-source static-analysis utility, das das APK nach Smali dekompiliert (via apktool) und nach kuratierten Regex-Patterns von SSL/TLS pinning Implementierungen scannt.
  • Reportet exakten Dateipfad, Zeilennummer und einen Code-Snippet für jeden Treffer.
  • Deckt gängige Frameworks und custom code paths ab: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init mit custom TrustManagers/KeyManagers, und Network Security Config XML pins.

Install

  • Prereqs: Python >= 3.8, Java on PATH, apktool
git clone https://github.com/aancw/SSLPinDetect
cd SSLPinDetect
pip install -r requirements.txt

Verwendung

# Basic
python sslpindetect.py -f app.apk -a apktool.jar

# Verbose (timings + per-match path:line + snippet)
python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v

Beispiel-Pattern-Regeln (JSON) Verwenden oder erweitern Sie signatures, um proprietäre/custom pinning styles zu erkennen. Sie können Ihr eigenes JSON laden und scan at scale.

{
"OkHttp Certificate Pinning": [
"Lcom/squareup/okhttp/CertificatePinner;",
"Lokhttp3/CertificatePinner;",
"setCertificatePinner"
],
"TrustManager Override": [
"Ljavax/net/ssl/X509TrustManager;",
"checkServerTrusted"
]
}

Notes and tips

  • Schnelles Scannen großer Apps via Multithreading und memory-mapped I/O; vor-kompilierte regex reduziert Overhead/Falsch-Positive.
  • Pattern collection: https://github.com/aancw/smali-sslpin-patterns
  • Typische Erkennungsziele zur weiteren Priorisierung:
  • OkHttp: CertificatePinner usage, setCertificatePinner, okhttp3/okhttp package references
  • Custom TrustManagers: javax.net.ssl.X509TrustManager, checkServerTrusted overrides
  • Custom SSL contexts: SSLContext.getInstance + SSLContext.init with custom managers
  • Declarative pins in res/xml network security config and manifest references
  • Verwende die gefundenen Stellen, um Frida hooks, statische Patches oder Konfigurationsprüfungen vor dynamischen Tests zu planen.

Bypassing SSL Pinning

Wenn SSL Pinning implementiert ist, wird es nötig, dieses zu umgehen, um HTTPS-Traffic zu untersuchen. Dafür gibt es verschiedene Methoden:

Looking for Common Web Vulnerabilities

Es ist wichtig, innerhalb der Anwendung auch nach häufigen Web-Schwachstellen zu suchen. Detaillierte Informationen zur Identifikation und Behebung dieser Schwachstellen gehen über diese Zusammenfassung hinaus, werden aber anderswo ausführlich behandelt.

Frida

Frida ist ein dynamisches Instrumentierungs-Toolkit für Entwickler, Reverse-Engineers und Sicherheitsforscher.
Du kannst auf laufende Anwendungen zugreifen und Methoden zur Laufzeit hooken, um Verhalten zu ändern, Werte zu ändern, Werte zu extrahieren, anderen Code auszuführen…
Wenn du Android-Anwendungen pentesten willst, musst du wissen, wie man Frida benutzt.

Anti-instrumentation & SSL pinning bypass workflow

Android Anti Instrumentation And Ssl Pinning Bypass

Dump Memory - Fridump

Überprüfe, ob die Anwendung sensible Informationen im Speicher ablegt, die dort nicht liegen sollten, wie Passwörter oder mnemonics.

Mit Fridump3 kannst du den Speicher der App auslesen mit:

# With PID
python3 fridump3.py -u <PID>

# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"

Das wird das memory in ./dump dumpen, und dort könntest du mit etwas wie grep suchen:

strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"

Sensible Daten im Keystore

Auf Android ist der Keystore der beste Ort, um sensible Daten zu speichern; mit ausreichenden Rechten ist es jedoch immer noch möglich, darauf zuzugreifen. Da Anwendungen dazu neigen, hier sensible Daten im Klartext zu speichern, sollten pentests dies als root user prüfen, da jemand mit physischem Zugriff auf das Gerät diese Daten stehlen könnte.

Selbst wenn eine App Daten im Keystore speichert, sollten diese Daten verschlüsselt sein.

Um auf die Daten im Keystore zuzugreifen, kann man dieses Frida script verwenden: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js

frida -U -f com.example.app -l frida-scripts/tracer-cipher.js

Fingerprint/Biometrics Bypass

Mit dem folgenden Frida-Skript könnte es möglich sein, die von Android-Anwendungen möglicherweise durchgeführte bypass fingerprint authentication zu umgehen, um bestimmte sensible Bereiche zu schützen:

frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>

Hintergrundbilder

Wenn Sie eine Anwendung in den Hintergrund legen, speichert Android einen Snapshot der Anwendung, sodass beim Wiederherstellen in den Vordergrund zuerst das Bild geladen wird, bevor die App startet, wodurch es so aussieht, als wäre die App schneller geladen worden.

Wenn dieser Snapshot jedoch sensible Informationen enthält, könnte jemand mit Zugriff auf den Snapshot diese Informationen stehlen (beachte, dass man dafür root benötigt).

Die Snapshots befinden sich normalerweise unter: /data/system_ce/0/snapshots

Android bietet eine Möglichkeit, die Erfassung des Screenshots durch Setzen des FLAG_SECURE Layout-Parameters zu verhindern. Durch die Verwendung dieses Flags werden die Fensterinhalte als sicher behandelt, wodurch verhindert wird, dass sie in Screenshots erscheinen oder auf nicht sicheren Displays angezeigt werden.

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

Android Application Analyzer

Dieses Tool kann Ihnen helfen, verschiedene Tools während der dynamischen Analyse zu verwalten: https://github.com/NotSoSecure/android_application_analyzer

Intent Injection

Entwickler erstellen oft Proxy-Komponenten wie activities, services und broadcast receivers, die diese Intents verarbeiten und an Methoden wie startActivity(...) oder sendBroadcast(...) weiterreichen, was riskant sein kann.

Die Gefahr besteht darin, Angreifern zu erlauben, nicht-exportierte App-Komponenten auszulösen oder durch Fehlleitung dieser Intents auf sensitive Content-Provider zuzugreifen. Ein bemerkenswertes Beispiel ist die WebView-Komponente, die URLs via Intent.parseUri(...) in Intent-Objekte umwandelt und diese dann ausführt, was potenziell zu bösartigen Intent-Injektionen führen kann.

Essential Takeaways

  • Intent Injection ist ähnlich wie das Open Redirect-Problem im Web.
  • Exploits beinhalten das Weitergeben von Intent-Objekten als Extras, die umgeleitet werden können, um unsichere Operationen auszuführen.
  • Es kann nicht-exportierte Komponenten und Content-Provider für Angreifer öffnen.
  • Die URL-zu-Intent-Konversion von WebView kann unbeabsichtigte Aktionen ermöglichen.

Android Client Side Injections and others

Wahrscheinlich kennen Sie diese Art von vulnerabilities aus dem Web. Bei Android-Anwendungen müssen Sie bei diesen besonders vorsichtig sein:

  • SQL Injection: Beim Umgang mit dynamischen Abfragen oder Content-Providern sollten Sie sicherstellen, dass parametrisierte Abfragen verwendet werden.
  • JavaScript Injection (XSS): Stellen Sie sicher, dass JavaScript- und Plugin-Unterstützung für alle WebViews deaktiviert ist (standardmäßig deaktiviert). More info here.
  • Local File Inclusion: WebViews sollten keinen Zugriff auf das Dateisystem haben (standardmäßig erlaubt) - (webview.getSettings().setAllowFileAccess(false);). More info here.
  • Eternal cookies: In mehreren Fällen wird beim Beenden der Android-Anwendung das Cookie nicht widerrufen oder es kann sogar auf der Festplatte gespeichert werden
  • Secure Flag in cookies

Automatische Analyse

MobSF

Statische Analyse

Vulnerability assessment of the application mithilfe eines ansprechenden webbasierten Frontends. Sie können auch eine dynamische Analyse durchführen (aber Sie müssen die Umgebung vorbereiten).

docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

Beachte, dass MobSF Android(apk), IOS(ipa) und Windows(apx) Anwendungen analysieren kann (Windows applications must be analyzed from a MobSF installed in a Windows host).
Außerdem, wenn du eine ZIP-Datei mit dem Quellcode einer Android- oder IOS-App erstellst (gehe in den Root-Ordner der Applikation, wähle alles aus und erstelle eine ZIPfile), kann es diese ebenfalls analysieren.

MobSF erlaubt außerdem, diff/Compare Analysen und die Integration von VirusTotal (du musst deinen API-Schlüssel in MobSF/settings.py setzen und es aktivieren: VT_ENABLED = TRUE VT_API_KEY = <Your API key> VT_UPLOAD = TRUE). Du kannst VT_UPLOAD auch auf False setzen, dann wird der hash statt der Datei upload.

Assisted Dynamic analysis with MobSF

MobSF kann auch sehr hilfreich für dynamische Analyse in Android sein, aber in diesem Fall musst du MobSF und genymotion auf deinem Host installieren (eine VM oder Docker funktioniert nicht). Hinweis: Du musst zuerst eine VM in genymotion starten und dann MobSF.
Der MobSF dynamic analyser kann:

  • Dump application data (URLs, logs, clipboard, screenshots made by you, screenshots made by “Exported Activity Tester”, emails, SQLite databases, XML files, and other created files). All of this is done automatically except for the screenshots, you need to press when you want a screenshot or you need to press “Exported Activity Tester” to obtain screenshots of all the exported activities.
  • Capture HTTPS traffic
  • Use Frida to obtain runtime information

Ab Android versions > 5 wird es automatisch Frida starten und globale proxy-Einstellungen setzen, um den Traffic zu capturen. Es wird nur Traffic der getesteten Applikation erfassen.

Frida

Standardmäßig verwendet es auch einige Frida Scripts, um SSL pinning zu bypassen, root detection und debugger detection zu umgehen und um interessante APIs zu monitoren.
MobSF kann außerdem invoke exported activities, Screenshots davon machen und sie für den Report saven.

Um das dynamische Testing zu starten, drücke den grünen Button: “Start Instrumentation”. Drücke “Frida Live Logs”, um die von den Frida scripts erzeugten Logs zu sehen, und “Live API Monitor”, um alle Aufrufe zu gehookten Methoden, übergebene Argumente und Rückgabewerte zu sehen (dies erscheint nach dem Drücken von “Start Instrumentation”).
MobSF erlaubt es dir auch, eigene Frida scripts zu laden (um die Ergebnisse deiner Frida scripts an MobSF zu senden, benutze die Funktion send()). Es hat auch several pre-written scripts, die du laden kannst (du kannst weitere in MobSF/DynamicAnalyzer/tools/frida_scripts/others/ hinzufügen), wähle sie einfach aus, drücke “Load” und dann “Start Instrumentation” (du wirst die Logs dieser Scripts innerhalb von “Frida Live Logs” sehen können).

Außerdem gibt es einige zusätzliche Frida-Funktionalitäten:

  • Enumerate Loaded Classes: Es gibt alle geladenen Klassen aus
  • Capture Strings: Es gibt alle capture strings während der Nutzung der Applikation aus (sehr noisy)
  • Capture String Comparisons: Sehr nützlich. Es zeigt die 2 Strings, die verglichen wurden, und ob das Ergebnis True oder False war.
  • Enumerate Class Methods: Gib den Klassennamen ein (z. B. “java.io.File”) und es listet alle Methoden der Klasse auf.
  • Search Class Pattern: Suche Klassen nach Pattern
  • Trace Class Methods: Trace eine ganze Klasse (sieh Eingaben und Ausgaben aller Methoden der Klasse). Denk daran, dass MobSF standardmäßig mehrere interessante Android API-Methoden trace`t.

Sobald du das Auxiliary-Modul ausgewählt hast, das du verwenden möchtest, musst du “Start Intrumentation” drücken und du wirst alle Ausgaben in “Frida Live Logs” sehen.

Shell

MobSF bringt dir außerdem eine Shell mit einigen adb commands, MobSF commands, und gängigen shell commands am unteren Rand der dynamic analysis Seite. Einige interessante Befehle:

help
shell ls
activities
exported_activities
services
receivers

HTTP tools

Wenn HTTP-Verkehr erfasst wird, kannst du eine unübersichtliche Ansicht des erfassten Verkehrs im “HTTP(S) Traffic” Bottom sehen oder eine schönere Ansicht im grünen Button “Start HTTPTools”. Über die zweite Option kannst du die captured requests an proxies wie Burp oder Owasp ZAP senden.
Dazu power on Burp –> turn off Intercept –> in MobSB HTTPTools select the request –> press “Send to Fuzzer” –> select the proxy address (http://127.0.0.1:8080\).

Sobald du die dynamische Analyse mit MobSF abgeschlossen hast, kannst du auf “Start Web API Fuzzer” klicken, um HTTP-Requests zu fuzzen und nach Schwachstellen zu suchen.

Tip

Nach einer dynamischen Analyse mit MobSF können die Proxy-Einstellungen fehlerhaft sein und lassen sich nicht über die GUI korrigieren. Du kannst die Proxy-Einstellungen so zurücksetzen:

adb shell settings put global http_proxy :0

Assisted Dynamic Analysis with Inspeckage

Du kannst das Tool von Inspeckage beziehen.
Dieses Tool nutzt einige Hooks, um dir während einer dynamischen Analyse zu zeigen, was in der Anwendung passiert.

Yaazhini

Dies ist ein großartiges Tool, um statische Analysen mit einer GUI durchzuführen

Qark

Dieses Tool ist darauf ausgelegt, nach verschiedenen security related Android application vulnerabilities zu suchen, entweder im source code oder in packaged APKs. Das Tool ist außerdem capable of creating a “Proof-of-Concept” deployable APK und ADB commands, um einige der gefundenen Schwachstellen auszunutzen (Exposed activities, intents, tapjacking…). Wie bei Drozer ist es nicht nötig, das Testgerät zu rooten.

pip3 install --user qark  # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java

ReverseAPK

  • Zeigt alle extrahierten Dateien zur einfachen Referenz an
  • Dekompiliert APK-Dateien automatisch in Java- und Smali-Format
  • Analysiert AndroidManifest.xml auf häufige vulnerabilities und Verhalten
  • Statische Quellcode-Analyse auf häufige vulnerabilities und Verhalten
  • Geräteinformationen
  • und mehr
reverse-apk relative/path/to/APP.apk

SUPER Android Analyzer

SUPER ist eine Kommandozeilenanwendung, die unter Windows, MacOS X und Linux verwendet werden kann und .apk Dateien auf der Suche nach Schwachstellen analysiert. Dazu entpackt sie APKs und wendet eine Reihe von Regeln an, um diese Schwachstellen zu erkennen.

Alle Regeln sind in einer rules.json-Datei zentralisiert. Unternehmen oder Tester können eigene Regeln erstellen, um gezielt zu analysieren.

Lade die neuesten Binärdateien von der download page

super-analyzer {apk_file}

StaCoAn

StaCoAn ist ein crossplatform Tool, das Entwickler, bugbounty hunters und ethical hackers bei der Durchführung von static code analysis an mobilen Anwendungen unterstützt.

Das Konzept ist, dass du deine mobile Anwendungsdatei (eine .apk- oder .ipa-Datei) per Drag & Drop auf die StaCoAn-Anwendung ziehst und sie einen visuellen und portablen Bericht für dich erstellt. Du kannst die Einstellungen und wordlists anpassen, um ein personalisiertes Erlebnis zu erhalten.

Herunterladen latest release:

./stacoan

AndroBugs

AndroBugs Framework ist ein Android-Schwachstellen-Analyse-System, das Entwicklern oder hackers hilft, potenzielle Sicherheitslücken in Android-Anwendungen zu finden.
Windows releases

python androbugs.py -f [APK file]
androbugs.exe -f [APK file]

Androwarn

Androwarn ist ein Tool, dessen Hauptziel es ist, potenziell bösartiges Verhalten einer Android-Anwendung zu erkennen und den Benutzer zu warnen.

Die Erkennung erfolgt durch die static analysis des Dalvik bytecode der Anwendung (dargestellt als Smali) mithilfe der androguard Bibliothek.

Dieses Tool sucht nach häufigen Verhaltensweisen von “bösen” Anwendungen wie: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution…

python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3

MARA Framework

MARA ist ein Mobile Application Reverse engineering and Analysis Framework. Es ist ein Tool, das gängige Werkzeuge zur Reverse-Engineering- und Analyse von mobilen Applikationen zusammenführt, um bei Tests von mobilen Anwendungen gegen die OWASP mobile security threats zu unterstützen. Ziel ist es, diese Aufgabe für Mobile-Application-Entwickler und Security-Professionals einfacher und zugänglicher zu machen.

Es kann:

  • Java- und Smali-Code mit verschiedenen Tools extrahieren
  • APKs analysieren mit: smalisca, ClassyShark, androbugs, androwarn, APKiD
  • Private Informationen aus der APK mittels regulärer Ausdrücke extrahieren.
  • Das Manifest analysieren.
  • Gefundene Domains analysieren mit: pyssltest, testssl und whatweb
  • APKs via [apk-deguard.com] deobfuskieren

Koodous

Nützlich zur Erkennung von Malware: https://koodous.com/

Obfuskation/Deobfuskation von Code

Beachte, dass abhängig vom Dienst und der Konfiguration, die du zum Obfuskieren des Codes verwendest, Secrets möglicherweise obfuskiert sind oder nicht.

ProGuard

From Wikipedia: ProGuard is an open source command-line tool that shrinks, optimizes and obfuscates Java code. It is able to optimize bytecode as well as detect and remove unused instructions. ProGuard is free software and is distributed under the GNU General Public License, version 2.

ProGuard wird als Teil des Android SDK verteilt und läuft beim Erstellen der Anwendung im Release-Modus.

DexGuard

Find a step-by-step guide to deobfuscate the apk in https://blog.lexfo.fr/dexguard.html

(From that guide) Last time we checked, the Dexguard mode of operation was:

  • load a resource as an InputStream;
  • feed the result to a class inheriting from FilterInputStream to decrypt it;
  • do some useless obfuscation to waste a few minutes of time from a reverser;
  • feed the decrypted result to a ZipInputStream to get a DEX file;
  • finally load the resulting DEX as a Resource using the loadDex method.

DeGuard

DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.

Du kannst ein obfuskiertes APK auf deren Plattform hochladen.

[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app

This is a LLM tool to find any potential security vulnerabilities in android apps and deobfuscate android app code. Uses Google’s Gemini public API.

Simplify

It is a generic android deobfuscator. Simplify virtually executes an app to understand its behavior and then tries to optimize the code so it behaves identically but is easier for a human to understand. Each optimization type is simple and generic, so it doesn’t matter what the specific type of obfuscation is used.

APKiD

APKiD gives you information about how an APK was made. It identifies many compilers, packers, obfuscators, and other weird stuff. It’s PEiD for Android.

Manual

Read this tutorial to learn some tricks on how to reverse custom obfuscation

Labs

Androl4b

AndroL4b ist eine Android security virtual machine auf ubuntu-mate-Basis und beinhaltet eine Sammlung der neuesten Frameworks, Tutorials und Labs von verschiedenen Security-Geeks und Forschern für reverse engineering und malware analysis.

References

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks