12 KiB
Objection Tutorial
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Bug bounty tip: inscrivez-vous pour Intigriti, une plateforme de bug bounty premium créée par des hackers, pour des hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des récompenses allant jusqu'à 100 000 $ !
{% embed url="https://go.intigriti.com/hacktricks" %}
Introduction
objection - Exploration Mobile en Temps Réel
Objection est un outil d'exploration mobile en temps réel, alimenté par Frida. Il a été conçu pour aider à évaluer les applications mobiles et leur posture de sécurité sans avoir besoin d'un appareil mobile jailbreaké ou rooté.
Note : Ce n'est pas une forme de contournement de jailbreak / root. En utilisant objection
, vous êtes toujours limité par toutes les restrictions imposées par le sandbox applicable auquel vous faites face.
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 unique pour chaque application qu'il souhaite tester.
Tutoriel
Pour ce tutoriel, je vais utiliser l'APK que vous pouvez télécharger ici :
{% file src="../../../.gitbook/assets/app-release.zip" %}
Ou depuis son dépôt original (télécharger app-release.apk)
Installation
pip3 install objection
Connection
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 appareil rooté, il est nécessaire de sélectionner l'application que vous souhaitez tester dans l'option --gadget. dans ce cas :
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
Actions de base
Tous les commandes possibles d'objection 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 être trouvées à l'intérieur de l'environnement.
env
Informations sur Frida
frida
Téléchargement/Téléversement
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
Analyse statique rendue dynamique
Dans une application réelle, nous devrions connaître toutes les informations découvertes dans cette partie avant d'utiliser objection grâce à l'analyse statique. Quoi qu'il en soit, de cette manière, vous pourrez peut-être voir quelque chose de nouveau, car ici vous n'aurez qu'une liste complète de classes, de méthodes et d'objets exportés.
Ceci est également utile si, d'une manière ou d'une autre, vous êtes incapable d'obtenir un code source lisible de l'application.
Lister les activités, les récepteurs et les services
android hooking list activities
android hooking list services
android hooking list receivers
Frida lancera une erreur si aucun n'est trouvé
Obtenir l'activité actuelle
android hooking get current_activity
Rechercher des classes
Commençons à chercher des classes dans notre application.
android hooking search classes asvid.github.io.fridaapp
Méthodes de recherche d'une classe
Maintenant, extrayons les méthodes à l'intérieur de la classe MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
Lister les méthodes déclarées d'une classe avec leurs paramètres
Voyons quels paramètres les méthodes de la classe nécessitent :
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Lister les classes
Vous pouvez également lister toutes les classes qui ont été chargées dans l'application actuelle :
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
C'est très utile si vous voulez intercepter la méthode d'une classe et que vous ne connaissez que le nom de la classe. Vous pourriez utiliser cette fonction pour chercher quel module possède la classe et ensuite intercepter sa méthode.
L'interception est facile
Intercepter (surveiller) une méthode
D'après le code source de l'application, nous savons que la fonction sum() de MainActivity est exécutée toutes les secondes. Essayons de dumper 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
Hooking (surveillance) d'une classe entière
En fait, je trouve toutes les méthodes de la classe MainActivity vraiment intéressantes, alors hookons-les toutes. Faites attention, cela pourrait faire planter une 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 chaque fonction est appelée, ses arguments et la valeur de retour.
Changer la valeur de retour booléenne d'une fonction
From the source code you can see that the function checkPin gets a String as argument and returns a boolean. Faisons en sorte que la fonction retourne toujours true :
Now, If you write anything in the text box for the PIN code you will see tat anything is valid:
Instances de classe
Search for and print instances en direct d'une classe Java spécifique, spécifiée par un nom de classe entièrement qualifié. Out is the result of an attempt at getting a string value for a discovered objection which would typically contenir des valeurs de propriété pour l'objet.
android heap print_instances <class>
Keystore/Intents
Vous pouvez jouer avec le keystore et les intents en utilisant :
android keystore list
android intents launch_activity
android intent launch_service
Mémoire
Vidage
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
En bas de la liste, vous pouvez voir frida :
Vérifions ce que frida exporte :
Recherche/Écriture
Vous pouvez également 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.
Exit
exit
Ce qui me manque dans Objection
- Les méthodes de hooking font parfois planter l'application (c'est aussi à cause de 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'y a pas de raccourci (comme celui pour sslpinnin) pour hooker toutes les méthodes cryptographiques courantes utilisées par l'application afin de voir le texte chiffré, le texte en clair, les clés, les IV et les algorithmes utilisés.
Astuce bug bounty : inscrivez-vous sur Intigriti, une plateforme de bug bounty premium créée par des hackers, pour des hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des récompenses allant jusqu'à 100 000 $ !
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
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)
Soutenir HackTricks
- Consultez 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 PRs aux HackTricks et HackTricks Cloud dépôts github.