Konkrete Kritik an CVSS4
Marc Ruef
Die Geräte von Apple erfreuen sich einer sehr grossen Beliebtheit. Damit werden sich ebenfalls für Angreifer interessant. Ebenso wächst aber auch das Interesse für forensische Untersuchungen. Diese werden beispielsweise von Behörden angesetzt, um Details zur Nutzung eines Geräts bzw. dem Verhalten dessen Besitzers in Erfahrung zu bringen.
Dieser Beitrag soll das grundlegende Prinzip der iPhone Forensik aufzeigen. Es lässt sich ebenfalls auf andere Apple-Geräte mit dem iOS-Betriebssystem übertragen (z.B. iPad und iPod). Hierzu ist der phsysische Zugriff auf ein entsprechendes Gerät erforderlich. Wie bei jeder forensischen Analyse soll auch hier darum bemüht sein, das Original-Material möglichst unangetastet zu lassen, um ein unbeabsichtigtes Verändern der Informationen zu verhindern. Zu diesem Zweck wird das Gerät über den USB-Anschluss an einen Rechner angeschlossen und auf diesem über iTunes ein reguläres Backup angefertigt.
iTunes legt eine lokale Kopie sämtlicher Konfigurationseinstellungen und Anwendungsdaten des Geräts an. Dabei werden die Backups benutzerbezogen und voneinander getrennt abgelegt. Die jeweiligen Ordner sind auf den verschiedenen Betriebssystemen wie folgt eingerichtet:
~/Library/Application Support/MobileSync/Backup/
%HOMEPATH%\Application Data\Apple Computer\MobileSync\Backup\
%HOMEPATH%\AppData\Roaming\Apple Computer\MobileSync\Backup\
Dort finden sich als Unterordner die jeweiligen Backups der verschiedenen Geräte. Die Ordnernamen entsprechen dabei 40-bit hexadezimalen Hashwert, der manchmal um einen zusätzlichen Datumswert und eine weitere Kennzeichnung erweitert wird.
Innerhalb eines Backup-Ordner finden sich sämtliche zu einem Backup dazugehörigen Dateien. In der Datei Info.plist
werden im XML-Format die grundlegenden Informationen des Backups bereitgestellt. Dazu gehören allgemeine Informationen zum Gerät und der synchronisierten Apps.
Die zum Backup gehörigen Dateien weisen keine Dateierweiterung auf. Stattdessen werden deren Namen aus dem SHA1-Hash Wert des original Pfad- und Dateinamens gebildet. Beispiel:
maru@debian:~$ printf 'HomeDomain-Library/SMS/sms.db' | sha1 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Es ist also mit der Durchsicht der Dateien möglich herauszufinden, um was für einen Dateityp es sich handelt. Die einfachste und effizienteste Form ist das Identifizieren der Magic Number einer Datei. Hierzu können Anwendungen wie das file-Kommando für Unix oder filerecon für Windows eingesetzt werden. Mit einem iPhone aufgenommene Filme lassen sich beispielsweise anhand der Zeichenkette ftypqt
, die auf einen Quicktime AVI-Container hindeuten, identifizieren. Durch das Hinzufügen der Dateierweiterung .avi
kann die entsprechende Aufnahme üblicherweise in einem Videoplayer abgespielt werden.
Von ebenso grossem Interesse bei einer forensischen Untersuchung sind jedoch SQLite-Datenbanken. Diese werden üblicherweise durch Systemapplikationen und zusätzlich installierte Apps eingesetzt, um dynamische Daten abzulegen. Solche Datenbanken lassen sich daran erkennen, dass ihr Dateiinhalt mit der folgenden Zeichenkette beginnt:
SQLite format 3
Bei SQLite handelt es sich um eine Programmbibliothek, die ein relationales Datenbanksystem bereitstellt. Sie unterstützt zu grosen Teilen die in SQL-92 festgelegten SQL-Sprachbefehle. Eine SQLite-Datenbank wird jedoch in reduzierter Weise als einzelne Datei abgelegt und verzichtet deshalb auf ein Client/Server-Modell. Es gibt verschiedene Clients und Bibliotheken, mit denen auf SQLite-Datenbanken zugegriffen können werden. Der nachfolgende Screenshot zeigt beispielsweise den SQLite Database Browser, eine Freeware-Lösung für Windows. Sie ist jedoch nicht gerade für ihre Stabilität und Zuverlässigkeit, gerade bei komplexeren SQL-Abfragen, bekannt.
Da wir jedoch im Rahmen einer forensischen Analyse unsere Zugriffe bestmöglich automatisieren wollen, werden wir auf die zeilenbasierte Implementierung des SQLite-Clients zurückgreifen. Mit diesem sollen nun auf die SQLite-Dateien der jeweiligen Applikationen zugegriffen werden. Nachfolgende Tabelle zeigt die wichtigsten Dateinamen bei einer forensischen Untersuchung. Diese können bei verschiedenen iOS-Versionen voneinander abweichen. Die gezeigte Liste fokussiert sich lediglich auf die Namenskonvention von iOS4.
Dateiname | Beschreibung | OS |
---|---|---|
ca3bc056d4da0bbf88b5fb3be254f3b7147e639c | Notizen | 4 |
2041457d5fe04d39d0ab481178355df6781e6858 | Kalender | 2-4 |
31bb7ba8914766d4ba40d6dfb6113c8b614be442 | Kontakte | 2-4 |
2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca | Anrufe | 4 |
992df473bbb9e132f4b3b6e4d33f72171e97bc7a | Voicemail | 4 |
3d0d7e5fb2ce288813306e4d4636395e047a3d28 | SMS | 1-4 |
d9d4cfe3ea7c24405aebf4cca72505d5f7e53bb6 | 4 | |
be856a633d851b307e07576cb78af18911468f09 | Notifo Messages | 4 |
6639cb6a02f32e0203851f25465ffb89ca8ae3fa | 4 | |
6a0ff24e9ae0e722d414a8489bbee4ff66e68278 | 4 | |
a099ad74dbbc2a6b536b5e3a0fe388aeb629b27b | Shazam | 4 |
bff364619d73328930e02e7fbf268b4ff3d351cd | Instapaper | 4 |
b89f186b6dd6235b0a5004aac852ca758d2c00bd | Evernote | 4 |
Wir rufen nun das sqlite3-Kommando (sqlite3.exe
) auf, um die Informationen zu den letzten Anrufen zusammenzutragen. Diesem übergeben wir zwei Argumente: Mit dem ersten Argument definieren wir die anzuzeigende SQLite-Datenbank 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca
und mit dem zweiten Argument ".tables"
weisen wir an, dass die Namen der darin enthaltenen Tabellen ausgegeben werden sollen.
C:\>sqlite3 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca ".tables" _SqliteDatabaseProperties data call
In der Ausgabe ist zu sehen, dass in der Datenbank die drei Tabellen _SqliteDatabaseProperties
, data
und call
enthalten sind.
Tabellenname | Beschreibung |
---|---|
_SqliteDatabaseProperties | Eigenschaften der SQLite-Datenbank |
data | Informationen zur Datenübertragung |
call | Liste der letzten 100 Anrufe |
Die Tabelle call
beinhaltet die letzten 100 Anrufe, die über das Gerät getätigt wurden. Mit der SQL-Anweisung PRAGMA
kann die Tabellenstruktur ausgegeben werden:
C:\>sqlite3 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca "PRAGMA table_info(call);" 0|ROWID|INTEGER|0||1 1|address|TEXT|0||0 2|date|INTEGER|0||0 3|duration|INTEGER|0||0 4|flags|INTEGER|0||0 5|id|INTEGER|0||0 6|name|TEXT|0||0 7|country_code|TEXT|0||0
Die Namen der jeweiligen Felder sind selbsterklärend. Mit address
wird die Telefonnummer des Gegenübers definiert. Durch date
wird der Zeitpunkt des Anrufs als Unix-Timestamp und durch duration
die Dauer dessen in Sekunden ausgegeben. Mit dem Schalter -csv
kann sqlite3.exe
angewiesen werden, die unterschiedlichen Zellen durch Kommans voneinander zu trennen. Mit dem folgenden Aufruf wird nun der ganze Inhalt der Tabelle ausgegeben, wobei eine umgekehrte Sortierung anhand des Datumswerts vorgenommen wird.
C:>sqlite3 -csv 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca "SELECT * FROM call ORDER BY date DESC;" 3648,+41123456789,1303400162,9,4,-1,"",228 3647,+41123456789,1303284369,3,5,4066,"",228 3646,+41123456789,1303219489,0,4,-1,"",228 3645,+41123456789,1303219276,200,4,-1,"",228 3644,+41123456789,1303105423,82,5,-1,"",228 (...)
Durch Anpassungen des sQL-Statements können nun beispielsweise nicht erfolgreiche Anrufe ausgeklammert werden. Dies geschähe durch SELECT * FROM call WHERE duration>0;
, denn es sollen lediglich Anrufe mit einer Dauer von mehr als 0 ausgewiesen werden. Und mit der Eingabe von SELECT AVG(duration) FROM call WHERE duration > 0;
lässt sich die durchschnittliche Dauer eines Telefongesprächs ermitteln.
Viele Apps für das iPhone sind so konzipiert, dass kleinere Nutzdaten nicht wirklich gelöscht werden. Ein gutes Beispiel hierfür sind SMS-Nachrichten. Diese lassen sich zwar auf dem Gerät als gelöscht markieren. Tatsächlich findet dabei aber jedoch nur ein Ausblenden derer statt. Sie selbst sind nach wie vor auf dem Gerät vorhanden und werden auch im iTunes-Backup geführt. Hierzu lässt kann ganz einfach er folgende Zugriff durchgeführt werden:
C:\>sqlite3 -csv 3d0d7e5fb2ce288813306e4d4636395e047a3d28 "SELECT ROWID, address, date, text FROM message ORDER BY date ASC" 1,Swisscom,1245744630,"Dies ist die erste Nachricht auf Ihrem iPhone" 2,Swisscom,1245744634,"Als Nutzer der COMBOX pro wird die Funktion Visual Voicemail auf Ihrem iPhone nicht automatisch aktiviert." 3,Swisscom,1245744641,"Falls Sie von der COMBOX pro zu Visual Voicemail wechseln möchten, wenden Sie sich bitte an unsere Gratis-Hotline 0800xxxxxx" (...)
Gerade im Rahmen einer forensischen Untersuchung können Zugriffe dieser Art von zentraler Wichtigkeit sein. Die Einfachheit dieser soll aber auch zeitgleich daran erinnern, dass sich entsprechende Datensätze mit selbigem Aufwand manipulieren lassen. Durch Anpassungen an den jeweiligen Datenbanken können Spuren verwischt, manipuliert und generiert werden. Um eine umfassende forensische Untersuchung abschliessend vorlegen zu können, sollten als nach Möglichkeiten querprüfungen mit anderen Informationsquellen vorgenommen werden. Gerade im Zusammenhang mit über das Netzwerk (WLAN/Internet oder GSM/UMTS) verschickten Daten ist die Zusammenarbeit mit dem Provider angeraten.
Applikation | Löschverhalten | |
---|---|---|
Mark | Echt | |
SMS | • | |
Kontakte | • | |
Notizen | • |
An gewissen Punkten setzt das iPhone oder zusätzliche Apps Mechanismen zur Protokollierung ein. Zum Beispiel wird im Adressbuch ebenfalls eine Tabelle mit dem Namen ABRecent
geführt. Diese listet die letzten Zugriffe auf die Kontakte auf. Sie ist während der Handynutzung nicht direkt einsehbar oder editierbar/löschbar. Sie eignet sich deshalb bestens, um eine forensische Untersuchung voranzutreiben.
Das iPhone weist seit der ersten Generation die Möglichkeit einer Lokalisierung auf. Zu Beginn wurde mit einem Software-Update im Januar 2008 die Möglichkeit geschaffen, die Lokalisierung mittels Trilateration über WiFi-Netze zu bestimmen. Erst mit dem iPhone 3G wurde ein echtes A-GPS eingeführt, das im 3GS um eine digitale Kompassfunktion erweitert wurde. Diese Lokalisierungsmöglichkeiten werden durch das iPhone rege genutzt, um lokationsabhängige Dienste ermöglichen oder vereinfachen zu können. Zum Beispiel kann in der Karten-App die eigene Position angezeigt werden. Viele Twitter-Clients erlauben auch das Mitschicken der eigenen Position. Und so manche Anwendung basiert praktisch vollständig auf der Möglichkeit, die eigene Position mitzugeben (z.B. Foursquare und Gowalla).
Im April diesen Jahres wurde breitflächig bekannt, dass das iPhone diese Bewegungsdaten abspeichert. Sie werden beim Anlegen eines Backups mittels iTunes, wird dieses denn ohne Verschlüsselung durchgeführt, ebenfalls auf den Computer übertragen. Die Medien sahen darin in erster Linie das Risiko, dass diese Informationen durch dritte eingesehen und missbraucht werden könnten. Später stellte sich dann heraus, dass diese Daten gar teilweise in anonymisierter Weise an Apple übertragen werden, um die Lokalisierung über WiFi zu verbessern. Der Benutzer musste hierzu innerhalb von iTunes einwilligen.
Diese Daten werden bis zur Firmware 4.3.3 in der Datei consolidated.db (4096c9ec676f2847dc283405900e284a7c815836) abgelegt. In dieser SQLite-Datenbank sind verschiedene Tabellen enthalten, die von Interesse sein können. In erster Linie interessieren die Tabellen WifiLocation (Positionierung von WLANs) und CellLocation (Positionierung von GSM-Sendemasten). Der Aufbau dieser Tabellen ist jeweils ähnlich: So wird im Feld Timestamp
der Zeitpunkt der Ortung und in den Feldern Latitude
und Longitude
die GPS-Position vermerkt. Im Fall der WiFi-Daten ist ebenfalls im Feld MAC
die MAC-Adresse des Access Points notiert. Mit der folgenden Eingabe können die letzten 5 Lokationen ausgegeben werden:
C:>sqlite3 4096c9ec676f2847dc283405900e284a7c815836 "SELECT MAC,Timestamp,Latitude,Longitude FROM WifiLocation ORDER BY Timestamp DESC LIMIT 5;"
MAC | Timestamp | Latitude | Longitude |
---|---|---|---|
0:1d:7e:2c:4d:2c | 326527281.103384 | 47.46643942 | 8.32417249 |
0:22:3f:93:d9:e5 | 326527281.103384 | 47.46657633 | 8.32428169 |
0:24:1:38:82:a2 | 326527281.103384 | 47.46638536 | 8.32389265 |
0:24:b2:fc:24:14 | 326527281.103384 | 47.46637845 | 8.32445275 |
0:1:e3:1:ad:88 | 326527281.103384 | 47.46637523 | 8.32386404 |
Mit einer entsprechenden Visualisierungs-Software für GPS-Daten kann damit ein ungefähres Bewegungsverhalten illustriert werden. Das Thema wurde mitunter deshalb so schnell von den Massenmedien aufgegriffen, weil mit dem iPhone Tracker ein einfaches Tool zur automatisierten Extrahierung und Darstellung dieser Daten genutzt wurde. Die nachfolgende Grafik, die mit einer eigenen Software angefertigt wurde, zeigt mein Bewegungsverhalten rund um Zürich Hauptbahnhof der letzten Jahre:
Apple wurde durch die grosse Medienaufmerksamkeit des sogenannten Locationgate gezwungen, diesen angeblich versehentlichen Detailreichtum an Daten einzuschränken. In der Firmware-Version 4.3.3 werden nur noch die letzten Positionen gespeichert. Diese werden zudem nicht mehr angelegt, wenn die Ortungsfunktion abgeschaltet wird. Und von einem Übertragen auf das iTunes-Backup wird generell auch abgesehen. Die Auswertung von Lokalisierungsdaten ist aber nicht nur auf diese Built-In Funktion beschränkt. Viele andere Apps legen ebenfalls Ortungsdaten ab.
Moderne Mobiltelefone stehen in Punkto Funktionalität klassischen Computersystemen in nichts mehr nach. Dadurch wird ebenfalls eine neue Welt der digitalen Forensik, die vor allem von Ermittlungsbehörden je länger je mehr berücksichtigt werden wird, erschlossen. Das iTunes-Backup eines iPhones ist schnell angelegt und durch standardisierte Dateiformate, wie halt eben SQLite-Datenbanken, können unkompliziert auf interessante Daten zugegriffen werden. Dies reicht von herkömmlichen Objekten wie Adressbuch, SMS und Kalender. Die zusätzlichen Apps und die Möglichkeiten der Ortungsdienste lassen mit einer umfassenden Analyse jedoch ein sehr exaktes Verhalten des Benutzers rekonstruieren.
Aufgrund der Aktualität der Diskussion wurde dieser Artikel mitunter in der Tageszeitung 20 Minuten zitiert.
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!