Improving Digital Forensics and Incident Analysis in Production Environments by Using Virtual Machine Introspection
Total Page:16
File Type:pdf, Size:1020Kb
Improving Digital Forensics and Incident Analysis in Production Environments by Using Virtual Machine Introspection Benjamin Taubmann Dissertation zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften Eingereicht an der Fakultät für Informatik und Mathematik der Universität Passau Juli 2019 Gutachter: Prof. Dr. Hans P. Reiser Prof. Dr. Nuno Miguel Carvalho dos Santos Abstract Main memory forensics and its special form, virtual machine introspection (VMI), are powerful tools for digital forensics and can be used to improve the security of computer-based systems. However, their use in production systems is often not pos- sible. This work identifies the causes and offers practical solutions to apply these techniques in cloud computing and on mobile devices to improve digital forensics and incident analysis. Four key challenges must be tackled. The first challenge is that many existing solu- tions are not reproducible, for example, because the corresponding software compo- nents are not available, obsolete or incompatible. The use of these tools is also often complex and can lead to a crash of the system to be monitored in case of incorrect use. To solve this problem, this thesis describes the design and implementation of Libvmtrace, which is a framework for the introspection of Linux-based virtual ma- chines. The focus of the developed design is to implement frequently used methods in encapsulated modules so that they are easy for developers to use, optimize and test. The second challenge is that many production systems do not provide an interface for main memory forensics and virtual machine introspection. To address this problem, this thesis describes possible solutions for how such an interface can be implemented on mobile devices and in cloud environments designed to protect main memory from unprivileged access. We discuss how cold boot attacks, the ARM TrustZone and the hypervisor of cloud servers can be used to acquire data from storage. The third challenge is how to reconstruct information from main memory efficiently. This thesis describes how these questions can be solved by employing two practical examples. The first example involves extracting the keys of encrypted TLS con- nections from the main memory of applications to decrypt network traffic without affecting the performance of the monitored application. The TLSKex and DroidKex architecture describe two approaches to localize the keys efficiently with the help of semantic knowledge in the main memory of applications. The second example dis- cusses how to monitor and document SSH sessions of potential attackers from outside of a virtual machine. It is important that the monitoring routines are not noticed by an attacker. To achieve this, we evaluate how to optimize the performance of the monitoring mechanism. The fourth challenge is how to deal with the performance degradation caused by intro- spection in productive systems. This thesis discusses how this can be achieved using the example of a SIEM system. To reduce the performance overhead, we describe how to configure the monitoring routine to collect only the information needed to detect incidents. Also, we describe two approaches that permit the monitoring routine to be dynamically adjusted at runtime to extract more information if necessary so that incidents can be better analyzed. i Zusammenfassung Hauptspeicherforensik und dessen Spezialform, die Introspektion von virtuellen Maschi- nen (VMI), sind leistungsstarke Werkzeuge für die digitale Forensik und können zur Verbesserung der Sicherheit von computergestützten Systemen eingesetzt werden. Allerd- ings ist der Einsatz davon in Produktivsystemen oft nicht möglich. Diese Arbeit iden- tifiziert die Ursachen dafür und bietet praktische Lösungen an um diese Techniken in Cloud-Computing und auf mobilen Endgeräten einzusetzen um digitale Forensik und Vorfallsanalyse verbessert durchführen zu können. Dazu müssen vier wesentliche Herausforderungen gelöst werden. Die erste Heraus- forderung ist, dass viele bereits vorhandene Lösungsansätze nicht reproduzierbar sind, zum Beispiel weil die entsprechenden Softwarekomponenten nicht verfügbar, veraltet oder nicht kompatibel sind. Ebenfalls ist die Verwendung dieser Werkzeuge oft kom- plex und kann bei fehlerhafter Verwendung zum Absturz des zu überwachenden Systems führen. Um dieses Problem zu lösen, beschreibt diese Arbeit das Design und die Im- plementierung von Libvmtrace, welches ein Framework für die Introspektion von Linux basierten virtuellen Maschinen ist. Der Fokus des erarbeiteten Designs liegt dabei darauf häufig verwendete Methoden in abgekapselten Modulen zu implementieren, sodass diese leicht für Entwickler zu verwenden, zu optimieren und zu testen sind. Die zweite Herausforderung besteht darin, dass viele Produktivsysteme keine Schnittstelle bereitstellen die für Hauptspeicherforensik und die Introspektion von virtuellen Maschi- nen genutzt werden kann. Um dieses Problem zu adressieren, beschreibt diese Arbeit Lösungsansätze, wie eine solche Schnittstelle auf mobilen Endgeräten und in Cloud- Umgebungen umgesetzt werden kann die dafür entworfen sind, den Hauptspeicher vor unprivilegierten Zugriff zu schützen. Wir betrachten dazu, wie Kaltstartattacken, die ARM TrustZone und der Hypervisor von Cloud Servern für die Datenakquise von Spe- icher genutzt werden kann. Die dritte Herausforderung ist die Fragestellung wie Informationen aus dem Hauptspeicher effizient rekonstruiert werden können. Diese Arbeit beschreibt anhand von zwei praxisna- hen Beispielen, wie diese Fragestellungen gelöst werden kann. In dem ersten Beispiel geht es darum die Schlüssel von verschlüsselten TLS-Verbindungen aus dem Hauptspeicher von Anwendungen zu extrahieren, um den Netzwerkverkehr zu entschlüsseln, ohne die Performanz der überwachten Anwendung zu beeinträchtigen. Die TLSKex und DroidKex Architektur beschreiben dazu zwei Lösungsansätze, um die Schlüssel effizient mithilfe von semantischem Wissen im Hauptspeicher von Anwendungen zu lokalisieren. Das zweite Beispiel diskutiert wie man SSH-Sitzungen von möglichen Angreifern von außerhalb einer virtuellen Maschinen überwachen und dokumentieren kann. Dazu ist es wichtig, dass die Überwachungsroutinen nicht von einem Angreifer bemerkt werden. Um dies zu erreichen, evaluieren wir wie man die Performanz der Introspektion optimieren kann. Die vierte Herausforderung ist wie man mit Leistungseinbußen, welche durch die Intro- spektion entstehen, in Produktivsystemen umgehen kann. Die vorliegende Arbeit disku- tiert anhand von dem Beispiel eines SIEM Systemens, wie dies erreicht werden kann. Um die Leistungseinbußen zu reduzieren, beschreiben wir wie man die Überwachungsroutine so konfigurieren kann, dass nur Informationen gesammelt werden die benötigt werden, um Vorfälle zu erkennen. Ebenfalls, beschreiben wir zwei Ansätze, die es erlauben die Überwachungsroutine dynamisch zur Laufzeit anzupassen um gegebenenfalls mehr Infor- mationen zu extrahieren damit Vorfälle besser aufgeklärt werden können. iii Acknowledgments First, I thank Hans P. Reiser for supporting me during the thesis and for all the discussion we had. I am really grateful, for his advice and to know that I can always count on him. I also owe him great thanks for giving me the chance to work on a fascinating topic in a research-friendly environment. Second, I thank Nuno Santos for his valuable feedback and his willingness to support this thesis. I also want to thank Juan David Parra for sharing the good and bad sides of publishing research. Moreover, I want to thank Stewart Senta- noe for supporting my research by building on top of and extending my implementations. Additionally, I am also very grateful to Siglinde Böck, who has always helped me to cope with non-scientific things in everyday life. Besides all that I want to thank all students and colleagues that contributed to my research: Omar Alabduljaleel, Michael Auer, Alexan- der Böhm, Dominik Dusold, Christian Frädrich, Miguel Guerra, Manuel Huber, Thomas Kittel, Stefan Kunz, Bojan Kolosnjaji, Henrich Pöhls, and Noëlle Rakatondravony. Finally, I would like to thank my parents who made it possible for me to study computer science and to arouse my interest in science at an early age. Contents Contents vii 1 Introduction 1 1.1 Problem Statement .....................................2 1.2 Main Contributions .....................................3 1.3 Publications .........................................6 1.4 Structure of this Thesis ...................................8 2 Background 9 2.1 Virtualization ........................................9 2.2 The Xen Hypervisor ..................................... 12 2.3 Digital Forensics ....................................... 13 2.4 Memory Forensics ...................................... 14 2.5 Virtual Machine Introspection ............................... 16 2.6 LibVMI ............................................ 18 2.7 TLS Internals ........................................ 21 2.8 Summary ........................................... 23 3 An Extensible Architecture For Memory Analysis 25 3.1 State of the Art ....................................... 26 3.2 Requirements of VMI-based Applications ........................ 29 3.3 Design Goals ......................................... 31 3.3.1 Static Analysis ................................... 31 3.3.2 Dynamic Analysis .................................. 31 3.3.3 Network Traffic ................................... 33 3.4 System Design ........................................ 34 3.5 Libvmtrace