User-Mode-Linux ist eine Software, die sowohl in die Bereiche Benutzerprogramme, als auch Betriebssysteme zugeordnet werden kann. UML ist der Kategorie der Systemvirtualisierung zuzuordnen, dessen Funktionalität sich von weiteren Virtualiserungstechnologien stark unterscheidet. Eine UML-
Instanz wird vom Benutzer in einem Hostsystem als Benutzerprogramm gestartet und ohne Root-Privilegien am Hostsystem ausgeführt. UML verzichtet auf eine Virtualisierungsschicht. Die Architekturschnittstelle des UML-
Kernels ist die einzige Komponente, die sich von herkömmlichen Linuxkernel unterscheidet. Diese Schicht kommuniziert nicht mit der Hardware, sondern fordert Ressourcen vom Hostbetriebssystem als Benutzerprozess an. Diese Vorgehensweise beschränkt den Einsatz von UML auf Hostsystemen, die unter Linux betrieben werden.
Das erste Kapitel betrachtet die wesentlichen Komponenten eines Betriebssystems. Eingeleitet wird mit der Funktionsweise des Linuxkernels und die Differenzen der eingesetzten Architekturen. UML erzeugt für eigene Zwecke Prozesse am Host, weshalb auch das Thema Prozessmanagement betrachtet wird. Ein weiterer Punkt ist das Speichermanagement, da UML als Betriebssystem Haupt- und Festplattenspeicher benötigt, der vom Host zur Verfügung gestellt werden muss. Abgeschlossen wird dieses Kapitel mit einem Exkurs in die Funktionsweise alternativer Virtualisierungstechnologien.
Der Hauptteil umfasst die Funktionsweise und Eingliederung von UML auf einem Hostsystem. Es existieren unterschiedliche Varianten, wie UML am Host betrieben werden kann, weshalb deren Funktionsweisen analyisiert werden. Behandelt wird auch die Virtualisierung von Ressourcen durch UML.
Im letzten Kapitel werden die Sicherheitsaspekte von UML untersucht. Möglichkeiten, die einem Benutzer den Ausbruch aus UML auf das Hostsystem ermöglichen, werden aus unterschiedlichen Blickwinkeln erklärt, sowie Möglichkeiten, um Ausbrüche zu verhindern. Abschließend werden Einsatzgebiete er örtert, deren Erschließung durch UML in Zukunft geplant ist.
Inhaltsverzeichnis
1 Grundlagen
1.1 Linux-Kernel
1.1.1 Einleitung
1.1.2 Aufbau und Funktionsweise des monolithischen Kernels
1.2 Prozessmanagement
1.2.1 Prozesse vs. Threads
1.2.2 Erstellen & Beenden von Prozessen
1.2.3 Prozesszustände
1.2.4 User- & Kernelmode
1.2.5 Interrupts
1.3 Speichermanagement
1.3.1 Speicheradressierung
1.3.2 Paging
1.4 I/O
1.4.1 Hardwareschichten
1.4.2 Softwareschichten
1.5 Virtual Machines
1.5.1 Techniken
1.5.2 Virtual Machine Monitor
1.5.3 CPUs mit Virtualisierungstechnologien
2 UML Theorie
2.1 Architektur
2.1.1 Aufbau
2.1.2 Systemcalls
2.1.3 Traps
2.2 Managmentkonsole
2.2.1 Aufbau
2.3 Ausführungsmodi
2.3.1 tt-Modus
2.3.2 Skas3-Modus
2.3.3 Skas0-Modus
2.4 Speichermanagement
2.4.1 Hauptspeicher
2.4.2 Filesysteme
2.4.3 hostfs
2.4.4 humfs
2.5 Security
2.5.1 Ausbruchsmöglichkeiten
2.5.2 Chroot
2.5.3 Ausbruch aus einem UML-Jail
3 UML-Praxis - Ausbruchsmöglichkeiten
3.1 Ausbruch durch das Filesystem
3.1.1 Vorgehensweise
3.1.2 Abwehr
3.2 Kernelmodul
3.2.1 Idee
3.2.2 Charakteristik von Modulen
3.2.3 Funktion
3.2.4 Modulerstellung
3.3 UML-Hauptspeicher
3.3.1 Idee
3.3.2 Ablauf
3.4 Systemcallhacking
3.4.1 lcall
3.4.2 ptrace
3.5 Shellcodeinjection
3.5.1 Vorgehensweise
3.5.2 Aufbau
3.5.3 Einschleusung
4 Fazit und Ausblick
5 Glossar
A Zusatzinformation
A.1 UML-Theorie
A.1.1 Sysrq-Kommandos
A.1.2 Terminal I/O
A.1.3 tmpfs-Performancetest
Zielsetzung & Themen
Die Arbeit analysiert das Konzept von User-Mode-Linux (UML) als Virtualisierungstechnologie, die es ermöglicht, Linux-Betriebssysteme als Benutzerprozesse auf einem bestehenden Host-Linux auszuführen. Das Ziel ist es, die Funktionsweise, Architektur und Integration von UML zu verdeutlichen sowie kritische Sicherheitsaspekte und potenzielle Ausbruchsmöglichkeiten aus der virtualisierten Umgebung zu untersuchen.
- Grundlagen von Betriebssystemarchitekturen und Virtualisierung
- Architektur und Integrationsmodi von User-Mode-Linux
- Speichermanagement und Dateisysteme innerhalb von UML-Instanzen
- Sicherheitsanalysen und Ausbruchsszenarien (Breakouts)
- Praktische Implementierung von Angriffen und deren Abwehrmechanismen
Auszug aus dem Buch
3.2.1 Idee
Damit der UML-Benutzer Systemcalls aus dem UML-Kernelspace senden kann, muss dieser den Kernel veranlassen, diese Aufgabe zu erfüllen, da nur dieser im Kernelspace läuft. Der User kann nicht die Sourcen des Kernel anpassen und dann neu kompilieren, da dieser Vorgang außerhalb der Instanz geschehen müsste. Ermöglicht wird das jedoch durch Kernelmodule.
Kernelmodule besitzen die Eigenschaft, ebenfalls im Kernelspace zu laufen, da diese zum Betrieb an den Kernel gelinkt werden. Diese können zur Laufzeit geladen und auch wieder entladen werden. Diese Vorgänge werden innerhalb des Betriebssystems getätigt. Der Systemcall "create_module" überprüft, ob der User die erforderlichen Root-Rechte zum Laden des Modules besitzt [27].
Der Ablauf ist, wie in Abbildung 3.1 dargestellt. Der User generiert ein Modul, welches ein Programm am Host aufruft. Am besten geeignet ist hierfür der Aufruf einer Shell am Host. Nach dem Start können so sämtliche Operationen direkt in dieser Shell ausgeführt werden. Nach der erfolgreichen Programmierung (1) und Kompilierung (2) dieses Moduls wird dieses an den Kernel gebunden (3) und auch automatisch ausgeführt. Der Aufruf der Hostshell löst einen Systemcall (4) aus. Da dies durch das Kernelmodul erfolgt, wird der Systemcall im Kernelspace generiert. Die "ptrace"-Funktion am Host lässt diesen passieren (5) und dieser wird somit am Hostsystem ausgeführt.
Zusammenfassung der Kapitel
1 Grundlagen: Das Kapitel erläutert die wesentlichen Komponenten eines Betriebssystems, einschließlich Prozess- und Speichermanagement, I/O-Steuerung und Virtualisierungstechniken.
2 UML Theorie: Dieses Kapitel beschreibt den Aufbau und die Funktionsweise von User-Mode-Linux, verschiedene Ausführungsmodi sowie die Verwaltung von Speicher und Dateisystemen.
3 UML-Praxis - Ausbruchsmöglichkeiten: Hier werden spezifische Methoden untersucht, wie Benutzer aus einer UML-Instanz ausbrechen und auf das Hostsystem zugreifen können, sowie entsprechende Abwehrmaßnahmen.
4 Fazit und Ausblick: Das Fazit fasst die Einzigartigkeit der UML-Architektur zusammen und erörtert zukünftige Einsatzgebiete, wie etwa eingebettete Systeme.
5 Glossar: Das Glossar liefert Definitionen zu zentralen Begriffen der Arbeit.
A Zusatzinformation: Der Anhang enthält vertiefende Informationen zu Sysrq-Kommandos, Terminal-I/O und Ergebnissen eines Performancetests.
Schlüsselwörter
User-Mode-Linux, UML, Virtualisierung, Linux-Kernel, Prozessmanagement, Speichermanagement, Kernelmodule, Sandbox, Sicherheit, Ausbruchsmöglichkeiten, Systemcall, Ptrace, Hostsystem, Virtual Machine Monitor, Embedded-UML.
Häufig gestellte Fragen
Was ist das grundlegende Konzept von User-Mode-Linux?
User-Mode-Linux ist eine Virtualisierungstechnologie, die es erlaubt, ein vollständiges Linux-Betriebssystem als gewöhnlichen Benutzerprozess innerhalb eines anderen Linux-Systems auszuführen, ohne dass eine spezielle Virtualisierungsschicht erforderlich ist.
Welche zentralen Themenfelder werden in der Arbeit behandelt?
Die Arbeit behandelt die Systemarchitektur von Linux, die speziellen Virtualisierungsmechanismen von UML, das Speichermanagement innerhalb virtueller Instanzen sowie Sicherheitsaspekte und Angriffsvektoren.
Was ist das primäre Ziel der Arbeit?
Das Ziel ist es, die Funktionsweise von UML im Detail zu analysieren und zu zeigen, wie das Zusammenspiel zwischen UML-Kernel und Host-System zur Lösung verschiedener Aufgaben genutzt werden kann, aber auch welche Sicherheitsrisiken dabei entstehen.
Welche wissenschaftliche Methode wird angewendet?
Die Arbeit basiert auf einer fundierten Literatur- und Technologieanalyse der Linux-Internals, der UML-Architektur und der Untersuchung von Sicherheitsmechanismen durch theoretische Modellierung und Praxisbeispiele.
Worum geht es im Hauptteil der Arbeit?
Der Hauptteil gliedert sich in die theoretische Betrachtung der UML-Architektur und ihre praktische Anwendung bei Sicherheitsanalysen, insbesondere bei der Untersuchung von Ausbruchsmöglichkeiten ("Breakouts") aus der UML-Umgebung.
Welche Schlüsselbegriffe charakterisieren die Arbeit?
Zu den wichtigsten Begriffen zählen User-Mode-Linux, Systemvirtualisierung, Kernelmodule, Ptrace-Systemcall, Sandbox und Speichermanagement.
Wie unterscheidet sich der tt-Modus vom Skas3-Modus?
Im tt-Modus erfordert jeder UML-Prozess einen eigenen Host-Prozess, was ineffizient ist. Der Skas3-Modus optimiert dies durch Modifikationen am Host-Kernel, wodurch der Kernel vom Prozess entkoppelt wird und die Performance steigt.
Warum ist das Dateisystem hostfs für UML wichtig?
Hostfs ermöglicht es einer UML-Instanz, direkt auf Verzeichnisse und Dateien des Hostsystems zuzugreifen, was den Datenaustausch zwischen Host und Gast signifikant vereinfacht, jedoch auch Sicherheitsüberlegungen erfordert.
Welche Rolle spielen Kernelmodule bei einem Ausbruch?
Kernelmodule können dazu missbraucht werden, eigenen Code mit Kernel-Rechten auszuführen, was einem Angreifer ermöglicht, die Isolation der UML-Instanz zu durchbrechen und Befehle auf dem Host auszuführen.
Können diese Ausbruchsversuche effektiv verhindert werden?
Ja, durch den Einsatz von Sicherheitsmechanismen wie "Jails" (chroot), die Deaktivierung des Ladens von Kernelmodulen und die Verwendung von Capabilities kann das Sicherheitsniveau deutlich erhöht werden.
- Quote paper
- Christoph Scharnböck (Author), 2007, UML - User Mode Linux, Munich, GRIN Verlag, https://www.grin.com/document/127246