Installer le certificat Burp
Reading time: 9 minutes
tip
Apprenez et pratiquez le hacking AWS : HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure :
Apprenez et pratiquez le hacking Azure :  HackTricks Training Azure Red Team Expert (AzRTE)
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.
Proxy global via ADB
Configurez un proxy HTTP global pour que toutes les applications routent leur trafic via votre interceptor (Burp/mitmproxy) :
# Set proxy (device/emulator must reach your host IP)
adb shell settings put global http_proxy 192.168.1.2:8080
# Clear proxy
adb shell settings put global http_proxy :0
Astuce : dans Burp, liez votre listener Ă 0.0.0.0 afin que les appareils du LAN puissent se connecter (Proxy -> Options -> Proxy Listeners).
Sur une machine virtuelle
Tout d'abord, vous devez télécharger le certificat Der depuis Burp. Vous pouvez le faire dans Proxy --> Options --> Import / Export CA certificate
.png)
Exportez le certificat au format Der et transformons le en un format que Android pourra 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 :
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 burps, faites :
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 && sleep 2 && 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
Once the machine finish rebooting the burp certificate will be in use by it!
Utiliser Magisc
Si vous avez rooté votre appareil avec Magisc (par exemple un émulateur), et que vous ne pouvez pas suivre les étapes précédentes pour installer le certificat Burp parce que le systÚme de fichiers est en lecture seule et que vous ne pouvez pas le remonter en écriture, il existe une autre méthode.
Expliqué dans this video vous devez :
- Installer un certificat CA : Il suffit de glisser-dĂ©poser le certificat Burp en DER en changeant lâextension en .crtsur le mobile pour quâil soit stockĂ© dans le dossier Downloads, puis aller dansInstall a certificate->CA certificate
.png)
- Vérifiez que le certificat a été correctement enregistré en allant dans Trusted credentials->USER
.png)
- Le rendre approuvĂ© par le systĂšme : TĂ©lĂ©chargez le module Magisc MagiskTrustUserCerts (un fichier .zip), glissez-le dans le tĂ©lĂ©phone, ouvrez lâapplication Magics sur le tĂ©lĂ©phone dans la section Modules, cliquez surInstall from storage, sĂ©lectionnez le module.zipet une fois installĂ© redĂ©marrez le tĂ©lĂ©phone :
.png)
- AprĂšs le redĂ©marrage, allez dans Trusted credentials->SYSTEMet vĂ©rifiez que le certificat Postswigger sây trouve
.png)
Apprendre à créer un module Magisc
Post Android 14
Dans la derniĂšre version Android 14, un changement important a Ă©tĂ© observĂ© dans la gestion des certificats dâautoritĂ© (CA) approuvĂ©s par le systĂšme. Auparavant, ces certificats Ă©taient stockĂ©s dans /system/etc/security/cacerts/, accessibles et modifiables par les utilisateurs disposant des privilĂšges root, ce qui permettait leur application immĂ©diate Ă  lâĂ©chelle du systĂšme. Cependant, avec Android 14, lâemplacement de stockage a Ă©tĂ© dĂ©placĂ© vers /apex/com.android.conscrypt/cacerts, un rĂ©pertoire au sein du chemin /apex, qui est immuable par nature.
Les tentatives de remonter le chemin APEX cacerts en Ă©criture Ă©chouent, car le systĂšme nâautorise pas ce type dâopĂ©ration. MĂȘme les tentatives de dĂ©monter ou de superposer le rĂ©pertoire avec un systĂšme de fichiers temporaire (tmpfs) ne contournent pas lâimmuabilitĂ© ; les applications continuent dâaccĂ©der aux donnĂ©es de certificats dâorigine indĂ©pendamment des modifications au niveau du systĂšme de fichiers. Cette rĂ©silience est due au fait que le montage /apex est configurĂ© avec une propagation PRIVATE, assurant que toute modification au sein du rĂ©pertoire /apex nâaffecte pas les autres processus.
Lâinitialisation dâAndroid implique le processus init, qui, au dĂ©marrage du systĂšme dâexploitation, lance Ă©galement le processus Zygote. Ce processus est responsable du lancement des processus dâapplication avec un nouveau namespace de montage qui inclut un montage privĂ© /apex, isolant ainsi les modifications de ce rĂ©pertoire des autres processus.
NĂ©anmoins, une solution de contournement existe pour ceux qui doivent modifier les certificats CA approuvĂ©s par le systĂšme dans le rĂ©pertoire /apex. Cela implique de remonter manuellement /apex pour supprimer la propagation PRIVATE, rendant ainsi le rĂ©pertoire modifiable. Le processus inclut la copie du contenu de /apex/com.android.conscrypt vers un autre emplacement, le dĂ©montage du rĂ©pertoire /apex/com.android.conscrypt pour Ă©liminer la contrainte en lecture seule, puis la restauration du contenu Ă  son emplacement dâorigine dans /apex. Cette approche nĂ©cessite une action rapide pour Ă©viter des plantages systĂšme. Pour garantir lâapplication de ces changements Ă  lâĂ©chelle du systĂšme, il est recommandĂ© de redĂ©marrer le system_server, ce qui redĂ©marre effectivement toutes les applications et ramĂšne le systĂšme Ă  un Ă©tat cohĂ©rent.
# Create a separate temp directory, to hold the current certificates
# Otherwise, when we add the mount we can't read the current certs anymore.
mkdir -p -m 700 /data/local/tmp/tmp-ca-copy
# Copy out the existing certificates
cp /apex/com.android.conscrypt/cacerts/* /data/local/tmp/tmp-ca-copy/
# Create the in-memory mount on top of the system certs folder
mount -t tmpfs tmpfs /system/etc/security/cacerts
# Copy the existing certs back into the tmpfs, so we keep trusting them
mv /data/local/tmp/tmp-ca-copy/* /system/etc/security/cacerts/
# Copy our new cert in, so we trust that too
mv $CERTIFICATE_PATH /system/etc/security/cacerts/
# Update the perms & selinux context labels
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
# Deal with the APEX overrides, which need injecting into each namespace:
# First we get the Zygote process(es), which launch each app
ZYGOTE_PID=$(pidof zygote || true)
ZYGOTE64_PID=$(pidof zygote64 || true)
# N.b. some devices appear to have both!
# Apps inherit the Zygote's mounts at startup, so we inject here to ensure
# all newly started apps will see these certs straight away:
for Z_PID in "$ZYGOTE_PID" "$ZYGOTE64_PID"; do
if [ -n "$Z_PID" ]; then
nsenter --mount=/proc/$Z_PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
fi
done
# Then we inject the mount into all already running apps, so they
# too see these CA certs immediately:
# Get the PID of every process whose parent is one of the Zygotes:
APP_PIDS=$(
echo "$ZYGOTE_PID $ZYGOTE64_PID" | \
xargs -n1 ps -o 'PID' -P | \
grep -v PID
)
# Inject into the mount namespace of each of those apps:
for PID in $APP_PIDS; do
nsenter --mount=/proc/$PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts &
done
wait # Launched in parallel - wait for completion here
echo "System certificate injected"
Bind-mounting par NSEnter
- Création d'un répertoire inscriptible : Initialement, un répertoire inscriptible est créé en montant un tmpfspar-dessus le répertoire systÚme de certificats non-APEX existant. Ceci est réalisé avec la commande suivante :
mount -t tmpfs tmpfs /system/etc/security/cacerts
- Preparing CA Certificates: AprĂšs la configuration du rĂ©pertoire inscriptible, les CA certificates que l'on souhaite utiliser doivent ĂȘtre copiĂ©s dans ce rĂ©pertoire. Cela peut impliquer de copier les certificats par dĂ©faut depuis /apex/com.android.conscrypt/cacerts/. Il est essentiel d'ajuster les permissions et les SELinux labels de ces certificats en consĂ©quence.
- Bind Mounting for Zygote: En utilisant nsenter, on entre dans le namespace de montage de Zygote. Zygote, étant le processus responsable du lancement des applications Android, nécessite cette étape afin de garantir que toutes les applications lancées désormais utilisent les CA certificates nouvellement configurés. La commande utilisée est:
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
Cela garantit que chaque nouvelle application démarrée respectera la configuration mise à jour des certificats CA.
- Appliquer les changements aux applications en cours d'exécution: Pour appliquer les changements aux applications déjà en cours d'exécution, nsenterest à nouveau utilisé pour entrer dans l'espace de noms de chaque application individuellement et effectuer un bind mount similaire. La commande nécessaire est :
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
- Alternative Approach - Soft Reboot: Une méthode alternative consiste à effectuer le bind mount sur le processus init(PID 1), puis à réaliser un soft reboot du systÚme d'exploitation avec les commandesstop && start. Cette approche propagera les changements dans tous les namespaces, évitant d'avoir à traiter individuellement chaque application en cours d'exécution. Cependant, cette méthode est généralement moins recommandée en raison de l'inconvénient du redémarrage.
Références
- Android 14: Install a system CA certificate on a rooted device
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
tip
Apprenez et pratiquez le hacking AWS : HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure :
Apprenez et pratiquez le hacking Azure :  HackTricks Training Azure Red Team Expert (AzRTE)
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.
 HackTricks
HackTricks