New Methods of Forensic Memory Analysis and Acquisition
Total Page:16
File Type:pdf, Size:1020Kb
All your System Memory are belong to us: From Low-Level Memory Acquisition to High-Level Forensic Event Reconstruction Von Hauptspeicherakquise auf niedriger Systemebene zu forensischer Ereignisrekonstruktion auf hoher Abstraktionsebene Der Technischen Fakultät der Friedrich-Alexander-Universität Erlangen-Nürnberg zur Erlangung des Doktorgrades Dr.-Ing. vorgelegt von Tobias Latzo aus Forchheim Als Dissertation genehmigt von der Technischen Fakultät der Friedrich-Alexander-Universität Erlangen-Nürnberg Tag der mündlichen Prüfung: 09.07.2021 Vorsitzender des Promotionsorgans: Prof. Dr.-Ing. habil. Andreas P. Fröba Gutachter: Prof. Dr.-Ing. Felix Freiling Prof. Dr. rer. nat. Hans P. Reiser Abstract This thesis comprises two parts. In the first part, we unveil the limitations of forensic event reconstruction with log files. To enhance forensic event reconstruction, we use system call traces treated as log files. System call traces are gained via virtual machine introspection, which analyzes the target system’s memory. System memory analysis, in general, has evolved into an essential part of today’s forensic investigations. For this, memory needs to be acquired first, becoming more difficult with upcoming system security features. Hence, the second part of this thesis is dedicated to memory acquisition techniques. First, we survey the landscape of forensic memory acquisition techniques. Then we introduce new low-layer memory acquisition techniques and tools. In the first part of this thesis, we calculate characteristic fingerprints for various typical Linux administration-related events. We use different standard log files, and additionally, we make use of system call traces. While these turn out to be beneficial for event detection, they have a significant impact on performance. Hence, we research which system callsare discriminative and improve performance by only tracing relevant ones. The second part of this thesis is dedicated to low-level memory acquisition techniques starting with a universal taxonomy and survey. On the one side, the survey reveals, the lower the memory acquisition technique’s layer, the better. On the other side, only a few tools do run “below” the operating system. In the further course of the thesis, four techniques are introduced that do operate on low layers. All techniques come with pros and cons and have their particular use cases. Our first two techniques are integrated into the computer’s firmware. UEberForensIcs acquires memory from the UEFI Shell. To acquire memory, one needs to restart the system and open the UEFI Shell. System memory is exfiltrated over the network. Another approach is to hook UEFI’s Runtime Services that are called by the target’s operating system. The third technique we introduce makes use of Direct Memory Access (DMA). We leverage the high capabilities of Baseboard Management Controllers (BMCs), which are standard in remote administration servers. With BMCLeech we introduce stealthy memory acquisition from the BMC via Direct Memory Access (DMA) that is compatible with the memory forensic tool PCILeech. Eventually, we use the little-known Intel Direct Connect Interface (DCI) to acquire system memory via JTAG debugging. This approach is beneficial in terms of atomicity and integrity of the resulting memory image. DCILeech is also compatible with PCILeech and so benefits from all its features. Additionally, we show how to read the secured memoryof Intel SGX enclaves. i Zusammenfassung Diese Arbeit besteht aus zwei Teilen. Im ersten Teil zeigen wir die Grenzen der forensischen Ereignisrekonstruktion mit Logdateien auf. Um die forensische Ereignisrekonstruktion zu verbessern, verwenden wir Systemaufrufspuren, die als Logs behandelt werden. System- aufrufspuren werden über Virtual Machine Introspection gewonnen, eine Technik, die den Speicher des Zielsystems analysiert. Generell hat sich die Analyse des Systemspeichers zu einem wesentlichen Bestandteil der heutigen forensischen Untersuchungen entwickelt. Hierfür muss zunächst der Speicher akquiriert werden, was durch zunehmende Systemsicher- heitsfeatures schwieriger geworden ist. Daher ist der zweite Teil dieser Arbeit den Techniken zur Hauptspeicherakquise gewidmet. Zunächst geben wir einen Überblick über existie- rende Techniken. Anschließend stellen wir neue Speicherakquisetechniken auf niedriger Systemebene vor. Im ersten Teil dieser Arbeit berechnen wir charakteristische Fingerabdrücke für verschiede- ne typische Ereignisse im Zusammenhang mit der Linux-Administration. Wir verwenden verschiedene Standard-Logdateien. Zusätzlich machen wir Gebrauch von Systemaufruf- spuren. Diese erweisen sich zwar als hilfreich für die forensische Ereignisrekonstruktion, haben aber einen erheblichen Einfluss auf die Performance. Daher untersuchen wir, welche Systemaufrufe diskriminierend sind und verbessern die Performance, indem wir nur die relevanten tracen. Der zweite Teil dieser Arbeit widmet sich den Low-Level-Speicherakquisetechniken, be- ginnend mit einer universellen Taxonomie und einem Survey. Auf der einen Seite zeigt das Survey, dass die Speicherakquisetechniken umso besser sind, je tiefer die Ebene ist, auf der sie ausgeführt werden. Andererseits gibt es nur wenige Tools, die “unterhalb” des Betriebssystems ausgeführt werden. Im weiteren Verlauf der Arbeit werden vier Techniken vorgestellt, die auf niedrigen Schichten arbeiten. Alle Techniken haben ihre Vor- und Nachteile und ihre speziellen Anwendungsfälle. Unsere ersten beiden Techniken werden in die Firmware des Computers integriert. UE- berForensIcs sichert Speicher von der UEFI Shell. Um Speicher zu sichern, muss man das System neu starten und die UEFI Shell öffnen. Der Systemspeicher wird über das Netzwerk exfiltriert. Ein anderer Ansatz ist das Hooking der UEFI Runtime Services, die vom Betriebssystem des Zielsystems aufgerufen werden. Die dritte Technik nutzt direkten Speicherzugriff (DMA). Wir nutzen die hoch-privilegierte Anbindung von Baseboard Management Controllern (BMCs), die es für Fernwartung für Server gibt. Mit BMCLeech führen wir eine verdeckte Speicherakquise vom BMC über DMA ein, die mit dem Speicherforensik-Tool PCILeech kompatibel ist. Schließlich nutzen wir das wenig bekannte Intel Direct Connect Interface (DCI), um Systemspeicher über JTAG-Debugging zu sichern. Dieser Ansatz ist vorteilhaft in Bezug auf Atomarität und Integrität des Speicherabbilds. DCILeech ist auch mit PCILeech kompatibel und profitiert so von allen seinen Funktionen. Zusätzlich zeigen wir, wieman den gesicherten Speicher von Intel SGX- Enklaven auslesen kann. ii Acknowledgments I would like to thank my doctoral advisor Felix Freiling for offering me to work with him at his Chair for IT-Security Infrastructures at the Department of Computer Science at the FAU Erlangen-Nuremberg, his time for various project meetings, and his continuous support. I also want to thank all my colleagues at the Chair for a friendly and casual working atmosphere, especially Ralph Palutke for discussing countless research ideas and nonsense. I also have to thank my friends and especially my girlfriend Sarah for being the precious “life” in my work-life balance. Last but not least, I want to thank my parents for their encouragement and incessant support of my dissertation project as well as my entire studies. iii Contents 1 Introduction 1 1.1 Outline ...................................... 2 1.2 Contribution ................................... 4 1.3 Publications.................................... 7 2 Background 9 2.1 Calculating Characteristic Fingerprints..................... 9 2.1.1 System Call Tracing........................... 9 2.1.2 Forensic Fingerprint Calculation .................... 9 2.2 Methods for Privilege Separation........................ 10 2.2.1 Privilege Rings.............................. 10 2.2.2 Virtual Memory ............................. 11 2.2.3 Virtualizable Architectures and Virtualization Extensions . 12 2.2.4 Unified Extensible Firmware Interface................. 12 2.2.5 System Management Mode ....................... 13 2.2.6 PCI Express and DMA ......................... 13 2.2.7 Hardware Memory Encryption and Intel SGX............. 14 2.2.8 Out-Of-Band Management ....................... 15 2.2.9 JTAG Debugging............................. 15 2.3 Memory Forensics ................................ 16 3 Limitations of Forensic Event Reconstruction based on Log Files 19 3.1 Experimental Setup ............................... 20 3.1.1 Scenario and Attacker Model ...................... 20 3.1.2 Log Source Classification ........................ 21 3.1.3 Experimental Architecture........................ 22 3.1.4 Feature Sets................................ 23 3.1.5 Events and Event Classification..................... 25 3.2 Forensic Fingerprints............................... 25 3.2.1 Handling Background Noise....................... 27 3.2.2 Non-Characteristic Fingerprints..................... 28 3.2.3 Characteristic Fingerprints ....................... 29 3.3 Matching ..................................... 32 3.3.1 Methodology ............................... 33 3.3.2 Matching Results............................. 33 v Contents 3.3.3 Stability against Unknown Events ................... 35 3.4 System Calls for Forensic Event Reconstruction................ 36 3.4.1 System Call Distribution in System Activity and Characteristic Fingerprints................................ 37 3.4.2 The Cost Function............................ 38 3.4.3 Greedy Elimination of Expensive System Calls ...........