Drozer Tutorial
Last updated
Last updated
Conseil de prime de bug: inscrivez-vous sur Intigriti, une plateforme de prime de bug premium créée par des pirates informatiques, pour des pirates informatiques**! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des primes allant jusqu'à 100 000 $!
Sieve (de mrwlabs)
Certaines parties de ce tutoriel ont été extraites du pdf de documentation de Drozer.
Installez le client Drozer sur votre hôte. Téléchargez-le depuis les dernières versions.
Téléchargez et installez le fichier APK de drozer à partir des dernières versions. À l'heure actuelle, il s'agit de ce fichier.
L'agent fonctionne sur le port 31415, nous devons effectuer une redirection de port pour établir la communication entre le client Drozer et l'agent, voici la commande à exécuter :
Enfin, lancez l'application et appuyez sur le bouton "ON"
Et connectez-vous :
Commandes | Description |
Help MODULE | Affiche l'aide du module sélectionné |
list | Affiche une liste de tous les modules drozer qui peuvent être exécutés dans la session en cours. Cela masque les modules pour lesquels vous n'avez pas les autorisations appropriées pour les exécuter. |
shell | Démarre un shell Linux interactif sur l'appareil, dans le contexte de l'Agent. |
clean | Supprime les fichiers temporaires stockés par drozer sur l'appareil Android. |
load | Charge un fichier contenant des commandes drozer et les exécute en séquence. |
module | Trouve et installe des modules drozer supplémentaires depuis Internet. |
unset | Supprime une variable nommée que drozer transmet à tout shell Linux qu'il génère. |
set | Stocke une valeur dans une variable qui sera transmise en tant que variable d'environnement à tout shell Linux généré par drozer. |
shell | Démarre un shell Linux interactif sur l'appareil, dans le contexte de l'Agent. |
run MODULE | Exécute un module drozer |
exploit | Drozer peut créer des exploits à exécuter sur l'appareil. |
payload | Les exploits nécessitent un payload. |
Trouver le nom du package en filtrant par partie du nom:
Informations de base du package :
Lisez Manifest :
Surface d'attaque du package :
Activités : Vous pouvez peut-être démarrer une activité et contourner un type d'autorisation qui devrait vous empêcher de la lancer.
Fournisseurs de contenu : Vous pouvez peut-être accéder à des données privées ou exploiter une vulnérabilité (injection SQL ou traversée de chemin).
Services :
est débogable : En savoir plus
La valeur "android:exported" d'un composant d'activité exporté est définie sur "true" dans le fichier AndroidManifest.xml :
Liste des activités exportées:
Démarrer une activité:
Peut-être pouvez-vous démarrer une activité et contourner un certain type d'autorisation qui devrait vous empêcher de la lancer.
Vous pouvez également démarrer une activité exportée à partir de adb :
Le nom du package est com.example.demo
Le nom de l'activité exportée est com.example.test.MainActivity
Ce post était trop long pour être ici, donc vous pouvez y accéder sur sa propre page ici.
Un service exporté est déclaré dans le Manifest.xml:
À l'intérieur du code, vérifiez la fonction **handleMessage
** qui recevra le message :
Consultez l'aide de drozer pour app.service.send
:
Notez que vous enverrez d'abord les données à l'intérieur de "msg.what", puis "msg.arg1" et "msg.arg2", vous devriez vérifier à l'intérieur du code quelles informations sont utilisées et où.
En utilisant l'option --extra
, vous pouvez envoyer quelque chose interprété par "msg.replyTo", et en utilisant --bundle-as-obj
vous créez un objet avec les détails fournis.
Dans l'exemple suivant :
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
Dans la section d'informations de base sur Android, vous pouvez voir ce qu'est un récepteur de diffusion.
Après avoir découvert ces récepteurs de diffusion, vous devriez vérifier le code de chacun d'eux. Portez une attention particulière à la fonction onReceive
car elle gérera les messages reçus.
Dans cet exemple en abusant du Fournisseur de contenu FourGoats apk, vous pouvez envoyer un SMS arbitraire vers une destination non premium sans demander la permission de l'utilisateur.
Si vous lisez le code, les paramètres "phoneNumber" et "message" doivent être envoyés au Fournisseur de contenu.
Un APK de production ne doit jamais être débogable. Cela signifie que vous pouvez attacher un débogueur Java à l'application en cours d'exécution, l'inspecter en temps réel, définir des points d'arrêt, avancer pas à pas, recueillir des valeurs de variables et même les modifier. InfoSec institute a un excellent article sur comment creuser plus profondément lorsque votre application est débogable et injecter du code en temps d'exécution.
Lorsqu'une application est débogable, elle apparaîtra dans le Manifeste:
Vous pouvez trouver toutes les applications débogables avec Drozer :
Conseil de prime de bug: inscrivez-vous sur Intigriti, une plateforme de prime de bug premium créée par des hackers, pour des hackers! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des primes allant jusqu'à 100 000 $!