13 KiB
AVD - Appareil virtuel Android
AVD - Appareil virtuel Android
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Un grand merci à @offsecjay pour son aide lors de la création de ce contenu.
Qu'est-ce que c'est
Android Studio permet de lancer des machines virtuelles Android que vous pouvez utiliser pour tester des APK. Pour les utiliser, vous aurez besoin de :
- Les outils Android SDK - Télécharger ici.
- Ou Android Studio (avec les outils Android SDK) - Télécharger ici.
Sous Windows (dans mon cas), après avoir installé Android Studio, j'ai installé les outils SDK dans : C:\Users\<NomUtilisateur>\AppData\Local\Android\Sdk\tools
JDK
Pour les machines MacOS, je vous recommande d'installer la version suivante pour pouvoir utiliser les commandes CLI mentionnées dans les sections suivantes :
brew install openjdk@8
GUI
Préparer la machine virtuelle
Si vous avez installé Android Studio, vous pouvez simplement ouvrir la vue principale du projet et accéder à : Outils --> Gestionnaire AVD.
Ensuite, cliquez sur Créer un périphérique virtuel, sélectionnez le téléphone que vous souhaitez utiliser et cliquez sur Suivant.
__Dans la vue actuelle, vous allez pouvoir sélectionner et télécharger l'image Android que le téléphone va exécuter :
Sélectionnez-la et cliquez sur Télécharger** (maintenant attendez que l'image soit téléchargée).
**Une fois l'image téléchargée, sélectionnez simplement _**Suivant**_ et _Terminer_.
La machine virtuelle sera créée. Maintenant, à chaque fois que vous accédez au gestionnaire AVD, elle sera présente.
Exécuter la machine virtuelle
Pour la lancer, appuyez simplement sur le bouton Démarrer.
Outil en ligne de commande
Préparer la machine virtuelle
{% hint style="info" %}
Dans les systèmes MacOS, l'exécutable se trouve dans /Users/<nom d'utilisateur>/Library/Android/sdk/tools/bin
{% endhint %}
Tout d'abord, vous devez décider quel téléphone vous voulez utiliser, afin de voir la liste des téléphones possibles, exécutez :
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
id: 0 or "tv_1080p"
Name: Android TV (1080p)
OEM : Google
Tag : android-tv
---------
id: 1 or "tv_720p"
Name: Android TV (720p)
OEM : Google
Tag : android-tv
---------
id: 2 or "wear_round"
Name: Android Wear Round
OEM : Google
Tag : android-wear
---------
id: 3 or "wear_round_chin_320_290"
Name: Android Wear Round Chin
OEM : Google
Tag : android-wear
---------
id: 4 or "wear_square"
Name: Android Wear Square
OEM : Google
Tag : android-wear
---------
id: 5 or "Galaxy Nexus"
Name: Galaxy Nexus
OEM : Google
---------
id: 6 or "Nexus 10"
Name: Nexus 10
OEM : Google
---------
id: 7 or "Nexus 4"
Name: Nexus 4
OEM : Google
---------
id: 8 or "Nexus 5"
Name: Nexus 5
OEM : Google
---------
id: 9 or "Nexus 5X"
Name: Nexus 5X
OEM : Google
Une fois que vous avez décidé du nom de l'appareil que vous souhaitez utiliser, vous devez décider quelle image Android vous souhaitez exécuter sur cet appareil.
Vous pouvez lister toutes les options en utilisant sdkmanager
:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
Et téléchargez celui (ou tous ceux) que vous voulez utiliser avec:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
Une fois que vous avez téléchargé l'image Android que vous souhaitez utiliser, vous pouvez lister toutes les images Android téléchargées avec la commande suivante :
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
----------
id: 1 or "android-28"
Name: Android API 28
Type: Platform
API level: 28
Revision: 6
----------
id: 2 or "android-29"
Name: Android API 29
Type: Platform
API level: 29
Revision: 4
À ce moment, vous avez décidé de l'appareil que vous souhaitez utiliser et vous avez téléchargé l'image Android, donc vous pouvez créer la machine virtuelle en utilisant:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat -v create avd -k "system-images;android-28;google_apis;x86_64" -n "AVD9" -d "Nexus 5X"
Dans la dernière commande, j'ai créé une machine virtuelle nommée "AVD9" en utilisant le dispositif "Nexus 5X" et l'image Android "system-images;android-28;google_apis;x86_64".
Maintenant, vous pouvez lister les machines virtuelles que vous avez créées avec:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list avd
Name: AVD9
Device: Nexus 5X (Google)
Path: C:\Users\cpolo\.android\avd\AVD9.avd
Target: Google APIs (Google Inc.)
Based on: Android API 28 Tag/ABI: google_apis/x86_64
The following Android Virtual Devices could not be loaded:
Name: Pixel_2_API_27
Path: C:\Users\cpolo\.android\avd\Pixel_2_API_27_1.avd
Error: Google pixel_2 no longer exists as a device
Exécuter une machine virtuelle
Nous avons déjà vu comment vous pouvez lister les machines virtuelles créées, mais vous pouvez également les lister en utilisant:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
Vous pouvez simplement exécuter n'importe quelle machine virtuelle créée en utilisant:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
Ou en utilisant des options plus avancées, vous pouvez exécuter une machine virtuelle comme:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Options de ligne de commande
Cependant, il existe de nombreuses options de ligne de commande différentes que vous pouvez utiliser pour lancer une machine virtuelle. Ci-dessous, vous pouvez trouver quelques options intéressantes mais vous pouvez trouver une liste complète ici
Démarrage
-snapshot name
: Démarrer une snapshot de la VM-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
: Lister toutes les snapshots enregistrées
Réseau
-dns-server 192.0.2.0, 192.0.2.255
: Permet d'indiquer les serveurs DNS séparés par des virgules à la VM.-http-proxy 192.168.1.12:8080
: Permet d'indiquer un proxy HTTP à utiliser (très utile pour capturer le trafic à l'aide de Burp)-port 5556
: Définir le numéro de port TCP utilisé pour la console et adb.-ports 5556,5559
: Définir les ports TCP utilisés pour la console et adb.-tcpdump /path/dumpfile.cap
: Capturer tout le trafic dans un fichier
Système
-selinux {disabled|permissive}
: Définir le module de sécurité Linux renforcé sur un système d'exploitation Linux en mode désactivé ou permissif.-timezone Europe/Paris
: Définir le fuseau horaire pour le périphérique virtuel-screen {touch(default)|multi-touch|o-touch}
: Définir le mode d'écran tactile émulé.-writable-system
: Utilisez cette option pour avoir une image système inscriptible pendant votre session d'émulation. Vous devrez également exécuteradb root; adb remount
. Cela est très utile pour installer un nouveau certificat dans le système.
Installer le certificat Burp sur une machine virtuelle
Tout d'abord, vous devez télécharger le certificat Der de Burp. Vous pouvez le faire dans Proxy --> Options --> Importer/Exporter le certificat CA
Exporter le certificat au format Der et le transformer en une forme que Android va pouvoir comprendre. Notez que pour configurer le certificat Burp sur la machine Android dans AVD, vous devez exécuter cette machine avec l'option -writable-system
.
Par exemple, vous pouvez l'exécuter comme suit:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Ensuite, pour configurer le certificat de Burp, faites ce qui suit :
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
mv burp_cacert.pem $CERTHASHNAME #Correct name
adb root && adb remount #Allow to write on /syste
adb push $CERTHASHNAME /sdcard/ #Upload certificate
adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
adb reboot #Now, reboot the machine
Une fois que la machine a fini de redémarrer, le certificat burp sera utilisé par celle-ci !
Prendre une capture d'écran
Vous pouvez utiliser l'interface graphique pour prendre une capture d'écran de la machine virtuelle à tout moment :
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.