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:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.
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 auf Discord 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 {% 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
- Standortfälschung im Play Store
- APKs herunterladen: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/
- APK vom Gerät extrahieren:
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.
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 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
undmaxSdkVersion
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 {% 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.
- Statische Analyse:
- Stellen Sie sicher, dass die Verwendung von
MODE_WORLD_READABLE
undMODE_WORLD_WRITABLE
sorgfältig geprüft wird. Diese Modi können Dateien potenziell für unerwünschten oder nicht autorisierten Zugriff freigeben.
- 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:
- Zugänglichkeit:
- Dateien auf externem Speicher sind global lesbar und beschreibbar. Dies bedeutet, dass jede Anwendung oder Benutzer auf diese Dateien zugreifen kann.
- 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.
- 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:
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, 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 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 verwenden.
Biometrische Authentifizierung umgehen
{% content-ref url="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
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-Bounties und wichtigen 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, um das Verhalten einer APK zu sehen.
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 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:
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:
- Einstellungen.
- (Ab Android 8.0) Wählen Sie System.
- Wählen Sie Telefoninfo.
- Drücken Sie Build-Nummer 7 Mal.
- 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 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: 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.
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.
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 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.
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 Receiver die Nachricht verarbeitet, könnte er anfällig sein.
Erfahren Sie, wie Sie Broadcast Receiver mit Drozer ausnutzen können.
Ausnutzen von Schemas / Deep Links
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 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
.
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.
Weitere Beispiele
Ein interessanter Bug-Bericht ü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 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.
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.
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.
- Lernen Sie, wie Sie Frida verwenden: Frida-Tutorial
- Einige "GUI" für Aktionen mit Frida: 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/dpnishant/appmon
- Einige großartige Frida-Skripte finden Sie hier: 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 angegeben laden (Tool linjector)
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 %}
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
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" %}
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 ü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
durchWebView
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 Discord bei 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 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).
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:
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\).
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 Ihnen mitzuteilen, 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 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.
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, 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
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. 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, ClassyShark, androbugs, androwarn, APKiD
- Private Informationen aus der APK mithilfe von Regexps extrahieren.
- Das Manifest analysieren.
- Gefundene Domains analysieren mit: pyssltest, testssl und whatweb
- APK über apk-deguard.com deobfuskieren
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 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
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
Labs
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://appsecwiki.com/#/ Es ist eine großartige Liste von Ressourcen
- https://maddiestone.github.io/AndroidAppRE/ Android-Schnellkurs
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
- https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
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 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 und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit htARTE (HackTricks AWS Red Team Expert)!
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.