ScriptableViruseswithMarshalling Eicar Bonn 2012 Lehner Franz lehner.f@ikarus.at
CPU Ringe?
DOS/Win3.1/95/98/Me Einfache CPU Architektur Non Multitasking (Cooperatives Multitasking) Nur ein Ring! Ring 0 Vorteil: Schnell Resourcenschonend Einfach zu Programmieren (Treiber) Nachteil: Jedes Programm kann alles crashen Keine Resourcenverwaltung Multitasking Probleme (Blocking/Hangs) 3
WinNT, Linux, Unix Theoretische Sicht Komplexe CPU Architektur Multitasking Ring 0 0 1 2 Vorteil: Programm (2) kann nie Kernel (0) crashen Kernel steht über allem Abschottung der Programme CPU Limitiert Speicherzugriffe Nachteil: Treiber und Schnittstellen Konzepte notwendig Komplexere Programmierung Multitasking Probleme (Timing) 4
Windows Nt/2000/XP Praktische Sicht -2003 Excel Word OS Userspace Kernel File Syst em USB Grafik Stabil im Betrieb! -- Aber -- nicht sicher gegen Gezielte Angriffe Einnisten in den Kernel möglich, wenn User gleichzeitig Administrator ist Firefox Flash Verstecken des Echten OS s hinter dem Virus Unsichtbar gegenüber Userspace 5
Windows 7 Praktische Sicht Excel Firefox Word OS Userspace Kernel File Syste m USB Grafik Kernel Firewall UAC Ist eine art System Rechte Layer Jeder Benutzer ist limitiert Kernel Rechte Benötigt: Signaturen Zustimmung ( wollen sie.. ) Microsoft Hydra Extensions Flash 6
Windows 7 ExploitsEverywhere Word Userspace Sandbox == Virtuelle Maschine Excel PDF OS Kernel File Syste m USB Grafik PDF Firefox Flash Acrobat X PDF PDF Flash 7
Ring 4
Moderne Browser (sind eigentlich Betriebsysteme) Java script Menü System Flash Daten Austausch File System PDF HTML Redering Grafik 9
Moderne Browser Und haben sogar schon Viren! (Plugins) Java script Menü System Flash PDF Daten Austausch File System Virus HTML Redering Grafik 10
BrowserViren Mehrere Viren Stämme Bekannt Der Leistungsfähigste den wir bis jetzt gesehen haben war Expirio.Q Lief im Firefox als Plugin, installiert von einem Exploit im Flash Plugins sind im Home Verzeichnis, volle Rechte ohne Admin Rechte SSL Proxy Redirect Funktionalität Keyboard Hook & Logger SSL Zertifikate fake (damit es Grün wird) Firefox Update Faker Daten Transfer per HTTP Header Variablen Für Interessierte: Decodierter Virus http://db.tt/htnzxcdf 11
Ring 0
Flat View Compare Kernel Browser Javascript Flash PDF Einfallspunkt Kernel Rechte Browser Javascript Sandbox Flash PDF Es ist mittlerweile fast unmöglich, von ganz oben bis nach ganz unten zu kommen (Kernel Space) 13
Exploitsum mehr Rechte zu bekommen Dennoch Existieren Exploits die es von Oben bis nach Unten geschafft haben CVE-2011-5046 (Exploit im Kernel (Grafiksystem im Browser - einfache HTML Seite)) Jedes Windows CVE-2010-3147 (UAC Override - Windows Adressbuch) Jedes Windows CVE-2010-2729 (Stuxnet) Privilege Elevation (UAC Override) Windows < XP SP3 CVE-xx-xxxx (Stuxnet) Privilege Elevation (UAC Override Task Scheduler) Windows > XP SP3 14
Anforderungen an Neue Viren Updaten? Kann auffällig sein Einnisten? (Schwer) Auffällig Einfallspunkt Kernel Rechte Browser Javascript Sandbox Flash PDF Schwer Das Infizieren ist sehr schwer. Das Updaten ist kaum möglich oder würde auffallen Treiber sind signiert Bei Windows 8 Muss Microsoft Treiber signieren Selbst Gestohlene Zertifikate sind nicht ewig nutzbar (Timestamp AblaufZeit) 15
Viren mit Scriptsteuerung
Idee: Modularisiere und Scripteden Virus Netzwerk Kommunikation Keyboard Hook Filesystem Hook Virus Script sprache Virus Programm Harddisk Hook Virus exe mit Signatur 17
Steuere die Module von der Scritpsprache marshalling Function (Filehook()) { If (OS_Filehook.Name == Bauplan ) { Comm.SendFile(OS_Filehook.Name) } If (OS_Process == VirenscannerXYZ) { Deactivate_Trojan(); } } Keyboard Hook Filesystem Hook Netzwerk Kommunikation Virus Script sprache Virus exe mit Signatur Updatebar ohne den Virus selbst zu ändern. Minimalistischer Scriptinterpreter kann sehr sehr klein sein (3-4 kbytes) Simulator kann mit dem Virus nichts anfangen Kann per Default ein unauffälliges Programm sein Programm kann per Internet geladen werden Sehr Stabil, da Scriptsprache nicht abstürzt Kann Bestandteil jedes Grafikkarten/Netzwerkkarten Treibers sein. 18
Code Verstecke Verteilen des Codes öffentlich über Facebook Postings? (Browser Cache, Icons, DNS Sidechannels, Netzwerkkarten Paket?) 19
Code Verstecke Speichern des Codes über die Registry mittels Fehlerkorrektur (Software Licensing Speicher Tricks) 20
Optimale Einsatzmöglichkeiten Überall wo es schwer ist, mehrmals hinzukommen Überall, wo Updaten potentiell riskant ist (Auffällig) Updaten ohne Reboot! Hohe Ähnlichkeit zur ROP Programmierung Targets: AppStores (Apple / Google Play) Sobald einmal drinnen erlaubt er Zweckentfremdung APT preinstalled -> Industriespionage / Sabotage Konzept anwendbar auch bei Buffer Exploit CPU Weitere Verwendbarkeit: nicht auf das Betriebsystem beschränkt! (Ring x) 21
Beispiel Flame
Beispiel Flame Updaten? Kann auffällig sein Einnisten? Unauffällig Windows Update -> Sehr Schwer Erkennbarkeit: -> Unauffällig Viren Update: -> Auffällig wenn zu oft Kernel System Rights Browser Javascript Sandbox Flash PDF Das Infizieren ist sehr schwer ( Windows Update) Häufiges Updaten ist kaum möglich oder würde auffallen Trojaner Treiber sind signiert (Microsoft Zertifikat ) Selbst Rouge Zertifikate sind nicht ewig nutzbar (Timestamp AblaufZeit) Daher ist ein Scritping Modularer Virus Optimal für diesen Zweck 23
Ring X?
Ringe Klassische Betrachtung Kernel Browser Javascript Flash PDF Einfallspunkt Kernel Rechte Browser Javascript Sandbox Flash PDF 25
Ring X? Kernel Rechte Browser Javascript Sandbox Flash PDF Hyper visor CPU Kernel System Rights Programme Physische Hardware 26
Hypervisor Ring-1 Viren
HypervisorViren Windows Hypervisor Virus Volle Kontrolle über das OS Ändern des Hauptspeichers Ändern von Hardware zugriffen Unterbrechen des Betriebbsystems Unerkennbar (Kaum detektierbar) Einschränken des Betriebsystems Windows 28
HypervisorViren Programm Update Update Punkt Viru s Hyper visor CPU Kernel Rechte Browser Javascript Sandbox Flash Scripting Hypervisor Viruses Update per Speicherinhalt, Registry, Bilder,.. Unerkennbar 29
Ring-x Viren
Ring X? Kernel Rechte Browser Javascript Sandbox Flash PDF Grafikkarte Memory Controller Netzwerkkarte Soundkarte System Management Hyper visor CPU Kernel System Rights Programme USB IDE/SATA Physische Hardware 31
Ein Flip Flop in Verilog Hardware IST Software! regregister_value; // als Register oder Speichervariable wirereset, clock, set, en, datain; always@(posedge clock or negedge reset) begin// reagiert auf positive clock-flanke oder fallende reset-flanke. if(!reset) //asynchrones Rücksetzen, wenn reset= LOW register_value <= 1'b0; elseif(set) // synchrones Setzen, wenn set= HIGH register_value <= 1'b1; elseif(en) register_value <= datain; end Moderne CPU s wie eine Core besteht aus Millionen Zeilen Code mit Fehlern! Sehr Bekannt: Pentium Divisions Bug Intel Core CPU hat um die 80 Bekannte Fehler (siehe Errata) http://download.intel.com/design/mobile/specupdt/30922214.pdf 32
Hotfix? Nicht möglich Einnisten? Unauffällig Ring X? Einfallspunkt: Unklar Update Punkt Grafikkarte Memory Controller System Management Hyper visor CPU Kernel System Rights Programme Netzwerkkarte Soundkarte USB IDE/SATA Hardware wird kaum geprüft (Wie?) Hardware ist Software Kann Bugs,Exploits oder Backdoors haben Jedes Subsystem kann eine Firmware und eine CPU haben Subsysteme sind auch Firmware updatebar Sämtliche Systeme haben vollen Speicherzugriff 33
Erster Ring -4 Hack? Xbox == PC 17 Mistakes Microsoft Made In The Xbox Security http://db.tt/qtmyc9be http://events.ccc.de/congress/2005/fahrplan/attachments/674-slides_xbox.pdf 34
Erster Ring -4 Hack? Diese MicroCPU war imstande, beim Sarten die Komplette Sicherheit abzuschalten 35
Exploiting Micro CPU s
MicroCPU s Manchester Mark 1 (1948) 37
Manchester Mark 1 (1948) MicroCPU s 6 Befehle sind komplett ausreichend um einen Vollständigen Computer darzustellen 38
MicroCPU s Die Manchester Mark 1 CPU würde heute etwa 100 Bytes groß sein (als Virtuell CPU) (und ähnlich der hier ausschauen) 6 Befehle sind komplett ausreichend um einen Vollständigen Computer darzustellen 39
ExecutionofCPU s Als CPU für diesen Code würde ein einfacher Buffer Overflow reichen 40
Hotfix? Nicht möglich ExecutionofCPU s Einfallspunkt Update Punkt CodeAblage Grafikkarte Der Bug könnte zb. im TPM Controller liegen Und beim Verarbeiten vom Namen auftreten Memory Controller System Management Hyper visor CPU Kernel System Rights Programme Netzwerkkarte Soundkarte TPM CPU Virus IDE/SATA Ändern von Schlüsseln Code Injektion Password Override 41
Conclusio Einen Virus dort zu erstellen ist sehr hart Wenige Befehle Geringe Geschwindigkeit Kein vorkommen von 0 im Programm Aktuell kein Compiler für so etwas verfügbar Cpu ist nicht Compiler freundlich Ausführung ohne Spuren zu hinterlassen Kaum detektierbar Hardware kann nicht upgedated werden Verlust der Integrität des Rechners 42
Fragen