
trueseeing v2.2.11
Nicht dekompilierender iOS/Android-App-Schwachstellenscanner (DC25 demo lab, CB17)
README
trueseeing ist ein schneller, genauer und robuster Schwachstellenscanner für iOS-/Android-Apps. Wir arbeiten auf der Dalvik-VM-Ebene für Android – d.h. es ist uns egal, ob die Ziel-App obfuskiert ist oder nicht.
Fähigkeiten
Derzeit können wir:
- Automatisches Scannen der App auf Schwachstellen, Berichterstellung im HTML/JSON/Text-Format (siehe unten)
- Manipulieren der App für eine einfachere Analyse: z.B. Aktivieren des Debug-Bits, Aktivieren der vollständigen Sicherung, Deaktivieren von TLS-Pinning, Manipulieren der Ziel-API-Ebene, Injizieren von frida-gadget usw.
- Untersuchen der App auf allgemeine Informationen
- Kopieren von App-Daten über die Debug-Schnittstelle
- Suche nach bestimmten Aufrufen/Konstanten/sput/iput
- Ableitung von Konstanten/Typensätzen für Argumente von Operationen
- Scannen von API-/privaten Aufrufen auf nativen Code (Hinweis: Sie benötigen ts2-disasm-ghidra)
- Scannen von iOS-Apps auf grundlegende Schwachstellen (Hinweis: Sie benötigen ts2-disasm-ghidra)
- Anhängen von Frida-Skripten
- Bereitstellen einer interaktiven Frida-Sitzung
- Ablaufverfolgung von Aufrufen
- usw.
Installation
Container
HINWEIS:
- Ab Version 2.1.9 sind wir auf ghcr.io. (Docker Hub ist etwas veraltet)
- Erfordert adbd auf dem Host, um Geräte zu steuern.
Wir stellen Container zur Verfügung, damit Sie sie wie folgt sofort nutzen können; dies ist jetzt auch die empfohlene Methode und die einzige Möglichkeit, wenn Sie Windows verwenden, um auszuführen:
$ docker run --rm -v $(pwd):/out -v ts2:/cache ghcr.io/alterakey/trueseeing
Wenn Sie zustandslos ausführen möchten, lassen Sie das Einhängen des Volumes auf /cache weg (für den täglichen Gebrauch jedoch nicht empfohlen; siehe auch #254):
$ docker run --rm -v $(pwd):/out ghcr.io/alterakey/trueseeing
Installation mit uv
Alternativ können Sie unser Paket wie folgt mit uv installieren. Insbesondere die Installationsform uv tool install könnte für Erweiterungen nützlich sein (siehe unten), da sie ihnen die größte Freiheit gewährt. Denken Sie daran, dass Sie eine JRE und ein Android SDK benötigen (optional; um mit Geräten zu arbeiten):
$ uvx trueseeing
$ uv tool install trueseeing
$ trueseeing
Installation mit pip (veraltet)
Natürlich können Sie bei Bedarf immer die gute alte pip verwenden:
$ pip install trueseeing
Verwendung
Interaktiver Modus
Sie können Apps interaktiv scannen/analysieren/patchen usw. – dies ist die ideale Wahl für die manuelle Analyse:
$ trueseeing target.apk
[+] trueseeing x.y.z
ts[target.apk]> ?
...
ts[target.apk]> i # allgemeine Informationen anzeigen
...
ts[target.apk]> pf AndroidManifest.xml # Manifestdatei anzeigen
...
ts[target.apk]> a # Ressourcen ebenfalls analysieren
...
ts[target.apk]> /s something # Text suchen
...
ts[target.apk]> as # scannen
...
[+] done, found 6403 issues (174.94 sec.)
ts[target.apk]> gh report.html
Batch-Modus
Wir akzeptieren einen Inline-Befehl (-c) oder eine Skriptdatei (-i), die ausgeführt wird, bevor wir Ihnen eine Eingabeaufforderung geben, sowie das sofortige Beenden anstelle einer Eingabeaufforderung (-q; in diesem Modus benötigen wir kein tty!).
Sie können die Funktionen verwenden, um einen Batch-Scan durchzuführen, um z.B. Ergebnisse direkt auf stderr auszugeben:
$ trueseeing -eqc 'as' target.apk
Um einen Bericht im HTML-Format zu erstellen:
$ trueseeing -eqc 'as;gh report.html' target.apk
Um einen Bericht im JSON-Format zu erstellen:
$ trueseeing -eqc 'as;gj report.json' target.apk
Um den Bericht in stdout zu erhalten, lassen Sie den Dateinamen im abschließenden g*-Befehl weg:
$ trueseeing -eqc 'as;gh' target.apk > report.html
$ trueseeing -eqc 'as;gj' target.apk > report.json
Nicht-interaktiver Scan-Modus (veraltet)
Traditionell können Sie Apps mit der folgenden Befehlszeile scannen, um Ergebnisse in stderr aufzulisten:
$ trueseeing --scan target.apk
Um einen Bericht im HTML-Format zu erstellen:
$ trueseeing --scan --scan-output report.html target.apk
$ trueseeing --scan --scan-report=html --scan-output report.html target.apk
Um einen Bericht im JSON-Format zu erstellen:
$ trueseeing --scan --scan-report=json --scan-output report.json target.apk
Um den Bericht in stdout zu erhalten, geben Sie '-' als Dateinamen an:
$ trueseeing --scan --scan-output - target.apk > report.html
$ trueseeing --scan --scan-report=html --scan-output - target.apk > report.html
$ trueseeing --scan --scan-report=json --scan-output - target.apk > report.json
Erweiterte Nutzung
Erweiterungen
Sie können Ihre eigenen Befehle und Signaturen als Erweiterungen schreiben. Erweiterungen werden unter /ext (Container) oder ~/.trueseeing2/extensions/ (uv/pip) abgelegt. Alternativ können Sie Ihre Erweiterungen als Wheels verteilen. Wir stellen Typinformationen bereit, sodass Sie Ihre Erweiterungen nicht nur mit zuban typüberprüfen, sondern auch eine ordentliche Unterstützung von IDEs erhalten. Einzelheiten finden Sie im Abschnitt Details.
Erstellung
Sie können es wie folgt erstellen:
$ docker build -t trueseeing https://github.com/alterakey/trueseeing.git#main
Um Wheels zu erstellen, können Sie es mit flit wie folgt tun:
$ flit build
Um daran zu hacken, müssen Sie eine geeignete Build-Umgebung erstellen. Mit uv können Sie einfach Folgendes tun:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ uv sync --locked --dev
$ (... hack ...)
$ uv run trueseeing ... # zum Ausführen
$ uv run zuban check trueseeing && uv run ruff trueseeing # zur Validierung
Success: no issues found in XX source files
$ uv run flit build # zum Erstellen (wheel)
$ docker build -t trueseeing . # zum Erstellen (container)
Mit pip müssen Sie zunächst eine venv einrichten, dort flit und die Validierungstoolchains (zuban und ruff) installieren und flit die Abhängigkeiten ziehen lassen. Kurz gesagt, tun Sie so etwas:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ python3 -m venv wc/.venv
$ source wc/.venv/bin/activate
(.venv) $ pip install flit zuban ruff
(.venv) $ flit install --deps=develop -s
(.venv) $ (... hack ...)
(.venv) $ trueseeing ... # zum Ausführen
(.venv) $ zuban check trueseeing && ruff check trueseeing # zur Validierung
Success: no issues found in XX source files
(.venv) $ flit build # zum Erstellen (wheel)
(.venv) $ docker build -t trueseeing . # zum Erstellen (container)
Details
Schwachstellenklassen
Derzeit können wir die folgenden Schwachstellenklassen erkennen, die größtenteils in OWASP Mobile Top 10 - 2016 abgedeckt sind:
-
Unsachgemäße Plattformnutzung (M1)
- Debuggable
- Unbeabsichtigte Veröffentlichung von Activities, Services, ContentProviders, BroadcastReceivers