iPhone Proxy durch Tor
Aufgabenstellung war zu analysieren wie eine iPhone App die Geolocation des iPhones feststellt. Hierzu wollte ich auf der einen Seite die Requests/Responses der App sehen, als auch verschiedene Regionen/Länder über die IP-Adresse simulieren.
Eingesetzte Tools / Software
Aufbau
TOR
Zur erst muss auf dem Mac TOR installiert sein. Durch das Tor-Netzwerk können unterschiedliche IP-Adressen verwendet werden. Falls die Server Applikation die Geolocation über die IP-Adressen feststellt, können so unterschiedliche Standorte auf der Welt simuliert werden. Die Installation geht am einfachsten über einen Package Manager, z.B. mit Homebrew über die Shell:
brew install tor
Im Anschluss daran sollte die TOR Konfigurationsdatei angelegt werden. Einfach die Beispiel Datei von torrc.sample zu torrc kopieren:
cp /usr/local/etc/tor/torrc.sample /usr/local/etc/tor/torrc'
Nun ist Tor Standardmässig konfiguriert und kann gestartet werden:
tor
Der TOR Socket wird nun auf localhost unter dem Port 9050 geöffnet.
… Opening Socks listener on 127.0.0.1:9050 …
External Socks Proxy
Damit die Requests von Charles durch den TOR Socket laufen, muss ein External Socks Proxy eingetragen werden.
HTTP Proxy
Als nächstes wird HTTP Proxy in Charles eingerichtet.
iPhone HTTP Proxy
Dem iPhone muss gesagt werden, das er einen HTTP Proxy nutzen soll.
Der Server in den Proxy Einstellungen ist die IP-Adresse des MacBooks. Nun werden alle HTTP Requests aus dem iPhone über das MacBook durch Charles ins TOR Netzwerk geschickt.
SSL / TLS / HTTPS
Falls der Anbieter der iPhone App einigermassen Verantwortungsbewusst ist, wird er für die Kommunikation der App mit dem Server eine verschlüsselte Verbindung verwenden. Damit wir die Requests in Charles mitlesen können, müssen wir bei uns selber eine MITM-Attack (Man-in-the-Middle-Attack) machen. Zuerst müssen wir auf dem iPhone ein Zertifikat installieren, welches bekundet, dass wir dem Zertifikat von Charles trauen können. Das Zertifikat erhält man einfach direkt hier von Charles. Einfach mit dem iPhone aufrufen und das Zertifikat installieren.
Anschliessend wird in Charles der SSL-Proxy konfiguriert.
Wichtig ist, dass die URL des App-Servers, das heißt zu welchen die App kommuniziert, mit (2) Add zu der Liste hinzugefügt wird und (3) ausgewählt ist. Die URL kann man in Charles herausfinden, denn der Aufruf der Adresse kann ja nicht verschlüsselt werden (ihr könnte den Inhalt eines Briefes verschlüsseln. Doch wenn ihr auch die Adresse verschlüsselt, wird der Postbote nicht wissen wo er diesen einwerfen soll ;-).
Das war es schon – Happy Hacking!