App-Informationen in /data/data

Das Verzeichnis /data/data

Wieso ist das Verzeichnis /data/data für die mobile Forensik elementar? Ganz einfach – es stellt einen zentralen Speicherort für alle Apps dar, die auf dem Android-Gerät installiert und gespeichert werden. Allgemein lässt sich sagen, dass die darin angelegten Ordner alle möglichen Informationen wie Nutzerdaten, Entwicklerdaten und sonstige Cache-Dateien von Apps enthalten, die im Rahmen der App-Installation oder der eigentlichen Nutzung angelegt wurden. Damit einhergehend sind auch die Zeitstempel einzelner Dateien von großem Interesse, die auf bestimmte Aktionen (auch maliziöser Natur) rückschließen lassen. Die Fülle an Daten, die in diesem Verzeichnis gespeichert werden, macht es zu einem wertvollen Ziel für forensische Untersuchungen. Kurz gesagt, das Verzeichnis /data/data ist ein Eckpfeiler der mobilen Forensik und ein unverzichtbarer Bestandteil bei der Untersuchung von Android-Geräten.

Was findest du hier auf dieser Seite?

An dieser Stelle möchte ich einen kleinen Einblick in das Verzeichnis /data/data geben. Da auf dem Testgerät zum Zeitpunkt dieses Beitrags 363 Apps vorliegen, ist es mir aus zeitlichen Gründen nicht möglich, auf alle Applikationen einzugehen – schade, ich weiß. Aus Sicht der mobilen Forensik werden allerdings die Fernwartungsapps wie TeamViewer durch die Möglichkeit der Zweckentfremdung sehr zentral. Auf Basis dessen möchte ich hier zeigen, was unter /data/data am Beispiel von TeamViewer Host so zu finden ist.

/data/data

Wie schon beschrieben, beinhaltet dieses Verzeichnis alle Apps, die auf dem Android-Gerät installiert wurden. Aber wie liegen die Inhalte in /data/data vor? Die folgende Liste zeigt einen kleiner Ausschnitt der installierten Applikationen:

com.teamviewer.host.market
com.topjohnwu.magisk
com.trustonic.teeservice
com.wsomacp
com.wssyncmldm
mobile.liveforensic.errorcode404
narrenzunft.henkerhaus.narrenzunft_baienfurt

Wie schon graphisch in der Farbe Rot hervorgehoben, findet sich in diesem Verzeichnis auch TeamViewer Host wieder. Weiter wurde die App ErrorCode 404 blau markiert, die eine von mir entwickelte App für Live-Forensik von gerooteten Android-Geräten darstellt (so viel zur Eigenwerbung). Der Inhalt des TeamViewer Ordners ist dabei wie folgt:

Die Erfassung aller wichtiger Zeitstempel der jeweiligen Verzeichnisse mach in diesem Fall keinen Sinn, da es sich um keine forensische Untersuchung handelt. Bei einer physikalische oder logische Sicherung würde man ohnehin mit entsprechenden Tools vorgehen. Das Abrufen der Zeitstempel über ein Terminal könnte jedoch mit den folgendem Kommandozeilenbefehlen durchgeführt werden:

stat cache/
stat code_cache/
stat databases/
stat files/
stat no_backup/
stat shared_prefs/

Die Ausgabe der verschiedenen Zeitstempel liegt anschließend in der folgenden Form vor:

  File: `files/'
  Size: 4096     Blocks: 8       IO Blocks: 512 directory
Device: 10308h/66312d    Inode: 1181751  Links: 2
Access: (771/drwxrwx--x)        Uid: (10208/ u0_a208)   Gid: (10208/ u0_a208)
Access: 2024-01-23 11:25:11.643999639
Modify: 2024-04-05 17:08:37.309981574
Change: 2024-04-05 17:08:37.309981574

In gleicher Form werden auch die anderen Abfragen ausgegeben.

/cache

Das Verzeichnis mit dem Namen „cache“ wird in den meisten Apps zu finden sein. Im Falle von TeamViewer Host kann die Struktur wie folgt dargestellt werden:

/code_cache

Wie auch der das Verzeichnis  „cache“ wird auch der Ordner „code_cache“ bei den meisten Apps zu finden sein. Jedoch war in diesem Testfall der Ordner leer. Ein Blick auf die Zeitstempel verrät, dass der Ordner bei der Installation angelegt wurde, jedoch keinerlei Änderungen stattfanden:

  File: `code_cache/'
  Size: 4096     Blocks: 8       IO Blocks: 512 directory
Device: 10308h/66312d    Inode: 1048815  Links: 2
Access: (2771/drwxrws--x)       Uid: (10208/ u0_a208)   Gid: (20208/u0_a208_cache)
Access: 2024-01-23 11:24:39.875999662
Modify: 2024-01-23 11:24:39.875999662
Change: 2024-01-23 11:24:39.883999662

