Open Source im professionellen Einsatz
Linux-Magazin 10/2011
© gary718, 123RF.com

© gary718, 123RF.com

Android-Geräte mit Linux-Bordmitteln auslesen

Frei - aber offen?

,

Android gilt als freies Betriebssystem. Doch wer sein Smartphone an den PC anstöpselt und die enthaltenen Daten auslesen will, stößt an Grenzen. Dieser Artikel zeigt, wie das SDK, Linux-Bordmittel und kommerzielle Software dem Android-Besitzer weiterhelfen.

1119

Für ein freies System gibt sich Android erstaunlich zugeknöpft. Das Linux-Magazin zeigt in diesem Artikel mehrere Varianten, wie der Besitzer trotzdem sein eigenes Gerät untersuchen kann, mit und ohne Jailbreak. Als Testlabor diente dafür ein Forensik-Lehrgang in Mosambik, wo ostafrikanische Linux-Spezialisten (Abbildung 1) mit Bordmitteln auf einem Linux-Server und verschiedenen Android-Telefonen versuchen sollten eine bekannte Android-WLAN-Lücke auszunutzen und virtuelle Androiden mit einem Trojaner zu infizieren und die Testgeräte auszulesen.

Abbildung 1: Bei einem Linux-Forensik-Lehrgang in Mosambik mussten die Teilnehmer auch ihr Wissen rund um die Auswertung sichergestellter Smartphones mit Android unter Beweis stellen.

Die Ergebnisse nützen jedem Admin mit Linux-Kenntnissen, weil die Smartphones – auch als logische Konsequenz der hohen Verbreitung von Android [1] – immer mehr in den Fokus von Angreifern rücken. Der Trend ist ungebrochen: In zunehmendem Maße speichern Anwender schützenswerte Daten auf den Telefonen, so werden auch die Linux-Systeme in den Smartphones immer lohnenswertere Ziele für bösartige Angreifer.

Automatische Anmeldung auch im offenen WLAN

Die folgende Schwachstelle betrifft trotz eines schnellen Patch von Google noch weit über 90 Prozent der Androiden, weil die Provider und Hardwarehersteller die Updates nur zögerlich oder gar nicht an die Kunden weitergeben.

Die zu untersuchende Android-Lücke datiert vom Mai 2011 [2]. Mitarbeiter der Universität Ulm hatten herausgefunden, dass die Smartphones Authentifizierungsdaten gerne unverschlüsselt übers Netz senden, ohne HTTPS und in unverschlüsselten WLANs. Erschwerend kommt hinzu, dass Androiden sich in der Standardeinstellung ohne Rückfrage mit einem einmal gespeicherten WLAN verbinden. Solche Fehler betreffen zwar theoretisch auch Laptops, stellen auf Smartphones jedoch ein deutlich höheres Risiko dar. Den benötigten Accesspoint lieferte Hostapd [3] auf einem an der Eduardo-Mondlane-Universität installierten X2go-Terminalserver von Linux4Afrika ([4], [5]).

Das Listing zeigt die Konfigurationsdatei »hostapd.conf« des Accesspoints:

interface=wlan0
driver=nl80211
ssid=Vodacom
channel=1

Die dort genannte SSID entspricht der eines simulierten ISP-Providers namens Vodacom.

Ein Linux-Server bietet sich als Accesspoint an, die Installation der Netzwerk- und Security-Software gerät zum Kinderspiel. Die Verbindung des Android-Smartphones zeichnet der Admin zum Beispiel mit Tcpdump auf. Auch ein Notebook mit eingebautem WLAN-Interface lässt sich mit Hostapd schnell zu einem Accesspoint umbauen. Damit der Rechner die Anfragen des Smartphones weiterleitet, bedarf es noch der Bridge-Utils. Ein paar Shellkommandos bringen die anfragenden Clients ins Netz:

