
Schritt-für-Schritt-Anleitung zum Abfangen von HTTP/HTTPS-Datenverkehr unter Android und iOS mit Charles Proxy, einschließlich SSL-Proxying, Installation von CA-Zertifikaten und Vertrauenseinstellungen.
Der Leitfaden für mobile Hacker zu Charles Proxy 👍
Charles ist ein HTTP-Proxy / HTTP-Monitor / Reverse-Proxy, der es Entwicklern ermöglicht, den gesamten HTTP- und SSL-/HTTPS-Datenverkehr zwischen ihrem Rechner und dem Internet anzuzeigen. Dazu gehören Anfragen, Antworten und die HTTP-Header (die Cookies und Caching-Informationen enthalten).
Charles -> Proxy -> SSL Proxying Settings... -> SSL Proxying
Charles -> Help -> SSL Proxying -> Install Charles Root Certificate
Ermitteln Sie die IP-Adresse, auf der Charles lauscht
ifconfig | tr "\n" "→" | tr "\r" "→" | grep -Eo "→en0.*?→en[[:digit:]]" | grep -Eo "inet[[:blank:]+]([0-9]{1,3}\.){3}[0-9]{1,3}" | cut -d' ' -f2 | tr -d "\n" | pbcopy && pbpaste
ifconfig | tr "\n" "→" | tr "\r" "→" | grep -Eo "→en[[:digit:]].*?active→" | grep -v "en0" | grep -Eo "inet[[:blank:]+]([0-9]{1,3}\.){3}[0-9]{1,3}" | cut -d' ' -f2 | tr -d "\n" | pbcopy && pbpaste
Starten Sie Charles und lassen Sie es laufen
Ermitteln Sie die IP-Adresse
Stellen Sie sicher, dass das Android-Gerät dasselbe Netzwerk wie Charles verwendet
Auf dem Android-Gerät
Gehen Sie zu Settings -> Wi-Fi -> klicken Sie lange auf das verwendete Netzwerk -> Modify network -> Advanced options -> Proxy -> Manual
Starten Sie den Browser, besuchen Sie https://chls.pro/ssl, speichern Sie das Zertifikat
Auf dem Computer erscheint ein Dialog mit der Meldung "A connection attempt to Charles has been made from the host ..."; klicken Sie einfach auf die Schaltfläche Allow
<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:android="http://schemas.android.com/apk/res/android">
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
networkSecurityConfig unter application hinzu.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
Nun sollte das SSL-Proxying für die Debug-Build-Variante Ihrer App funktionieren, jedoch nicht für die Release-Build-Variante.
Starten Sie Charles und lassen Sie es laufen
Ermitteln Sie die IP-Adresse
Stellen Sie sicher, dass das iOS-Gerät dasselbe Netzwerk wie Charles verwendet
Auf dem iOS-Gerät
Gehen Sie zu Settings -> Wi-Fi -> tippen Sie auf das verwendete Netzwerk -> setzen Sie HTTP PROXY auf Manual
Starten Sie Safari, besuchen Sie https://chls.pro/ssl (falls es nicht funktioniert, versuchen Sie http://www.charlesproxy.com/getssl), installieren Sie das Zertifikat
Auf dem Computer erscheint ein Dialog mit der Meldung „A connection attempt to Charles has been made from the host ...“, klicken Sie einfach auf die Schaltfläche Allow
Falls Sie über curl in einem Terminal debuggen müssen:
Um Charles als Proxy festzulegen
export http_proxy=http://127.0.0.1:8888 && export https_proxy=$http_proxy
Um den Proxy zu entfernen
unset http_proxy https_proxy