Einleitung
Mobile Geräte - Smartphones, Tablets und andere mobile Geräte - werden zu einem integralen Bestandteil des Lebens der Menschen. Fast 67% der Menschen auf der Welt haben mindestens ein Smartphone. Bis 2025 werden 5,8 Milliarden aktive mobile Geräte prognostiziert [1].
Laut IDC [2] waren 86,8% aller im dritten Quartal 2018 verkauften Mobilgeräte mit Android OS ausgestattet. Die Anzahl der Benutzer, die das Android-Betriebssystem verwenden, beträgt mehr als 1,4 Milliarden. Laut Securelist [3] wurden 2018 5,3 Millionen schädliche Softwarepakete für die Android-Betriebssystemfamilie entdeckt. Daher muss ein Spezialist auf dem Gebiet der Computerforensik unterschiedliche Methoden zum Extrahieren einer Speicherkopie für jedes Gerät verwenden.
Derzeit gibt es keine Möglichkeit, eine Kopie des Speichers von Geräten mit Android-Betriebssystem einheitlich abzurufen. In dieser Hinsicht muss ein Spezialist für Computerforensik viele verschiedene Methoden anwenden, wenn er mit technischen Problemen konfrontiert ist. Erstens sind Probleme mit dem Fehlen eines Treibers oder einer Fehlfunktion des USB-Anschlusses verbunden, der bei herkömmlichen Methoden zur Datenextraktion verwendet wird. Um jedoch eine Kopie des Speichers zu erhalten und zu übertragen, können Sie drahtlose Kommunikationskanäle verwenden [4].
In Abschnitt 1 werden die Architektur des Android-Betriebssystems, Szenarien für die Verwendung von RAM, im RAM enthaltene Datenstrukturen, Software zum Abrufen einer Kopie des Speichers und Software zum Übertragen von Daten beschrieben.
In Abschnitt 2 wird die Architektur eines Systems zum Abrufen einer Kopie des RAM sowie die Verbindung zwischen Subsystemen und Modulen beschrieben.
In Abschnitt 3 wird die Implementierung eines Systems zum Abrufen einer Kopie des RAM beschrieben.
Abschnitt 1: Erkundung von Möglichkeiten zum Abrufen einer Kopie des Speichers auf Geräten mit Android-Betriebssystem über drahtlose Kanäle
In diesem Abschnitt werden Software zum Abrufen einer Kopie des Speichers und deren Vergleich, Netzwerkprotokolle zum Übertragen einer Kopie des Arbeitsspeichers, Möglichkeiten zum Ausführen ausführbarer Dateien über drahtlose Verbindungen für Android-Betriebssysteme, RAM-Strukturen sowie Szenarien zur Verwendung einer Kopie des Arbeitsspeichers erläutert.
Szenarien für die Verwendung einer RAM-Kopie
Heute ist das Android-Betriebssystem dank des Linux-Kernels und der virtuellen Dalvik-Maschine auf verschiedenen Geräten verfügbar. In diesem Dokument werden Geräte erläutert, die auf der gängigsten ARM- und x86-Hardwareplattform ausgeführt werden.
Eine Kopie des Speichers besteht aus unstrukturierten Binärdaten, die ohne die entsprechenden Spezialwerkzeuge nur schwer zu analysieren sind. Zum Zeitpunkt dieses Schreibens haben Geräte eine RAM-Größe von nicht mehr als zehn Gigabyte, was die Analysezeit einer RAM-Kopie dieser Größe erheblich verlängert. Im Moment gibt es keine einzige Möglichkeit, alle Strukturen des RAM zu analysieren. Für eine vollständige Analyse des Arbeitsspeichers sind mehrere Softwaretools erforderlich.
Es gibt keine Garantie für eine erfolgreiche Analyse einer Kopie des Arbeitsspeichers, selbst wenn Sie aufgrund von Problemen beim Abrufen einer Kopie des Speichers über alle erforderlichen Tools verfügen. Wenn keine Möglichkeit besteht, eine Verbindung zum Gerät herzustellen, oder ein großes Risiko einer Datenbeschädigung besteht, bleibt die drahtlose Möglichkeit, eine Kopie des Speichers abzurufen, die einzige und sicherste. Leider gibt es derzeit keine Software-Tools, um automatisch eine Kopie des Speichers über drahtlose Kommunikation zu empfangen.
Eine Kopie kann in der Computerforensik verwendet werden. Wenn beispielsweise die Daten auf dem untersuchten Gerät verschlüsselt sind, kann eine Kopie des Speichers dazu beitragen, die Daten zu entschlüsseln, die Kennwörter und kryptografische Schlüssel enthalten [5]. Jede Anwendung, die personenbezogene Daten verarbeitet, verwendet Datenverschlüsselung. Mit dem Image einer Kopie des Arbeitsspeichers und einigen Kenntnissen im Umgang damit besteht die Möglichkeit, die neuesten Nachrichten oder temporären Dateien wiederherzustellen, die bei einer forensischen Untersuchung hilfreich sein können.
Im Falle eines Angriffs auf das Gerät können Sie anhand der Analyse der Kopie des RAM des Geräts herausfinden, wie der Angriff ausgeführt wurde, welche Kommunikationskanäle, Malware und Schwachstellen vom Angreifer verwendet wurden, um solche Angriffe in Zukunft zu verhindern.
Kopieren Sie regelmäßig wichtige Daten, um schädliche Software zu erkennen. Dieser Ansatz wird verwendet, um Malware zu erkennen, die Methoden verwendet, um ihre Präsenz im System zu verbergen.
Außerdem kann eine Kopie des Speichers (oder des Teils, der nur den Kontext der untersuchten Anwendung oder des untersuchten Prozesses enthält) verwendet werden, um Schwachstellen und nicht dokumentierte Funktionen der Software zu identifizieren. Bestehende spezialisierte Softwaretools verwenden eine Kopie des Arbeitsspeichers, um Rootkits zu erkennen [6]. Eine Kopie des Speichers des gesamten Systems kann verwendet werden, um Änderungen im gesamten System zu überwachen und illegale Aktionen zu identifizieren.
Zur Analyse der operativen Kopie wird das Volatility Framework verwendet [7]. Das Volatility Framework ist eine Reihe von Tools zum Abrufen und Analysieren einer RAM-Kopie verschiedener Betriebssysteme, einschließlich Android. Mit diesen Tools können Sie die erforderlichen Informationen abrufen, die im Image des RAM enthalten sind. Um eine Kopie des RAM zu erhalten, verwendet das Volatility Framework das LiME-Kernelmodul. Um eine Kopie des RAM über LiME zu extrahieren, ist der Quellcode des Linux-Kernels des untersuchten Geräts erforderlich.
Analyse von Tools und Methoden zum Ausführen ausführbarer Dateien über drahtlose Verbindungen für Android OS
Zum Installieren von Anwendungen werden wie in allen UNIX-ähnlichen Betriebssystemen Pakete verwendet. Unter Android haben diese Pakete die Erweiterung .apk. Solche Pakete werden auch nach der Installation im Speicher des Geräts gespeichert und nur gelöscht, wenn die Anwendung deinstalliert wird. Das APK-Paket enthält kompilierten Java-Code sowie die Datei AndroidManifest.xml, in der die Berechtigungen angegeben sind, die für die Funktion der Anwendung erforderlich sind.
Es gibt zwei Arten von Anwendungen: System und Benutzer. Systemanwendungen verfügen im Gegensatz zu Benutzeranwendungen über mehr Berechtigungen. Das Ändern oder Löschen dieser Anwendungen ist daher nur möglich, wenn Sie über Superuser-Rechte verfügen. Benutzeranwendungspakete befinden sich im Verzeichnis "/ data / app". Systemanwendungspakete befinden sich im Verzeichnis „/ system / app“.
Ab Android 5.0 wird anstelle der virtuellen Dalvik-Maschine die virtuelle Android Runtime-Maschine verwendet. Im Gegensatz zu Dalvik kompiliert Android Runtime die Anwendung nicht beim Start, sondern während der Installation. Dies erhöht die Geschwindigkeit beim Starten des Programms und verlängert die Batterielebensdauer. Um die Abwärtskompatibilität sicherzustellen, verwendet Android Runtime denselben Bytecode wie Dalvik.
Im Gegensatz zu einem Systemprozess verfügt ein Benutzerprozess über weniger Berechtigungen für das System. Um Berechtigungen wie ein Systemprozess zu erhalten, benötigt ein Benutzerprozess Superuser- oder Root-Rechte. Der Superuser ist ein Benutzer des Betriebssystems, der uneingeschränkte Rechte im System hat.
Es gibt zwei Arten von Superuser-Rechten: permanente und temporäre. Permanente Superuser-Rechte bleiben auch nach einem Neustart erhalten, und temporäre Rechte bleiben gültig, bis das Gerät neu gestartet wird.
In der Regel sind Superuser-Rechte auf Geräten nicht verfügbar. Aufgrund der Vielzahl von Geräten gibt es keine einheitliche Möglichkeit, Superuser-Rechte zu erhalten. Um Superuser-Rechte zu erhalten, werden daher verschiedene Tools verwendet. Das Abrufen von Superuser-Rechten ist erforderlich, um eine Kopie des Speichers von Android-Geräten zu erhalten.
Zum Ausführen ausführbarer Dateien sind einige Berechtigungen auf dem System sowie eine Reihe von Unix-Befehlen erforderlich. Anfänglich verfügt Android über einige minimale Befehle, die normalerweise nicht ausreichen, um eine Kopie des Speichers zu erhalten. Daher verwenden sie BusyBox, die einen erweiterten Befehlssatz enthält. Mit den in BusyBox enthaltenen Dienstprogrammen können Sie im Dateisystem arbeiten, Anwendungen starten, Systeminformationen anzeigen und vieles mehr. Es ist auch möglich, Shell-Skripte zu erstellen.
Shell-Skripte sind ausführbare Dateien, die ein Skript zum Ausführen einer Reihe von Befehlen enthalten. Im Gegensatz zur Anwendung müssen Shell-Skripte nicht installiert und kompiliert werden. Wenn Sie etwas reparieren müssen, nehmen Sie einfach Änderungen an der Shell-Skriptdatei vor.
Da ausführbare Dateien über drahtlose Kommunikation gestartet werden, werden zwei Möglichkeiten zum Starten ausführbarer Dateien mit ADB und SSH in Betracht gezogen.
Für die erste Methode reicht es aus, den Befehl „setprop service.adb.tcp.port 5555; adbd stoppen; adbd starten ”. Führen Sie als Nächstes eine Eingabeaufforderung auf dem Computer aus und stellen Sie mit dem Befehl "adb connect X" eine Verbindung zum Gerät her, wobei "X" die IP-Adresse des Geräts im Netzwerk und der Portwert 5555 ist. Verwenden Sie zum Ausführen der ausführbaren Datei den Befehl "adb shell am start -n com". package.name/com.package.name.ActivityName ”, wenn dies eine Anwendung ist. Wenn es sich bei der ausführbaren Datei um ein Shell-Skript handelt, wird sie mit dem Befehl "adb shell ./name" gestartet, wobei name der Name des Skripts ist.
Die zweite Methode verwendet das SSH-Protokoll. Im Gegensatz zur vorherigen Methode erfordert diese Methode einen SSH-Client auf dem Computer und einen SSH-Server auf dem Gerät. Unter Windows können Sie PuTTY oder unter Linux Openssh verwenden. Nachdem wir das Gerät an den Computer angeschlossen haben, erhalten wir Zugriff auf die Shell-Befehlsshell. Die Befehle zum Ausführen der ausführbaren Dateien sind dieselben wie bei der ersten Methode.
Somit ist ersichtlich, dass sich beide Methoden nur in der Verbindungsmethode unterscheiden. Beide Methoden verwenden die Shell-Befehlsshell, um ausführbare Dateien auszuführen. Daraus folgt, dass Sie beim Zugriff auf die Shell jeden Befehl ausführen und jede ausführbare Datei ausführen können, unabhängig davon, ob es sich um eine Anwendung oder ein Shell-Skript handelt.
Software-Tools zum Abrufen einer Kopie des RAM
Bestehende Softwaremethoden können in zwei Kategorien unterteilt werden:
- Abrufen einer Kopie des Speichers aus dem Benutzerbereich und dem Kernel;
- Rufen Sie eine Kopie des Speichers nur aus dem Benutzerbereich ab.
Zu den Softwaretools zum Abrufen einer Kopie des Benutzer- und Kernelbereichs gehören AMExtractor und LiME. Mem- und Memfetch-Tools können nur eine Kopie des Speichers aus dem Benutzerbereich abrufen.
Betrachten Sie die oben genannten Softwaretools, um eine Kopie des Arbeitsspeichers von Geräten zu erhalten, die vom Android-Betriebssystem gesteuert werden:
- Mem: ein Open-Source-Dienstprogramm zum Abrufen von Prozess-RAM-Daten [8];
- Memfetch: ein Open-Source-Dienstprogramm zum Abrufen des Adressraums des Prozess-RAM mithilfe der Geräte / proc / $ pid / map und / proc / $ pid / mem [9];
- LiME: ein Modul für den Linux-Kernel mit Open Source-Code zum Abrufen von Daten, die im RAM im User Space und im Kernel gespeichert sind [10];
- AMExtractor: Ein Open-Source-Dienstprogramm, das das Pseudogerät / dev / kmem zum Laden in den Kernelspeicher verwendet [11].
Mem- und Memfetch-Programme können ohne vorläufige Konfiguration verwendet werden, sie können jedoch keine Daten aus dem Kernel-Speicherbereich abrufen und benötigen für ihre Arbeit Superuser-Rechte.
Trotz seiner weit verbreiteten Verwendung und Vielseitigkeit benötigt das LiME-Modul für jedes einzelne Gerät die richtige Konfiguration und den richtigen Quellcode für den Linux-Kernel.
Damit AMExtractor funktioniert, sind Informationen zum Typ des Adressierungsmodells für den virtuellen Speicher erforderlich, das von den Kernel- und Superuser-Rechten verwendet wird.
Die in dieser Arbeit berücksichtigten Softwaretools, deren Quellcode öffentlich verfügbar ist, werden nur verwendet, um eine Kopie des RAM zu erhalten.
Softwaretools wie Oxygen, UFED und MSAB XRY sind teuer und nur für den kommerziellen Gebrauch verfügbar. Programme dieser Ebene können: eine Kopie des Speichers von einem gesperrten Gerät empfangen, Superuser-Rechte erhalten, forensische Berichte erstellen und vieles mehr.
Das ANDROPHSY-Tool ist das erste Open-Source-Tool, das alle Phasen der forensischen Untersuchung von Android-Geräten unterstützt [12]. Die ANDROPHSY-Architektur besteht aus vier Hauptmodulen: einem Verarbeitungsmodul, einem Erfassungsmodul, einem Analysemodul und einem Berichtsmodul. Die Datenerfassung erfolgt mit dem dd-Tool und dem ADB-Dienst. Über ein USB-Kabel wird eine Verbindung zwischen dem Computer und dem untersuchten Gerät hergestellt, und die Daten werden über das TCP-Protokoll übertragen.
Die Bestätigung der Relevanz dieser Arbeit ist das Vorhandensein von Fehlern in ANDROPHSY. Dazu gehören die Leistung nur in der Linux-Umgebung, das Fehlen von Funktionen zum Abrufen und Analysieren einer Kopie des RAM des Geräts und das Fehlen einer Verbindung zum Gerät über Wi-Fi oder Bluetooth zum Extrahieren von Daten.
Basierend auf der Analyse wurde eine Vergleichstabelle erstellt (siehe Abbildung 1). In Tabelle 1 kennzeichnet das Symbol „+“ Fonds, die die Anforderungen erfüllen, und das Symbol „-“ kennzeichnet das Gegenteil.

