MITM: Sniffování HTTPS

Pro sniffování HTTPS komunikace se hodí program Charles Proxy.

Jeho kořenový certifikát je potřeba dostat do emulátoru mezi uznávané certifikáty, což se provede pomocí změny system.img romky. Postup funguje u verze 2.2, u verze 4.0 jsem nedošel do cíle, ale jít by to mělo taky.

Stručný postup:

  1. Make sure your android instance's sdcard partition is large enough to hold the entire /system (its ~100M) 200M will do.
  2. Pull out the cacerts.bks file
  3. Add the certificate to it
  4. Push it back
  5. Make it persistent (so it works when the instance reboots)

Pozn: xda22 je jméno emulátoru.

Podrobně:

  • spustit emulátor s parametrem partition size:
    emulator -avd xda22 -partition-size 128
  • získat soubor s certifikáty:
    adb pull /system/etc/security/cacerts.bks cacerts.bks
  • přidat vlastní certifikát:
    keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -importcert -trustcacerts -alias somealias -file charles-proxy-ssl-proxying-certificate.crt -noprompt

    . Pokud to dobře proběhlo, tak to potvrdí hláška

    Certificate was added to keystore

    .

  • pro vráceni upraveného souboru prvně potřebujem přemountvoat pro zápis:
    adb remount
  • nastavit práva:
    adb shell chmod 777 /system/etc/security/cacerts.bks 
  • nahrát soubor zpět:
    adb push cacerts.bks /system/etc/security/
  • a nyní musíme zajistit, aby tento upravený soubor zůstal i po restartu emulátoru (a bez restartu se ten soubor nenačte a nebude používat):
    • nahrát ho do emulátoru:
      adb push Downloads/mkfs.yaffs2.arm /data/data/temp/mkfs.yaffs2
    • povolit execute oprávnění:
      adb shell chmod 777 /data/data/temp/mkfs.yaffs2 
    • spustíme si shell:
      adb shell
      • a v něm provedeme:
        /data/data/temp/mkfs.yaffs2 /system /sdcard/system.img 
      • po vytvoření souboru z něj vyskočíme pomocí
        quit
    • z emulátoru dostat system.img:
       adb pull /sdcard/system.img system.img
    • zavřít emulátor
    • překopírovat system.img do složky kde jsou zbylé soubory daného emulátoru, tj, C:\users\user\.android\22xda
  • nakonec spustit emulátor s nastavenou proxynou:
    emulator -avd xda22 -http-proxy http://yourinterfaceip:8888

nastavení charles proxy

HOST - Machine running Charles and hosting the proxy CLIENT – User’s machine generating the traffic you will capture

Host Machine

  1. Proxy → Proxy Settings → check “Enable Transparent HTTP Proxying”
  2. Proxy → Proxy Settings → SSL TAB → check “enable SSL Proxying”
  3. Proxy → Proxy Settings → SSL TAB → click Add button and input * in both fields
  4. Proxy → Access Control Settings → Add your local subnet (ex: 192.168.2.0/24) to authorize all machines on your local network to use the proxy from another machine
  5. It might be advisable to set up the “auto save tool” in charles, this will auto save and rotate the charles logs. http://www.charlesproxy.com/documentation/tools/auto-save/

Client Machine:

  1. Install and permanently accept/trust the charles SSL certificate http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

zdroj:

android/https.txt · Poslední úprava: 07.04.2012 15:04 autor: wladik

Nástroje pro stránku