This thesis investigates how runtime code integrity of a modern operating systems (OSs) can be achieved. Existing mechanisms assume, that kernel code, once loaded into memory is static. We show, that this assumption is not true and that OSs perform benign self-optimization during runtime. We also investigate how to improve on kernel data integrity validation. We introduce an approach to identifying and classifying code pointers in memory. Additionally, we present a framework, that is able to both validate the integrity of self-modifying kernel code and to detect kernel-based code-reuse malware in memory in an efficient manner.
«
This thesis investigates how runtime code integrity of a modern operating systems (OSs) can be achieved. Existing mechanisms assume, that kernel code, once loaded into memory is static. We show, that this assumption is not true and that OSs perform benign self-optimization during runtime. We also investigate how to improve on kernel data integrity validation. We introduce an approach to identifying and classifying code pointers in memory. Additionally, we present a framework, that is able to bot...
»
Übersetzte Kurzfassung:
Diese Arbeit befasst sich mit der Frage wie die Laufzeitintegrität von modernen Betriebssystemen (BS) sichergestellt werden kann. Existierende Mechanismen gehen davon aus, dass der Kernelcode statisch ist, sobald er in den Arbeitsspeicher geladen ist. Wir zeigen, dass diese Annahme nicht stimmt und dass das BS zur Laufzeit gutartige selbstoptimierungen vornimmt. Weiter befassen wir uns auch mit der Frage wie die Sicherstellung der Datenintegrität verbessert werden kann. Wir zeigen einen Ansatz um Code Pointer im Speicher zu identifizieren und zu klassifizieren. Unsere prototypische Implementierung stellt sowohl die Integrität von selbstmodifizierendem Kernelcode sicher und kann effizient kernelbasierte Codereusemalware im Speicher erkennen.
«
Diese Arbeit befasst sich mit der Frage wie die Laufzeitintegrität von modernen Betriebssystemen (BS) sichergestellt werden kann. Existierende Mechanismen gehen davon aus, dass der Kernelcode statisch ist, sobald er in den Arbeitsspeicher geladen ist. Wir zeigen, dass diese Annahme nicht stimmt und dass das BS zur Laufzeit gutartige selbstoptimierungen vornimmt. Weiter befassen wir uns auch mit der Frage wie die Sicherstellung der Datenintegrität verbessert werden kann. Wir zeigen einen Ansatz u...
»