/databases

Wie der folgenden Tabelle entnommen werden kann, wurden bei der Installation zwei Datenbanken im Verzeichnis /databases angelegt:

56 -rw-rw—- 1 u0_a208 u0_a208 57344 2024-01-23 11:25 com.google.android.datatransport.events
12 -rw-rw—- 1 u0_a208 u0_a208 8720 2024-01-23 11:25 com.google.android.datatransport.events-journal

/files

Auch der Ordner /files wird bei den meisten installierten Apps zu finden sein. Die folgenden Inhalte konnten in diesem Ordner festgestellt werden:

4 -rw——- 1 u0_a208 u0_a208 563 2024-04-05 16:49 PersistedInstallation.W0RFRkFVTFRd+MToxMDA3Njk2ODc5MDU5Om*******************************************.json
200 -rw——- 1 u0_a208 u0_a208 198387 2024-04-05 17:26 TVLog.html
4 -rw——- 1 u0_a208 u0_a208 532 2024-04-05 16:56 client.conf
0 -rw——- 1 u0_a208 u0_a208 0 2024-01-23 11:25 generatefid.lock
12 -rw——- 1 u0_a208 u0_a208 12129 2024-04-05 17:08 global.conf
4 -rw——- 1 u0_a208 u0_a208 24 2024-04-05 16:49 profileInstalled
4 -rw——- 1 u0_a208 u0_a208 8 2024-01-23 11:25 profileinstaller_profileWrittenFor_lastUpdateTime.dat
4 -rw——- 1 u0_a208 u0_a208 94 2024-04-05 16:49 rolloutfile.tv13
4 -rw——- 1 u0_a208 u0_a208 73 2024-04-05 16:56 v2HOST_MANAGER_EMAIL

Auf den Inhalt der aufgeführten Dateien wird an dieser Stelle nicht näher eingegangen. Aus forensischer Sicht muss jedoch auf die TVLog.html-Datei (Rot) hingewiesen werden. Nicht schwer zu erkennen, wurde der Dateiname der .json-Datei von mir leicht abgeändert. Der spezielle Namenszusatz ist lediglich Base64-kodiert und muss bei der Dekorierung bei dem  (+)-Zeichen separiert werden. Trivial ist auch die Tatsache, das die Inhalte je nach App unterschiedlich sein kann.

/no_backup

In dem Ordner /no_backup wurden die folgenden Dateien gefunden:

104 -rw-rw—- 1 u0_a208 u0_a208 106496 2024-04-05 16:49 androidx.work.workdb
32 -rw-rw—- 1 u0_a208 u0_a208 32768 2024-04-05 16:49 androidx.work.workdb-shm
164 -rw-rw—- 1 u0_a208 u0_a208 164832 2024-04-05 16:49 androidx.work.workdb-wal
0 -rw——- 1 u0_a208 u0_a208 0 2024-01-23 11:25 com.google.android.gms.appid-no-backup

/shared_prefs

In dem Verzeichnis /shared_prefs (Shared Preferences) konnten insgesamt vier Dateien detektiert werden:

4 -rw-rw—- 1 u0_a208 u0_a208 630 2024-04-05 16:49 FirebaseHeartBeatW0RFRkFVTFRd+MToxMDA3Njk2ODc5MDU5Om*******************************************.xml
4 -rw-rw—- 1 u0_a208 u0_a208 630 2024-01-23 11:25 __androidx_security_crypto_encripted_file_pref__.xml
4 -rw-rw—- 1 u0_a208 u0_a208 392 2024-04-05 16:49 com.google.android.gms.appid.xml
4 -rw-rw—- 1 u0_a208 u0_a208 501 2024-04-05 16:56 com.teamviewer.host.market_preferences.xml

Auch in der eben aufgeführten Tabelle wurde der Dateiname einer .xml-Datei geändert. Grund dafür ist wieder die Base64-Kodierung als Namenszusatz. Speziell die letzte aufgeführte Datei mit dem Namen „com.teamviewer.host.market_preferences.xml“ ist nochmal besonders interessant. Darin sind unter anderem Informationen wie die aktuell installierte App-Version. Auch erwähnenswert ist die Auskunft darüber, ob die App lediglich das erste Mal gestartet wurde.

Fazit

Insgesamt kann beim Durchstreifen der Verzeichnislandschaft von Apps einiges gefunden werden. Die drei Verzeichnisse /cache, /code_cache und /files, können in fast allen angelegten Ordnern für eine App gefunden werden. Abhängig von der Programmierung und anderen Speicherungen von Nutzerdaten, App-Einstellungen und Konfigurationen können zusätzliche Ordner erstellt werden. Allgemein ermöglichen die Datein der Anwendung, ihr Verhalten anzupassen und die Interaktion mit dem Benutzer sowie mit anderen Systemkomponenten zu steuern.