Auf den Schreibtischen von Ermittlern, die Internetstraftaten aufzuklären haben, stapeln sich die konfiszierten Android-Telefone. Wie sie Smartphones hacken, Apps dekompilieren oder gar ein Botnetz aus Androiden aufbauen, das trainieren Strafermittler vorher – zusammen mit einem bestellten Hacker.
Sechs Jahre ist es her, dass in einem Workshop in Freiburg ein als Hacker bekannter IT-Spezialist auftrat, um deutschen Strafverfolgern mal zu zeigen, wie man ein Botnetz baut, wie leicht es schon damals war, einfache Trojaner zu erstellen, und wie die Tools unter dem Namen Ghostnet sogar diplomatische Verwicklungen in Chinas Kampf um Tibet auslösten [1]. Der Hacker Tobi nutzte einen Schulungsraum im Badischen, um innerhalb weniger Stunden mal eben einen Command- und Control-Server aufzusetzen und die Windows-Systeme in willfährige Bots zu verwandeln.
Android ist heute das Ziel
War 2008 das dominante Betriebssystem noch Windows XP, so gilt heute der Fokus von Anwendern, Strafverfolgern und Angreifern ganz klar mobilen Geräten mit dem Linux-Derivat Android. “Der Tatort ist heute weltweit, Schadsoftware bedroht jeden, im Kanzleramt und Smartphone-Besitzer weltweit”, erklärt ein anwesender Strafverfolger.
Auch Ende 2014 hat sich Tobi wieder bereit erklärt, sein Hackerwissen den Behörden zur Verfügung zu stellen. Und wie 2008 zeigt er dafür aussagekräftige Beispiele. War 2008 noch die Programmiersprache C der State of the Art, so erwartet er diesmal von den Teilnehmern, dass sie auch in die Interna von Java eingeweiht und darauf vorbereitet sind, selbst Quelltext in die Hand zu nehmen. Wenig Verständnis zeigt er dafür, dass die meisten der Forensiker diese Voraussetzungen nur rudimentär mitbringen: “Im Alltag brauchen wir das selten”, so der Tenor der Beamten.
“Na, dann code ich halt ein wenig für euch rum, wenn ihr das nicht könnt”, zuckt der Hacker mit den Schultern, schiebt die Kapuze seines Pullis wieder hoch. Derlei “Coden” macht er scheinbar lieber in dunkler Umgebung.
Mit den klassischen forensischen Werkzeugen wie Sleuthkit [2], Log2timeline [3] und dem Bulk_extractor [4] sind die Teilnehmer hingegen vertraut, Googles Android-SDK ist jedoch für viele noch Neuland. Der klassische Pfad zur Datensicherung verlangt aber neue Ansätze [5]: Das gewohnte Ewfacquire ([6], [7]) steht nicht bereit, statisch kompilierte Binaries aus der Forensik für die ARM-Architektur sind nur in geringem Umfang vorhanden. “Back to the Roots” lautet das Motto: Wieder mal sind die Klassiker Dd oder Netcat gefragt.
Mit ihnen lassen sich Images erstellen und über die Android Debug Bridge per TCP-Forwarding aus dem Smartphone ziehen, so wie der Artikel im Linux-Magazin [5] es beschreibt. Doch Tobi hat noch eine bessere Empfehlung im Gepäck (“für die Coder unter euch”). Drozer ([8], Abbildung 1, auch auf der DELUG-DVD) heißt das Tool, das er als Debian-Paket via Torrent (“vom Classroomserver”) für alle zum Download bereitgestellt hat.
Drozer landet auf dem Linux-PC, für das zu testende Android muss der Forensiker nun einen Agenten erstellen und diesen ins Smartphone installieren. Fürs Training reicht ein virtuelles Android, das sich mit dem SDK zusammenstellen lässt. »drozer build agent« legt das passende Apk-File an, das »adb install agent.apk« im Smartphone installiert. “Zuvor müsst ihr aber noch ein Forwarding einrichten”, fügt Tobi an. Das gelingt mit:
adb forward tcp:31415 tcp:31415
Wem das bekannt vorkommt, der erkennt hier bereits die Voraussetzung für das Klonen von Smartphone-Partitionen mit den zuvor erwähnten Dd und Netcat aus dem Artikel [5].
Mit »drozer start agent« startet dann die installierte App aus dem Android-Hauptmenü und verbindet sich mit der Linux-Maschine. Anschließend erhält der Admin die Drozer-Konsole aus Abbildung 1 und kann damit spielerisch Erfahrung sammeln.
Weil die “Cops ja noch etwas Werkzeug zum Spielen brauchen, installieren wir halt noch die Busybox für euch, damit ihr den üblichen Konsolen-Kram wie Grep und so habt”, lästert Tobi ironisch-hilfsbereit, startet »drozer console connect« und tippt folgende Befehle ein:
run tools.setup.busybox run shell.start busybox
Als Erstes erfahren die Kursteilnehmer dann, wie sie eine Liste aller installierten Apps erzeugen und deren Permissions prüfen. Eine Taschenlampen-App, die Zugriff aufs Adressbuch oder das Netzwerk hat oder verlangt, macht sich schließlich verdächtig. Der folgende Befehl gibt etwa die »android.permissions« für das LED-Blitzlicht aus:
run app.package.info -a com.surpax.ledflashlight.panel
Wer jetzt eine solche App aus dem Smartphone herausziehen und analysieren will, braucht weitere Tools, beispielsweise Dex2jar [9] und einen Java-Decompiler, am besten mit einem GUI wie bei JD [10] – nicht zu verwechseln mit dem beliebten Jdownloader, der unter der gleichen Abkürzung firmiert, seine Stärken aber eher in den Kreisen illegaler Filesharer hat.
Die eigene Malware
Tobi hat aber noch mehr im Angebot: “Um echte Schadsoftware zu analysieren, brauchen wir ja auch echte Malware. Ich habe da mal was vorbereitet. […] Wir machen das Ganze mit einem Forensik-Beispiel aus dem Cyber Crime Workshop 2014 in Australien [11], mit dem Memory Dump von dort. Ihr Forensiker könnt das ja mal eben mit Volatility angucken und schnell die Schadsoftware rausziehen.” Der Memory Dump liegt ebenfalls auf der DELUG-DVD, ein Artikel über das Memory-Analysetool Volatility unter [12]. 120 Punkte bekam in dem Challenge der Anwender, der die Aufgabe “Flappy Bird” beherrschte. Dafür musste er die Prozessliste mit Volatility erstellen, Listing 1 zeigt die Lösung.
Listing 1
Prozessliste mit vol.py erstellen
01 # vol.py --profile=LinuxGoldfish_2_6_29ARM -f memory.dmp linux_pslist 02 [...] 03 0xe8ebd000 sh 1255 10061 10061 0x28db4000 2014-02-25 05:12:28 UTC+0000 04 0xe8e60000 android.contacts 1321 10010 10010 0x25b78000 2014-02-25 05:14:43 UTC+0000 05 [...] 06 0xe4e97c00 android.settings 1420 1000 1000 0x24ec4000 2014-02-25 05:16:03 UTC+0000 07 0xf3fef000 sh 1454 0 0 0x28e64000 2014-02-25 05:16:24 UTC+0000 08 0xf3f9ac00 sh 1461 0 0 0x28e58000 2014-02-25 05:16:25 UTC+0000 09 0xe8cb4c00 insmod 1468 0 0 0x28c90000 2014-02-25 05:16:44 UTC+0000 10 [...]
Das Listing zeigt gleich drei »sh« -Befehle – auf einem Smartphone mehr als verdächtig. Zwar wird da Volatility selbst auch darunter sein, aber die Prozesse mit ID 1255 und UID 10061 sollte der Tester genauer untersuchen – spätestens wenn dabei der Linux-Befehl Pstree auf die App Httpmon hinweist. Da das Smartphone nicht zur Verfügung steht, muss die App aus dem Arbeitsspeicher extrahiert werden – Listing 2 zeigt die dafür notwendigen Befehle.
Listing 2
Eine App extrahieren
01 # vol.py --profile=LinuxGoldfish_2_6_29ARM -f memory.dmp linux_dentry_cache > bodyfile 02 # mactime -b bodyfile > filelist.txt 03 # cat filelist | grep -i httpmon.apk 04 124408 ..c. 0 1000 1015 174 Download/[Megafileupload]org.jtb.httpmon.apk 05 Mon Jun 01 2099 23:51:36 124408 .a.. 0 1000 1015 174 Download/[Megafileupload]org.jtb.httpmon.apk 06 [...] 07 # vol.py --profile=LinuxGoldfish_2_6_29ARM -f memory.dmp linux_find_file -F "/mnt/sdcard/Download/[Megafileupload]org.jtb.httpmon.apk" 08 09 Volatility Foundation Volatility Framework 2.4 10 Inode Number Inode File Path 11 ---------------- ---------- --------- 12 174 0xf36d6920 /mnt/sdcard/Download/[Megafileupload]org.jtb.httpmon.apk 13 14 # vol.py --profile=LinuxGoldfish_2_6_29ARM -f memory.dmp linux_find_file -i 0xf36d6920 -O /tmp/httpmon_extracted.apk 15 # unzip /tmp/httpmon_extracted.apk -d /tmp/httpmon 16 ls -l 17 insgesamt 144 18 drwxr-xr-x 4 root root 4096 Nov 17 09:33 ./ 29 drwxrwxrwt 12 hpm hpm 12288 Nov 17 09:33 ../ 20 -rw-r--r-- 1 root root 6264 Nov 27 2010 AndroidManifest.xml 21 -rw-r--r-- 1 root root 98532 Feb 21 2014 classes.dex 22 drwxr-xr-x 2 root root 4096 Nov 17 09:33 META-INF/ 23 drwxr-xr-x 4 root root 4096 Nov 17 09:33 res/ 24 -rw-r--r-- 1 root root 10808 Nov 27 2010 resources.arsc 25 26 # d2j-dex2jar.sh classes.dex 27 # dex2jar classes.dex -> classes-dex2jar.jar
Mit dem Befehl »jd-gui classes-dex2jar.jar« lässt sich nun das Jar-File detailliert bearbeiten – Tobi genauer “die Software für jeden beliebigen Zweck improven”. Hintertüren, Backdoors oder auch ein Client für ein ganzes Botnetz ließen sich so integrieren. Ein böswilliger Angreifer würde die Software dann wieder aufs Smartphone schieben und hoffen, dass der Besitzer das neue Verhalten möglichst lange nicht bemerkt.
Mobiles Botnetz
Tobi springt derweil weiter zu seinem Lieblingsthema: “Das machen wir heute aber nicht mehr, denn jetzt wollen wir erst mal etwas Spaß haben. Ich hab euch da grade mal ein angepasstes Command & Controlcenter mitgebracht, das hab ich von einer französischen Webseite.” Anschließend zeigt er, wie sich die Client-App des Androrat-Projekts (Server und Client auf der DELUG-DVD, zur Sicherheit auf eine einzige, feste IP reduziert) mit dem Server verbindet und fortan fast alle Dienste des Smartphones zur Verfügung stellt.
Standortüberwachung
Provider, IMEI, Rufnummer und vieles mehr sind zu sehen (Abbildung 2). Auch mit den versprochenen Telefongesprächen und SMS klappt alles, lediglich die Kamera zickt. Man hört zwar das Geräusch des Verschlusses, das Bild erscheint leider nicht, statt dessen eine Fehlermeldung. Andererseits besonders bedenklich: Auch die Bewegungsdaten des Smartphones sind mit dem Androrat kontrollierbar.
Der Screenshot in Abbildung 3 zeigt die aktuelle Position des Smartphones. Hier hat Android Rat die Koordinaten mittels WLAN ermittelt, das ist aber auch per UMTS möglich. Die Abweichungen zum tatsächlichen Standort liegen typischerweise bei etwa 200 Metern.
Infos
- Markus Feilner, “Der Paulus von Freiburg”: Linux-Magazin 03/09, S. 76
- Hans-Peter Merkel, Markus Feilner, “Wider das Vergessen”: Linux-Magazin 03/11, S. 90
- Dennis Schreiber, “Besser nachlesen”: Linux-Magazin 03/10, S. 82
- Hans-Peter Merkel, Markus Feilner, “Italienische Aufklärung”: Linux-Magazin 12/10, S. 84
- Hans-Peter Merkel, Markus Feilner, “Rettung naht”: Linux-Magazin 01/15, S. 74
- Hans-Peter Merkel, Markus Feilner, “Fenster-Kit”: Linux-Magazin 06/08, S. 38
- Ewfacquire: http://linux.die.net/man/1/ewfacquire
- Drozer: https://www.mwrinfosecurity.com/products/drozer/
- Dex2jar: https://code.google.com/p/dex2jar/
- Jd: http://jd.benow.ca
- Flappy Bird: https://cyberchallenge.com.au/inabox.html
- Hans-Peter Merkel, Markus Feilner, “Flüchtige Spuren”: Linux-Magazin 11/13, S. 68









