Tornar al blog

Interceptant HTTPS en Android Emulat

Introducció

Començaré arrencant una màquina virtual (VM) amb Ubuntu 26.04 neta on farem la instal·lació de tots els paquets.

Instal·lació de Waydroid

Si et vols saltar aquesta secció o fas servir alguna altra distribució de Linux, pots seguir la guia oficial d'instal·lació aquí.

Afegim el repositori de Waydroid

sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash

Instal·lem el paquet

sudo apt update
sudo apt install waydroid -y

Ara ja podem iniciar l'emulador des del menú d'inici o amb waydroid a la terminal.

Durant la primera obertura se'ns demanarà quina imatge del sistema volem instalar. Recomano escollir la versió amb "Aplicacions de Google" si més endavant voldrem fer servir la Play Store per descarregar aplicacions.

Un cop acabada la descàrrega se'ns obrirà la finestra principal des d'on interactuar amb l'emulador.

Instal·lació de mitm-proxy

MiTM-Proxy és un software que ens permet redirigir el transit de xarxa del contenidor d'Android a través d'una xarxa virtual abans de sortir a l'internet. Per tal de mantenir tot ben polit, farem servir un un entorn virtual de Python i instal·larem el proxy a través de pip.

Creem un entorn amb python3 -m venv mitmproxy i l'activem amb source mitmproxy/bin/activate i deixem la terminal oberta. En aquesta finestra gestionarem el proxy.

Instal·lem el proxy amb pip install mitmproxy i un cop acabat podem arrencar-lo amb mitmweb -p 8888 --listen-host 192.168.240.1 on 8888 és el port on s'allotja el panell web del proxy i 192.168.240.1 l'adreça base de la xarxa de l'emulador. Això es pot comprovar amb ip a o ifconfig on veurem:

waydroid0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.240.1  netmask 255.255.255.0  broadcast 192.168.240.255
        inet6 fe80::216:3eff:fe00:1  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:00:00:01  txqueuelen 1000  (Ethernet)
        RX packets 20072  bytes 2245961 (2.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 53932  bytes 209240634 (209.2 MB)
        TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0

Certificat CA

Per tal de poder desencriptar el trànsit entre el dispositiu i el servidor cal afegir a l'emulador un certificat que genera el proxy.

Amb openssl x509 -subject_hash_old -in ~/.mitmproxy/mitmproxy-ca-cert.pem extraiem la primera línia de la sortida de la comanda. Per exemple: c8750f0d. Anotem aquesta cadena.

Ara afegirem el certificat a l'emulador.

Creem la carpeta pare amb sudo mkdir -p /var/lib/waydroid/overlay/system/etc/security/cacerts/ i copiem el certificat amb sudo cp ~/.mitmproxy/mitmproxy-ca-cert.pem /var/lib/waydroid/overlay/system/etc/security/cacerts/c8750f0d.0 tenint en compte que el nom de l'arxiu és el mateix que la cadena que em anotat abans.

Finalment ajustem els permisos: sudo chmod 644 /var/lib/waydroid/overlay/system/etc/security/cacerts/c8750f0d.0.

Sel·lecció Proxy

Un cop el proxy i l'emulador són encesos, només falta dirigir les sol·licituds del sistema cap a aquest. Per a això obrirem una terminal d'Android amb sudo waydroid shell i introduïrem:

  • settings put global http_proxy 192.168.240.1:8888 per passar pel proxy.
  • settings put global http_proxy :0 per desactivar-lo.

Exemple pràctic

  1. Arrenquem el proxy dins l'entorn virtual.
  2. Arrenquem Waydroid i activem el proxy.
  3. Obrim el navegador web d'Android i fem una cerca. Per exemple a https://giuli.cat
  4. Observem el panell web del proxy i veure'm les peticions fetes pel navegador. Enhorabona, has interceptat HTTPS!

Registres

Extra: Instal·lació d'aplicacions XAPK

Darrerament s'ha estès l'ús de paquets XAPK en contra dels estàndards APK, fàcilment instal·lables al nostre contenidor. Per a solventar això emprarem una aplicació que ens permeti instal·lar aquests arxius. Podem descarregar XAPK Managager per a aquesta finalitat. Instal·la l'apk com qualsevol altre des de l'emulador o a través de la CLI de Waydroid. Més info a waydroid help.

Extra: Waydroid en una Màquina Virtual

Per tal de poder fer servir l'emulador en una màquina virtual serà necessari deshabilitar l'acceleració per hardware. Editem l'arxiu /var/lib/waydroid/waydroid.cfg i a l'apartat [properties] afegim:

ro.hardware.gralloc=default
ro.hardware.egl=swiftshader

Finalment apliquem amb sudo waydroid upgrade -o i tornem a arrencar l'emulador.