
trueseeing v2.2.11
Scanneur de vulnérabilités d'applications iOS/Android sans décompilation (DC25 demo lab, CB17)
README
trueseeing est un scanner de vulnérabilités rapide, précis et résilient pour les applications iOS/Android. Nous opérons au niveau de la machine virtuelle Dalvik pour Android – c'est-à-dire que nous ne nous soucions pas de savoir si l'application cible est obscurcie ou non.
Capacité
Actuellement, nous pouvons :
- Analyser automatiquement une application à la recherche de vulnérabilités, en produisant un rapport au format HTML/JSON/texte (voir ci-dessous)
- Manipuler l'application pour une analyse plus facile : par exemple, activer le bit de débogage, activer la sauvegarde complète, désactiver l'épinglage TLS, modifier le niveau d'API cible, injecter frida-gadget, etc.
- Examiner l'application pour obtenir des informations générales
- Copier/importer des données de l'application via l'interface de débogage
- Rechercher certains appels/constantes/sput/iput
- Déduire les constantes/ensembles de types pour les arguments d'une opération
- Analyser les appels API/privés pour les codes natifs (NB : vous avez besoin de ts2-disasm-ghidra)
- Analyser les applications iOS pour les vulnérabilités de base (NB : vous avez besoin de ts2-disasm-ghidra)
- Attacher des scripts frida
- Fournir une session interactive frida
- Tracer les appels
- etc.
Installation
Conteneurs
REMARQUE :
- Depuis la version 2.1.9, nous sommes sur ghcr.io. (Docker Hub est quelque peu déprécié)
- Nécessite adbd sur l'hôte pour contrôler les appareils.
Nous fournissons des conteneurs que vous pouvez utiliser directement comme suit ; c'est désormais la méthode recommandée, et la seule si vous êtes sous Windows, pour exécuter :
$ docker run --rm -v $(pwd):/out -v ts2:/cache ghcr.io/alterakey/trueseeing
Si vous souhaitez exécuter sans état, omettez le montage du volume sur /cache (déconseillé pour une utilisation quotidienne ; voir aussi #254) :
$ docker run --rm -v $(pwd):/out ghcr.io/alterakey/trueseeing
Installation avec uv
Alternativement, vous pouvez installer notre package avec uv comme suit. En particulier, la forme d'installation uv tool install peut être utile pour les extensions (voir ci-dessous), car elle leur accorde la plus grande liberté. N'oubliez pas que vous avez besoin d'un JRE et du SDK Android (facultativement ; pour interagir avec les appareils) :
$ uvx trueseeing
$ uv tool install trueseeing
$ trueseeing
Installation avec pip (déprécié)
Bien sûr, vous pouvez toujours utiliser le bon vieux pip si nécessaire :
$ pip install trueseeing
Utilisation
Mode interactif
Vous pouvez analyser/analyser/corriger, etc. les applications de manière interactive – ce qui en fait le choix idéal pour une analyse manuelle :
$ trueseeing target.apk
[+] trueseeing x.y.z
ts[target.apk]> ?
...
ts[target.apk]> i # afficher les informations génériques
...
ts[target.apk]> pf AndroidManifest.xml # afficher le fichier manifeste
...
ts[target.apk]> a # analyser également les ressources
...
ts[target.apk]> /s quelquechose # rechercher du texte
...
ts[target.apk]> as # scanner
...
[+] terminé, 6403 problèmes trouvés (174.94 sec.)
ts[target.apk]> gh report.html
Mode batch
Nous acceptons une commande en ligne (-c) ou un fichier de script (-i) à exécuter avant de vous donner l'invite, ainsi que la possibilité de quitter immédiatement au lieu d'afficher l'invite (-q ; nous n'avons pas besoin d'un tty dans ce mode !).
Vous pouvez utiliser ces fonctionnalités pour effectuer une analyse par lots, comme suit par exemple pour vider les résultats directement sur stderr :
$ trueseeing -eqc 'as' target.apk
Pour générer un rapport au format HTML :
$ trueseeing -eqc 'as;gh report.html' target.apk
Pour générer un rapport au format JSON :
$ trueseeing -eqc 'as;gj report.json' target.apk
Pour obtenir le rapport généré sur stdout, omettez le nom de fichier dans la commande g* finale :
$ trueseeing -eqc 'as;gh' target.apk > report.html
$ trueseeing -eqc 'as;gj' target.apk > report.json
Mode d'analyse non interactif (déprécié)
Traditionnellement, vous pouvez analyser les applications avec la ligne de commande suivante pour obtenir les résultats listés sur stderr :
$ trueseeing --scan target.apk
Pour générer un rapport au format HTML :
$ trueseeing --scan --scan-output report.html target.apk
$ trueseeing --scan --scan-report=html --scan-output report.html target.apk
Pour générer un rapport au format JSON :
$ trueseeing --scan --scan-report=json --scan-output report.json target.apk
Pour obtenir le rapport généré sur stdout, spécifiez '-' comme nom de fichier :
$ 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
Utilisations avancées
Extensions
Vous pouvez écrire vos propres commandes et signatures en tant qu'extensions. Les extensions sont placées sous /ext (conteneurs) ou ~/.trueseeing2/extensions/ (uv/pip). Alternativement, vous pouvez distribuer vos extensions sous forme de wheels. Nous fournissons des informations de type afin que vous puissiez non seulement vérifier les types de vos extensions avec zuban, mais aussi obtenir une assistance décente des IDE. Voir la section Détails pour plus de détails.
Construction
Vous pouvez le construire comme suit :
$ docker build -t trueseeing https://github.com/alterakey/trueseeing.git#main
Pour construire des wheels, vous pouvez le faire avec flit, comme suit :
$ flit build
Pour le bidouiller, vous devez créer un environnement de construction approprié. Avec uv, vous pouvez simplement faire :
$ git clone https://github.com/alterakey/trueseeing.git wc
$ uv sync --locked --dev
$ (... bidouiller ...)
$ uv run trueseeing ... # pour exécuter
$ uv run zuban check trueseeing && uv run ruff trueseeing # pour valider
Success: no issues found in XX source files
$ uv run flit build # pour construire (wheel)
$ docker build -t trueseeing . # pour construire (conteneur)
Avec pip, pour en créer un, commencez par configurer un venv, installez flit et les chaînes d'outils de validation (zuban et ruff) dedans, puis faites tirer les dépendances par flit. En bref, faites quelque chose comme ceci :