hacktricks/mobile-pentesting/android-app-pentesting/README.md

826 lines
60 KiB
Markdown

# Android-Anwendungen Pentesting
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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-Merch**](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.
</details>
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
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 auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
## 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/)
* 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
```
## 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 wie **_**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 (`debuggable="true"`) im _Manifest.xml_ festgelegt sind, 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 festlegen. 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**: Offen gelegte 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 bringt, mit ihr zu interagieren, während sie die Interaktion an die Opfer-App weitergibt.\
Im Wesentlichen blendet es den Benutzer, so dass er nicht 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 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 in `/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, das speziell für diese App vorgesehen ist, **beschränkt**. 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/<packagename>/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/<packagename>/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** zur Durchführung von Autorisierungsprüfungen, zum **Speichern** oder **Senden** von Daten verwenden. 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 überprüft werden, ob ein **Emulator** verwendet wird.
* Wenn die App sensibel ist (wie Bank-Apps), sollte sie **ihre eigene Integrität vor der Ausführung überprüfen**, um festzustellen, 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** angeben, an denen die **Eingabe vom Benutzer kontrolliert wird**), **Sinks** (die dem Tool **gefährliche Stellen** angeben, 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 darin finden**.
### Geheime Informationen durchgesickert
Eine Anwendung kann geheime Informationen (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 %}
***
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
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 wichtigen 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, um das Verhalten einer APK zu sehen.
Sie können sogar **die Protokolle Ihrer Anwendung** im Web einsehen und über **adb** eine Verbindung herstellen.
![](<../../.gitbook/assets/image (60).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 denken Sie daran, dass je größer der Bildschirm ist, desto langsamer wird der Emulator laufen. Wählen Sie also möglichst kleine Bildschirme aus.
{% endhint %}
Um **Google-Dienste** (wie AppStore) in Genymotion zu installieren, müssen Sie auf die rot markierte Schaltfläche des folgenden Bildes klicken:
![](<../../.gitbook/assets/image (200) (1).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 **Telefoninfo**.
4. Drücken Sie **Build-Nummer** 7 Mal.
5. Gehen Sie zurück und Sie finden die **Entwickleroptionen**.
> Sobald Sie die Anwendung installiert haben, sollten Sie als Erstes 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.
### Unerwünschtes Datenleck
**Protokollierung**
Entwickler sollten vorsichtig sein, Debug-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 **neueren Versionen als Android 4.0** **Anwendungen nur auf ihre eigenen Protokolle zugreifen können**. Anwendungen können also nicht auf Protokolle anderer Apps zugreifen.\
Es wird dennoch empfohlen, **keine sensiblen Informationen zu protokollieren**.
{% endhint %}
**Kopieren/Einfügen-Zwischenspeicher-Caching**
Das auf dem Android basierende Zwischenspeicher-Framework ermöglicht die Kopier- und Einfüge-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 Kopier-/Einfüge-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 rückentwickelt 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, ist es ratsam, 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** zur Speicherung von Informationen. 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` wie `/data/data/com.mwr.example.sieve/databases` befinden.
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 <tabellenname>` auf.
### Drozer (Ausnutzung von Aktivitäten, Inhaltanbietern und Diensten)
Aus [Drozer-Dokumentation](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. Androids Inter-Process Communication (IPC)-Mechanismus nutzen und mit dem zugrunde liegenden Betriebssystem interagieren.\
Drozer ist ein nützliches Tool, um exportierte Aktivitäten, exportierte Dienste und Inhaltanbieter auszunutzen, wie Sie in den folgenden Abschnitten erfahren werden.
### Ausnutzung 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 in der Methode **`onCreate`** beginnt.
**Autorisierungsumgehung**
Wenn eine Aktivität exportiert ist, können Sie ihren 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 Schwachstelle 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 Informationsleckage 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 Receiver 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
<!-- 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>
```
{% endcode %}
**Ausgeführter Code**
Um den **Code zu finden, der in der App ausgeführt wird**, gehen Sie zur Aktivität, die vom Deeplink aufgerufen wird, und suchen Sie die Funktion **`onNewIntent`**.
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
**Sensible Informationen**
Jedes Mal, wenn Sie einen Deeplink finden, überprüfen Sie, dass **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, wenn Sie die richtigen Endpunkte innerhalb der Anwendung finden, 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 Fehler bei der Transportebene
* **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 unverschlüsselte 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 gegen eine im Anwendungscode gespeicherte Kopie überprüft. 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 des verschlüsselten Verkehrs. 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)
* Einige großartige Frida-Skripte finden Sie 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 <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
```
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 %}
### **Empfindliche 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**
Mithilfe des folgenden Frida-Skripts könnte es möglich sein, die **Fingerabdruckauthentifizierung** zu umgehen, die Android-Apps möglicherweise durchführen, um **bestimmte sensible Bereiche zu schützen:**
{% code overflow="wrap" %}
```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
```
{% 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 über `Intent.parseUri(...)` in `Intent`-Objekte umwandelt und sie dann ausführt, was potenziell zu bösartigen Intent-Injektionen führen kann.
### Wichtige Erkenntnisse
* **Intent-Injektion** ähnelt dem Open-Redirect-Problem im Web.
* Exploits beinhalten das Weiterleiten von `Intent`-Objekten als Extras, die zu unsicheren Operationen führen können.
* Es kann nicht exportierte Komponenten und Inhaltsanbieter für Angreifer freilegen.
* Die Umwandlung von URLs in `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)
***
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
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** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei 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 (61).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 auch 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 = <Ihr API-Schlüssel>` `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 machen 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**, **Root-Erkennung** und **Debugger-Erkennung** zu **umgehen** und **interessante APIs zu überwachen**.\
MobSF kann auch **exportierte Aktivitäten aufrufen**, **Screenshots** davon aufnehmen und 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 Friday-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 "**Laden**" und drücken Sie "**Start Instrumentation**" (Sie können die Protokolle dieser Skripte im "**Frida Live Logs**" sehen).
![](<../../.gitbook/assets/image (215).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 Klasse auflisten**: Geben Sie den Klassennamen ein (wie "java.io.File") und es werden alle Methoden der Klasse angezeigt.
* **Klassenmuster suchen**: Klassen nach Muster suchen
* **Methoden der Klasse verfolgen**: Verfolgen Sie eine ganze Klasse (sehen Sie Eingaben und Ausgaben aller Methoden der Klasse). Denken Sie daran, dass MobSF standardmäßig mehrere interessante Android-API-Methoden verfolgt.
Sobald 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 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 Datenverkehrs am unteren Rand von "**HTTP(S) Traffic**" oder eine schönere Ansicht im grünen Bereich von "**Start HTTPTools**" sehen. Mit der zweiten Option können Sie die **erfassten Anfragen** an **Proxys** wie Burp oder Owasp ZAP **senden**.\
Um dies zu tun, _schalten Sie Burp ein -->_ _schalten Sie den 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 Ihnen mitzuteilen, **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 (527).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 bereitstellbares APK als "Proof-of-Concept" zu erstellen** und **ADB-Befehle**, 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 (62).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, das hauptsächlich darauf abzielt, potenziell schädliches Verhalten zu erkennen und den Benutzer davor zu warnen, das von einer Android-App entwickelt wurde.
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 (81).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. Das Ziel ist es, diese Aufgabe für mobile App-Entwickler und Sicherheitsfachleute einfacher und benutzerfreundlicher zu gestalten.
Es kann:
* Java- und Smali-Code mithilfe verschiedener 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 Obfuskationen 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 mithilfe 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 und enthält die neuesten Frameworks, Tutorials und Labs von verschiedenen Sicherheitsgeeks und Forschern für Reverse Engineering und Malware-Analyse.
## 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)
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
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 den Herausforderungen und dem Nervenkitzel des Hackens befassen
**Echtzeit-Hack-News**\
Bleiben Sie mit den schnelllebigen Neuigkeiten aus der Welt des Hackens durch Echtzeitnachrichten 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!
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben 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.
</details>