Introduzione Virus Worm Anti-virus Bibliografia Malware Alessandro Rozza <[email protected]> Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Progetto della sicurezza di rete 10 Dicembre 2007 Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Sommario 1 Introduzione 2 Virus 3 Worm 4 Anti-virus 5 Bibliografia Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Sommario 1 Introduzione 2 Virus 3 Worm 4 Anti-virus 5 Bibliografia Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Sommario 1 Introduzione 2 Virus 3 Worm 4 Anti-virus 5 Bibliografia Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Sommario 1 Introduzione 2 Virus 3 Worm 4 Anti-virus 5 Bibliografia Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Sommario 1 Introduzione 2 Virus 3 Worm 4 Anti-virus 5 Bibliografia Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione 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 Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Tipologie di malware (1) Virus replicazione autonoma necessitano di un ospite in cui inserirsi propagazione attraverso la diffusione dell’ospite Worm non necessitano di un ospite propagazione autonoma attraverso la rete capacità di propagarsi in sistemi altrui sfruttando delle vulnerabilità Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Tipologie di malware (1) Virus replicazione autonoma necessitano di un ospite in cui inserirsi propagazione attraverso la diffusione dell’ospite Worm non necessitano di un ospite propagazione autonoma attraverso la rete capacità di propagarsi in sistemi altrui sfruttando delle vulnerabilità Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Tipologie di malware (2) Trojan horse camuffamento di funzionalità maligne all’interno di altre benigne propagazione manuale: diffusione di applicazioni con funzionalità “secondarie” oppure inserimento di nuove funzionalità nelle applicazioni esistenti rientrano in questa categoria adware e spyware Backdoor codice in grado di garantire l’accesso ad un sistema evitando le normali procedure di autenticazione rientrano in questa categoria tutti i RAT (Remote Access Trojan) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Tipologie di malware (2) Trojan horse camuffamento di funzionalità maligne all’interno di altre benigne propagazione manuale: diffusione di applicazioni con funzionalità “secondarie” oppure inserimento di nuove funzionalità nelle applicazioni esistenti rientrano in questa categoria adware e spyware Backdoor codice in grado di garantire l’accesso ad un sistema evitando le normali procedure di autenticazione rientrano in questa categoria tutti i RAT (Remote Access Trojan) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Tipologie di malware (3) Rootkit strumenti utilizzati per mantenere l’accesso ad un sistema compromesso senza fare nascere sospetti utilizzati per nascondere file, processi, connessioni di rete, . . . possono lavorare sia a livello kernel che a livello utente Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Tipologie di payload non distruttivo accidentalmente distruttivo distruttivo DoS (Denial of Service) sottrazione di informazioni Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Convenzioni per la scelta dei nomi CARO naming convention: [malware_type://][platform/]family_name[.group_name] [.infective_lenght][.variant[devolution]][modifiers] Alcuni esempi: Trojan-Downloader.Win32.Banload Backdoor.Win32.Breplibot.o Virus.Multi.Etapux Net-Worm.Win32.Slammer SymbOS.Doomboot.P Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Classificazione Convenzioni per la scelta dei nomi CARO naming convention: [malware_type://][platform/]family_name[.group_name] [.infective_lenght][.variant[devolution]][modifiers] Alcuni esempi: Trojan-Downloader.Win32.Banload Backdoor.Win32.Breplibot.o Virus.Multi.Etapux Net-Worm.Win32.Slammer SymbOS.Doomboot.P Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Definizione Porzione di codice in grado di infettare altri programmi, modificandoli includendo una versione (eventualmente evoluta) di se stesso[1]. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche di infezione (1) Boot sector o MBR il virus viene inserito nel boot sector (hard-disk o floppy) o nel MBR (hard-disk) il virus viene eseguito durante la sequenza di avvio il virus può rimanere in memoria anche dopo la fase di boot File il virus è inserito in un ospite quando l’ospite viene eseguito viene eseguito anche il virus durante l’esecuzione il virus individua nuovi programmi in cui inserirsi e li infetta (evitando di infettare due volte lo stesso file) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche di infezione (1) Boot sector o MBR il virus viene inserito nel boot sector (hard-disk o floppy) o nel MBR (hard-disk) il virus viene eseguito durante la sequenza di avvio il virus può rimanere in memoria anche dopo la fase di boot File il virus è inserito in un ospite quando l’ospite viene eseguito viene eseguito anche il virus durante l’esecuzione il virus individua nuovi programmi in cui inserirsi e li infetta (evitando di infettare due volte lo stesso file) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche di infezione (2) Memoria il virus viene inserito all’interno dello spazio di indirizzamento di un processo il virus può rimanere attivo solo fino a quando il processo non termina il virus può essere inserito all’interno della memoria del kernel del sistema operativo Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche per l’infezione dei file Companion il nome del file che contiene il virus è scelto in modo tale che il SO esegua il virus quando l’utente richiede il programma originale; ad esempio su Windows è possibile: 1 2 3 4 sfruttare la precedenza dei .com sui .exe sfruttare l’ordine con cui un eseguibile viene cercato nel path rinominare il file originale e sostituirlo con il virus (es. notepad.exe → notepad.ex ) utilizzare gli stream NTFS (es. Win2k.Stream) Sovrascrittura parte del codice dell’ospite viene rimpiazzato con quello del virus. L’ospite non funzionerà più correttamente e la rimozione del virus non sarà possibile. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche per l’infezione dei file Companion il nome del file che contiene il virus è scelto in modo tale che il SO esegua il virus quando l’utente richiede il programma originale; ad esempio su Windows è possibile: 1 2 3 4 sfruttare la precedenza dei .com sui .exe sfruttare l’ordine con cui un eseguibile viene cercato nel path rinominare il file originale e sostituirlo con il virus (es. notepad.exe → notepad.ex ) utilizzare gli stream NTFS (es. Win2k.Stream) Sovrascrittura parte del codice dell’ospite viene rimpiazzato con quello del virus. L’ospite non funzionerà più correttamente e la rimozione del virus non sarà possibile. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche per l’infezione dei file Le tecniche seguenti preservano il file originale (facilitando anche la rimozione del virus): Inserimento in testa il codice dell’ospite viene spostato ed il virus viene inserito all’inizio del programma; il virus si preoccuperà di eseguire il codice originale dell’ospite più semplice in eseguibili plain (es. .com), ma possibile anche in quelli attuali (es. Nimda per i .exe) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche per l’infezione dei file Inserimento in coda il codice del virus viene inserito alla fine di quello dell’ospite; nel codice dell’ospite vengono inserite delle istruzioni per attivare il virus modificano l’inizio dell’host per saltare al corpo del virus, che a sua volta trasferirà poi il controllo all’host anche qui con eseguibili “complessi” (PE, ELF, . . . ) è necessario modificare opportunamente i metadati Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche per l’infezione dei file Inserimento nelle cavità il codice del virus viene inserito nei “buchi” trovati all’interno dell’ospite; nel codice dell’ospite vengono inserite le istruzioni per l’attivazione del virus (es. Lehigh, W2K/Installer) alcuni virus (es. W95/CIH) sono anche in grado di ripartire il proprio codice tra piu’ cavità (fractionated cavity virus) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Tecniche per l’infezione dei file Entry Point Obscuring (EPO) adattamento dell’ospite per mascherare l’attivazione del virus, senza modifiche dirette all’entry point o al codice dell’ospite nelle immediate vicinanze dell’entry point: inserimento di salti all’interno dell’ospite manipolazione dei salti o delle chiamate a funzione dell’ospite (es. ExitProcess()) manipolazione delle sezioni dinamiche dispersione del codice del virus in quello dell’ospite Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Virus - Esempio Semplice Esempio di file infector Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Virus - Esempio Creiamo dei file .com da infettare C:\> debug -a100 xxxx:0100 mov ax,4c00 xxxx:0103 int 21h xxxx:0105 Ctrl-C -rcx CX 0000 :5 -n ex.com -w Writing 00005 bytes -q C:\> copy ex.com uninfectedFile.com Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Virus - Esempio Compiliamo il virus: C:\> tasm virus.asm C:\> tlink /t virus.obj Utiliziamo DosBoxa per testarlo a http://dosbox.sourceforge.net/ Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus Macro Virus molte applicazioni sono “programmabili” con un proprio linguaggio di scripting a volte tali linguaggi sono tanto “potenti” da consentire anche la scrittura di virus multi-piattaforma c macro per Microsoft Office, script Visual Basic, script mIRC, . . . il virus richiede la presenza di una applicazione che contenga l’interprete adeguato Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Tecniche di infezione Infezione di file Macro Virus Virus c Macro Virus nei prodotti Microsoft Office il virus è incluso nei documenti (o template) gestiti dalle applicazioni virus multi-piattaforma (a meno di language dependency o altri problemi di platform dependency) spesso per gli antivirus è difficile rimuovere completamente il virus senza toccare le macro degli utenti: macro corruption macro conversion evoluzioni e devoluzioni del codice ... esistono migliaia di esemplari: Melissa (1999), Laroux (Excel 1996), . . . Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Caratteristiche fondamentali Differenze tra Virus e Worm il principale mezzo di propagazione di uno worm è la rete (infezione network-oriented) non necessitano di un host da infettare, ma si propagano come programmi standalone distinguiamo[3]: active worms non richiedono l’intervento dell’utente per la propagazione (exploit) email worms richiedono una qualche azione dell’utente (propagazione più lenta) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Caratteristiche fondamentali Differenze tra Virus e Worm il principale mezzo di propagazione di uno worm è la rete (infezione network-oriented) non necessitano di un host da infettare, ma si propagano come programmi standalone distinguiamo[3]: active worms non richiedono l’intervento dell’utente per la propagazione (exploit) email worms richiedono una qualche azione dell’utente (propagazione più lenta) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Caratteristiche fondamentali Differenze tra Virus e Worm il principale mezzo di propagazione di uno worm è la rete (infezione network-oriented) non necessitano di un host da infettare, ma si propagano come programmi standalone distinguiamo[3]: active worms non richiedono l’intervento dell’utente per la propagazione (exploit) email worms richiedono una qualche azione dell’utente (propagazione più lenta) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Struttura Componenti essenziali[4] target locator individuazione di nuovi bersagli. Esempio: recupero indirizzi e-mail, IP vulnerabili, . . . infection propagator trasferimento del worm e infezione di un nuovo nodo. Esempio: moduli di exploiting; Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Struttura (cont.) Componenti opzionali[4] remote control and update interface controllo della macchina infetta (backdoor, IRC, . . . ) e aggiornamento del worm (download moduli da web, newsgroup, . . . ); payload molte tipologie che vanno dal DoS fino a sistemi distribuiti molto complessi. Spesso il payload installa patch per la protezione da altri worm; self-tracking tracciamento degli host infetti. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Target locator Indirizzi e-mail Possibili fonti di indirizzi: rubrica newsgroup file su disco messaggi in uscita Network share Windows offre “utili” servizi per trovare altre macchine facilitato da: trust relationship fra sistemi diversi password deboli (o assenti!) molti host collegati con i servizi di condivisione accessibili da chiunque (. . . quando il firewall è un “problema”. . . ) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Target locator Indirizzi e-mail Possibili fonti di indirizzi: rubrica newsgroup file su disco messaggi in uscita Network share Windows offre “utili” servizi per trovare altre macchine facilitato da: trust relationship fra sistemi diversi password deboli (o assenti!) molti host collegati con i servizi di condivisione accessibili da chiunque (. . . quando il firewall è un “problema”. . . ) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Target locator (cont.) Network scanning e fingerprinting[3] random scanning: indirizzo del target scelto casualmente. Problema: un target può essere provato più volte hit-list scanning: worm distribuito con una lista di n target potenzialmente vulnerabili; ad ogni infezione, passa metà lista al nuovo worm; permutation scanning: permutazione pseudo casuale dell’IP address space; ogni esemplare parte da un punto casuale e se trova una macchina infetta, sceglie un nuovo punto di partenza; warhol worm = hit-list + permutation Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Infection propagator (cont.) Tecniche di propagazione: 1 e-mail (social engineering, sender spoofing, . . . ) 2 sfruttamento di backdoor preesistenti (es. W32/Nimda → CodeRed ii, W32/Borm → Back Orifice) (no intervento utente!) 3 propagazione tramite reti P2P (aggiunta ai file in sharing o infezione di file condivisi) 4 diffusione tramite instant messaging (es. mIRC /DCC, MSN, . . . ) 5 bluetooth 6 file server 7 vulnerabilità in applicazioni (no intervento utente!) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Payload Diverse tipologie di payload: backdoor DDoS zombie raccolta informazioni sensibili zombie generico Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Alcuni dei più famosi - Blaster Blaster (Agosto 2003) c SO: Microsoft Windows 2000, XP Metodo di propagazione: vulnerabilità nel servizio RPC (buffer overflow; riavvio di Windows XP dopo la chiusura della shell) Payload: DoS contro windowsupdate.com, apertura shell remota nascosta Target locator: 60% IP casuale, 40% stessa rete di classe B dell’host infetto Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Alcuni dei più famosi - Slammer Slammer (Gennaio 2003) 376 bytes (“mini worm”) c SO: Microsoft Windows c Metodo di propagazione: vulnerabilità Microsoft SQL Server 2000 (stack-based overflow; attacco verso porta UDP 1434, con source IP probabilmente spoofato) Payload: nessuno Target locator: 100% random in loop infinito → CPU al 100% e paralisi della rete Host infettati: almeno 75.000 Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Alcuni dei più famosi - CodeRed CodeRed - (Luglio 2001) c SO: Microsoft Windows 2000 Metodo di propagazione: vulnerabilità in IIS (buffer overflow) “anti worm” CodeGreen Host infettati: 300.000 nelle prime 24 ore Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Struttura Esempi Worm Alcuni dei più famosi - Sobig Sobig SO: Microsoft Windows Metodo di propagazione: email (allegato .pif o .scr) Payload: infezione altri sistemi della stessa lan, aggiornamento automatico e possibilità di esecuzione di codice da remoto Conseguenze: congestione server SMTP Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Componenti fondamentali motore per la scansione (anche di tipi di differenti) signature: definizione dei pattern da utilizzare per l’identificazione dei virus Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Tipologie Anti-virus a livello di host Possibili diverse tipologie di scansione: ricerca su richiesta (on-demand) ricerca in tempo reale: all’apertura di un file, alla ricezione di un’email, . . . (on-access) Anti-virus a livello di rete analisi del traffico in uscita ed in ingresso il traffico deve passare attraverso un gateway in grado di analizzare la particolare tipologia di traffico Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Tipologie Anti-virus a livello di host Possibili diverse tipologie di scansione: ricerca su richiesta (on-demand) ricerca in tempo reale: all’apertura di un file, alla ricezione di un’email, . . . (on-access) Anti-virus a livello di rete analisi del traffico in uscita ed in ingresso il traffico deve passare attraverso un gateway in grado di analizzare la particolare tipologia di traffico Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching String scanning Viene definita una stringa di byte (signature) che identifica un particolare malware. Se un file (o la memoria) contiene una signature, allora è infetto dal malware corrispondente. quanto dev’essere lunga la signature? (e.g. problema dei falsi positivi) dove cercare la signature? (performance) una signature potrebbe identificare varianti diverse dello stesso malware o addirittura malware diversi (svantaggio: quale metodo di rimozione applicare?) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching String scanning Viene definita una stringa di byte (signature) che identifica un particolare malware. Se un file (o la memoria) contiene una signature, allora è infetto dal malware corrispondente. quanto dev’essere lunga la signature? (e.g. problema dei falsi positivi) dove cercare la signature? (performance) una signature potrebbe identificare varianti diverse dello stesso malware o addirittura malware diversi (svantaggio: quale metodo di rimozione applicare?) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Wildcards Variante dello string scanning, impiegando wildcard o espressioni regolari. Problema: performance. Bookmarks Memorizzare la distanza dall’inizio del body del virus alla posizione dove si dovrebbe trovare la signature. Velocizzare la scansione top-and-tail scanning entry-point scanning Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Wildcards Variante dello string scanning, impiegando wildcard o espressioni regolari. Problema: performance. Bookmarks Memorizzare la distanza dall’inizio del body del virus alla posizione dove si dovrebbe trovare la signature. Velocizzare la scansione top-and-tail scanning entry-point scanning Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Wildcards Variante dello string scanning, impiegando wildcard o espressioni regolari. Problema: performance. Bookmarks Memorizzare la distanza dall’inizio del body del virus alla posizione dove si dovrebbe trovare la signature. Velocizzare la scansione top-and-tail scanning entry-point scanning Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Smart pattern matching Evitare caratteri “inutili” (e.g. NOP nei binari, spazi nei sorgenti, . . . ) durante scansione e creazione della signature. Skeleton detection Utile per macro virus: parsing del sorgente, scartando spazi e istruzioni non essenziali per un macro virus. Rimane lo “scheletro” del virus. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Smart pattern matching Evitare caratteri “inutili” (e.g. NOP nei binari, spazi nei sorgenti, . . . ) durante scansione e creazione della signature. Skeleton detection Utile per macro virus: parsing del sorgente, scartando spazi e istruzioni non essenziali per un macro virus. Rimane lo “scheletro” del virus. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Nearly Exact Identification combinazione di più criteri di matching (e.g. signature multiple, checksum di parti del codice, . . . ) se solo alcuni sono soddifatti, si potrebbe aver identificato una variante ⇒ evitare rimozione Exact Identification Consente di distinguere varianti di uno stesso malware. 1 eliminazione della parti variabili del codice del malware 2 definizione degli intervalli relativi alle parti costanti 3 calcolo del checksum di tutta la parte costante Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: pattern matching Nearly Exact Identification combinazione di più criteri di matching (e.g. signature multiple, checksum di parti del codice, . . . ) se solo alcuni sono soddifatti, si potrebbe aver identificato una variante ⇒ evitare rimozione Exact Identification Consente di distinguere varianti di uno stesso malware. 1 eliminazione della parti variabili del codice del malware 2 definizione degli intervalli relativi alle parti costanti 3 calcolo del checksum di tutta la parte costante Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: algorithmic scanning Cos’è? algoritmi per il rilevamento di particolari malware, non gestibili con l’algoritmo standard implementabile in modi diversi: moduli compilati, linkati dinamicamente: efficiente ma poco portabile; moduli compilati in qualche forma di bytecode: lento ma portabile (e.g. Norton Antivirus); Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: algorithmic scanning Cos’è? algoritmi per il rilevamento di particolari malware, non gestibili con l’algoritmo standard implementabile in modi diversi: moduli compilati, linkati dinamicamente: efficiente ma poco portabile; moduli compilati in qualche forma di bytecode: lento ma portabile (e.g. Norton Antivirus); Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: algorithmic scanning Filtering Queste routine specifiche sono spesso “pesanti”. Vengono definiti filtri sugli oggetti esaminati, in modo da applicarle solo ad oggetti sospetti. Esempi di filtri: tipo dell’oggetto presenza di una stringa nell’header nomi di sezioni sospette ... Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: algorithmic scanning Disassembling per ricercare una instruzione “sospetta”, spesso non basta cercare la stringa che la rappresenta esempio: cmp ax,0x5a4d → 66 3D 4D 5A 90 90 BF 66 3D 4D 5A → nop; nop; mov edi,0x5a4d3d66 soluzione: disassembling (da dove partire? che tecnica utilizzare? come gestire anti-disassembing?) Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: code emulation Cos’è? Il malware è eseguito in una virtual machine, che simula una macchina reale. Componente essenziale in antivirus moderni. Considerazioni utile emulare routine di decifratura, in modo da ottenere il body del virus in chiaro; quando terminare l’emulazione? (e.g. alla prima chiamata API, . . . ); tecniche di antiemulation o junk code nella routine di decifratura possono aumentare in modo inaccettabile l’overhead. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: code emulation Cos’è? Il malware è eseguito in una virtual machine, che simula una macchina reale. Componente essenziale in antivirus moderni. Considerazioni utile emulare routine di decifratura, in modo da ottenere il body del virus in chiaro; quando terminare l’emulazione? (e.g. alla prima chiamata API, . . . ); tecniche di antiemulation o junk code nella routine di decifratura possono aumentare in modo inaccettabile l’overhead. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: analisi euristica Cos’è? ricerca di “anomalie” nella struttura dei file, sequenze di istruzioni “sospette”, . . . analisi dinamica di un’applicazione alla ricerca di fenomeni riconducibili a comportamenti maligni noti Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Metodologie di ricerca: analisi euristica Esempi 1 entry point fuori dalla code section (spesso nell’ultima sezione → appending virus) 2 sezioni con attributi sospetti (e.g. .text RWX) 3 jmp in prossimità dell’entry point, con target esterno alla code section (EPO virus) 4 esecuzione di codice in sezioni con nome atipico (e.g. .reloc, .debug, . . . ) 5 ... Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Disinfezione In molti casi è possibile identificare esattamente le parti di codice appartenenti al virus e rimuoverle dall’ospite, lasciando intatte le funzionalità originali dell’ospite Questo non è possibile quando: il virus ha alterato parte dell’ospite non è possibile identificare tutti le parti del virus all’interno dell’ospite Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Disinfezione Tecniche possibili standard disinfection generic disinfection: il file infetto viene emulato finchè il virus stesso non lo ha ripristinato. Problemi: 1 2 il file è davvero infetto? qual è la parte infetta da rimuovere? Vantaggi: 1 2 rimozione di virus sconosciuti riduzione delle dimensioni del DB Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Disinfezione Tecniche possibili standard disinfection generic disinfection: il file infetto viene emulato finchè il virus stesso non lo ha ripristinato. Problemi: 1 2 il file è davvero infetto? qual è la parte infetta da rimuovere? Vantaggi: 1 2 rimozione di virus sconosciuti riduzione delle dimensioni del DB Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Disinfezione Tecniche possibili standard disinfection generic disinfection: il file infetto viene emulato finchè il virus stesso non lo ha ripristinato. Problemi: 1 2 il file è davvero infetto? qual è la parte infetta da rimuovere? Vantaggi: 1 2 rimozione di virus sconosciuti riduzione delle dimensioni del DB Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Disinfezione Tecniche possibili standard disinfection generic disinfection: il file infetto viene emulato finchè il virus stesso non lo ha ripristinato. Problemi: 1 2 il file è davvero infetto? qual è la parte infetta da rimuovere? Vantaggi: 1 2 rimozione di virus sconosciuti riduzione delle dimensioni del DB Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Vaccinazione In alcuni casi è possibile prevenire le infezioni vaccinando i potenziali ospiti, ovvero facendo in modo che un virus non li identifichi come programmi in cui è possibile inserirsi. Problemi: impossibile vaccinare un ospite nei confronti di tutti i possibili virus (e.g. marker incompatibili) possibili interazioni indesiderate tra vaccinazione e moduli di detection/disinfection Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Anti-virus Vaccinazione In alcuni casi è possibile prevenire le infezioni vaccinando i potenziali ospiti, ovvero facendo in modo che un virus non li identifichi come programmi in cui è possibile inserirsi. Problemi: impossibile vaccinare un ospite nei confronti di tutti i possibili virus (e.g. marker incompatibili) possibili interazioni indesiderate tra vaccinazione e moduli di detection/disinfection Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Esempi cifratura payload con chiavi casuali (e.g. RDA – Random Decryption Algorithm) EPO: Entry Point Obscuring → offuscamento dell’entry point anti-debugging Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Entry Point Obscuring Quando un Virus infetta un file deve trovare un modo per ottenere il controllo ed eseguirsi. La maggior parte dei PE infectors usano una semplice tecnica, semplicemente cambiano l’entry-point dell’applicazione infettata per puntare al corpo del virus. Original EXE Infected EXE Entry-point: 0x1000 (.code section) Entry-point: 0x6000 (.reloc section) Questi virus sono molto semplici da identificare in quanto l’entry point risiede fuori dalla code section e ci viene marcato come sospetto dai Virus Scanner. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Entry point Obscuring - Win32.CTX.Phage Un entry- point obscuring virus è un virus che non ottiene direttamente controllo dal programma host. Tipicamente il virus aggiorna il programma host con una jump/call routine e ottiene il controllo in questo modo. Un esempio è il virus Phage, che non modifica l’entry-point di un file infettato ma cerca nel file nella sezione code la chiamata alle API generate da Borland o dal Microsoft Linker. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Entry point Obscuring - Win32.CTX.Phage - Borland Linker Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Entry point Obscuring - Win32.CTX.Phage - Borland Linker Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Entry point Obscuring - Win32.CTX.Phage - Microsoft Linker Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Entry point Obscuring - Win32.CTX.Phage - Microsoft Linker Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging[2] Le tecniche di Anti-debugging sono delle routine che permettono ad un programma di contrallare se é in esecuzione in un ambito emulato oppure da un debugger. Vediamo qualche esempio: kernel32!IsDebuggerPresent IsDebuggerPresent ritorna 1 if il processo é in debugging, 0 altrimenti. Questa API legge semplicemente il byte-flag di PEB!BeingDebugged (allocato con offset 2 nella struttura PEB). call IsDebuggerPresent test eax, eax jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging[2] Le tecniche di Anti-debugging sono delle routine che permettono ad un programma di contrallare se é in esecuzione in un ambito emulato oppure da un debugger. Vediamo qualche esempio: kernel32!IsDebuggerPresent IsDebuggerPresent ritorna 1 if il processo é in debugging, 0 altrimenti. Questa API legge semplicemente il byte-flag di PEB!BeingDebugged (allocato con offset 2 nella struttura PEB). call IsDebuggerPresent test eax, eax jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi PEB!IsDebugged Questo campo si riferisce al secondo byte del Process Environment Block. Viene settato dal sistema quando il processo viene debaggato. Questo byte puó essere risettato a 0 senza nessuna complicazione durante l’esecuzione mov eax, fs:[30h] mov eax, byte [eax+2] test eax, eax jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi PEB!IsDebugged Questo campo si riferisce al secondo byte del Process Environment Block. Viene settato dal sistema quando il processo viene debaggato. Questo byte puó essere risettato a 0 senza nessuna complicazione durante l’esecuzione mov eax, fs:[30h] mov eax, byte [eax+2] test eax, eax jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi(2) PEB!NtGlobalFlags Quando un processo è creato il sistema setta alcuni flags che definiscono quali API saranno utilizzate nel programma. Questi flag possono essere letti nel PEB, nella DWORD localizzata all’offset 0x68. Di default alcune flags vengono settate se un processo è creato sotto un debugger oppure no. (FLG-HEAP-ENABLE-TAIL-CHECK, FLG-HEAP-ENABLE-FREE-CHECK ...). Questa tecnica puo’ essere bypassata risettando a zero questi flag. mov eax, fs:[30h] mov eax, [eax+68h] and eax, 0x70 test eax, eax jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi(2) PEB!NtGlobalFlags Quando un processo è creato il sistema setta alcuni flags che definiscono quali API saranno utilizzate nel programma. Questi flag possono essere letti nel PEB, nella DWORD localizzata all’offset 0x68. Di default alcune flags vengono settate se un processo è creato sotto un debugger oppure no. (FLG-HEAP-ENABLE-TAIL-CHECK, FLG-HEAP-ENABLE-FREE-CHECK ...). Questa tecnica puo’ essere bypassata risettando a zero questi flag. mov eax, fs:[30h] mov eax, [eax+68h] and eax, 0x70 test eax, eax jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi(3) NtQueryInformationProcess ntdll!NtQueryInformationProcess é un wrapper della syscall ZwQueryInformationProcess . Quando viene chiamato con ProcessInformationClass settato a 7 (la costante ProcessDebugPort), il sistema settera ProcessInformation a -1 se il processo é debuggato. push 0 push 4 push offset isdebugged push 7 ;ProcessDebugPort push -1 call NtQueryInformationProcess test eax, eax jne @ExitError cmp isdebugged, 0 jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi(3) NtQueryInformationProcess ntdll!NtQueryInformationProcess é un wrapper della syscall ZwQueryInformationProcess . Quando viene chiamato con ProcessInformationClass settato a 7 (la costante ProcessDebugPort), il sistema settera ProcessInformation a -1 se il processo é debuggato. push 0 push 4 push offset isdebugged push 7 ;ProcessDebugPort push -1 call NtQueryInformationProcess test eax, eax jne @ExitError cmp isdebugged, 0 jne @DebuggerDetected Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi(4) Self-debugging Un processo puo’ accorgersi di essere debaggato cercando di debaggare se stesso, per esempio creando un nuovo processo e chiamamando kernel32!DebugActiveProcess(pid) passando come pid quello del padre. Se il processo é giá in fase di debugging la syscall fallisce. Interrupt 2Dh Eseguendo questo interrupt se il programma non é debuggato solleverá una breakpoint execption. Se invece é sotto debugging l’esecuzione proseguirá senza sollevare nessuna eccezione. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Anti-Debugging - Esempi(4) Self-debugging Un processo puo’ accorgersi di essere debaggato cercando di debaggare se stesso, per esempio creando un nuovo processo e chiamamando kernel32!DebugActiveProcess(pid) passando come pid quello del padre. Se il processo é giá in fase di debugging la syscall fallisce. Interrupt 2Dh Eseguendo questo interrupt se il programma non é debuggato solleverá una breakpoint execption. Se invece é sotto debugging l’esecuzione proseguirá senza sollevare nessuna eccezione. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Polimorfismo Cos’è? capacità del virus di mutare la propria routine di cifratura in molti forme differenti il software anti-virus non è in grado di individuare un insieme limitato di pattern che identifica tutte le istanze del virus Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Malware – Tecniche di self-defense - Polimorfismo corpo cifrato il malware è in grado di mutare la routine di cifratura Esempio lea si , corpo virus nop mov sp , 0682 h sub ax, bx ciclo : xor [ si ] , si inc cx xor [ s i ] , sp inc si add bx, cx dec sp jnz ciclo corpo virus : ... Rozza Alessandro le istruzioni evidenziate sono “junk code” elevato numero di mutazioni possibili difficile individuare una signature costante Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Polimorfismo - Packers - Protectors Packers Un run-time executable packer é un tool usato per comprimere il codice di un programma e/o l’area dati. Gli Executable packers sono progettati per far occupare ad un programma un spazio minore di memoria e per rendere piú veloce il caricamento. Esempi di Executable packers: UPX, ASPack, PECompact, FSG, UPack, MEW. Protectors Run-time executable cryptors o executable protectors, lavorano con una modalitá molto simile agli executable packers. Invece (o in aggiunta) della/alla compressione del contenuto di un programma essi utilizzano la crittografia. Esempi possono essere: ASProtect, Armadillo, Morphine, PolyCryptPE, EXECryptor, Obsidium, NSAnti, Enigma, Themida. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Polimorfismo - Packers - Protectors Packers Un run-time executable packer é un tool usato per comprimere il codice di un programma e/o l’area dati. Gli Executable packers sono progettati per far occupare ad un programma un spazio minore di memoria e per rendere piú veloce il caricamento. Esempi di Executable packers: UPX, ASPack, PECompact, FSG, UPack, MEW. Protectors Run-time executable cryptors o executable protectors, lavorano con una modalitá molto simile agli executable packers. Invece (o in aggiunta) della/alla compressione del contenuto di un programma essi utilizzano la crittografia. Esempi possono essere: ASProtect, Armadillo, Morphine, PolyCryptPE, EXECryptor, Obsidium, NSAnti, Enigma, Themida. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Metamorfismo Cos’è? “metamorphics are body-polymorphics” (Igor Muttik) il nuovo corpo del virus è modificato in modo automatico a partire da quello precedente nel caso del polimorfismo, dopo la decifratura il body del virus appare in memoria, decifrato e costante; questo non accade col metamorfismo Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Strategie di difesa Metamorfismo Come? Esempi: il virus trasporta anche il proprio sorgente, lo modifica e lo ricompila (W32/Apparition) sostituzione dei registri (W95/Regswap); rilevabile con wildcard string riordinamento procedure (W32/Ghost) junk-code ... Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Malware – Tecniche di self-defense Metamorfismo W95/Regswap 5A BF04000000 8BF5 B80C000000 81 C288000000 8B1A pop mov mov mov add mov edx edi ,0004 h e s i , ebp eax , 0 0 0 Ch edx , 0 0 8 8 h ebx , [ edx ] 58 BB04000000 8BD5 BF0C000000 81 C088000000 8B30 pop mov mov mov add mov eax ebx , 0 0 0 4 h edx , ebp e d i , 0 0 0 Ch eax , 0 0 8 8 h e s i , [ eax ] W32/Evol BF0F000055 893E 5F 52 B640 BA8BEC5151 53 8BDA 895 E04 mov mov pop push mov mov push mov mov e d i , 5 5 0 0 0 0 0 Fh [ esi ] , edi edi edx dh , 4 0 edx , 5 1 5 1 EC8Bh ebx ebx , edx [ e s i + 0 0 0 4 ] , ebx Rozza Alessandro BB0F000055 891E 5B 51 B9CB00C05F 81 C1C0EB91F1 894 E04 Malware mov mov pop push mov add mov ebx , 5 5 0 0 0 0 0 Fh [ e s i ] , ebx ebx ecx ecx , 5 FC000CBh ecx , F191EBC0h [ e s i +0004] , ecx Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Malware – Tecniche di self-defense Polimorfismo e metamorfismo Polimorfismo dopo la decifratura il malware appare “in chiaro” adottano tecniche abbastanza semplici implemetazione relativamente semplice Rozza Alessandro Metamorfismo non esiste una versione “in chiaro” del malware possono arrivare anche alla code integration (W95/Zmist) implementazione complessa Malware Introduzione Virus Worm Anti-virus Bibliografia Introduzione Metodologie di ricerca Contromisure Malware & Microsoft Windows Strumenti Alcuni strumenti utili (Sysinternals)1 : regmon, filemon: chiavi di registro/file a cui un processo accede autoruns: applicazioni eseguite al boot tcpview: connessioni TCP in corso e porte in ascolto procexp ... 1 li trovate su www.http://www.microsoft.com/technet/sysinternals/default.mspx Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Bibliografia I F. Cohen. Computer Viruses, Theory and Experiments. Computers & Security, 6:22–35, 1987. N. Falliere. Windows Anti-Debug Reference - Securityfocus. September 2007. S. Staniford, V. Paxson, and N. Weaver. How to 0wn the Internet in Your Spare Time. May 2002. P. Szor. The Art of Computer Virus Research and Defense. Addison-Wesley Professional, 2005. Rozza Alessandro Malware Introduzione Virus Worm Anti-virus Bibliografia Bibliografia II Rozza Alessandro Malware