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:
- Make sure your android instance's sdcard partition is large enough to hold the entire /system (its ~100M) 200M will do.
- Pull out the cacerts.bks file
- Add the certificate to it
- Push it back
- 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
.
- je potřeba mít z http://www.bouncycastle.org/latest_releases.html resp. přímo http://www.bouncycastle.org/download/bcprov-jdk16-145.jar jar soubor nakopírovaný do C:\Program Files (x86)\Java\jre6\lib\ext.
- charles-proxy-ssl-proxying-certificate.crt certifikát je v adresáři kam se instaloval v podsložce docs/.
- 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):
- potřebujeme prvně stáhnout soubor mkfs.yaffs2.arm z http://code.google.com/p/android-group-korea/downloads/detail?name=mkfs.yaffs2.arm&can=2&q=
- 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
- Proxy → Proxy Settings → check “Enable Transparent HTTP Proxying”
- Proxy → Proxy Settings → SSL TAB → check “enable SSL Proxying”
- Proxy → Proxy Settings → SSL TAB → click Add button and input * in both fields
- 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
- 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:
- 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