# Android-Anwendungen Pentesting
Erlernen Sie AWS-Hacking von Null auf Held mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking-Einblicke**\
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattform-Updates informiert
**Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!
## Grundlagen von Android-Anwendungen
Es wird dringend empfohlen, diese Seite zu lesen, um mehr über die **wichtigsten Teile im Zusammenhang mit der Android-Sicherheit und die gefährlichsten Komponenten in einer Android-Anwendung** zu erfahren:
{% content-ref url="android-applications-basics.md" %}
[android-applications-basics.md](android-applications-basics.md)
{% endcontent-ref %}
## ADB (Android Debug Bridge)
Dies ist das Hauptwerkzeug, das Sie benötigen, um eine Verbindung zu einem Android-Gerät (emuliert oder physisch) herzustellen.\
**ADB** ermöglicht die Steuerung von Geräten entweder über **USB** oder **Netzwerk** von einem Computer aus. Mit diesem Dienstprogramm können Dateien in beide Richtungen **kopiert**, Apps **installiert** und **deinstalliert**, Shell-Befehle **ausgeführt**, Daten **gesichert**, Logs **gelesen** und andere Funktionen ausgeführt werden.
Werfen Sie einen Blick auf die folgende Liste von [**ADB-Befehlen**](adb-commands.md), um zu lernen, wie adb verwendet wird.
## Smali
Manchmal ist es interessant, den Anwendungscode zu **ändern**, um auf **versteckte Informationen** zuzugreifen (vielleicht gut verschleierte Passwörter oder Flags). Dann könnte es interessant sein, die APK zu dekompilieren, den Code zu ändern und sie neu zu kompilieren.\
[**In diesem Tutorial** können Sie **lernen, wie man eine APK dekompiliert, den Smali-Code ändert und die APK neu kompiliert** mit der neuen Funktionalität](smali-changes.md). Dies könnte als **Alternative für mehrere Tests während der dynamischen Analyse** sehr nützlich sein, die vorgestellt werden. **Denken Sie also immer an diese Möglichkeit**.
## Weitere interessante Tricks
* [Standortfälschung im Play Store](spoofing-your-location-in-play-store.md)
* **APKs herunterladen**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
* APK vom Gerät extrahieren:
```bash
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
```
* Vereinen Sie alle Splits und Basis-APKs mit [APKEditor](https://github.com/REAndroid/APKEditor):
```bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 1 | 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
```
## Statische Analyse
Zunächst sollten Sie zur Analyse einer APK einen Blick auf den Java-Code werfen, indem Sie einen Decompiler verwenden. Bitte [lesen Sie hier, um Informationen zu verschiedenen verfügbaren Decompilern zu finden](apk-decompilers.md).
### Suche nach interessanten Informationen
Durch das Betrachten der **Strings** der APK können Sie nach **Passwörtern**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **API-Schlüsseln**, **Verschlüsselung**, **Bluetooth-UUIDs**, **Tokens** und allem Interessanten suchen... suchen Sie sogar nach Code-Ausführungs-**Hintertüren** oder Authentifizierungs-Hintertüren (fest codierte Admin-Anmeldeinformationen für die App).
**Firebase**
Achten Sie besonders auf **Firebase-URLs** und prüfen Sie, ob sie schlecht konfiguriert sind. [Weitere Informationen dazu, was Firebase ist und wie man es ausnutzen kann, finden Sie hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### Grundlegendes Verständnis der Anwendung - Manifest.xml, strings.xml
Die **Untersuchung der Dateien einer Anwendung \_Manifest.xml_ und _strings.xml_** kann potenzielle Sicherheitslücken aufdecken. Diese Dateien können mithilfe von Decompilern oder durch Umbenennen der APK-Dateierweiterung in .zip und anschließendes Entpacken darauf zugegriffen werden.
Aus dem **Manifest.xml** identifizierte **Sicherheitslücken** umfassen:
- **Debugfähige Anwendungen**: Anwendungen, die als debugfähig festgelegt sind (`debuggable="true"`) in der _Manifest.xml_-Datei, stellen ein Risiko dar, da sie Verbindungen zulassen, die zu Ausnutzungen führen können. Für ein besseres Verständnis, wie man debugfähige Anwendungen ausnutzt, siehe ein Tutorial zum Auffinden und Ausnutzen von debugfähigen Anwendungen auf einem Gerät.
- **Backup-Einstellungen**: Das Attribut `android:allowBackup="false"` sollte explizit für Anwendungen festgelegt werden, die mit sensiblen Informationen umgehen, um nicht autorisierte Datenbackups über adb zu verhindern, insbesondere wenn das USB-Debugging aktiviert ist.
- **Netzwerksicherheit**: Benutzerdefinierte Netzwerksicherheitskonfigurationen (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ können Sicherheitsdetails wie Zertifikatspins und HTTP-Verkehrseinstellungen angeben. Ein Beispiel ist die Zulassung von HTTP-Verkehr für bestimmte Domänen.
- **Exportierte Aktivitäten und Dienste**: Die Identifizierung exportierter Aktivitäten und Dienste im Manifest kann Komponenten hervorheben, die missbraucht werden könnten. Eine weitere Analyse während des dynamischen Tests kann aufzeigen, wie diese Komponenten ausgenutzt werden können.
- **Inhaltsanbieter und Dateianbieter**: Exponierte Inhaltsanbieter könnten unbefugten Zugriff oder Änderung von Daten ermöglichen. Auch die Konfiguration von Dateianbietern sollte überprüft werden.
- **Broadcast-Empfänger und URL-Schemata**: Diese Komponenten könnten für Ausnutzungen genutzt werden, wobei besonders darauf geachtet werden sollte, wie URL-Schemata für Eingabesicherheitslücken verwaltet werden.
- **SDK-Versionen**: Die Attribute `minSdkVersion`, `targetSDKVersion` und `maxSdkVersion` geben die unterstützten Android-Versionen an und unterstreichen die Bedeutung, veraltete, anfällige Android-Versionen aus Sicherheitsgründen nicht zu unterstützen.
Aus der **strings.xml**-Datei können sensible Informationen wie API-Schlüssel, benutzerdefinierte Schemas und andere Entwicklerhinweise entdeckt werden, was die Notwendigkeit einer sorgfältigen Überprüfung dieser Ressourcen unterstreicht.
### Tapjacking
**Tapjacking** ist ein Angriff, bei dem eine **bösartige Anwendung** gestartet wird und sich über einer Opferanwendung positioniert. Sobald sie die Opfer-App sichtbar verdeckt, ist ihre Benutzeroberfläche so gestaltet, dass sie den Benutzer dazu verleitet, mit ihr zu interagieren, während sie die Interaktion an die Opfer-App weitergibt.\
Im Wesentlichen blendet es den Benutzer, ohne dass er weiß, dass er tatsächlich Aktionen auf der Opfer-App ausführt.
Weitere Informationen finden Sie unter:
{% content-ref url="tapjacking.md" %}
[tapjacking.md](tapjacking.md)
{% endcontent-ref %}
### Task-Hijacking
Eine **Aktivität** mit dem **`launchMode`** auf **`singleTask` ohne definiertes `taskAffinity`** ist anfällig für Task-Hijacking. Dies bedeutet, dass eine **Anwendung** installiert werden kann und wenn sie vor der echten Anwendung gestartet wird, könnte sie die Aufgabe der echten Anwendung **übernehmen** (so dass der Benutzer mit der **bösartigen Anwendung interagiert, während er glaubt, die echte zu verwenden**).
Weitere Informationen unter:
{% content-ref url="android-task-hijacking.md" %}
[android-task-hijacking.md](android-task-hijacking.md)
{% endcontent-ref %}
### Unsichere Datenspeicherung
**Interner Speicher**
In Android sind Dateien, die im internen Speicher **gespeichert** sind, ausschließlich für die **App** zugänglich, die sie **erstellt** hat. Diese Sicherheitsmaßnahme wird vom Android-Betriebssystem durchgesetzt und ist im Allgemeinen für die Sicherheitsanforderungen der meisten Anwendungen ausreichend. Manchmal nutzen Entwickler jedoch Modi wie `MODE_WORLD_READABLE` und `MODE_WORLD_WRITABLE`, um Dateien zwischen verschiedenen Anwendungen zu **teilen**. Diese Modi **beschränken jedoch nicht den Zugriff** auf diese Dateien durch andere 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 potenziell für **unerwünschten oder nicht autorisierten Zugriff freigeben**.
2. **Dynamische Analyse:**
* Überprüfen Sie die **Berechtigungen**, die für von der App erstellte Dateien festgelegt sind. Überprüfen Sie insbesondere, ob Dateien **weltweit lesbar oder beschreibbar sind**. Dies kann ein erhebliches Sicherheitsrisiko darstellen, da es jeder **installierten Anwendung** auf dem Gerät, unabhängig von ihrer Herkunft oder Absicht, ermöglichen würde, diese Dateien zu **lesen oder zu ändern**.
**Externer Speicher**
Beim Umgang mit Dateien auf **externem Speicher**, wie SD-Karten, sollten bestimmte Vorsichtsmaßnahmen getroffen werden:
1. **Zugänglichkeit**:
* Dateien auf externem Speicher sind **global lesbar und beschreibbar**. Dies bedeutet, dass jede Anwendung oder Benutzer auf diese Dateien zugreifen kann.
2. **Sicherheitsbedenken**:
* Aufgrund der einfachen Zugänglichkeit wird empfohlen, **keine sensiblen Informationen** auf externem Speicher zu speichern.
* Externer Speicher kann entfernt oder von jeder Anwendung aus zugegriffen werden, was ihn weniger sicher macht.
3. **Umgang mit Daten aus externem Speicher**:
* Führen Sie immer eine **Eingabevalidierung** für Daten durch, die aus externem Speicher abgerufen werden. Dies ist entscheidend, da die Daten aus einer nicht vertrauenswürdigen Quelle stammen.
* Das Speichern von ausführbaren Dateien oder Klassendateien auf externem Speicher für das dynamische Laden wird dringend abgeraten.
* Wenn Ihre Anwendung ausführbare Dateien aus externem Speicher abrufen muss, stellen Sie sicher, dass diese Dateien **signiert und kryptografisch überprüft** werden, bevor sie dynamisch geladen werden. Dieser Schritt ist entscheidend für die Aufrechterhaltung der Sicherheitsintegrität Ihrer Anwendung.
Auf externen Speicher kann unter `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` zugegriffen werden.
{% hint style="info" %}
Ab Android 4.4 (**API 17**) hat die SD-Karte eine Verzeichnisstruktur, die **den Zugriff einer App auf das Verzeichnis einschränkt, das speziell für diese App vorgesehen ist**. Dies verhindert, dass bösartige Anwendungen Lese- oder Schreibzugriff auf Dateien einer anderen App erhalten.
{% endhint %}
**Sensible Daten im Klartext gespeichert**
* **Geteilte Präferenzen**: Android ermöglicht es jeder Anwendung, XML-Dateien einfach im Pfad `/data/data//shared_prefs/` zu speichern, und manchmal ist es möglich, sensible Informationen im Klartext in diesem Ordner zu finden.
* **Datenbanken**: Android ermöglicht es jeder Anwendung, SQLite-Datenbanken einfach im Pfad `/data/data//databases/` zu speichern, und manchmal ist es möglich, sensible Informationen im Klartext in diesem Ordner zu finden.
### Gebrochenes TLS
**Alle Zertifikate akzeptieren**
Aus irgendeinem Grund akzeptieren Entwickler manchmal alle Zertifikate, auch wenn beispielsweise der Hostname nicht mit Zeilen des Codes übereinstimmt wie der folgenden:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
### Kaputte Kryptographie
**Schlechte Schlüsselverwaltungsprozesse**
Einige Entwickler speichern sensible Daten im lokalen Speicher und verschlüsseln sie mit einem im Code festgelegten/vorhersehbaren Schlüssel. Dies sollte vermieden werden, da durch Reverse Engineering Angreifer vertrauliche Informationen extrahieren könnten.
**Verwendung unsicherer und/oder veralteter Algorithmen**
Entwickler sollten keine **veralteten Algorithmen** verwenden, um **Autorisierungsprüfungen** durchzuführen, Daten zu **speichern** oder **senden**. Einige dieser Algorithmen sind: RC4, MD4, MD5, SHA1... Wenn **Hashes** beispielsweise zum Speichern von Passwörtern verwendet werden, sollten hash-brute-force **resistente** Hashes mit Salz verwendet werden.
### Andere Überprüfungen
* Es wird empfohlen, die APK zu **verschleiern**, um es Angreifern schwerer zu machen, den Reverse-Engineering-Prozess durchzuführen.
* Wenn die App sensibel ist (wie Bank-Apps), sollte sie ihre **eigenen Überprüfungen durchführen, um zu sehen, ob das Mobilgerät gerootet ist** und entsprechend handeln.
* Wenn die App sensibel ist (wie Bank-Apps), sollte sie überprüfen, ob ein **Emulator** verwendet wird.
* Wenn die App sensibel ist (wie Bank-Apps), sollte sie **ihre eigene Integrität überprüfen, bevor sie ausgeführt wird**, um zu prüfen, ob sie modifiziert wurde.
* Verwenden Sie [**APKiD**](https://github.com/rednaga/APKiD), um zu überprüfen, welcher Compiler/Packer/Verschleierer zum Erstellen der APK verwendet wurde.
### React Native Anwendung
Lesen Sie die folgende Seite, um zu erfahren, wie Sie einfach auf den JavaScript-Code von React-Anwendungen zugreifen können:
{% content-ref url="react-native-application.md" %}
[react-native-application.md](react-native-application.md)
{% endcontent-ref %}
### Xamarin-Anwendungen
Lesen Sie die folgende Seite, um zu erfahren, wie Sie einfach auf den C#-Code von Xamarin-Anwendungen zugreifen können:
{% content-ref url="../xamarin-apps.md" %}
[xamarin-apps.md](../xamarin-apps.md)
{% endcontent-ref %}
### Supergepackte Anwendungen
Laut diesem [**Blog-Beitrag**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) ist Superpacking ein Meta-Algorithmus, der den Inhalt einer Anwendung in eine einzige Datei komprimiert. Der Blog spricht über 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 aus dem Dateisystem zu sammeln.
### Automatisierte statische Codeanalyse
Das Tool [**mariana-trench**](https://github.com/facebook/mariana-trench) ist in der Lage, **Schwachstellen** zu finden, indem es den **Code** der Anwendung **scannt**. Dieses Tool enthält eine Reihe von **bekannten Quellen** (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 Schäden verursachen könnten) und **Regeln**. Diese Regeln geben die **Kombination** von **Quellen-Sinks** an, die auf eine Schwachstelle hinweisen.
Mit diesem Wissen wird **mariana-trench den Code überprüfen und mögliche Schwachstellen finden**.
### Geleakte Geheimnisse
Eine Anwendung kann Geheimnisse (API-Schlüssel, Passwörter, versteckte URLs, Subdomains...) enthalten, die Sie möglicherweise entdecken können. Sie könnten ein Tool wie [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) verwenden.
### Biometrische Authentifizierung umgehen
{% content-ref url="bypass-biometric-authentication-android.md" %}
[bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md)
{% endcontent-ref %}
### Andere interessante Funktionen
* **Codeausführung**: `Runtime.exec(), ProcessBuilder(), nativer Code:system()`
* **SMS senden**: `sendTextMessage, sendMultipartTestMessage`
* Als `native` deklarierte **native Funktionen**: `public native, System.loadLibrary, System.load`
* [Lesen Sie dies, um zu lernen, **wie Sie native Funktionen umkehren**](reversing-native-libraries.md)
### **Andere Tricks**
{% content-ref url="content-protocol.md" %}
[content-protocol.md](content-protocol.md)
{% endcontent-ref %}
***
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking-Einblicke**\
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeitnachrichten und Einblicke auf dem Laufenden
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounty-Starts und wichtige Plattformupdates informiert
**Treten Sie uns bei** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
***
## Dynamische Analyse
> Zunächst benötigen Sie eine Umgebung, in der Sie die Anwendung und die gesamte Umgebung installieren können (insbesondere Burp CA-Zertifikat, Drozer und Frida). Daher wird ein gerootetes Gerät (emuliert oder nicht) dringend empfohlen.
### Online-Dynamikanalyse
Sie können ein **kostenloses Konto** bei: [https://appetize.io/](https://appetize.io) erstellen. Diese Plattform ermöglicht es Ihnen, APKs **hochzuladen** und **auszuführen**, sodass Sie sehen können, wie sich eine APK verhält.
Sie können sogar die **Protokolle Ihrer Anwendung** im Web einsehen und über **adb** eine Verbindung herstellen.
![](<../../.gitbook/assets/image (831).png>)
Dank der ADB-Verbindung können Sie **Drozer** und **Frida** in den Emulatoren verwenden.
### Lokale Dynamikanalyse
#### Verwendung eines Emulators
* [**Android Studio**](https://developer.android.com/studio) (Sie können **x86**- und **arm**-Geräte erstellen, und gemäß [**diesen** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**neuesten x86**-Versionen **unterstützen ARM-Bibliotheken** ohne die Notwendigkeit eines langsamen ARM-Emulators).
* Erfahren Sie, wie Sie dies auf dieser Seite einrichten:
{% content-ref url="avd-android-virtual-device.md" %}
[avd-android-virtual-device.md](avd-android-virtual-device.md)
{% endcontent-ref %}
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Kostenlose Version:** Personal Edition, Sie müssen ein Konto erstellen. _Es wird empfohlen, die Version **MIT**_ _**VirtualBox** herunterzuladen, um potenzielle Fehler zu vermeiden._)
* [**Nox**](https://es.bignox.com) (Kostenlos, unterstützt jedoch kein Frida oder Drozer).
{% hint style="info" %}
Beim Erstellen eines neuen Emulators auf jeder Plattform gilt: Je größer der Bildschirm ist, desto langsamer wird der Emulator ausgeführt. Wählen Sie also möglichst kleine Bildschirme aus.
{% endhint %}
Um **Google-Dienste** (wie den AppStore) in Genymotion zu **installieren**, müssen Sie auf die rot markierte Schaltfläche im folgenden Bild klicken:
![](<../../.gitbook/assets/image (277).png>)
Beachten Sie auch, dass Sie im **Konfigurationsmenü der Android-VM in Genymotion** den **Bridge Network-Modus** auswählen können (dies ist nützlich, wenn Sie von einer anderen VM aus eine Verbindung zur Android-VM mit den Tools herstellen).
#### Verwendung eines physischen Geräts
Sie müssen die **Debugging**-Optionen aktivieren, und es wäre gut, wenn Sie es **rooten** könnten:
1. **Einstellungen**.
2. (Ab Android 8.0) Wählen Sie **System**.
3. Wählen Sie **Über das Telefon**.
4. Drücken Sie 7 Mal auf **Build-Nummer**.
5. Gehen Sie zurück, und Sie finden die **Entwickleroptionen**.
> Sobald Sie die Anwendung installiert haben, sollten Sie zunächst versuchen, sie zu testen und zu untersuchen, was sie tut, wie sie funktioniert und sich damit vertraut machen.\
> Ich schlage vor, diese anfängliche dynamische Analyse mit MobSF-Dynamikanalyse + pidcat durchzuführen, damit wir lernen können, wie die Anwendung funktioniert, während MobSF eine Menge interessanter Daten erfasst, die Sie später überprüfen können.
### Unbeabsichtigte Datenlecks
**Protokollierung**
Entwickler sollten vorsichtig sein, Debugging-Informationen öffentlich preiszugeben, da dies zu sensiblen Datenlecks führen kann. Die Tools [**pidcat**](https://github.com/JakeWharton/pidcat) und `adb logcat` werden empfohlen, um Anwendungsprotokolle zu überwachen und sensible Informationen zu identifizieren und zu schützen. **Pidcat** wird aufgrund seiner Benutzerfreundlichkeit und Lesbarkeit bevorzugt.
{% hint style="warning" %}
Beachten Sie, dass ab **Android 4.0 und neuer** **Anwendungen nur auf ihre eigenen Protokolle zugreifen können**. Anwendungen können also nicht auf Protokolle anderer Apps zugreifen.\
Dennoch wird empfohlen, **keine sensiblen Informationen zu protokollieren**.
{% endhint %}
**Zwischenspeicherung von Kopieren/Einfügen**
Das auf dem Android basierende Zwischenspeicher-Framework ermöglicht die Kopieren/Einfügen-Funktionalität in Apps, birgt jedoch ein Risiko, da **andere Anwendungen** auf den Zwischenspeicher zugreifen können, was potenziell sensible Daten offenlegen könnte. Es ist entscheidend, die Kopieren/Einfügen-Funktionen für sensible Bereiche einer Anwendung, wie Kreditkartendaten, zu deaktivieren, um Datenlecks zu verhindern.
**Absturzprotokolle**
Wenn eine Anwendung abstürzt und Protokolle speichert, können diese Protokolle Angreifern helfen, insbesondere wenn die Anwendung nicht reverse-engineered werden kann. Um dieses Risiko zu mindern, vermeiden Sie das Protokollieren von Abstürzen, und wenn Protokolle über das Netzwerk übertragen werden müssen, stellen Sie sicher, dass sie über einen SSL-Kanal sicher gesendet werden.
Als Pentester sollten Sie **einen Blick auf diese Protokolle werfen**.
**Analyse-Daten an Dritte gesendet**
Anwendungen integrieren oft Dienste wie Google Adsense, die aufgrund einer falschen Implementierung durch Entwickler unbeabsichtigt **sensible Daten preisgeben** können. Um potenzielle Datenlecks zu identifizieren, empfiehlt es sich, den Datenverkehr der Anwendung abzufangen und nach sensiblen Informationen zu suchen, die an Drittanbieterdienste gesendet werden.
### SQLite-Datenbanken
Die meisten Anwendungen verwenden **interne SQLite-Datenbanken**, um Informationen zu speichern. Während des Pentests sollten Sie einen **Blick** auf die erstellten **Datenbanken**, die Namen der **Tabellen** und **Spalten** sowie alle **gespeicherten Daten** werfen, da Sie möglicherweise **sensible Informationen** finden könnten (was eine Schwachstelle darstellen würde).\
Datenbanken sollten sich unter `/data/data/die.paket.name/databases` befinden, z. B. `/data/data/com.mwr.example.sieve/databases`
Wenn die Datenbank vertrauliche Informationen speichert und **verschlüsselt ist**, Sie jedoch das **Passwort** innerhalb der Anwendung **finden** können, handelt es sich dennoch um eine **Schwachstelle**.
Listen Sie die Tabellen mit `.tables` auf und listen Sie die Spalten der Tabellen mit `.schema ` auf.
### Drozer (Ausnutzen von Aktivitäten, Inhaltanbietern und Diensten)
Aus [Drozer-Dokumentationen](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** ermöglicht 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. die Verwendung des Inter-Process Communication (IPC)-Mechanismus von Android und die Interaktion mit dem zugrunde liegenden Betriebssystem.\
Drozer ist ein nützliches Tool, um exportierte Aktivitäten, exportierte Dienste und Inhaltanbieter auszunutzen, wie Sie in den folgenden Abschnitten erfahren werden.
### Ausnutzen von exportierten Aktivitäten
[**Lesen Sie dies, wenn Sie auffrischen möchten, was eine Android-Aktivität ist.**](android-applications-basics.md#launcher-activity-and-other-activities)\
Denken Sie auch daran, dass der Code einer Aktivität mit der Methode **`onCreate`** beginnt.
**Autorisierungsumgehung**
Wenn eine Aktivität exportiert ist, können Sie deren Bildschirm von einer externen App aus aufrufen. Daher könnten Sie, wenn eine Aktivität mit **sensiblen Informationen** **exportiert** ist, die **Authentifizierungsmechanismen umgehen**, um darauf zuzugreifen.
[Erfahren Sie, wie Sie exportierte Aktivitäten mit Drozer ausnutzen.](drozer-tutorial/#activities)
Sie können auch eine exportierte Aktivität von adb aus starten:
* Paketname ist com.example.demo
* Exportierter Aktivitätsname ist com.example.test.MainActivity
```bash
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 Aktivität als bösartig erkennen, aber aufgrund [dieses](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) ist dies anscheinend nur auf alten Versionen (API-Versionen < 21) gefährlich.
{% hint style="info" %}
Beachten Sie, dass eine Autorisierungsumgehung nicht immer eine Sicherheitslücke darstellt. Es hängt davon ab, wie die Umgehung funktioniert und welche Informationen offengelegt werden.
{% endhint %}
**Leckage sensibler Informationen**
**Aktivitäten können auch Ergebnisse zurückgeben**. Wenn es Ihnen gelingt, eine exportierte und ungeschützte Aktivität zu finden, die die Methode **`setResult`** aufruft und **sensible Informationen zurückgibt**, liegt eine sensible Informationslecks vor.
#### Tapjacking
Wenn Tapjacking nicht verhindert wird, könnten Sie die exportierte Aktivität missbrauchen, um den **Benutzer unerwartete Aktionen ausführen zu lassen**. Weitere Informationen zu [**was Tapjacking ist, finden Sie unter dem Link**](./#tapjacking).
### Ausnutzen von Content Providern - Zugriff auf und Manipulation sensibler Informationen
[**Lesen Sie dies, wenn Sie auffrischen möchten, was ein Content Provider ist.**](android-applications-basics.md#content-provider)\
Content Provider werden im Wesentlichen verwendet, um **Daten zu teilen**. Wenn eine App Content Provider zur Verfügung stellt, können Sie möglicherweise **sensible Daten** daraus extrahieren. Es ist auch interessant, mögliche **SQL-Injections** und **Pfadtraversierungen** zu testen, da sie anfällig sein könnten.
[**Erfahren Sie, wie Sie Content Provider mit Drozer ausnutzen können.**](drozer-tutorial/#content-providers)
### **Ausnutzen von Services**
[**Lesen Sie dies, wenn Sie auffrischen möchten, was ein Service ist.**](android-applications-basics.md#services)\
Denken Sie daran, dass die Aktionen eines Service in der Methode `onStartCommand` beginnen.
Ein Service ist im Grunde etwas, das Daten **empfangen**, sie **verarbeiten** und eine Antwort **zurückgeben** (oder auch nicht) kann. Wenn eine Anwendung einige Services exportiert, sollten Sie den **Code** überprüfen, um zu verstehen, was er tut, und ihn **dynamisch testen**, um vertrauliche Informationen zu extrahieren, Authentifizierungsmaßnahmen zu umgehen usw.\
[**Erfahren Sie, wie Sie Services mit Drozer ausnutzen können.**](drozer-tutorial/#services)
### **Ausnutzen von Broadcast Receivern**
[**Lesen Sie dies, wenn Sie auffrischen möchten, was ein Broadcast Receiver ist.**](android-applications-basics.md#broadcast-receivers)\
Denken Sie daran, dass die Aktionen eines Broadcast Receivers in der Methode `onReceive` beginnen.
Ein Broadcast Receiver wartet auf eine Art von Nachricht. Je nachdem, wie der Empfänger die Nachricht verarbeitet, könnte er anfällig sein.\
[**Erfahren Sie, wie Sie Broadcast Receiver mit Drozer ausnutzen können.**](./#exploiting-broadcast-receivers)
### **Ausnutzen von Schemas / Deep Links**
Sie können Deep Links manuell suchen, Tools wie MobSF oder Skripte wie [dieses hier](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) verwenden.\
Sie können ein deklariertes **Schema** mit **adb** oder einem **Browser** **öffnen**:
{% code overflow="wrap" %}
```bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
```
{% endcode %}
_Beachten Sie, dass Sie den Paketnamen **weglassen können** und das Mobilgerät automatisch die App aufruft, die den Link öffnen soll._
{% code overflow="wrap" %}
```markup
Click mewith alternative
```
{% endcode %}
**Ausgeführter Code**
Um den **Code, der in der App ausgeführt wird**, zu finden, gehen Sie zur Aktivität, die durch den Deeplink aufgerufen wird, und suchen Sie die Funktion **`onNewIntent`**.
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
**Empfindliche Informationen**
Jedes Mal, wenn Sie einen Deeplink finden, überprüfen Sie, ob **keine sensiblen Daten (wie Passwörter) über URL-Parameter übertragen werden**, da eine andere Anwendung den Deeplink **nachahmen und diese Daten stehlen könnte!**
**Parameter im Pfad**
Sie **müssen auch überprüfen, ob ein Deeplink einen Parameter im Pfad** der URL verwendet, wie z.B.: `https://api.example.com/v1/users/{username}`, in diesem Fall können Sie einen Pfadtraversal erzwingen, indem Sie auf etwas wie zugreifen: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Beachten Sie, dass Sie bei Auffinden der richtigen Endpunkte innerhalb der Anwendung möglicherweise eine **Open Redirect** verursachen können (wenn ein Teil des Pfads als Domainname verwendet wird), **Accountübernahme** (wenn Sie Benutzerdetails ohne CSRF-Token ändern können und der verwundbare Endpunkt die richtige Methode verwendet) und andere Schwachstellen. Weitere [Informationen dazu hier](http://dphoeniixx.com/2020/12/13-2/).
**Weitere Beispiele**
Ein [interessanter Bug-Bericht](https://hackerone.com/reports/855618) über Links (_/.well-known/assetlinks.json_).
### Überprüfung und Fehlerbehebung auf Transportschicht
* **Zertifikate werden von Android-Anwendungen nicht immer ordnungsgemäß überprüft**. Es ist üblich, dass diese Anwendungen Warnungen übersehen und selbstsignierte Zertifikate akzeptieren oder in einigen Fällen auf die Verwendung von HTTP-Verbindungen zurückgreifen.
* **Verhandlungen während des SSL/TLS-Handshakes sind manchmal schwach**, wobei unsichere Verschlüsselungssuiten verwendet werden. Diese Schwachstelle macht die Verbindung anfällig für Man-in-the-Middle (MITM)-Angriffe, die es Angreifern ermöglichen, die Daten zu entschlüsseln.
* **Leckage privater Informationen** ist ein Risiko, wenn Anwendungen sich über sichere Kanäle authentifizieren, dann aber über ungesicherte Kanäle für andere Transaktionen kommunizieren. Dieser Ansatz schützt sensible Daten wie Sitzungscookies oder Benutzerdetails nicht vor dem Abfangen durch bösartige Entitäten.
#### Zertifikatsüberprüfung
Wir werden uns auf die **Zertifikatsüberprüfung** konzentrieren. Die Integrität des Serverzertifikats muss überprüft werden, um die Sicherheit zu erhöhen. Dies 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 Serverzertifikaten und zur Behebung von Schwachstellen bietet [**diese Ressource**](https://manifestsecurity.com/android-application-security-part-10/) umfassende Anleitungen.
#### SSL Pinning
SSL Pinning ist eine Sicherheitsmaßnahme, bei der die Anwendung das Serverzertifikat mit einer im Anwendungscode gespeicherten Kopie vergleicht. Diese Methode ist entscheidend, um MITM-Angriffe zu verhindern. Die Implementierung von SSL Pinning wird für Anwendungen, die sensible Informationen verarbeiten, dringend empfohlen.
#### Traffic-Inspektion
Um den HTTP-Verkehr zu inspizieren, ist es erforderlich, das Zertifikat des Proxy-Tools zu **installieren** (z.B. Burp). Ohne Installation dieses Zertifikats könnte der verschlüsselte Verkehr über den Proxy nicht sichtbar sein. Für eine Anleitung zur Installation eines benutzerdefinierten CA-Zertifikats, [**klicken Sie hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Anwendungen, die **API Level 24 und höher** anvisieren, erfordern Änderungen an der Netzwerksicherheitskonfiguration, um das CA-Zertifikat des Proxys zu akzeptieren. Dieser Schritt ist entscheidend für die Inspektion von verschlüsseltem Verkehr. Für Anweisungen zur Änderung der Netzwerksicherheitskonfiguration, [**verweisen Sie auf dieses Tutorial**](make-apk-accept-ca-certificate.md).
#### Umgehen von SSL Pinning
Wenn SSL Pinning implementiert ist, ist es erforderlich, es zu umgehen, um den HTTPS-Verkehr zu inspizieren. Dafür stehen verschiedene Methoden zur Verfügung:
* Automatisches **Ändern** der **APK**, um das SSL-Pinning mit [**apk-mitm**](https://github.com/shroudedcode/apk-mitm) zu **umgehen**. Der größte Vorteil dieser Option ist, dass Sie kein Root benötigen, um das SSL Pinning zu umgehen, aber Sie müssen die Anwendung löschen und die neue installieren, und dies funktioniert nicht immer.
* Sie könnten **Frida** (unten diskutiert) verwenden, um diesen Schutz zu umgehen. Hier finden Sie eine Anleitung zur Verwendung von Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* Sie können auch versuchen, das **SSL Pinning automatisch zu umgehen**, indem Sie [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` verwenden
* Sie können auch versuchen, das **SSL Pinning automatisch zu umgehen**, indem Sie die **MobSF-Dynamikanalyse** verwenden (unten erklärt)
* Wenn Sie der Meinung sind, dass Sie immer noch Datenverkehr erfassen, können Sie versuchen, den Datenverkehr an Burp weiterzuleiten, indem Sie iptables verwenden. Lesen Sie diesen Blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Suche nach gängigen Web-Schwachstellen
Es ist auch wichtig, nach gängigen Web-Schwachstellen in der Anwendung zu suchen. Detaillierte Informationen zur Identifizierung und Behebung dieser Schwachstellen sind über den Rahmen dieser Zusammenfassung hinaus umfassend abgedeckt.
### Frida
[Frida](https://www.frida.re) ist ein dynamisches Instrumentierungstoolkit für Entwickler, Reverse-Engineers und Sicherheitsforscher.\
**Sie können auf die laufende Anwendung zugreifen und Methoden zur Laufzeit anhängen, um das Verhalten zu ändern, Werte zu ändern, Werte zu extrahieren, anderen Code auszuführen...**\
Wenn Sie Android-Anwendungen pentesten möchten, müssen Sie wissen, wie Sie Frida verwenden.
* Lernen Sie, wie Sie Frida verwenden: [**Frida-Tutorial**](frida-tutorial/)
* Einige "GUI" für Aktionen mit Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* Ojection ist großartig, um die Verwendung von Frida zu automatisieren: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* Sie finden einige großartige Frida-Skripte hier: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Versuchen Sie, Anti-Debugging-/Anti-Frida-Mechanismen zu umgehen, indem Sie Frida wie in [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) angegeben laden (Tool [linjector](https://github.com/erfur/linjector-rs))
### **Speicher dumpen - Fridump**
Überprüfen Sie, ob die Anwendung sensible Informationen im Speicher speichert, die sie nicht speichern sollte, wie Passwörter oder Mnemonics.
Mit [**Fridump3**](https://github.com/rootbsd/fridump3) können Sie den Speicher der App dumpen mit:
```bash
# With PID
python3 fridump3.py -u
# With name
frida-ps -Uai
python3 fridump3.py -u ""
```
Das wird den Speicher im ./dump Ordner ablegen, und dort könntest du mit etwas wie folgt grep durchführen:
{% code overflow="wrap" %}
```bash
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]+$"
```
{% endcode %}
### **Sensitive Daten im Keystore**
In Android ist der Keystore der beste Ort, um sensible Daten zu speichern, jedoch ist es mit ausreichenden Berechtigungen immer noch **möglich darauf zuzugreifen**. Da Apps dazu neigen, hier **sensible Daten im Klartext zu speichern**, sollten Pentests dies überprüfen, da ein Root-Benutzer oder jemand mit physischem Zugriff auf das Gerät in der Lage sein könnte, diese Daten zu stehlen.
Auch wenn eine App Daten im Keystore speichert, sollten die Daten verschlüsselt sein.
Um auf die Daten im Keystore zuzugreifen, könnten Sie dieses Frida-Skript verwenden: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
### **Fingerabdruck/Biometrie Umgehung**
Mit dem folgenden Frida-Skript könnte es möglich sein, die **Fingerabdruckauthentifizierung** zu umgehen, die Android-Apps möglicherweise durchführen, um **bestimmte sensible Bereiche zu schützen:**
```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f
```
{% endcode %}
### **Hintergrundbilder**
Wenn Sie eine Anwendung im Hintergrund platzieren, speichert Android eine **Momentaufnahme der Anwendung**, sodass beim Wiederherstellen in den Vordergrund das Bild geladen wird, bevor die App geladen wird, sodass es aussieht, als ob die App schneller geladen wurde.
Wenn diese Momentaufnahme jedoch **sensible Informationen** enthält, könnte jemand, der Zugriff auf die Momentaufnahme hat, diese Informationen **stehlen** (beachten Sie, dass Sie Root-Zugriff benötigen, um darauf zuzugreifen).
Die Momentaufnahmen werden normalerweise unter folgendem Pfad gespeichert: **`/data/system_ce/0/snapshots`**
Android bietet eine Möglichkeit, **das Erfassen von Bildschirmfotos zu verhindern, indem der FLAG\_SECURE** Layout-Parameter festgelegt wird. Durch Verwendung dieses Flags werden die Fensterinhalte als sicher behandelt, sodass sie nicht in Bildschirmfotos erscheinen oder auf nicht sicheren Displays angezeigt werden können.
```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
### **Android-Anwendungsanalysator**
Dieses Tool könnte Ihnen helfen, verschiedene Tools während der dynamischen Analyse zu verwalten: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
### Intent-Injektion
Entwickler erstellen oft Proxy-Komponenten wie Aktivitäten, Dienste und Broadcast-Empfänger, die diese Intents verarbeiten und sie an Methoden wie `startActivity(...)` oder `sendBroadcast(...)` weitergeben, was riskant sein kann.
Die Gefahr besteht darin, dass Angreifer nicht exportierte App-Komponenten auslösen oder auf sensible Inhaltsanbieter zugreifen können, indem sie diese Intents umleiten. Ein bemerkenswertes Beispiel ist die `WebView`-Komponente, die URLs in `Intent`-Objekte über `Intent.parseUri(...)` umwandelt und sie dann ausführt, was potenziell zu bösartigen Intent-Injektionen führen kann.
### Wesentliche Erkenntnisse
* **Intent-Injektion** ähnelt dem Open-Redirect-Problem im Web.
* Exploits beinhalten das Weiterleiten von `Intent`-Objekten als Extras, die zur Ausführung unsicherer Operationen umgeleitet werden können.
* Es kann nicht exportierte Komponenten und Inhaltsanbieter für Angreifer freilegen.
* Die Umwandlung von URL zu `Intent` durch `WebView` kann unbeabsichtigte Aktionen erleichtern.
### Android-Client-seitige Injektionen und andere
Sie kennen wahrscheinlich diese Art von Schwachstellen aus dem Web. Sie müssen bei einer Android-Anwendung besonders vorsichtig sein:
* **SQL-Injektion:** Bei der Arbeit mit dynamischen Abfragen oder Content-Providern stellen Sie sicher, dass Sie parametrisierte Abfragen verwenden.
* **JavaScript-Injektion (XSS):** Stellen Sie sicher, dass JavaScript- und Plugin-Unterstützung für alle WebViews deaktiviert ist (standardmäßig deaktiviert). [Weitere Informationen hier](webview-attacks.md#javascript-enabled).
* **Lokale Dateieinschließung:** WebViews sollten keinen Zugriff auf das Dateisystem haben (standardmäßig aktiviert) - `(webview.getSettings().setAllowFileAccess(false);)`. [Weitere Informationen hier](webview-attacks.md#javascript-enabled).
* **Ewige Cookies:** In mehreren Fällen, wenn die Android-Anwendung die Sitzung beendet, wird das Cookie nicht widerrufen oder es könnte sogar auf der Festplatte gespeichert sein.
* [**Sicheres Flag** in Cookies](../../pentesting-web/hacking-with-cookies/#cookies-flags)
***
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking-Einblicke**\
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeitnachrichten und Einblicke auf dem Laufenden
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert
**Treten Sie uns bei** auf [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
## Automatische Analyse
### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)
**Statische Analyse**
![](<../../.gitbook/assets/image (866).png>)
**Vulnerabilitätsbewertung der Anwendung** mit einem benutzerfreundlichen webbasierten Frontend. Sie können auch eine dynamische Analyse durchführen (aber Sie müssen die Umgebung vorbereiten).
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
```
Beachten Sie, dass MobSF **Android**(apk)**, IOS**(ipa) **und Windows**(apx)-Anwendungen analysieren kann (_Windows-Anwendungen müssen von einem auf einem Windows-Host installierten MobSF analysiert werden_).\
Wenn Sie außerdem eine **ZIP**-Datei mit dem Quellcode einer **Android**- oder einer **IOS**-App erstellen (gehen Sie zum Stammverzeichnis der Anwendung, wählen Sie alles aus und erstellen Sie eine ZIP-Datei), kann sie ebenfalls analysiert werden.
MobSF ermöglicht auch das **Diff/Vergleichen** von Analysen und die Integration von **VirusTotal** (Sie müssen Ihren API-Schlüssel in _MobSF/settings.py_ festlegen und aktivieren: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Sie können auch `VT_UPLOAD` auf `False` setzen, dann wird der **Hash** anstelle der Datei **hochgeladen**.
### Unterstützte dynamische Analyse mit MobSF
**MobSF** kann auch bei der **dynamischen Analyse** in **Android** sehr hilfreich sein, aber in diesem Fall müssen Sie MobSF und **Genymotion** auf Ihrem Host installieren (eine VM oder Docker funktionieren nicht). _Hinweis: Sie müssen zuerst eine VM in Genymotion **starten** und **dann MobSF**._\
Der **MobSF-Dynamikanalysator** kann:
* **Anwendungsdaten ausgeben** (URLs, Protokolle, Zwischenablage, von Ihnen erstellte Screenshots, von "**Exported Activity Tester**" erstellte Screenshots, E-Mails, SQLite-Datenbanken, XML-Dateien und andere erstellte Dateien). All dies erfolgt automatisch, außer den Screenshots, die Sie drücken müssen, wenn Sie einen Screenshot wünschen, oder Sie müssen "**Exported Activity Tester**" drücken, um Screenshots aller exportierten Aktivitäten zu erhalten.
* HTTPS-Verkehr **erfassen**
* **Frida** verwenden, um **Laufzeitinformationen** zu erhalten
Ab Android **Versionen > 5** wird **Frida automatisch gestartet** und die globalen **Proxy**-Einstellungen werden so konfiguriert, dass der Verkehr **erfasst** wird. Es wird nur der Verkehr aus der getesteten Anwendung erfasst.
**Frida**
Standardmäßig werden auch einige Frida-Skripte verwendet, um **SSL-Pinning zu umgehen**, **Root-Erkennung** und **Debugger-Erkennung** sowie **interessante APIs zu überwachen**.\
MobSF kann auch **exportierte Aktivitäten aufrufen**, **Screenshots** davon aufnehmen und sie für den Bericht **speichern**.
Um mit dem dynamischen Testen zu **beginnen**, drücken Sie die grüne Schaltfläche "**Start Instrumentation**". Drücken Sie auf "**Frida Live Logs**", um die von den Frida-Skripten generierten Protokolle zu sehen, und auf "**Live API Monitor**", um alle Aufrufe an gehakte Methoden, übergebene Argumente und zurückgegebene Werte zu sehen (dies erscheint nach dem Drücken von "Start Instrumentation").\
MobSF ermöglicht es Ihnen auch, Ihre eigenen **Frida-Skripte** zu laden (um die Ergebnisse Ihrer Frida-Skripte an MobSF zu senden, verwenden Sie die Funktion `send()`). Es verfügt auch über **mehrere vordefinierte Skripte**, die Sie laden können (Sie können weitere unter `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` hinzufügen), wählen Sie sie einfach aus, drücken Sie "**Load**" und drücken Sie "**Start Instrumentation**" (Sie können die Protokolle dieser Skripte im "**Frida Live Logs**" sehen).
![](<../../.gitbook/assets/image (419).png>)
Darüber hinaus verfügen Sie über einige Hilfs-Frida-Funktionen:
* **Geladene Klassen auflisten**: Es werden alle geladenen Klassen angezeigt
* **Zeichenfolgen erfassen**: Es werden alle erfassten Zeichenfolgen beim Verwenden der Anwendung angezeigt (sehr laut)
* **Zeichenfolgenvergleiche erfassen**: Kann sehr nützlich sein. Es zeigt die **2 verglichenen Zeichenfolgen** und ob das Ergebnis True oder False war.
* **Methoden der Klassen auflisten**: Geben Sie den Klassennamen ein (wie "java.io.File") und es werden alle Methoden der Klasse angezeigt.
* **Klassenmuster suchen**: Klassen nach Muster suchen
* **Klassenmethoden verfolgen**: Eine **ganze Klasse** verfolgen (Eingaben und Ausgaben aller Methoden der Klasse anzeigen). Denken Sie daran, dass MobSF standardmäßig mehrere interessante Android-API-Methoden verfolgt.
Nachdem Sie das Hilfsmodul ausgewählt haben, das Sie verwenden möchten, müssen Sie auf "**Start Intrumentation**" drücken, und Sie sehen alle Ausgaben in "**Frida Live Logs**".
**Shell**
Mobsf bietet Ihnen auch eine Shell mit einigen **adb**-Befehlen, **MobSF-Befehlen** und gängigen **Shell-Befehlen** am unteren Rand der Seite für die dynamische Analyse. Einige interessante Befehle:
```bash
help
shell ls
activities
exported_activities
services
receivers
```
**HTTP-Tools**
Wenn der HTTP-Verkehr erfasst wird, können Sie eine unansehnliche Ansicht des erfassten Verkehrs am unteren Rand von "**HTTP(S) Traffic**" oder eine schönere Ansicht im grünen Bereich von "**Start HTTPTools**" sehen. Von der zweiten Option aus können Sie die **erfassten Anfragen** an **Proxys** wie Burp oder Owasp ZAP **senden**.\
Um dies zu tun, _schalten Sie Burp ein -->_ _schalten Sie Intercept aus --> in MobSB HTTPTools wählen Sie die Anfrage aus_ --> drücken Sie "**An Fuzzer senden**" --> _wählen Sie die Proxy-Adresse_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
Nach Abschluss der dynamischen Analyse mit MobSF können Sie auf "**Start Web API Fuzzer**" drücken, um **HTTP-Anfragen zu fuzz** und nach Schwachstellen zu suchen.
{% hint style="info" %}
Nach Durchführung einer dynamischen Analyse mit MobSF können die Proxy-Einstellungen falsch konfiguriert sein und Sie können sie nicht über die GUI beheben. Sie können die Proxy-Einstellungen wie folgt beheben:
```
adb shell settings put global http_proxy :0
```
{% endhint %}
### Unterstützte dynamische Analyse mit Inspeckage
Sie können das Tool von [**Inspeckage**](https://github.com/ac-pm/Inspeckage) erhalten.\
Dieses Tool verwendet einige **Hooks**, um Sie darüber zu informieren, **was in der Anwendung passiert**, während Sie eine **dynamische Analyse** durchführen.
### [Yaazhini](https://www.vegabird.com/yaazhini/)
Dies ist ein **großartiges Tool zur Durchführung einer statischen Analyse mit einer grafischen Benutzeroberfläche**
![](<../../.gitbook/assets/image (741).png>)
### [Qark](https://github.com/linkedin/qark)
Dieses Tool ist darauf ausgelegt, nach mehreren **sicherheitsrelevanten Schwachstellen von Android-Anwendungen** zu suchen, entweder im **Quellcode** oder in **verpackten APKs**. Das Tool ist auch **in der Lage, ein "Proof-of-Concept" bereitstellbares APK** und **ADB-Befehle** zu erstellen, um einige der gefundenen Schwachstellen auszunutzen (exponierte Aktivitäten, Intents, Tapjacking...). Wie bei Drozer ist es nicht erforderlich, das Testgerät zu rooten.
```bash
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**](https://github.com/1N3/ReverseAPK.git)
* Zeigt alle extrahierten Dateien zur einfachen Referenz an
* Dekompiliert APK-Dateien automatisch in Java- und Smali-Format
* Analysiert AndroidManifest.xml auf häufige Schwachstellen und Verhalten
* Statische Quellcodeanalyse auf häufige Schwachstellen und Verhalten
* Geräteinformationen
* und mehr
```bash
reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPER ist eine Befehlszeilenanwendung, die in Windows, MacOS X und Linux verwendet werden kann, um _.apk_ Dateien auf Schwachstellen zu untersuchen. Dies geschieht durch das Dekomprimieren von APKs und das Anwenden einer Reihe von Regeln zur Erkennung dieser Schwachstellen.
Alle Regeln sind in einer `rules.json`-Datei zentriert, und jedes Unternehmen oder Tester kann seine eigenen Regeln erstellen, um zu analysieren, was sie benötigen.
Laden Sie die neuesten Binärdateien von der [Download-Seite](https://superanalyzer.rocks/download.html) herunter.
```
super-analyzer {apk_file}
```
### [StaCoAn](https://github.com/vincentcox/StaCoAn)
![](<../../.gitbook/assets/image (297).png>)
StaCoAn ist ein plattformübergreifendes Tool, das Entwicklern, Bug-Bounty-Jägern und ethischen Hackern bei der Durchführung einer statischen Codeanalyse von mobilen Anwendungen hilft.
Das Konzept besteht darin, dass Sie Ihre mobile Anwendungsdatei (eine .apk- oder .ipa-Datei) in die StaCoAn-Anwendung ziehen und ablegen, und diese wird einen visuellen und tragbaren Bericht für Sie generieren. Sie können die Einstellungen und Wortlisten anpassen, um eine personalisierte Erfahrung zu erhalten.
Laden Sie die [neueste Version herunter](https://github.com/vincentcox/StaCoAn/releases):
```
./stacoan
```
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
AndroBugs Framework ist ein Android-Schwachstellenanalyse-System, das Entwicklern oder Hackern hilft, potenzielle Sicherheitslücken in Android-Anwendungen zu finden.\
[Windows-Versionen](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
```
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
```
### [Androwarn](https://github.com/maaaaz/androwarn)
**Androwarn** ist ein Tool, dessen Hauptziel es ist, potenziell bösartige Verhaltensweisen zu erkennen und den Benutzer davor zu warnen, die von einer Android-App entwickelt wurden.
Die Erkennung erfolgt durch die **statische Analyse** des Dalvik-Bytecodes der Anwendung, dargestellt als **Smali**, mit der [`androguard`](https://github.com/androguard/androguard) Bibliothek.
Dieses Tool sucht nach **üblichem Verhalten von "schlechten" Anwendungen** wie: Exfiltration von Telekommunikationsidentifikatoren, Abfangen von Audio-/Videoflüssen, Modifikation von PIM-Daten, Ausführung beliebigen Codes...
```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
```
### [MARA Framework](https://github.com/xtiankisutsa/MARA_Framework)
![](<../../.gitbook/assets/image (595).png>)
**MARA** ist ein **M**obile **A**pplication **R**everse Engineering und **A**nalysis Framework. Es ist ein Tool, das gängige Tools für das Reverse Engineering und die Analyse von mobilen Anwendungen zusammenführt, um bei der Prüfung von mobilen Anwendungen gegen die OWASP-Sicherheitsbedrohungen zu helfen. Sein Ziel ist es, diese Aufgabe für mobile Anwendungs-Entwickler und Sicherheitsfachleute einfacher und benutzerfreundlicher zu gestalten.
Es kann:
* Java- und Smali-Code mit verschiedenen Tools extrahieren
* APKs analysieren mit: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
* Private Informationen aus der APK mithilfe von Regexps extrahieren.
* Das Manifest analysieren.
* Gefundene Domains analysieren mit: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) und [whatweb](https://github.com/urbanadventurer/WhatWeb)
* APK über [apk-deguard.com](http://www.apk-deguard.com) deobfuskieren
### Koodous
Nützlich zur Erkennung von Malware: [https://koodous.com/](https://koodous.com)
## Code obfuskieren/deobfuskieren
Beachten Sie, dass je nach dem Service und der Konfiguration, die Sie zum Obfuskieren des Codes verwenden, Geheimnisse obfuskiert sein können oder nicht.
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
Von [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** ist ein Open-Source-Befehlszeilentool, das Java-Code verkleinert, optimiert und obfuskiert. Es kann Bytecode optimieren sowie ungenutzte Anweisungen erkennen und entfernen. ProGuard ist freie Software und wird unter der GNU General Public License, Version 2, verteilt.
ProGuard wird als Teil des Android SDK verteilt und wird beim Erstellen der Anwendung im Release-Modus ausgeführt.
### [DexGuard](https://www.guardsquare.com/dexguard)
Finden Sie eine schrittweise Anleitung zur Deobfuskierung der APK unter [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
(Aus dieser Anleitung) Das letzte Mal, als wir nachgeschaut haben, war der Betriebsmodus von Dexguard:
* Laden einer Ressource als InputStream;
* Das Ergebnis an eine von FilterInputStream abgeleitete Klasse weitergeben, um es zu entschlüsseln;
* Einige nutzlose Obfuskation durchführen, um einem Reverser ein paar Minuten Zeit zu stehlen;
* Das entschlüsselte Ergebnis an einen ZipInputStream weitergeben, um eine DEX-Datei zu erhalten;
* Schließlich die resultierende DEX als Ressource mit der Methode `loadDex` laden.
### [DeGuard](http://apk-deguard.com)
**DeGuard kehrt den Vorgang der Obfuskation um, der von Android-Obfuskationstools durchgeführt wurde. Dies ermöglicht zahlreiche Sicherheitsanalysen, einschließlich Codeinspektion und Vorhersage von Bibliotheken.**
Sie können eine obfuskierte APK auf ihrer Plattform hochladen.
### [Simplify](https://github.com/CalebFenton/simplify)
Es ist ein **generischer Android-Deobfuscator.** Simplify **führt praktisch eine App aus**, um ihr Verhalten zu verstehen, und versucht dann, den Code zu optimieren, damit er sich identisch verhält, aber für einen Menschen einfacher zu verstehen ist. Jede Optimierungsart ist einfach und generisch, daher spielt es keine Rolle, welche spezifische Art der Obfuskation verwendet wird.
### [APKiD](https://github.com/rednaga/APKiD)
APKiD gibt Ihnen Informationen darüber, **wie eine APK erstellt wurde**. Es identifiziert viele **Compiler**, **Packer**, **Obfuskatoren** und andere seltsame Dinge. Es ist [_PEiD_](https://www.aldeid.com/wiki/PEiD) für Android.
### Manuell
[Lesen Sie dieses Tutorial, um einige Tricks zum **Rückgängigmachen der benutzerdefinierten Obfuskation** zu erlernen](manual-deobfuscation.md)
## Labs
### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b ist eine Android-Sicherheitsvirtual Machine auf Basis von Ubuntu-Mate, die die neuesten Frameworks, Tutorials und Labs von verschiedenen Sicherheitsgeeks und Forschern für Reverse Engineering und Malware-Analyse enthält.
## Referenzen
* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Es ist eine großartige Liste von Ressourcen
* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android-Schnellkurs
* [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
* [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
* [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec)
## Noch auszuprobieren
* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking Insights**\
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtigen Plattformupdates informiert
**Treten Sie uns bei** auf [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
Erlernen Sie AWS-Hacking von Null auf Held mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.