Bachelorarbeit, 2007
89 Seiten, Note: 1
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
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.
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.
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.
User-Mode-Linux, UML, Virtualisierung, Linux-Kernel, Prozessmanagement, Speichermanagement, Kernelmodule, Sandbox, Sicherheit, Ausbruchsmöglichkeiten, Systemcall, Ptrace, Hostsystem, Virtual Machine Monitor, Embedded-UML.
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.
Die Arbeit behandelt die Systemarchitektur von Linux, die speziellen Virtualisierungsmechanismen von UML, das Speichermanagement innerhalb virtueller Instanzen sowie Sicherheitsaspekte und Angriffsvektoren.
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.
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.
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.
Zu den wichtigsten Begriffen zählen User-Mode-Linux, Systemvirtualisierung, Kernelmodule, Ptrace-Systemcall, Sandbox und Speichermanagement.
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.
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.
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.
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.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