ifconfig eth0 down
ifconfig wlan0 down
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 wlan0
ifconfig eth0 0.0.0.0 up
ifconfig wlan0 0.0.0.0 up
ifconfig br0 up
dhclient br0

Den kompletten Netzwerk-Traffic zeichnet nun »tcpdump -i br0 -s 0 -w vodacom.cap« auf. Die in einer Datei mitgeschnittenen Datenpakete lassen sich anschließend mit Wireshark betrachten und vergleichen. In der Schulung wurde dabei schnell klar, dass alle getesteten Smartphones für den unter [6] gezeigten Angriffsvektor zugänglich waren – die Androiden versandten ihre Authentifizierungs-Tokens freimütig unverschlüsselt.

Problemfall YAFFS

Was kann ein Besitzer tun, wenn er vermutet Opfer eines Angriffs geworden zu sein? Datenforensiker besitzen in der Regel einen gut ausgestatteten Koffer mit Adapterkabeln für alle Geräte, die auch nur irgendwie zum Telefonieren dienen. Doch bei Android hilft das beste Equipment nicht weiter, weil das von Google verwendete Dateisystem YAFFS (Yet Another Flash File System, [7]) die meisten Anbieter der Auswertungssoftware vor größere Probleme stellt.

Der Linux-Freak nimmt auf der Suche nach einem Treiber meist zuerst Fuse [8] ins Visier. Diese Treiber beeindrucken im Gegensatz zu den Kernel-basierten zwar nicht mit Performance, für die Analyse reichen sie aber allemal. Aber obwohl YAFFS2 derzeit bei fast allen Android-Geräten für den internen Flashspeicher zum Einsatz kommt und als Open-Source-Projekt vorliegt, erweist sich die Treibersuche überraschenderweise als echtes Problem. Es ist also gut, dass künftige Android-Versionen auf Ext 4 wechseln werden.

Alternative Lösungen sind deshalb angesagt, um den Zugriff auf den internen Smartphone-Speicher zu erhalten. Der Kasten "Hands on YAFFS" zeigt, wie Ubuntu 10.10 immerhin bedingt YAFFS-tauglich wird. Das auf der Bücherseite in diesem Magazin beschriebene Buch "Android Forensics" von Andrew Hoog [9] liefert ebenfalls wertvolle Hilfe: Es zeigt, dass ein Software Development Kit nicht nur als Werkzeug für Programmierer, sondern auch für andere Interessierte wichtige Unterstützung bietet.

Hands on YAFFS

Als die ersten Android-Smartphones auf dem Markt kamen, war das Dateisystem YAFFS für NAND-Flashspeicher-Medien kaum bekannt. Die zweite Auflage YAFFS2 folgt noch strengeren NAND-Flash-Richtlinien und verbessert so die Lebensdauer interner Speicher.

Aleph One Ltd., ein Unternehmen aus Neuseeland [14], hat YAFSS2 entwickelt. Leider sind dessen Webseiten nicht mehr aktuell, bis zum Redaktionsschluss scheiterten alle Downloadversuche für die Kerneltreiber. Nach einiger Recherche entdeckten die Tester aber Quellen, sie finden sich auf der DELUG-DVD.

YAFFS-Installation

Wer erste Erfahrungen mit YAFFS sammeln will, installiert sich die Treiber auf sein System. Beim Test scheiterte das Kompilieren unter Ubuntu 11.04, Kernel 2.6.35 unter 10.10 führte aber zum Erfolg. Zuerst ist das »mtd-utils« -Paket aus dem Repository zu installieren, anschließend sind die Treiber zu erstellen und zu laden:

tar xvzf yaffs2.tar.gz
cd yaffs2
make
mkdir /media/yaffs
modprobe mtd
modprobe mtdblock
insmod yaffs2.ko
lsmod
Module                  Size  Used by
yaffs2                 92683  0
mtdblock                3039  0
mtd_blkdevs             5755  1 mtdblock
mtd                    18877  3 yaffs2,mtd_blkdevs
[...]

