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

60 KiB

Android-Anwendungen Pentesting

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Treten Sie dem HackenProof Discord 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 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 {% 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, 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. 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

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:
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.

Suche nach interessanten Informationen

Durch das Betrachten der Strings der APK können Sie nach Passwörtern, URLs (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.

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 {% 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 {% 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.
  1. 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.
  1. 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.
  1. 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/<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:

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, 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 {% 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 {% endcontent-ref %}

Supergepackte Anwendungen

Laut diesem Blog-Beitrag 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 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 verwenden.

Biometrische Authentifizierung umgehen

{% content-ref url="bypass-biometric-authentication-android.md" %} bypass-biometric-authentication-android.md {% endcontent-ref %}

Andere interessante Funktionen

Andere Tricks

{% content-ref url="content-protocol.md" %} content-protocol.md {% endcontent-ref %}


Treten Sie dem HackenProof Discord 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 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/ 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.

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

Lokale Dynamikanalyse

Verwendung eines Emulators

  • Android Studio (Sie können x86- und arm-Geräte erstellen, und gemäß diesen 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 {% endcontent-ref %}

  • Genymotion (Kostenlose Version: Personal Edition, Sie müssen ein Konto erstellen. Es wird empfohlen, die Version MIT VirtualBox herunterzuladen, um potenzielle Fehler zu vermeiden.)
  • Nox (Kostenlos, unterstützt jedoch 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:

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 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 <tabellenname> auf.

Drozer (Ausnutzen von Aktivitäten, Inhaltanbietern und Diensten)

Aus Drozer-Dokumentationen: 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.
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.

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
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 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.

Ausnutzen von Content Providern - Zugriff auf und Manipulation sensibler Informationen

Lesen Sie dies, wenn Sie auffrischen möchten, was ein Content Provider ist.
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.

Ausnutzen von Services

Lesen Sie dies, wenn Sie auffrischen möchten, was ein Service ist.
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.

Ausnutzen von Broadcast Receivern

Lesen Sie dies, wenn Sie auffrischen möchten, was ein Broadcast Receiver ist.
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.

Sie können Deep Links manuell suchen, Tools wie MobSF oder Skripte wie dieses hier verwenden.
Sie können ein deklariertes Schema mit adb oder einem Browser öffnen:

{% code overflow="wrap" %}

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" %}

<!-- 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, 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.

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.

Weitere Beispiele

Ein interessanter Bug-Bericht ü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 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.

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.

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 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/
  • Sie können auch versuchen, das SSL Pinning automatisch zu umgehen, indem Sie objection: 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

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 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.

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 können Sie den Speicher der App dumpen mit:

# 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" %}

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

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:

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.

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

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.
  • Lokale Dateieinschließung: WebViews sollten keinen Zugriff auf das Dateisystem haben (standardmäßig aktiviert) - (webview.getSettings().setAllowFileAccess(false);). Weitere Informationen hier.
  • 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

Treten Sie dem HackenProof Discord 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 und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!

Automatische Analyse

MobSF

Statische Analyse

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).

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 = <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 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).

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:

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\).

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 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

Dies ist ein großartiges Tool zur Durchführung einer statischen Analyse mit einer grafischen Benutzeroberfläche

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.

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

ReverseAPK

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

SUPER Android Analyzer

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 herunter.

super-analyzer {apk_file}

StaCoAn

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:

./stacoan

AndroBugs

AndroBugs Framework ist ein Android-Schwachstellenanalyse-System, das Entwicklern oder Hackern hilft, potenzielle Sicherheitslücken in Android-Anwendungen zu finden.
Windows-Versionen

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

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 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

MARA ist ein Mobile Application Reverse Engineering und Analysis 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:

Koodous

Nützlich zur Erkennung von Malware: 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

Von Wikipedia: 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

Finden Sie eine schrittweise Anleitung zur Deobfuskierung der APK unter 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

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

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

APKiD gibt Ihnen Informationen darüber, wie eine APK erstellt wurde. Es identifiziert viele Compiler, Packer, Obfuskatoren und andere seltsame Dinge. Es ist PEiD für Android.

Manuell

Lesen Sie dieses Tutorial, um einige Tricks zum Rückgängigmachen der benutzerdefinierten Obfuskation zu erlernen

Labs

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

Noch auszuprobieren

Treten Sie dem HackenProof Discord 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 und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: