Evoluzione del malware Lorenzo Martignoni lorenzo.martignoni@uniud.it Roberto Paleari roberto@security.dico.unimi.it Università degli Studi di Udine Università degli Studi di Milano
Malware Sequenza di codice progettata per danneggiare intenzionalmente un sistema, i dati che contiene o comunque alterare il suo normale funzionamento, all insaputa dell utente 17 marzo 2010 Evoluzione del malware 2
Malware & underground economy Vendita informazioni rubate Goods & services Percentage Range of prices Bank accounts 22% $10-$1000 Credit cards 13% $0.40-$20 Full identities 9% $1-$15 Online auction site accounts 7% $1-$8 Scams 7% $2.50-$50/week (hosting) Mailers 6% $1-$10 Email addresses 5% $0.83/MB-$10/MB Email passwords 5% $4-$30 Drop (request or offer) 5% 10%-20% of drop amount Proxies 5% $1.50-$30 Fonte: Symantec 17 marzo 2010 Evoluzione del malware 3
Evoluzione del malware Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 4
Evoluzione del malware Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 4
Evoluzione del malware Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 4
Evoluzione del malware Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 4
Evoluzione del malware Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 4
Evoluzione del malware Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 4
Situazione attuale Malware vs AV AV in posizione svantaggiata The amount of new malware has never been higher. Our labs are receiving an average of 25,000 malware samples every day, seven days a week. F-Secure, 2008 17 marzo 2010 Evoluzione del malware 5
Kernel & drivers Hypervisor BIOS/SMM Chipset CPU User-space malware
Malware tradizionale Codice assembly/c/macro Diffusione via file infection (es., virus) o via rete (es., worm) 17 marzo 2010 Evoluzione del malware 7
Malware tradizionale Codice assembly/c/macro Diffusione via file infection (es., virus) o via rete (es., worm) 1983 Frederick Cohen Computer virus 1987 Jerusalem 1995 Concept 1981 Elk Cloner 1986 Brain 1988 Morris worm 17 marzo 2010 Evoluzione del malware 7
Malware tradizionale Codice assembly/c/macro Diffusione via file infection (es., virus) o via rete (es., worm) Problemi Piuttosto semplici Il codice del malware non è protetto/offuscato in alcun modo Signature-based detection efficace 17 marzo 2010 Evoluzione del malware 7
Contromisure Detection signature-based Come funziona? Database di signature Un applicazione che contiene una signature nota viene considerate infetta 17 marzo 2010 Evoluzione del malware 8
Contromisure Detection signature-based Come funziona? Database di signature Un applicazione che contiene una signature nota viene considerate infetta Codice applicazione 17 marzo 2010 Evoluzione del malware 8
Contromisure Detection signature-based Come funziona? Database di signature Un applicazione che contiene una signature nota viene considerate infetta Signature 17 marzo 2010 Evoluzione del malware 8
Contromisure Detection signature-based Come funziona? Database di signature Un applicazione che contiene una signature nota viene considerate infetta + + 17 marzo 2010 Evoluzione del malware 8
Contromisure Detection signature-based Come funziona? Database di signature Un applicazione che contiene una signature nota viene considerate infetta + + + + 17 marzo 2010 Evoluzione del malware 8
Contromisure Detection signature-based Come funziona? Database di signature Un applicazione che contiene una signature nota viene considerate infetta + + + + + + 17 marzo 2010 Evoluzione del malware 8
Tecniche di self-defense Packing Codice maligno nascosto da 1 + layer di compressione/cifratura Decompressione/decrifratura a run-time 17 marzo 2010 Evoluzione del malware 9
Tecniche di self-defense Packing Codice maligno nascosto da 1 + layer di compressione/cifratura Decompressione/decrifratura a run-time Malicious code 17 marzo 2010 Evoluzione del malware 9
Tecniche di self-defense Packing Codice maligno nascosto da 1 + layer di compressione/cifratura Decompressione/decrifratura a run-time Unpacking routine Malicious code 17 marzo 2010 Evoluzione del malware 9
Tecniche di self-defense Packing Codice maligno nascosto da 1 + layer di compressione/cifratura Decompressione/decrifratura a run-time Unpacking routine Unpacking routine Malicious code 17 marzo 2010 Evoluzione del malware 9
Tecniche di self-defense Packing Codice maligno nascosto da 1 + layer di compressione/cifratura Decompressione/decrifratura a run-time Unpacking routine Unpacking routine Malicious code Problema 80% del malware è packed 200 famiglie di packer, 2000 varianti Backlog di 90 famiglie Fonte: Symantec, 2008 17 marzo 2010 Evoluzione del malware 9
Tecniche di self-defense Polimorfismo Mutazione #1 Mutazione #2 Mutazione #3 Problema: la routine di packing può essere rilevata 17 marzo 2010 Evoluzione del malware 10
Tecniche di self-defense Polimorfismo Mutazione #1 Mutazione #2 Mutazione #3 Problema: la routine di packing può essere rilevata Idea: variare la routine di packing ad ogni infezione 17 marzo 2010 Evoluzione del malware 10
Tecniche di self-defense Polimorfismo Mutazione #1 Mutazione #2 Mutazione #3 Problema: la routine di packing può essere rilevata Idea: variare la routine di packing ad ogni infezione La semantica della routine rimane sempre la stessa 17 marzo 2010 Evoluzione del malware 10
Tecniche di self-defense Polimorfismo Mutazione #1 Mutazione #2 Mutazione #3 Problema: la routine di packing può essere rilevata Idea: variare la routine di packing ad ogni infezione La semantica della routine rimane sempre la stessa Contromisure Emulazione Algorithmic detection 17 marzo 2010 Evoluzione del malware 10
Tecniche di self-defense Metamorfismo Metamorphics are body-polymorphics (Igor Muttik) Ad ogni infezione muta l intero corpo del malware Mutazione #1 Mutazione #2 Mutazione #3 17 marzo 2010 Evoluzione del malware 11
Tecniche di self-defense Metamorfismo Metamorphics are body-polymorphics (Igor Muttik) Ad ogni infezione muta l intero corpo del malware Come funziona? 1. Analizza il proprio codice 2. Identifica dei blocchi 3. lica mutazioni Codice malware 17 marzo 2010 Evoluzione del malware 11
Tecniche di self-defense Metamorfismo Metamorphics are body-polymorphics (Igor Muttik) Ad ogni infezione muta l intero corpo del malware blocco 1 Come funziona? 1. Analizza il proprio codice 2. Identifica dei blocchi 3. lica mutazioni blocco 2 blocco 3 blocco 4 blocco 5 blocco 6 blocco 7 blocco 8 17 marzo 2010 Evoluzione del malware 11
Tecniche di self-defense Metamorfismo Metamorphics are body-polymorphics (Igor Muttik) Ad ogni infezione muta l intero corpo del malware blocco 1 Come funziona? 1. Analizza il proprio codice 2. Identifica dei blocchi 3. lica mutazioni blocco 2 blocco 3 blocco 4 blocco 5 blocco 6 blocco 7 blocco 8 17 marzo 2010 Evoluzione del malware 11
Tecniche di self-defense Metamorfismo Metamorphics are body-polymorphics (Igor Muttik) Ad ogni infezione muta l intero corpo del malware blocco 1 Come funziona? 1. Analizza il proprio codice 2. Identifica dei blocchi 3. lica mutazioni blocco 6 blocco 3 blocco 9 blocco 5 blocco 2 blocco 10 blocco 8 17 marzo 2010 Evoluzione del malware 11
Tecniche di self-defense Metamorfismo Metamorphics are body-polymorphics (Igor Muttik) Ad ogni infezione muta l intero corpo del malware Problema Analizzatore di codice particolarmente complesso Sviluppare un motore metamorfico è molto difficile 17 marzo 2010 Evoluzione del malware 11
Tecniche di self-defense Malware emulators mov %ax, $0xcafe; xor %ebx, %ebx; inc %ecx; int $0x2e; Programma originale inst 37 %r 6, $0xcafe; inst 15 %r 2, %r 2 ; inst 24 %r 11 ; inst 4 $0x2e; VM Programma offuscato 1. Codice del malware trasformato in bytecode 2. Bytecode interpretato a run-time da una VM 3. Bytecode mutato ad ogni infezione 17 marzo 2010 Evoluzione del malware 12
Tecniche di self-defense Malware emulators mov %ax, $0xcafe; xor %ebx, %ebx; inc %ecx; int $0x2e; Programma originale inst 37 %r 6, $0xcafe; inst 15 %r 2, %r 2 ; inst 24 %r 11 ; inst 4 $0x2e; VM Programma offuscato 1. Codice del malware trasformato in bytecode 2. Bytecode interpretato a run-time da una VM 3. Bytecode mutato ad ogni infezione Sembra complicato? 17 marzo 2010 Evoluzione del malware 12
Tecniche di self-defense Malware emulators 17 marzo 2010 Evoluzione del malware 12
Tecniche di self-defense Contromisure Signature-based detection è troppo debole Verso tecniche più semantiche 17 marzo 2010 Evoluzione del malware 13
Tecniche di self-defense Contromisure Signature-based detection è troppo debole Verso tecniche più semantiche Soluzioni Analisi dinamica Granularità a livello di system call Panda TruPrevent, AVG Identity Protection, NovaShield, ThreatFire,... Problemi Performance Falsi positivi Information leakage 17 marzo 2010 Evoluzione del malware 13
Strumenti anti-malware di nuova generazione Analisi statica impraticabile o troppo onerosa Analisi dinamica in ambienti emulati 17 marzo 2010 Evoluzione del malware 14
Strumenti anti-malware di nuova generazione Analisi statica impraticabile o troppo onerosa Analisi dinamica in ambienti emulati Esempi Anubis CWSandbox BitBlaze 17 marzo 2010 Evoluzione del malware 14
Strumenti anti-malware di nuova generazione Analisi statica impraticabile o troppo onerosa Analisi dinamica in ambienti emulati Esempi Anubis CWSandbox BitBlaze Come funzionano? 1. Esecuzione dell applicazione sospetta in un emulatore 2. Monitoring dell esecuzione (VM introspection) 3. Rilevamento di comportamenti maligni 17 marzo 2010 Evoluzione del malware 14
Rilevamento VM Red-pill Programma in grado di rilevare se eseguito all interno di un emulatore (o virtualizzatore) CPU EMU Fonte: A fistful of red-pills (R. Paleari, L. Martignoni, G. Fresi Roglia, D. Bruschi) 17 marzo 2010 Evoluzione del malware 15
Rilevamento VM Red-pill Programma in grado di rilevare se eseguito all interno di un emulatore (o virtualizzatore) void main() { redpill = \x08\x7c\xe3\x04... ; if (((void (*)())redpill)()) { // Eseguito su CPU fisica return CPU; } else { // Eseguito su CPU emulata return EMU; } } Fonte: A fistful of red-pills (R. Paleari, L. Martignoni, G. Fresi Roglia, D. Bruschi) 17 marzo 2010 Evoluzione del malware 15
Rilevamento VM Red-pill Programma in grado di rilevare se eseguito all interno di un emulatore (o virtualizzatore) Qualche numero... BOCHS State differences: R M E Pin Valgrind QEMU 50 100 150 200 250 300 350 400 450 500 550 Fonte: A fistful of red-pills (R. Paleari, L. Martignoni, G. Fresi Roglia, D. Bruschi) 17 marzo 2010 Evoluzione del malware 15
Kernel & drivers Hypervisor BIOS/SMM Chipset CPU Kernel-space malware
Root-kit Cosa sono? Strumenti utilizzati per nascondere la presenza di attività maligna nel sistema Cosa nascondere? File Chiavi di registro Servizi Connessioni di rete Processi... 17 marzo 2010 Evoluzione del malware 17
Root-kit Cosa sono? Strumenti utilizzati per nascondere la presenza di attività maligna nel sistema Cosa nascondere? File Chiavi di registro Servizi Connessioni di rete Processi... User-mode Kernel-mode Kernel & drivers User-space vs kernel-space 17 marzo 2010 Evoluzione del malware 17
Root-kit Hooking Obiettivo Dirottare il flusso di esecuzione modificando un code pointer Esempi User-space: IAT Kernel-space: IDT, MSR, SSDT 17 marzo 2010 Evoluzione del malware 18
Root-kit Hooking: IDT Interrupt Descriptor Table Dispatching di interruzioni ed eccezioni User-space Interrupt Sw int./excep. &handler i Kernel-space Handler IDT 17 marzo 2010 Evoluzione del malware 19
Root-kit Hooking: IDT Interrupt Descriptor Table Dispatching di interruzioni ed eccezioni Hijacking di 1 + handler (e.g., 0x2e KiSystemService) User-space Interrupt Sw int./excep. &handler m IDT Kernel-space Handler Malicious handler 17 marzo 2010 Evoluzione del malware 19
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 Le system call non possono essere intercettate se viene usata sysenter/syscall Detection semplice: if (IDT[0x2e]!= KiSystemService) then... 17 marzo 2010 Evoluzione del malware 19
Root-kit Hooking: SSDT System Service Descriptor Table Dispatching system call int/sysenter/syscall User-space Kernel-space Syscall gate &handler i Handler SSDT 17 marzo 2010 Evoluzione del malware 20
Root-kit Hooking: SSDT System Service Descriptor Table Dispatching system call Hijacking di 1 + descrittori (e.g., 0x74 NtOpenFile) int/sysenter/syscall User-space Kernel-space Syscall gate &handler m SSDT Handler Malicious handler 17 marzo 2010 Evoluzione del malware 20
Root-kit Hooking: SSDT System Service Descriptor Table Dispatching system call Hijacking di 1 + descrittori (e.g., 0x74 NtOpenFile) Problemi Detection comunque semplice: if (SSDT[0x74]!= NtOpenFile) then... 17 marzo 2010 Evoluzione del malware 20
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... 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
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... MaliciousHandler:... movl $0x7ffe0300, %edx nop push addr ret 17 marzo 2010 Evoluzione del malware 21
Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice 17 marzo 2010 Evoluzione del malware 22
Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice EPROCESS csrss.exe EPROCESS malware.exe EPROCESS svchost.exe 17 marzo 2010 Evoluzione del malware 22
Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice EPROCESS csrss.exe EPROCESS malware.exe EPROCESS svchost.exe Il processo malware.exe non compare più tra quelli in esecuzione Scheduling è thread-based 17 marzo 2010 Evoluzione del malware 22
Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice MODULE ENTRY ntfs.sys MODULE ENTRY malware.sys MODULE ENTRY 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... 17 marzo 2010 Evoluzione del malware 22
Root-kit Direct Kernel Object Manipulation (DKOM) Alterazione delle strutture kernel in memoria Nessun hook o patch al codice MODULE ENTRY ntfs.sys MODULE ENTRY malware.sys MODULE ENTRY 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... 17 marzo 2010 Evoluzione del malware 22
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 17 marzo 2010 Evoluzione del malware 23
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 17 marzo 2010 Evoluzione del malware 23
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard 17 marzo 2010 Evoluzione del malware 24
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard Accesso a \Device\PhysicalMemory consente la modifica della memoria kernel (senza necessità di driver) 17 marzo 2010 Evoluzione del malware 24
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard Accesso a \Device\PhysicalMemory consente la modifica della memoria kernel (senza necessità di driver) Problemi Modifica dello swap file Richiede accesso raw al disco (disabilitato da user-mode nelle versioni attuali di Vista) Funzionalità fornita da driver firmati (es., disk editor) 17 marzo 2010 Evoluzione del malware 24
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard Richiesta firma digitale di driver e componenti critici Nemmeno Administrator può caricare driver non firmati 17 marzo 2010 Evoluzione del malware 24
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard Richiesta firma digitale di driver e componenti critici Nemmeno Administrator può caricare driver non firmati Problemi Problemi etici (... ed economici!) Basta un reboot (es., Vbootkit) Vulnerabilità in driver firmati? 17 marzo 2010 Evoluzione del malware 24
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard Da Win XP e Win 2003 SP1 (x64) Verifica periodica di integrità 17 marzo 2010 Evoluzione del malware 24
Root-kit Contromisure: Windows Vista Caratteristiche \Device\PhysicalMemory non accessibile da user-mode Firma dei driver PatchGuard Da Win XP e Win 2003 SP1 (x64) Verifica periodica di integrità Problemi Problemi di compatibilità 3 versioni, poi exploitate 17 marzo 2010 Evoluzione del malware 24
Kernel & drivers Hypervisor BIOS/SMM Chipset CPU Malware di nuova generazione
Malware di nuova generazione Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 26
Malware di nuova generazione Malware detector Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 26
Malware di nuova generazione Malware detector Kernel & drivers Hypervisor BIOS/SMM Chipset CPU 17 marzo 2010 Evoluzione del malware 26
Malware di nuova generazione Ago 2006 D. Dai Zovi Vitriol Set 2008 S. Embleton SMM rootkit Mag 2006 S. King SubVirt Ago 2006 J. Rutkowska Blue Pill Mar 2009 J. Rutkowska SMM memory attack 17 marzo 2010 Evoluzione del malware 27
Kernel & drivers Hypervisor BIOS/SMM Chipset CPU Malware basati su hypervisor
Hypervisor Kernel Hardware 17 marzo 2010 Evoluzione del malware 29
Hypervisor 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 17 marzo 2010 Evoluzione del malware 29
Hypervisor Kernel 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 17 marzo 2010 Evoluzione del malware 29
Hypervisor Kernel Kernel Hypervisor Hardware Le CPU dei moderni PC supportano delle estensioni (es. Intel VT-x) che facilitano il compito dell hypervisor 17 marzo 2010 Evoluzione del malware 29
Malware basati su hypervisor Kernel Hardware 17 marzo 2010 Evoluzione del malware 30
Malware basati su hypervisor Kernel Kernel Hypervisor Hardware Hardware La macchina fisica viene convertita di nascosto in una virtuale 17 marzo 2010 Evoluzione del malware 30
Malware basati su hypervisor Kernel Hardware Kernel Hypervisor Hardware La macchina fisica viene convertita di nascosto in una virtuale Vantaggi dell attaccante: Pieno controllo del sistema Invisibilità (quasi) totale Possibilità di sviluppare nuove applicazioni maligne 17 marzo 2010 Evoluzione del malware 30
Malware basato su hypervisor software (SubVirt) Modalità di installazione: L installazione avviene durante lo spegnimento Modifica della sequenza di avvio: BIOS MBR Boot Sector Sistema Operativo Malware basato su Virtual PC o VMware Fonte: SubVirt: Implementing malware with virtual machines (S. T. King,... ) 17 marzo 2010 Evoluzione del malware 31
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,... ) 17 marzo 2010 Evoluzione del malware 31
Supporto hardware per la virtualizzazione Intel VT-X, AMD SVM R3 R1 Kernel R0 Hypervisor 17 marzo 2010 Evoluzione del malware 32
Supporto hardware per la virtualizzazione Intel VT-X, AMD SVM R3 R3 R1 Kernel R0 Kernel R0 Hypervisor Root mode Hypervisor 17 marzo 2010 Evoluzione del malware 32
Supporto hardware per la virtualizzazione Intel VT-X, AMD SVM R3 R3 R1 Kernel R0 Kernel R0 Hypervisor Root mode Hypervisor Sistema operativo eseguito normalmente Overhead minimo Trasparenza & isolamento garantiti dall hardware Disponibile su tutti i PC (desktop & portatili) 17 marzo 2010 Evoluzione del malware 32
Supporto hardware per la virtualizzazione Intel VT-X, AMD SVM R3 R3 R1 Kernel R0 Kernel R0 Hypervisor Root mode Hypervisor Enter ExitEnter Hypervisor Kernel/ 17 marzo 2010 Evoluzione del malware 32
Supporto hardware per la virtualizzazione Intel VT-X, AMD SVM R3 R3 R1 Kernel R0 Kernel R0 Hypervisor Root mode Hypervisor Enter ExitEnter Hypervisor Kernel/ L hypervisor può configurare dinamicamente l insieme degli eventi che causano exit 17 marzo 2010 Evoluzione del malware 32
Supporto hardware per la virtualizzazione Intel VT-X, AMD SVM R3 R3 R1 Kernel R0 Kernel R0 Hypervisor Root mode Hypervisor 17 marzo 2010 Evoluzione del malware 32
Late launch di un hypervisor Kernel Installazione di un hypervisor in un sistema in esecuzione 17 marzo 2010 Evoluzione del malware 33
Late launch di un hypervisor Kernel Hypervisor Installazione di un hypervisor in un sistema in esecuzione 17 marzo 2010 Evoluzione del malware 33
Late launch di un hypervisor Kernel 17 marzo 2010 Evoluzione del malware 33
Late launch di un hypervisor Kernel 17 marzo 2010 Evoluzione del malware 33
Late launch di un hypervisor Kernel Hypervisor Installazione di un hypervisor maligno in un sistema in esecuzione 17 marzo 2010 Evoluzione del malware 33
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!!! 17 marzo 2010 Evoluzione del malware 33
Keyboard sniffer Exit ad ogni operazione di I/O sulla porta della tastiera Enter Exit (I/O) Hypervisor Kernel/ 17 marzo 2010 Evoluzione del malware 34
Il problema è reale Blue pill (Windows Vista 64) Vitriol (Mac OS X) Blue pill/vitriol vs. SubVirt: 6000LOC Infezione di in un sistema in esecuzione Trasparente Bastato su VMware L infezione richiede il riavvio del sistema Non trasparente Fonte: Subverting Vista Kernel For Fun And Profit (J. Rutkowska) Fonte: Hardware Virtualization Based rootkits (D. Dai Zovi) 17 marzo 2010 Evoluzione del malware 35
Siete vulnerabili? $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 26... flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca sse4_1 sse4_2 popcnt lahf_lm ida bogomips : 5070.65... $ 17 marzo 2010 Evoluzione del malware 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 17 marzo 2010 Evoluzione del malware 37
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 17 marzo 2010 Evoluzione del malware 37
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: Garfinkel,... ) Compatibility is Not Transparency: VMM Detection Myths and Realities (Tal 17 marzo 2010 Evoluzione del malware 38
Altri usi del late launching 17 marzo 2010 Evoluzione del malware 39
Altri usi del late launching 17 marzo 2010 Evoluzione del malware 39
Altri usi del late launching 17 marzo 2010 Evoluzione del malware 39
Altri usi del late launching 17 marzo 2010 Evoluzione del malware 39
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 17 marzo 2010 Evoluzione del malware 41
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,... ) 17 marzo 2010 Evoluzione del malware 41
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? Tecnica #1 Bug architetturale Intel 1. impostare memoria SMM come cachable 2. scrittura memoria SMM ( modifica della cache, concessa dal controller) 3. SMI# Fonte: SMM Cache Fun (Invisible Things Lab) 17 marzo 2010 Evoluzione del malware 41
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? Tecnica #2 Bug architetturale Intel mov 0x407d(%rip),%rax callq *0x18(%rax) Fuori da memoria SMM! Fonte: SMM Cache Fun (Invisible Things Lab) 17 marzo 2010 Evoluzione del malware 41
Altre forme di malware 17 marzo 2010 Evoluzione del malware 42
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 le firmware update (K. Chen) 17 marzo 2010 Evoluzione del malware 42
? Kernel & drivers Hypervisor BIOS/SMM Chipset CPU CPU malware
Evoluzione del malware Domande? Lorenzo Martignoni lorenzo.martignoni@uniud.it Roberto Paleari roberto@security.dico.unimi.it Università degli Studi di Udine Università degli Studi di Milano 17 marzo 2010 Evoluzione del malware 44