Rootkit
Transcript
Rootkit
Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2011/2012 Rootkit Alessandro Reina <[email protected]> Aristide Fattori <[email protected]> January 19, 2012 A. Fattori Rootkit January 19, 2012 1 / 36 Introduzione Rootkit I rootkit sono (insiemi di) strumenti utilizzati per nascondere la presenza di attività maligne su in sistema compromesso, in modo tale da prolungare il più possibile la possibilità di accedervi dopo la compromissione A. Fattori Rootkit January 19, 2012 3 / 36 Rootkit I rootkit sono (insiemi di) strumenti utilizzati per nascondere la presenza di attività maligne su in sistema compromesso, in modo tale da prolungare il più possibile la possibilità di accedervi dopo la compromissione Cosa nascondere? File Connessioni di rete Chiavi di registro Processi Servizi ... A. Fattori Rootkit January 19, 2012 3 / 36 Rootkit I rootkit sono (insiemi di) strumenti utilizzati per nascondere la presenza di attività maligne su in sistema compromesso, in modo tale da prolungare il più possibile la possibilità di accedervi dopo la compromissione Cosa nascondere? File Connessioni di rete Chiavi di registro Processi Servizi ... Mentre la maggior parte dei malware “comuni” sono per sistemi Windows, esistono numerosi rootkit “into the wild” per sistemi Linux. Perché? A. Fattori Rootkit January 19, 2012 3 / 36 Dove agiscono? App App App Kernel & drivers R3 Hypervisor R0 BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 4 / 36 Dove agiscono? App App App Kernel & drivers R3 Hypervisor R0 BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 4 / 36 Dove agiscono? App App App Kernel & drivers R3 Hypervisor R0 BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 4 / 36 Dove agiscono? App App App Kernel & drivers R-1 Hypervisor BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 4 / 36 Dove agiscono? App App App Kernel & drivers R-2 Hypervisor BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 4 / 36 Dove agiscono? App App App Kernel & drivers ? Hypervisor BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 4 / 36 App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU User-space Rootkit in user-space Installare una backdoor a user-space è banale, ma come nasconderla? Possibile? necessari privilegi di amministratore? non possono modificare la sorgente delle informazioni. . . (kernel) . . . modificano gli strumenti che le leggono. A. Fattori Rootkit January 19, 2012 6 / 36 Rootkit in user-space Linux - /proc fs /proc filesystem The /proc file system is a special file system in the linux kernel. ... The files in the procfs are there to allow userland programs access to certain information from the kernel. joystick@arya:˜$ cat /proc/29737/cmdline nc iron2.laser.dico.unimi.it 22222 joystick@arya:˜$ cat /proc/29737/status Name: nc State: S (sleeping) ... Uid: 1000 1000 1000 1000 A. Fattori Rootkit January 19, 2012 7 / 36 Rootkit in user-space Linux - tool di sistema Tool netstat, ps, ls, . . . il rootkit deve impedire che questi tool rivelino la presenza di connessioni/processi/file sospetti Come fare? A. Fattori Rootkit January 19, 2012 8 / 36 Rootkit in user-space Linux - tool di sistema Tool netstat, ps, ls, . . . il rootkit deve impedire che questi tool rivelino la presenza di connessioni/processi/file sospetti Come fare? Modificare/sostituire i tool Modificare le librerie Hooking A. Fattori Rootkit January 19, 2012 8 / 36 Rootkit in user-space Binary Rootkit Tipologia di rootkit estremamamente primitiva, solitamente costituita da un archivio contenente binari modificati che, una volta installati sul sistema compromesso, garantiscono accesso remoto e hiding. A. Fattori Rootkit January 19, 2012 9 / 36 Rootkit in user-space Binary Rootkit W00tkit, 2002 Step principali Colleziona md5sum dei file che sostituisce installa tool di sistema trojanati (tra cui md5sum) installa backdoor hardening del sistema comunica l’esito all’attacker log cleaning backdoor aggiuntiva in demone ssh Fonte: http: // www. ouah. org/ iRootkits. pdf A. Fattori Rootkit January 19, 2012 9 / 36 Rootkit in user-space Binary Rootkit Problemi dei binary rootkit La modifica dei componenti può essere rilevata vulnerabile a analisi da kernel-mode vulnerabile a analisi out-of-the-box A. Fattori Rootkit January 19, 2012 9 / 36 Rootkit in user-space User-space Hooking Hooking: installazione di “punti di aggancio” all’interno di un sistema o di un processo, in corrispondenza dei quali vengono effettuate determinate azioni. Come fare su linux? A. Fattori Rootkit January 19, 2012 10 / 36 Rootkit in user-space User-space Hooking Come fare su linux? joystick@arya:˜$ cat ptrace.c int ptrace(int a, int b, int c, int d) { return 0; } joystick@arya:˜$ gcc -shared ptrace.c -o ptrace.so joystick@arya:˜$ LD PRELOAD=./ptrace.so strace -fi ./noptrace ... Hello World! ... A. Fattori Rootkit January 19, 2012 10 / 36 Rootkit in user-space User-space Hooking . . . e su windows? A. Fattori Rootkit January 19, 2012 10 / 36 Rootkit in user-space User-space Hooking . . . e su windows? Gli indirizzi delle funzioni di libreria sono caricati dal loader nella IAT ⇒ modificando un entry della IAT si può fare hooking. Non esiste LD PRELOAD, ma . . . DLL Injection Aggiungere una libreria a quelle caricate di default process manipulation (CreateRemoteThread) SetWindowsHookEx ... La DLL iniettata modifica l’entry della IAT che si vuole hookare in modo che punti a una funzione definita nella DLL. A. Fattori Rootkit January 19, 2012 10 / 36 Rootkit in user-space User-space Hooking . . . e su windows? Gli indirizzi delle funzioni di libreria sono caricati dal loader nella IAT ⇒ modificando un entry della IAT si può fare hooking. Non esiste LD PRELOAD, ma . . . DLL Injection Bloccato da ≥ Vista Aggiungere una libreria a quelle caricate di default process manipulation (CreateRemoteThread) SetWindowsHookEx ... La DLL iniettata modifica l’entry della IAT che si vuole hookare in modo che punti a una funzione definita nella DLL. A. Fattori Rootkit January 19, 2012 10 / 36 Rootkit in user-space Esempio: hijacking libproc Esempio di process listing #include <proc/readproc.h> #include <stdio.h> int main(int argc, char ∗∗argv) { PROCTAB∗ proc = openproc(PROC FILLMEM | PROC FILLSTAT \ | PROC FILLSTATUS); proc t proc info; memset(&proc info, 0, sizeof(proc info)); while (readproc(proc, &proc info) != NULL) { printf(”%s\n”, proc info.cmd); } closeproc(proc); } Bypass Possiamo ri-definire la readproc in modo che salti i processi che si vogliono nascondere Esempio live: ps preload.c http://security.dico.unimi.it/sicurezza1112/todeploy.tar.gz A. Fattori Rootkit January 19, 2012 11 / 36 App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU Kernel-space Kernel Space Hooking Obiettivo Dirottare il flusso di esecuzione modificando un code pointer Esempi Interrupt Descriptor Table (IDT) Model Specific Register (MSR) System Service Dispatch Table (SSDT) A. Fattori Rootkit January 19, 2012 13 / 36 Root-kit Hooking: IDT Interrupt Descriptor Table Dispatching di interruzioni ed eccezioni App App App User-space Sw int./Excep. Kernel-space Handler Interrupt &handleri IDT A. Fattori Rootkit January 19, 2012 14 / 36 Root-kit Hooking: IDT Interrupt Descriptor Table Dispatching di interruzioni ed eccezioni Hijacking di 1+ handler (e.g., 0x2e → KiSystemService) App App App User-space Sw int./Excep. Kernel-space Handler Interrupt &handlerm IDT A. Fattori Rootkit Malicious handler January 19, 2012 14 / 36 Root-kit Hooking: IDT Interrupt Descriptor Table Dispatching di interruzioni ed eccezioni Hijacking di 1+ handler (e.g., 0x2e → KiSystemService) Problemi Non è possibile fare filtering ⇒ interrupt numerosi Le system call non possono essere intercettate se viene usata sysenter/syscall Detection semplice: if (IDT[0x2e] != KiSystemService) then ... A. Fattori Rootkit January 19, 2012 14 / 36 Root-kit Hooking: SSDT (Windows) System Service Descriptor Table Dispatching system call App App App int/sysenter/syscall User-space Kernel-space Handler Syscall gate &handleri SSDT A. Fattori Rootkit January 19, 2012 15 / 36 Root-kit Hooking: SSDT (Windows) System Service Descriptor Table Dispatching system call Hijacking di 1+ descrittori (e.g., 0x74 → NtOpenFile) App App App int/sysenter/syscall User-space Kernel-space Handler Syscall gate &handlerm SSDT A. Fattori Rootkit Malicious handler January 19, 2012 15 / 36 Root-kit Hooking: SSDT (Windows) System Service Descriptor Table Dispatching system call Hijacking di 1+ descrittori (e.g., 0x74 → NtOpenFile) Problemi Detection comunque semplice: if (SSDT[0x74] != NtOpenFile) then ... A. Fattori Rootkit January 19, 2012 15 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? Il syscall gate. A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? Il syscall gate. Chi lo invoca? Come viene invocata una syscall? A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? Il syscall gate. Chi lo invoca? Come viene invocata una syscall? L’handler dell’interrupt 0x80. A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? Il syscall gate. Chi lo invoca? Come viene invocata una syscall? L’handler dell’interrupt 0x80. Dov’è salvato l’indirizzo dell’handler? A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? Il syscall gate. Chi lo invoca? Come viene invocata una syscall? L’handler dell’interrupt 0x80. Dov’è salvato l’indirizzo dell’handler? Nella IDT. A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. Come fare? Input: Qualcuno deve usare la syscall table. Chi? Il syscall gate. Chi lo invoca? Come viene invocata una syscall? L’handler dell’interrupt 0x80. Dov’è salvato l’indirizzo dell’handler? Nella IDT. Quindi: si ottiene l’indirizzo della IDT tramite la sidt syscall handler = IDT[0x80] si parsa il codice dell’handler finché non si trova l’indirizzo della syscall table. A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Syscall hooking on linux Su linux simbolo della syscall table non è esportato ⇒ non possiamo accederci direttamente da un modulo. root@sicurezza:˜# insmod syscall.ko Come fare? root@sicurezza:˜# dmesg | tail -1 Input: [ 1336.493513] system call: c1271920 Qualcuno deve usare la syscall Chi? Il syscall gate. root@sicurezza:˜# gdb -qtable. ./vmlinux Chi logdb> invoca? Come viene invocata una syscall? x/60i 0xc1271920 L’handler . . . dell’interrupt 0x80. Dov’è 0xc1271965: salvato l’indirizzo Nella IDT. calldell’handler? *-0x3ed87d40(,%eax,4) Quindi: . . . gdb> p/x -0x3ed87d40 si ottiene l’indirizzo della IDT tramite la sidt $1 = 0xc12782c0 syscall handler = IDT[0x80] si parsa il codice dell’handler finché non si trova l’indirizzo della syscall table. A. Fattori Rootkit January 19, 2012 16 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax movl $0x7ffe0300, %edx nop call *%edx ret $0x18 ... A. Fattori Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Run-time patching È possibile intercettare l’esecuzione in molti punti diversi Più difficile da rilevare ... NtOpenFile: movl $0x74, %eax pushl MaliciousHandler ret call *%edx ret $0x18 ... A. Fattori MaliciousHandler: ... movl $0x7ffe0300, %edx nop push addr ret Rootkit January 19, 2012 17 / 36 Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice A. Fattori Rootkit January 19, 2012 18 / 36 Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice A. Fattori EPROCESS EPROCESS EPROCESS csrss.exe malware.exe svchost.exe Rootkit January 19, 2012 18 / 36 Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice EPROCESS EPROCESS EPROCESS csrss.exe malware.exe svchost.exe Il processo malware.exe non compare più tra quelli in esecuzione Scheduling è thread-based A. Fattori Rootkit January 19, 2012 18 / 36 Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice MODULE ENTRY MODULE ENTRY MODULE ENTRY ntfs.sys malware.sys pci.sys C:\WINDOWS> drivers.exe ModuleName Code Data Bss Paged Init LinkDate -----------------------------------------------------------------------------... ntfs.sys 96000 7040 0 412544 14080 Wed Aug 04 08:15:06 2004 malware.sys 3903 0 0 0 0 Sat Mar 13 02:22:32 2010 pci.sys 16000 1664 0 34176 5632 Wed Aug 04 08:07:45 2004 ... A. Fattori Rootkit January 19, 2012 18 / 36 Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice MODULE ENTRY MODULE ENTRY MODULE ENTRY ntfs.sys malware.sys pci.sys C:\WINDOWS> drivers.exe ModuleName Code Data Bss Paged Init LinkDate -----------------------------------------------------------------------------... ntfs.sys 96000 7040 0 412544 14080 Wed Aug 04 08:15:06 2004 pci.sys 16000 1664 0 34176 5632 Wed Aug 04 08:07:45 2004 ... A. Fattori Rootkit January 19, 2012 18 / 36 DEMO Modificare il file processlist.c in modo che il processo hideme venga eliminato dalla lista dei processi. Root-kit Esempio: Mebroot (2007–2008) Funzionamento 1 Infezione master boot record (MBR) 2 Dati memorizzati “raw ” sul disco (⇒ nessun file) 3 Hooking INT13 per patching run-time del kernel 4 Caricamento device driver 5 Run-time patch in disk.sys per nascondere il MBR modificato Fonte: F-Secure & Symantec Fonte: http: // goo. gl/ 1Sk5q A. Fattori Rootkit January 19, 2012 20 / 36 Root-kit Esempio: Mebroot (2007–2008) Funzionamento 1 Infezione master boot record (MBR) 2 Dati memorizzati “raw ” sul disco (⇒ nessun file) 3 Hooking INT13 per patching run-time del kernel 4 Caricamento device driver 5 Run-time patch in disk.sys per nascondere il MBR modificato Versioni successive ancora più evolute This malware is very professionally written and produced. Which of course means it’s not written for fun. Fonte: F-Secure & Symantec Fonte: http: // goo. gl/ 1Sk5q A. Fattori Rootkit January 19, 2012 20 / 36 App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU Going on the bare metal! Malware di nuova generazione App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 22 / 36 Malware di nuova generazione Malware detector App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 22 / 36 Malware di nuova generazione Malware detector App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU A. Fattori Rootkit January 19, 2012 22 / 36 Malware di nuova generazione Ago 2006 D. Dai Zovi Vitriol Mag 2006 S. King SubVirt A. Fattori Set 2008 S. Embleton SMM rootkit Ago 2006 J. Rutkowska Blue Pill Rootkit Mar 2009 J. Rutkowska SMM memory attack January 19, 2012 23 / 36 App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU Rootkit basati su hypervisor Hypervisor App App App Kernel Hardware A. Fattori Rootkit January 19, 2012 25 / 36 Hypervisor App App App Kernel Hypervisor Hardware Un hypervisor, anche chiamato virtual machine monitor (VMM), è un componente software che permette di condividere le risorse fisiche di un sistema tra più sistemi operativi A. Fattori Rootkit January 19, 2012 25 / 36 Hypervisor App App App App Kernel App App Kernel Hypervisor Hardware Un hypervisor, anche chiamato virtual machine monitor (VMM), è un componente software che permette di condividere le risorse fisiche di un sistema tra più sistemi operativi A. Fattori Rootkit January 19, 2012 25 / 36 Hypervisor App App App App Kernel App App Kernel Hypervisor Hardware Le CPU dei moderni PC supportano delle estensioni (es. Intel VT-x) che facilitano il compito dell’hypervisor A. Fattori Rootkit January 19, 2012 25 / 36 Malware basati su hypervisor App App App Kernel Hardware A. Fattori Rootkit January 19, 2012 26 / 36 Malware basati su hypervisor App App App App App App Kernel Kernel Hypervisor Hardware Hardware La macchina fisica viene convertita “di nascosto” in una virtuale A. Fattori Rootkit January 19, 2012 26 / 36 Malware basati su hypervisor App App App App App App Kernel Kernel Hypervisor Hardware Hardware La macchina fisica viene convertita “di nascosto” in una virtuale Vantaggi dell’attaccante: Pieno controllo del sistema Invisibilità quasi totale A. Fattori Rootkit January 19, 2012 26 / 36 Malware basato su hypervisor software (SubVirt) Modalità di installazione: L’installazione avviene durante lo spegnimento Modifica della sequenza di avvio: Boot Sector BIOS MBR Sistema Operativo Malware basato su Virtual PC o VMware Fonte: SubVirt: Implementing malware with virtual machines (S. T. King, . . . ) A. Fattori Rootkit January 19, 2012 27 / 36 Malware basato su hypervisor software (SubVirt) Modalità di installazione: L’installazione avviene durante lo spegnimento Modifica della sequenza di avvio: BIOS Malware MBR Boot Sector Sistema Operativo Malware basato su Virtual PC o VMware Fonte: SubVirt: Implementing malware with virtual machines (S. T. King, . . . ) A. Fattori Rootkit January 19, 2012 27 / 36 Malware basato su hypervisor software (SubVirt) Modalità di installazione: L’installazione avviene durante lo spegnimento Modifica della sequenza di avvio: BIOS Malware MBR Boot Sector Sistema Operativo Problemi basato su hypervisor hosted (type 2) modifica sistema guest per non penalizzare performance red pill per vmware/virtualpc? Fonte: SubVirt: Implementing malware with virtual machines (S. T. King, . . . ) A. Fattori Rootkit January 19, 2012 27 / 36 Supporto hardware per la virtualizzazione App R1 App Kernel R0 R3 Intel VT-X, AMD SVM Hypervisor A. Fattori App Rootkit January 19, 2012 28 / 36 Supporto hardware per la virtualizzazione R3 App App Kernel R0 App Kernel Hypervisor Root mode App R1 App R0 R3 Intel VT-X, AMD SVM Hypervisor A. Fattori Rootkit App January 19, 2012 28 / 36 Supporto hardware per la virtualizzazione R3 App App Kernel R0 App Kernel Hypervisor Root mode App R1 App R0 R3 Intel VT-X, AMD SVM Hypervisor App Sistema operativo eseguito normalmente Overhead minimo Trasparenza & isolamento garantiti dall’hardware Disponibile su tutti i PC (desktop & portatili) A. Fattori Rootkit January 19, 2012 28 / 36 Supporto hardware per la virtualizzazione R3 App App Kernel R0 App Kernel Hypervisor Root mode App R1 App R0 R3 Intel VT-X, AMD SVM Hypervisor Enter ExitEnter Hypervisor A. Fattori App Kernel/App Rootkit January 19, 2012 28 / 36 Supporto hardware per la virtualizzazione R3 App App Kernel R0 App Kernel Hypervisor Root mode App R1 App R0 R3 Intel VT-X, AMD SVM Hypervisor Enter App ExitEnter Hypervisor Kernel/App L’hypervisor può configurare dinamicamente l’insieme degli eventi che causano “exit” A. Fattori Rootkit January 19, 2012 28 / 36 “Late launch” di un hypervisor Kernel Installazione di un hypervisor in un sistema in esecuzione A. Fattori Rootkit January 19, 2012 29 / 36 “Late launch” di un hypervisor Kernel Hypervisor Installazione di un hypervisor in un sistema in esecuzione A. Fattori Rootkit January 19, 2012 29 / 36 “Late launch” di un hypervisor Kernel A. Fattori Rootkit January 19, 2012 29 / 36 “Late launch” di un hypervisor Kernel A. Fattori Rootkit January 19, 2012 29 / 36 “Late launch” di un hypervisor Kernel Hypervisor Installazione di un hypervisor maligno in un sistema in esecuzione A. Fattori Rootkit January 19, 2012 29 / 36 “Late launch” di un hypervisor Kernel Hypervisor L’installazione dell’hypervisor è impercettibile dall’utente Il malware ha pieno controllo del sistema Una volta installato il malware è completamente trasparente Tutti gli utenti con PC con supporto hardware per virtualizzazione (abilitato da BIOS) sono vulnerabili!!! A. Fattori Rootkit January 19, 2012 29 / 36 Il problema è reale Blue pill (Windows Vista 64) Vitriol (Mac OS X) Blue pill/Vitriol vs. SubVirt: ∼6000LOC Bastato su VMware Infezione di in un sistema in esecuzione L’infezione richiede il riavvio del sistema Trasparente Non trasparente Fonte: Subverting Vista Kernel For Fun And Profit (J. Rutkowska) Fonte: Hardware Virtualization Based rootkits (D. Dai Zovi) A. Fattori Rootkit January 19, 2012 30 / 36 Limitazioni & Prevenzione Limitazioni: è necessario eseguire codice kernel per caricare l’hypervisor Se un hypervisor è già caricato il nuovo non ha pieno controllo del sistema Il supporto hardware per la virtualizzazione deve essere abilitato da BIOS A. Fattori Rootkit January 19, 2012 31 / 36 Limitazioni & Prevenzione Limitazioni: è necessario eseguire codice kernel per caricare l’hypervisor Se un hypervisor è già caricato il nuovo non ha pieno controllo del sistema Il supporto hardware per la virtualizzazione deve essere abilitato da BIOS Prevenzione: Impedire l’esecuzione di codice kernel non fidato (driver) Hypervisor “dummy” Disabilitare il supporto hardware per la virtualizzazione da BIOS A. Fattori Rootkit January 19, 2012 31 / 36 Invisibile al 100%? Il malware è invisibile al 100%, l’hypervisor non lo è L’hypervisor può alterare leggermente lo stato della CPU L’overhead è minimo, ma non nullo (alcune istruzioni sono più costose da eseguire quando l’hypervisor è caricato) for (i = 1 ... 1000) { cpuid(); } Fonte: Compatibility is Not Transparency: VMM Detection Myths and Realities (Tal Garfinkel, . . . ) A. Fattori Rootkit January 19, 2012 32 / 36 Altri usi del “late launching” A. Fattori Rootkit January 19, 2012 33 / 36 Altri usi del “late launching” A. Fattori Rootkit January 19, 2012 33 / 36 Altri usi del “late launching” A. Fattori Rootkit January 19, 2012 33 / 36 App App App Kernel & drivers Hypervisor BIOS/SMM Chipset CPU SMM malware SMM malware System Management Mode modalità di esecuzione con alti privilegi per power management, emulazione PS/2, . . . memoria SMM può essere acceduta solo da modalità SMM (no da kernel e nemmeno hypervisor) SMI# Protected mode SMM rsm A. Fattori Rootkit January 19, 2012 35 / 36 SMM malware System Management Mode modalità di esecuzione con alti privilegi per power management, emulazione PS/2, . . . memoria SMM può essere acceduta solo da modalità SMM (no da kernel e nemmeno hypervisor) SMM malware accesso all’intera memoria di sistema privilegi maggiori di un eventuale hypervisor Fonte: SMM Rootkits: A New Breed of OS Independent Malware (S. Embleton, . . . ) A. Fattori Rootkit January 19, 2012 35 / 36 SMM malware System Management Mode modalità di esecuzione con alti privilegi per power management, emulazione PS/2, . . . memoria SMM può essere acceduta solo da modalità SMM (no da kernel e nemmeno hypervisor) Come? 1 Direttamente se la memoria SMM non è lockata dal BIOS 2 Tramite BUG Fonte: SMM Cache Fun (Invisible Things Lab) A. Fattori Rootkit January 19, 2012 35 / 36 Altre forme di malware A. Fattori Rootkit January 19, 2012 36 / 36 Altre forme di malware Firmware modificato per “sniffare” le pressioni dei tasti Malware impossibile da identificare ed in grado di sopravvivere al reboot TPM completamente inefficace Fonte: Reversing and exploiting an Apple firmware update (K. Chen) A. Fattori Rootkit January 19, 2012 36 / 36
Documenti analoghi
Rootkit: Analysis, Detection and Protection
comportamento permettendo di nascondere le attività dell’attaccante. Come abbiamo visto uno degli
obiettivi principali dei rootkit è nascondere, quindi il rootkit dovrà rimpiazzare i binari di s...