Objection Tutoriel
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Introduction
objection - Exploration mobile à l’exécution
Objection est un toolkit d’exploration mobile à l’exécution, propulsé par Frida. Il a été conçu pour aider à évaluer les applications mobiles et leur posture de sécurité sans nécessiter un appareil mobile jailbroken ou rooted.
Note : Il ne s’agit pas d’une forme de jailbreak / root bypass. En utilisant objection, vous restez néanmoins limité par toutes les restrictions imposées par le sandbox applicable auquel vous êtes confronté.
Résumé
Le but de objection est de permettre à l’utilisateur d’appeler les principales actions offertes par Frida. Sinon, l’utilisateur devra créer un script distinct pour chaque application qu’il souhaite tester.
Tutoriel
Pour ce tutoriel, j’utiliserai l’APK que vous pouvez télécharger ici :
Ou depuis son dépôt original (download app-release.apk)
Installation
pip3 install objection
Connexion
Faites une connexion ADB régulière et démarrez le serveur frida sur l’appareil (et vérifiez que frida fonctionne à la fois sur le client et le serveur).
Si vous utilisez un rooted device, il est nécessaire de sélectionner l’application que vous voulez tester dans l’option –gadget. Dans ce cas :
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
Actions de base
Toutes les commandes possibles d’objections ne seront pas listées dans ce tutoriel, seulement celles que j’ai trouvées les plus utiles.
Environnement
Certaines informations intéressantes (comme des mots de passe ou des chemins) peuvent se trouver dans l’environnement.
env
.png)
Informations sur Frida
frida
.png)
Téléversement/Téléchargement
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Importer le script frida
import <local path frida-script>
SSLPinning
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Détection de root
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Commande Exec
android shell_exec whoami
Captures d’écran
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
Static analysis made Dynamic
Dans une application réelle, nous devrions connaître toutes les informations découvertes dans cette partie avant d’utiliser objection grâce à static analysis. Quoi qu’il en soit, de cette manière vous pourriez peut‑être voir quelque chose de nouveau car ici vous n’aurez qu’une liste complète de classes, méthodes et objets exportés.
Ceci est aussi utile si, d’une manière ou d’une autre, vous êtes dans l’incapacité d’obtenir un code source lisible de l’application.
Lister les activities, receivers et services
android hooking list activities
.png)
android hooking list services
android hooking list receivers
Frida générera une erreur si aucune n’est trouvée
Obtention de l’activité en cours
android hooking get current_activity
.png)
Rechercher des classes
Commençons par rechercher des classes dans notre application
android hooking search classes asvid.github.io.fridaapp
.png)
Recherche des méthodes d’une classe
Maintenant, extrayons les méthodes à l’intérieur de la classe MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
.png)
Lister les méthodes déclarées d’une classe avec leurs paramètres
Déterminons quels paramètres sont nécessaires pour les méthodes de la classe :
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
.png)
Lister les classes
Vous pouvez aussi lister toutes les classes qui ont été chargées dans l’application courante :
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
Ceci est très utile si vous voulez hook la méthode d’une classe et que vous ne connaissez que le nom de la classe. Vous pouvez utiliser cette fonction pour rechercher quel module possède la classe puis hook la méthode.
Hooking — facile
Hooking (surveiller) une méthode
D’après le source code de l’application, nous savons que la fonction sum() de MainActivity s’exécute toutes les secondes. Essayons de dump toutes les informations possibles chaque fois que la fonction est appelée (arguments, valeur de retour et backtrace) :
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
.png)
Hooking (watching) d’une classe entière
En fait, je trouve toutes les méthodes de la classe MainActivity vraiment intéressantes, alors hook them all. Attention : cela pourrait crash l’application.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
If you play with the application while the class is hooked you will see when each function is being called, its arguments and the return value.
.png)
Changing boolean return value of a function
From the source code you can see that the function checkPin gets a String as argument and returns a boolean. Lets make the function always return true:
.png)
Now, If you write anything in the text box for the PIN code you will see tat anything is valid:
.png)
Class instances
Search for and print live instances of a specific Java class, specified by a fully qualified class name. Out is the result of an attempt at getting a string value for a discovered objection which would typically contain property values for the object.
android heap print_instances <class>
.png)
Keystore/Intents
Vous pouvez manipuler le keystore et les intents en utilisant :
android keystore list
android intents launch_activity
android intent launch_service
Mémoire
Dump
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
Liste
memory list modules
.png)
En bas de la liste, vous pouvez voir frida :
.png)
Voyons ce que frida exporte :
.png)
Recherche/Écriture
Vous pouvez aussi rechercher et écrire dans la mémoire avec objection:
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
SQLite
Vous pouvez utiliser la commande sqlite pour interagir avec les bases de données sqlite.
Quitter
exit
Ce qui me manque dans Objection
- Les méthodes de hooking font parfois planter l’application (c’est aussi dû à Frida).
- Vous ne pouvez pas utiliser les instances des classes pour appeler les fonctions de l’instance. Et vous ne pouvez pas créer de nouvelles instances de classes et les utiliser pour appeler des fonctions.
- Il n’existe pas de raccourci (comme celui pour sslpinnin) pour hooker toutes les méthodes crypto courantes utilisées par l’application afin de voir le texte chiffré, le texte en clair, les keys, les IVs et les algorithmes utilisés.
Références
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks

