
Ein Tool zur Automatisierung des langweiligen Prozesses der APK recon
Ein Tool zur Automatisierung des Recon-Prozesses für eine APK-Datei.
Slicer akzeptiert einen Pfad zu einer extrahierten APK-Datei und gibt dann alle Aktivitäten, Receiver und Dienste zurück, die exportiert sind, null-Berechtigungen haben und extern provoziert werden können.
Hinweis: Die APK muss mit jadx oder apktool extrahiert werden.
Warum?
Ich habe vor etwa 3 Wochen (im Juni 2020) mit Bug Bounty angefangen und mich bei Android-Apps bestmöglich bemüht. Aber mir ist aufgefallen, dass es in allen Apps bestimmte Dinge gibt, die ich erledigen muss, bevor ich tiefer eintauche. Daher dachte ich mir, es wäre schön, diesen Prozess mit einem einfachen Tool zu automatisieren.
Warum nicht drozer?
Nun, drozer ist ein anderes Kaliber. Obwohl es alle zugänglichen Komponenten findet, hatte ich es satt, diese Befehle immer wieder auszuführen.
Warum nicht die Automatisierung mit drozer?
Ich habe tatsächlich ein Bash-Skript geschrieben, um bestimmte drozer-Befehle auszuführen, damit ich sie nicht manuell ausführen muss. Aber es gab immer noch einige langweilige Dinge zu erledigen. Wie die Überprüfung der strings.xml auf verschiedene API-Schlüssel, das Testen, ob die Firebase-Datenbank öffentlich zugänglich ist oder ob diese Google-API-Schlüssel ein Cap oder ähnliches für ihre Nutzung eingerichtet haben, und viele andere Dinge.
Warum nicht alle Dateien durchsuchen?
Ich denke, dass ein Tool wie grep oder ripgrep viel schneller wäre, um alle Dateien zu durchsuchen. Wenn Sie also etwas Bestimmtes suchen, ist es besser, diese Tools zu verwenden. Aber wenn Sie denken, dass es etwas gibt, das in allen Android-Dateien überprüft werden sollte, können Sie gerne ein Issue eröffnen.
Überprüfen, ob die APK android:allowbackup auf true gesetzt hat
Überprüfen, ob die APK android:debuggable auf true gesetzt hat.
Alle Aktivitäten, Dienste und Broadcast-Empfänger zurückgeben, die exportiert sind und keine Berechtigung gesetzt haben. Dies wird anhand von zwei Dingen entschieden:
android:exported=true ist in einer der Komponenten vorhanden und es wurde keine Berechtigung gesetzt.Intent-Filter für diese Komponente definiert sind. Wenn ja, bedeutet das, dass die Komponente standardmäßig exportiert ist (dies ist die Regel in der Android-Dokumentation).Überprüfen der Firebase-URL der APK, indem sie mit dem .json-Trick getestet wird.
myapp.firebaseio.com ist, wird geprüft, ob https://myapp.firebaseio.com/.json etwas zurückgibt oder eine Berechtigungsverweigerung ausgibt.Überprüfen, ob die Google-API-Schlüssel öffentlich zugänglich sind oder nicht.
git clone https://github.com/mzfr/slicer
cd slicerpython3 slicer.py -hDie Verwendung ist sehr einfach. Folgende Optionen sind verfügbar:
Informationen aus Manifest und Strings einer APK extrahieren
Verwendung:
slicer [OPTION] [Extrahierte-APK-Verzeichnis]
Optionen:
-d, --dir Pfad zum jadx-Ausgabeverzeichnis
-o, --output Name der Ausgabedatei (noch nicht implementiert)
Ich habe das output-Flag noch nicht implementiert, da ich denke, dass die Ausgabe von slicer in eine YAML-Datei umgeleitet werden kann, um ein einheitliches Format zu erhalten.
python3 slicer.py -d pfad/zur/extrahierten/apk -c config.json
Das Extraktionsmodul zum Extrahieren von URLs und Pfaden stammt von apkurlgrep von @ndelphit
Alle in diesem Tool implementierten Funktionen sind Dinge, die ich in den letzten Wochen gelernt habe. Wenn Sie also glauben, dass es noch viele andere Dinge gibt, die in einer APK überprüft werden sollten, eröffnen Sie bitte ein Issue für diese Funktion, und ich werde mich freuen, sie zu implementieren :)
Wenn Sie möchten, können Sie mir einen Kaffee kaufen:
Duplicate.nicht anwendbar schließen und behaupten, dass der Schlüssel ein Nutzungslimit hat – r/suspiciouslyspecific 😉Andere API-Schlüssel zurückgeben, die in strings.xml und in AndroidManifest.xml vorhanden sind.
Alle Dateinamen im Verzeichnis /res/raw und res/xml auflisten.
Alle URLs und Pfade extrahieren.