.. | ||
exploiting-content-providers.md | ||
README.md |
Tutoriel Drozer
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)!
Autres façons de soutenir HackTricks:
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.
![](/Mirrors/hacktricks/media/commit/8aadf6001beb34fbeaf8d50f1ec328c8b66c51e0/.gitbook/assets/i3.png)
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 $!
{% embed url="https://go.intigriti.com/hacktricks" %}
APK à tester
Certaines parties de ce tutoriel ont été extraites du pdf de documentation 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 le fichier APK de drozer à partir des dernières versions. À l'heure actuelle, il s'agit de ce fichier.
adb install drozer.apk
Démarrage du serveur
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 :
adb forward tcp:31415 tcp:31415
Enfin, lancez l'application et appuyez sur le bouton "ON"
Et connectez-vous :
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 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. drozer exploit list |
payload | Les exploits nécessitent un payload. drozer payload list |
Package
Trouver le nom du package en filtrant par 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
Lisez Manifest :
run app.package.manifest jakhar.aseem.diva
Surface d'attaque du package :
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 : 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
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 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.
{% code overflow="wrap" %}
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
{% endcode %}
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
adb shell am start -n com.example.demo/com.example.test.MainActivity
Fournisseurs de contenu
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:
{% code overflow="wrap" %}
<service android:name=".AuthService" android:exported="true" android:process=":remote"/>
{% endcode %}
À l'intérieur du code, vérifiez la fonction **handleMessage
** qui recevra le message :
Liste des services
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
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)
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 chacun d'eux. Portez une attention particulière à 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érifier 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
Diffusion 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 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.
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 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:
<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'informations
![](/Mirrors/hacktricks/media/commit/8aadf6001beb34fbeaf8d50f1ec328c8b66c51e0/.gitbook/assets/i3.png)
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 $!
{% embed url="https://go.intigriti.com/hacktricks" %}
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres façons de soutenir HackTricks:
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.