SubVirt

Transcrição

SubVirt
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
SubVirt
Stefan Kempf
Lehrstuhl für Informatik 3
Friedrich-Alexander-Universität Erlangen-Nürnberg
18. Juli 2007
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
1 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Inhalt
1
Einführung und Motivation
2
Installation eines VMBR
3
Anwendungen
4
Kontrolle behalten
5
Ressourcenverbrauch
6
VMBRs erkennen
7
Literatur
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
2 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Einbruch in ein System
Beispielszenario
Angreifer bricht in System ein und will unentdeckt bleiben
Programme wie ps, who usw. werden ausgetauscht
Manipulation wird durch Intrusion-Detection-Systeme erkannt
Rootkits nisten sich im Kernel ein und umgehen so
Intrustion-Detection
Fazit
Das System kontrolliert, wer eine tiefer liegende Schicht kontrolliert
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
3 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Virtual machine based rootkits (VMBRs)
Idee eines VMBR
Ausführung des Betriebssystems in einer virtuellen Maschine
Parallel zum VMM läuft ein Angriffsystem (z.B. Linux), das
beliebige Malware ausführt.
Bei perfekter Virtualisierung wird das Gastsystem die
Aktivitäten des Angreifers nicht erkennen
Zu klären
Wie bekommt man das Betriebssystem in die virtuelle Maschine?
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
4 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Schaubild
Anwendung
Anwendung
Malware
Malware
Gastsystem
Angriffssystem
VMM
Hardware
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
5 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
SubVirt
Wozu?
VMBRs könnten in Zukunft eine neue Bedrohung darstellen
Frühzeitige Entwicklung von Verteidigungstrategien
Zwei Referenzimplementierungen eines VMBR
Begonnen von Forschern der Uni Michigan und Microsoft
Research
VMWare und ein modifizierter Linux Kernel
Virtual PC und minimales Windows XP (beide angepasst)
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
6 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Vorgehensweise von SubVirt
Zugriff auf Rechner verschaffen
Installation
Linux: Swapping deaktivieren, Installation in Swappartition
Windows: Installation am Anfang der Partition, dort liegende
Daten vorher umkopieren
System herunterfahren
Kurz vor Shutdown: Bootsequenz manipulieren
Nach erneutem Hochfahren wird VMBR geladen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
7 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Kategorien und Beispiele
Interaktionslos
Spam Relay, Webserver für Phishing, Bots für DDoS-Attacken
Observierend
Keylogger, Paketsniffer
Manipulierend
Nachrichten fälschen oder löschen, Programmausführung
beeinflussen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
8 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Phishing Webserver
Webserver thttpd läuft innerhalb des Angriffssystems
VMM leitet fast den gesamten Netzverkehr an das Gastsystem
weiter
Nur Pakete für TCP-Port 8080 gehen an thttpd
Kein eigener Code nötig, Zurückgreifen auf bereits vorhandene
Software möglich
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
9 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Keylogger
Emulation des Keyboardcontrollers von Virtual PC wird
modifiziert
Alle Tastendrücke gehen nun an ein Programm im
Angriffssystem, dann ins Gastsystem
Anwendung im Angriffs-BS extrahiert Passwörter
Modifikation von Virtual PC umfasst 60 Zeilen Code
Codeumfang des Keyloggers beträgt 254 Zeilen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
10 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Virtual-machine introspection (VMI)
Techniken, um Programmabläufe in einer VM
nachzuvollziehen
Abfragen oder Ändern von Registerwerten (häufig zu lowlevel)
Anhand von Symboltabellen/Debuginformationen interessante
Stellen im Code finden
Diese manipulieren oder mittels Breakpoint auf Ausführung
warten
VMM kann Code des Gastsystems nutzen (damit z.B.
Dateisystemzugriff nicht selbst programmiert werden muss)
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
11 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Stehlen sensitiver Dateien
Suche im Gastsystem nach interessanten Dateien (z.B.
/etc/shadow)
Dateisystemzugriff erfolgt mittels VMI
24 Zeilen in Perlcode innerhalb des Angriffsystems
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
12 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Programmausführung manipulieren I
Problem: x86 nicht voll virtualisierbar
redpill [3] erkennt Virtualisierung durch sidt-Instruktion
sidt liefert Adresse der Interruptdeskriptortabelle des VMM
und nicht des BS falls virtualisiert
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
13 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Programmausführung manipulieren II
Lösung: VMI
Prüfe bei bei jedem exec(), ob redpill ausgeführt werden soll
Falls ja, setze in redpill Breakpoint auf sidt-Befehl
Emuliere sidt, wenn Breakpoint erreicht wird
104 zusätzliche Zeilen Code in Virtual PC
Funktioniert nicht bei Programmen, die dynamisch Code
erzeugen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
14 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Kontrolle behalten
In der Zeit zwischen Hochfahren des Rechners und Start des
VMM kann Rootkit entdeckt werden
Anzahl der Reboots und Shutdowns ist zu minimieren
Neustart wird durch Reset der virtuellen Hardware simuliert
Herunterfahren des Systems versetzt Rechner nur in
Energiesparmodus
Unaufmerksame/Unerfahrene Nutzer merken nicht, dass
System noch läuft
VMBR kann somit kompletten Bootvorgang vortäuschen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
15 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Setup
System 1
Pentium 4 2.8 GHz
1 GB RAM
RedHat Enterprise Linux 4
System 2
Pentium 4 1 GHz
256 MB RAM
Windows XP
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
16 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Benötigter Festplattenspeicher
VMware VMBR
Virtual PC VMBR
Stefan Kempf (FAU)
komprimiert
95 MB
106 MB
SubVirt
unkomprimiert
228 MB
251 MB
18. Juli 2007
17 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Zeiten
Installation
Hochfahren ohne VMBR
Neustart im VMBR
Hochfahren im VMBR
Start des Hosts
Start von Host und Gast
Stefan Kempf (FAU)
VMware VMBR
24s
53s
74s
96s
52s
145s
SubVirt
Virtual PC VMBR
262s
23s
54s
nicht implementiert
45s
101s
18. Juli 2007
18 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennungsmöglichkeiten
Durch Software unterhalb des VMBR
Erkennung relativ leicht möglich, da Schicht unter VMBR alle
darüber liegenden kontrollieren kann
Durch Software oberhalb des VMBR
Ansatz: VMBR selbst verbraucht Betriebsmittel
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
19 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennung durch Software unterhalb des VMBR
Beispiele
Booten von anderem Medium und auf Platte nach VMBR
suchen (vorher Netzstecker ziehen, sicherer Bootvorgang
vorausgesetzt)
Betriebssystem bereits in VM laufen lassen: VMBR nistet sich
oberhalb der VM ein und kann von ihr erkannt werden
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
20 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennung durch Software oberhalb des VMBR I
CPU
VMBR und Malware verbrauchen CPU-Zeit
Rechenintensives Programm starten, Ausführungszeit messen
und mit Laufzeiten eines identischen, nicht infizierten Systems
vergleichen
Gegenmaßnahmen des VMBR
Zur Tarnung Systemuhr langsamer laufen lassen
Daher Zeiten z.B. mit Stopuhr messen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
21 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennung durch Software oberhalb des VMBR II
I/O
SubVirt lässt Gast Treiber für spezielle, virtuelle Hardware
verwenden
Spiele laufen langsamer mit virtueller 3D-Karte
VMM müsste Hardware perfekt virtualisieren
Virtuelle Hardware muss sich bei Randbedingungen in
Spezifikation verhalten wie die echte
Praktisch unmöglich bei der Vielzahl an Hardware
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
22 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennung durch Software oberhalb des VMBR III
Gegenmaßnahmen des VMBR
Nur nötigste Hardware virtualisieren (z.B. Tastatur wenn
Keylogger eingesetzt wird)
Direktzugriff auf restliche Geräte erlauben
DMA könnte aber Zugriff auf Speicher des VMBR erlauben
In Zukunft IOMMU nutzen, um Speicher des VMBR vor DMA
zu schützen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
23 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennung durch Software oberhalb des VMBR IV
Speicher
VMBR belegt RAM und Plattenplatz
Programm schreiben, das auf identischem, uninfiziertem
System den kompletten Speicher alloziert
Speicheranforderung wird nur in VM fehlschlagen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
24 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Erkennung durch Software oberhalb des VMBR V
Gegenmaßnahmen des VMBR
Paging verwenden, um Mangel an RAM auszugleichen
Programm läuft dann langsamer, aber Unterschiede kaum
messbar, wenn VMBR wenig Speicher verbraucht (bei
SubVirt: 3% des RAM)
Von VMBR belegte Plattenblöcke komprimieren und/oder für
Gastsystem als beschädigt vortäuschen
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
25 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Literatur I
Tal Garfinkel and Mendel Rosenblum.
A Virtual Machine Introspection Based Architecture for
Intrusion Dectection.
10th ISOC Symposium on Network and Distributed Systems
Security (SNDSS), Februar 2003.
Samuel T. King, Peter M. Chen, Yi-Min Wang, Chad
Varbowski, Helen J. Wang, and Jacob R. Lorch.
SubVirt: Implementing malware with virtual machines.
2006.
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
26 / 27
Einführung und Motivation
Installation eines VMBR
Anwendungen
Kontrolle behalten
Ressourcenverbrauch
VMBRs erkennen
Literatur
Literatur II
Joanna Rutkowska.
Red Pill... or how to detect VMM using (almost) one CPU
instruction.
http://invisiblethings.org/papers/redpill.html, 2004.
Stefan Kempf (FAU)
SubVirt
18. Juli 2007
27 / 27