Unter [15] stehen die Parameter, die für das Erzeugen eines simulierten NAND-Flashspeichers notwendig sind. Für ein 64-MByte großes 2048-Byte-Pagemodul lautet der Modprobe-Befehl:

modprobe nandsim first_id_byte=0x20 second_id_byte=0xa2 third_id_byte=0x00 fourth_id_byte=0x15

Über das »/proc« -System lässt sich der eben erstellte Flashspeicher überprüfen:

cat /proc/mtd
dev:    size   erasesize  name
mtd0: 04000000 00020000 "NAND simulator partition 0"

4 000 000 Bytes (Hex) entsprechen dem 64 MByte großen Speicher. Eine weitere Bearbeitung mit Dd oder Xxd ist nicht möglich, da das relativ komplexe Dateisystem in 64 Datenblöcken zu je 2048 Bytes eingeteilt ist, diese aber noch einen 64 Byte großen Ersatzbereich (OOB) besitzen, den Xxd oder Dd schlichtweg übersehen. Das in den Mtd-Utils enthaltene Programm Nanddump berücksichtigt ihn jedoch.

YAFFS2 mounten

Ein erster Blick in den Simulationsspeicher zeigt den Inhalt – nichts:

nanddump -a /dev/mtd0ro | xxd | less
0000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
[...]

Wer im simulierten Speicher nun eine Datei anlegen will, mountet dazu den Speicher:

mount -t yaffs2 /dev/mtdblock0 /media/yaffs

Jetzt zeigt Nanddump im nun benutzten Dateisystem:

0000000: 0100 0000 0100 0000 ffff 7465 7374 6669  ..........testfi
0000010: 6c65 2e74 7874 0000 0000 0000 0000 0000  le.txt..........
[...]

Einen interessanten Ansatz beschreibt Andrew Hoog in Kapitel 7 seines Forensik-Buchs [9]: Er erzeugt ein 1 GByte großes NAND-System. Das Programm Nandwrite schreibt dann die »/data« -Partition eines Androids in den Simulationsspeicher. Den mountet unter Ubuntu 10.10 der »yaffs2.ko« -Treiber, und schon kann die logische Auswertung im gemounteten Verzeichnis erfolgen. Leider klappt das nur unter Bedingungen: So ist der Rootzugriff auf Android Pflicht und Inkompatibilitäten bei der Treiber-Implementierung können das erfolgreiche Mounten verhindern, was auch die Autoren dieses Artikels zu spüren bekamen.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Android-Pflege

    Ganz egal, wie haarsträubend unsicher Android und Konsorten sich präsentieren, im Unternehmen führt an "Bring your own device" kein Weg mehr vorbei, auch wenn das Sicherheit und Compliance-Ansätze untergräbt. Dieser Artikel zeigt, wie Admins mit Bordmitteln ein wenig Kontrolle zurückgewinnen.

  • Android-Backup

    Full Backup ohne Festplatte? Was bei Computern relativ leicht zu erledigen ist, das gehört zu den kniffligsten Aufgaben bei mobilen Geräten. Dann aber lassen sich sogar Chatprotokolle auslesen.

  • Android setzt auf Ext4

    Das Dateisystem Ext4 wird zum Beispiel in Googles neuem Smartphone Nexus S zum Einsatz kommen.

  • Flashspeicher

    Surrende Rechner mit rotierenden Plattenstapeln sind out. In den eleganten Tablets und Smartphones des Digital Lifestyle steckt Flashspeicher, der Platz und Energie spart. Dieser Beitrag erklärt die Eigenheiten der Speicherchips und bietet geeignete Linux-Dateisysteme an.

  • Bücher

    Passend zum Titelthema stellt die Bücherseite einen Band zur Android-Forensik vor. Das zweite Buch ist Scott Meyers' "Effektiv C++ programmieren" in seiner jüngsten deutschen Auflage.

comments powered by Disqus

Ausgabe 09/2017

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.