Abbildung 1 - Software zum Abrufen einer RAM-Kopie
Basierend auf den Ergebnissen des Vergleichs wurde entschieden, AMExtractor zu verwenden, um das RAM-Image aufzunehmen, da eine vollständige Kopie des RAM empfangen wurde und der Quellcode des Kernels nicht benötigt wurde und das Laden von Modulen nicht unterstützt wurde.
Datenübertragungssoftware
Ein USB-Kabel wird verwendet, um Daten von Geräten abzurufen, auf denen das Android-Betriebssystem ausgeführt wird. Die meisten Android-Geräte können über ein USB-Kabel an einen PC angeschlossen werden.
Während einer Untersuchung eines Android-Geräts kann es jedoch vorkommen, dass es nicht möglich ist, Daten über eine USB-Verbindung daraus zu extrahieren. Die Gründe hierfür können ein fehlerhaftes Kabel oder ein beschädigter Stecker sein. In diesen Fällen steht dem Experten nur eine externe Speicherkarte zur Verfügung, die nicht auf allen Geräten vorhanden ist. Manchmal enthält ein Gerät nur internen Speicher. Der Inhalt dieses Speichers sowie der Arbeitsspeicher können über eine USB-Verbindung sicher entfernt werden. Eine Alternative zu einer Kabelverbindung ist die drahtlose Verbindung. Von allen drahtlosen Protokollen unterstützt das Android-Betriebssystem das beliebteste: Wi-Fi und Bluetooth.
Wi-Fi in modernen Android-Geräten wird verwendet, um auf das Internet zuzugreifen oder Daten zu übertragen. An-Droid-basierte mobile Geräte unterstützen die meisten Wi-Fi-Standards bis zu 802.11ac. Die Datenübertragungsgeschwindigkeit zwischen Geräten über WLAN übersteigt die Datenübertragungsgeschwindigkeit über Bluetooth [13].
Um Geräte über WLAN zu verbinden, stellen Sie einfach eine Verbindung zu einem freigegebenen Zugriffspunkt her. Da andere Geräte eine Verbindung zum freigegebenen Zugriffspunkt herstellen können, ist es wichtig, den Zugriff auf das Netzwerk zu beschränken. Durch die Verfügbarkeit von Unterstützung in Android, Wi-Fi Hotspot, können Sie das Gerät als Zugangspunkt verwenden.
Das drahtlose Bluetooth-Protokoll, das auf An-Droid-Geräten verfügbar ist, wurde entwickelt, um Daten zwischen Geräten mit einem kleinen Akku zu übertragen. Im Vergleich zu Wi-Fi ist die Geschwindigkeit der Dateiübertragung über Bluetooth viel geringer. Das Protokoll basiert auf einem Piconetz, das aus einem Hauptknoten und mehreren untergeordneten Knoten besteht [14]. Profile werden verwendet, um verschiedene Arten von Daten zu übertragen. Ein Bluetooth-Profil definiert die Befehle und Funktionen, die Geräte untereinander austauschen können. Es gibt mindestens 27 Bluetooth-Profile.
Ein PAN-Profil wird verwendet, um ein WPAN zwischen zwei Geräten zu erstellen. Mit dem HID-Profil können Sie eine Maus, eine Tastatur und andere Peripheriegeräte anschließen, die dieses Profil unterstützen [14].
In dieser Arbeit berücksichtigen wir basierend auf den Funktionen des Android-Betriebssystems die folgende Software-Datenübertragung:
- SSHFS: ein FUSE-basierter Dateisystem-Client zum Mounten von Remote-Verzeichnissen über eine SSH-Verbindung [15];
- Rsync: ein Open Source-Dienstprogramm, das eine schnelle schrittweise Datenübertragung ermöglicht [16];
- SCP: Dienstprogramm und Protokoll zur Datenübertragung über das SSH-Protokoll [17];
- SFTP: Im Vergleich zu SCP, mit dem Sie nur Dateien kopieren können, kann SFTP Dateivorgänge ausführen: Zum Beispiel die Dateiübertragung nach dem Trennen fortsetzen, Dateien auf dem Server löschen und viele andere Operationen [18];
- NetCat: UNIX-Dienstprogramm, das Daten über Netzwerkverbindungen mit dem TCP- oder UDP-Protokoll liest und schreibt [19].
Das Dienstprogramm rsync wird in den meisten Fällen zum Synchronisieren von Dateien oder Verzeichnissen verwendet. Während der Synchronisation werden nur Änderungen unter Verwendung eines effektiven Prüfsummensuchalgorithmus gesendet. Mit der Rsync-Funktionalität können Sie über das SSH-Protokoll übertragen, Dateien komprimieren sowie Links, Gerätedateien, Eigentümerattribute, Gruppen und Rechte kopieren.
Die meisten Mittel zum Abrufen einer Kopie des Speichers verwenden das TCP-Protokoll für die Datenübertragung, um die Möglichkeit auszuschließen, Daten in den Speicher des untersuchten Geräts zu schreiben.
Für eine sichere Datenübertragung ist es wichtig, dass die Software das SSH-Protokoll verwendet. Das Secure Shell Protocol (SSH) ist ein Protokoll für die sichere Remote-Anmeldung am System und anderen sicheren Netzwerkdiensten über ein unsicheres Netzwerk [20].
Die Datenkomprimierung kann die Übertragungsrate bei geringer Kanalbandbreite erheblich erhöhen. Die Übertragung von Dateien sowie deren Attribute ist für die anschließende forensische Analyse von großer Bedeutung.
dd. dd , , .
(. 2). “+” , , “-” — .

2 — .
- NetCat, Rsync ,
PS ...