slides
Transcript
slides
Università degli Studi di Milano Facoltà di Scienze e Tecnologie Dipartimento di Informatica Next generation malware Srdjan Matic <[email protected]> Aristide Fattori <[email protected]> A.A. 2013–2014 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 1 / 32 Introduzione 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 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 3 / 32 replicazione autonoma no replicazione replicazione Tipologie di malware Virus Worm Root-kit Dialer Spyware Trojan horse necessita ospite Keylogger nessun ospite dipendenza da ospite Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 4 / 32 Diffusione Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 5 / 32 Diffusione Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 5 / 32 Diffusione Q3 2013 ⇒ 700k samples per day Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 5 / 32 Tecniche di infezione e propagazione Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 6 / 32 Tecniche di infezione e propagazione File infection Device removibili File transfers (mail, P2P, file sharing) Vulnerabilità Social engineering (fake av, fake codec, fake . . . ) Drive by download Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 6 / 32 Tecniche di propagazione Drive-by-download Osservazioni: 1 Lo scenario è cambiato, la maggior parte delle attività sono su web. 2 Molte vulnerabilità trovate nei browser. 3 (1) + (2) ⇒ worm che si diffondono via web Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 7 / 32 Tecniche di propagazione Drive-by-download Osservazioni: 1 Lo scenario è cambiato, la maggior parte delle attività sono su web. 2 Molte vulnerabilità trovate nei browser. 3 (1) + (2) ⇒ worm che si diffondono via web Come? 1 crea (o compromette) un sito per ospitare exploit 2 exploita i browser vulnerabili che visitano il sito 3 scarica il codice del worm sulla vittima Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 7 / 32 Perché una cosı̀ grande diffusione? omogeneità, connettività e configurazione Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 8 / 32 Perché una cosı̀ grande diffusione? omogeneità, connettività e configurazione scarsa attenzione Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 8 / 32 Perché una cosı̀ grande diffusione? omogeneità, connettività e configurazione scarsa attenzione incentivo economico (approfondito più avanti) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 8 / 32 Perché una cosı̀ grande diffusione? omogeneità, connettività e configurazione scarsa attenzione incentivo economico (approfondito più avanti) le contromisure attuali non funzionano Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 8 / 32 Contromisure Detection signature-based Come funziona? Database di signature Un’applicazione che contiene una signature nota viene considerate infetta Codice applicazione Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 9 / 32 Contromisure Detection signature-based Come funziona? Database di signature Un’applicazione che contiene una signature nota viene considerate infetta Signature Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 9 / 32 Contromisure Detection signature-based Come funziona? Database di signature Un’applicazione che contiene una signature nota viene considerate infetta Srdjan Matic, Aristide Fattori + + + + + + Malware A.A. 2013–2014 9 / 32 Tecniche di self-defense Packing Codice maligno nascosto da 1+ layer di compressione/cifratura Decompressione/decrifratura a run-time Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 10 / 32 Tecniche di self-defense Packing Codice maligno nascosto da 1+ layer di compressione/cifratura Decompressione/decrifratura a run-time Malicious code Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 10 / 32 Tecniche di self-defense Packing Codice maligno nascosto da 1+ layer di compressione/cifratura Decompressione/decrifratura a run-time Unpacking routine Srdjan Matic, Aristide Fattori Malicious code Malware A.A. 2013–2014 10 / 32 Tecniche di self-defense Packing Codice maligno nascosto da 1+ layer di compressione/cifratura Decompressione/decrifratura a run-time Unpacking Unpacking routine routine Malicious code Problema? Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 10 / 32 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 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 11 / 32 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 Problema? Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 11 / 32 Tecniche di self-defense Metamorfismo “Metamorphics are body-polymorphics” (Igor Muttik) A ogni infezione muta l’intero corpo del malware . . . . . . quindi non esiste una versione in chiaro Mutazione #1 Srdjan Matic, Aristide Fattori Mutazione #2 Malware Mutazione #3 A.A. 2013–2014 12 / 32 Tecniche di self-defense Metamorfismo “Metamorphics are body-polymorphics” (Igor Muttik) A ogni infezione muta l’intero corpo del malware . . . . . . quindi non esiste una versione in chiaro Come funziona? 1 Analizza il proprio codice 2 Identifica dei blocchi 3 Applica mutazioni Srdjan Matic, Aristide Fattori Codice malware Malware A.A. 2013–2014 12 / 32 Tecniche di self-defense Metamorfismo “Metamorphics are body-polymorphics” (Igor Muttik) A ogni infezione muta l’intero corpo del malware . . . . . . quindi non esiste una versione in chiaro blocco1 blocco2 Come funziona? blocco3 1 Analizza il proprio codice blocco4 2 Identifica dei blocchi blocco5 3 Applica mutazioni blocco6 blocco7 blocco8 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 12 / 32 Tecniche di self-defense Metamorfismo “Metamorphics are body-polymorphics” (Igor Muttik) A ogni infezione muta l’intero corpo del malware . . . . . . quindi non esiste una versione in chiaro blocco1 blocco2 Come funziona? blocco3 1 Analizza il proprio codice blocco4 2 Identifica dei blocchi blocco5 3 Applica mutazioni blocco6 blocco7 blocco8 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 12 / 32 Tecniche di self-defense Metamorfismo “Metamorphics are body-polymorphics” (Igor Muttik) A ogni infezione muta l’intero corpo del malware . . . . . . quindi non esiste una versione in chiaro blocco1 blocco6 Come funziona? blocco3 1 Analizza il proprio codice blocco9 2 Identifica dei blocchi blocco5 3 Applica mutazioni blocco2 blocco10 blocco8 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 12 / 32 Tecniche di self-defense Metamorfismo “Metamorphics are body-polymorphics” (Igor Muttik) A ogni infezione muta l’intero corpo del malware . . . . . . quindi non esiste una versione in chiaro Problema Analizzatore di codice particolarmente complesso Sviluppare un motore metamorfico è molto difficile Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 12 / 32 Tecniche di self-defense Malware emulators mov xor inc int %ax, $0xcafe; %ebx, %ebx; %ecx; $0x2e; inst37 %r6 , $0xcafe; inst15 %r2 , %r2 ; inst24 %r11 ; inst4 $0x2e; Programma originale VM Programma offuscato 1 2 3 Codice del malware trasformato in bytecode Bytecode interpretato a run-time da una VM Bytecode mutato ad ogni infezione Automatic Reverse Engineering of Malware Emulators M. Sharif, A. Lanzi, J. Giffin, W. Lee Oakland 2009 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 13 / 32 Tecniche di self-defense Malware emulators mov xor inc int %ax, $0xcafe; %ebx, %ebx; %ecx; $0x2e; inst37 %r6 , $0xcafe; inst15 %r2 , %r2 ; inst24 %r11 ; inst4 $0x2e; Programma originale VM Programma offuscato 1 2 3 Codice del malware trasformato in bytecode Bytecode interpretato a run-time da una VM Bytecode mutato ad ogni infezione Automatic Reverse Engineering of Malware Emulators M. Sharif, A. Lanzi, J. Giffin, W. Lee Oakland 2009 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 13 / 32 IDA Python Let the machine do the dirty work! IDA Python Alt-F7 in IDA idaq.exe -A -OIDAPython:yourscript.py file.bin idaq.exe -Syourscript.py mydatabase.idb idaq.exe -S“yourscript.py arg1 arg2 arg3” mydatabase.idb Identificare sezione e scorrere .text f o r s i n Segments ( ) : i f SegName ( s ) == ” . t e x t ” : start = s end = SegEnd ( s ) ea = s t a r t w h i l e ea <= end : p r i n t GetDisasm ( ea ) ea = NextHead ( ea ) Srdjan Matic, Aristide Fattori # disass Malware i s t r u z i o n e @ ea A.A. 2013–2014 15 / 32 IDA Python Funzioni utili GetFunctionName(ea) GetMnen(ea) GetOpnd(ea, pos) # pos = 0, ... GetOpndValue(ea, pos) # pos = 0, ... Dword(addr) # *(int *)addr MakeComm(ea) # Aggiunge commento a istruz ea PatchDword(ea, new) # *(int *)addr = new PatchByte(ea, new) # *(char *)addr = new MakeName(ea, ‘‘l’’) # add label l to ea DecodeInstruction(ea) # return object with instruction info, (e.g., size) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 16 / 32 Hands on! http://security.di.unimi.it/sicurezza1314/idapython.tar.gz Reversare ex1 Provare ex1.py Scrivere uno script IDAPython che de-offuschi automaticamente poly Scrivere uno script IDAPython che patchi automaGicamente ex2 per eliminare l’offuscamento http://www.offensivecomputing.net/papers/IDAPythonIntro.pdf Next-generation malware: detection e analisi Tecniche di self-defense Contromisure Signature-based detection è troppo debole Verso tecniche più “semantiche” Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 19 / 32 Tecniche di self-defense Contromisure Signature-based detection è troppo debole Verso tecniche più “semantiche” Soluzioni Analisi dinamica Granularità a livello di system call (behavioral analysis) Problemi Performance Falsi positivi Information leakage Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 19 / 32 Next-generation malware detector Situazione attuale: Algorithmic detection/unpacking Malware detector Malicious program Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 20 / 32 Next-generation malware detector Situazione attuale: Algorithmic detection/unpacking Malware detector Malicious program Srdjan Matic, Aristide Fattori ???? Malware A.A. 2013–2014 20 / 32 Next-generation malware detector Situazione attuale: Algorithmic detection/unpacking Malware detector Malicious program ???? ???? Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 20 / 32 Next-generation malware detector Situazione attuale: Algorithmic detection/unpacking Malware detector Malicious program ???? ???? Srdjan Matic, Aristide Fattori Malware Malicious A.A. 2013–2014 20 / 32 Next-generation malware detector Situazione attuale: Algorithmic detection/unpacking Malware detector Malicious program ???? ???? Malicious Problemi ogni packer richiede un unpacker specifico troppe famiglie di packer Symantec: da 6 ore a 6 mesi per packer multi-layer packing Funziona anche per malware polimorfici ma ogni sample richiede un algoritmo di detection ad-hoc: sforzo insostenibile per le compagnie di AV. Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 20 / 32 Next-generation malware detector Unpacking generico Idea analisi dinamica emulazione/tracing dell’esecuzione fino al termine della routine di unpacking Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 21 / 32 Next-generation malware detector Unpacking generico Idea analisi dinamica emulazione/tracing dell’esecuzione fino al termine della routine di unpacking Packed code Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 21 / 32 Next-generation malware detector Unpacking generico Idea analisi dinamica emulazione/tracing dell’esecuzione fino al termine della routine di unpacking Packed code Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 21 / 32 Next-generation malware detector Unpacking generico Idea analisi dinamica emulazione/tracing dell’esecuzione fino al termine della routine di unpacking Packed code Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 21 / 32 Next-generation malware detector Unpacking generico Idea analisi dinamica emulazione/tracing dell’esecuzione fino al termine della routine di unpacking Unpacked code Packed code Un po’ di nomi. . . OmniUnpack Renovo Justin PolyUnpack Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 21 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i Page # 0 1 2 ... Srdjan Matic, Aristide Fattori Access W WX Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace h x(0) , w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i Page # 0 1 2 ... Access W WX Esecuzione pagina 0 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2) , s0 , w (1), x(1), s1 , x(2), s2 , . . .i Page # 0 1 2 ... Access W WX • Scrittura pagina 2 W = W ∪ {2} Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i s0 = NtOpenFile Page # 0 1 2 ... Access W WX • Esecuzione system call s0 (non pericolosa e WX = ∅) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1) , x(1), s1 , x(2), s2 , . . .i Page # 0 1 2 ... Access W WX • • Scrittura pagina 1 W = W ∪ {1} Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1) , s1 , x(2), s2 , . . .i Page # 0 1 2 ... Access W WX • • • Esecuzione pagina 1 WX = WX ∪ {1} (pagine written-then-executed) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i s1 = NtOpenKey Page # 0 1 2 ... Access W WX • • • Esecuzione system call s1 (non pericolosa) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2) , s2 , . . .i Page # 0 1 2 ... Access W WX • • • • Esecuzione pagina 2 WX = WX ∪ {1} Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i s2 = NtDeleteFile Page # 0 1 2 ... Access W WX • • • • Esecuzione system call s2 (pericolosa) Viene invocato il malware detector per analizzare le pagine in W Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . . i Page # 0 1 2 ... Access W WX Se il programma non è maligno, W e WX diventano ∅ e l’esecuzione riprende Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Next-generation malware detector Unpacking generico: OmniUnpack Execution trace hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , i Page and Access OmniUnpack: Fast, Generic, Safe Unpacking of Malware # Christodorescu, W WX Somesh Jha L. Martignoni, M. 0ACSAC 2007 1 2 ... Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 22 / 32 Analisi dinamica in ambienti emulati/virtualizzati 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 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 23 / 32 Rilevamento VM Red-pill Programma in grado di rilevare se eseguito all’interno di un emulatore (o virtualizzatore) CPU Srdjan Matic, Aristide Fattori EMU Malware A.A. 2013–2014 24 / 32 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; } } Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 24 / 32 Rilevamento VM Red-pill Programma in grado di rilevare se eseguito all’interno di un emulatore (o virtualizzatore) A fistful of red-pills R. Paleari, L. Martignoni, G. Fresi Roglia, D. Bruschi WOOT 2009 Testing CPU Emulators L. Martignoni, R. Paleari, G. Fresi Roglia, D. Bruschi ISSTA 2009 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 24 / 32 Malware/exploit as a Service Scenario Da “Hacking for fun” a “Hacking for profit” Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 26 / 32 Pay Per Install (PPI) Come monetizzare il malware? Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 27 / 32 Pay Per Install (PPI) Come monetizzare il malware? Introduzione di malware as a service: monetizzare l’intera catena di distribuzione del malware, automatizzando le infezioni e garantendone la persistenza Interazioni Il client contatta il provider del servizio PPI, mandandogli un malware Il provider “prepara” il malware (packing, obfuscation, . . . ) Gli affiliate infettano le vittime con un downloader Il downloader eseguito sulla vittima scarica il malware del client dal provider Una volta installato il downloader, il provider gestisce Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 27 / 32 Pay Per Install (PPI) (2) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 28 / 32 Pay Per Install (PPI) (2) Measuring Pay-per-Install: The Commoditization of Malware Distribution Juan Caballero, Chris Grier, Christian Kreibich, Vern Paxson USENIX Security 2011 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 28 / 32 Exploit as a Service I client comprano (o affittano) l’exploit kit + opzionalmente il suo hosting, possono comprare aggiornamenti (nuovi 0day) Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 29 / 32 Exploit as a Service I client comprano (o affittano) l’exploit kit + opzionalmente il suo hosting, possono comprare aggiornamenti (nuovi 0day) Manufacturing Compromise: The Emergence of Exploit-as-a-Service C. Griery, L. Ballard, J. Caballero, N. Chachra, C. J. Dietrich, K. Levchenko, P. Mavrommatis, D. McCoy, A. Nappa, A. Pitsillidis, N. Provos, M. Z. Raque, M. A. Rajab, C. Rossow, K. Thomasy, V. Paxsony, S. Savage, G. M. Voelker CCS ’12 Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 29 / 32 Exploit as a Service Exploit Kit Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 30 / 32 Exploit as a Service Exploit Kit • • • • http://goo.gl/u3NN4 http://goo.gl/6rjpW Aggiornato con 0-day Statistiche successo exploiting Autore arrestato nel 2013 http://goo.gl/UuGqxJ Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 30 / 32 Exploit as a Service Exploit Kit (2): Blackhole Srdjan Matic, Aristide Fattori Malware A.A. 2013–2014 31 / 32 So long and thanks for all the fish! [email protected]