1 ocean, MOCA 2008. Introduzione all'analisi dei malware



Documenti analoghi
Sistema operativo: Gestione della memoria

Hardware di un Computer

Strumenti per l Analisi Statica e Dinamica di Eseguibili

Che cosa è un VIRUS?

INFORMATICA 1 L. Mezzalira

Corso di Informatica

Introduzione a Dev-C++

Ing. Paolo Domenici PREFAZIONE

Gestione della memoria centrale

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Concetto di Funzione e Procedura METODI in Java

VIRTUALIZZAZIONE. Docente: Marco Sechi Modulo 1

FONDAMENTI di INFORMATICA L. Mezzalira

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Fate doppio click sul file con nome postgresql-8.0.msi e impostate le varie voci come riportato nelle immagini seguenti:

Introduzione alla Virtualizzazione

Mac Application Manager 1.3 (SOLO PER TIGER)

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

InfiXor. il programma facile e versatile per preventivi veloci e completi. il software di preventivazione per produttori e rivenditori di infissi

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Struttura del calcolatore

Sistemi Operativi. 5 Gestione della memoria

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Corso di Sistemi di Elaborazione delle informazioni

Manuale Utente. Gestione Richieste supporto BDAP. Versione 1.0

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Introduzione alla programmazione in C

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Acronis License Server. Manuale utente

Il microprocessore 8086

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Manuale Utente. Gestione Richieste supporto Data Warehouse. Della Ragioneria Generale dello Stato. Versione 1.0. Roma, Ottobre 2015

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

START Easy GO! Il gestionale sempre in tasca! Procedura di aggiornamento. Documentazione utente Pagina 1 di 18

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Installazione e caratteristiche generali 1

jt - joetex - percorsi didattici

MODULO STAMPA BOLLETTINO PDF

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Spazio Commerciale. Le tue vendite, il nostro successo. Manuale Operativo. Guida inserimento articoli tramite Area di amministrazione.

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Introduzione a Emptypage FTP. I problemi che il software Emptypage FTP si propone di risolvere sono: Usare il tutorial

Creare una nuova spedizione personalizzata.

System Center Virtual Machine Manager Library Management

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Acronis Universal Restore

Il Software. Il software del PC. Il BIOS

Approccio stratificato

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Pagina n. 1. Via Ficili n Tolentino (MC) Tel.: Fax: info@grupposis.it

MANUALE UTENTE Fiscali Free

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

1) GESTIONE DELLE POSTAZIONI REMOTE

File system II. Sistemi Operativi Lez. 20

PowerPoint 2007 Le funzioni

EDICOLA MANAGER EM Importer

Progetto. Portale Turistico Regionale. Andrea Polini, Oliviero Riganelli, Massimo Troiani. Ingegneria del Software Corso di Laurea in Informatica

Lezione n.9. Introduzione al linguaggio macchina

Cenni di programmazione distribuita in C++ Mauro Piccolo

Introduzione. Informatica B. Daniele Loiacono

The Onion PC. Virtualizzazione strato dopo strato

Lezione 10: Librerie e compilazione separata

L archiviazione della posta elettronica può aiutarci a recuperare spazio senza costringerci a cestinare documenti importanti

JPD132. Microprocessore e assembly

Cosa è un foglio elettronico

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Introduzione ai Sistemi Operativi

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Generazione Automatica di Asserzioni da Modelli di Specifica

CHIUSURE di MAGAZZINO di FINE ANNO

Programmazione in Java Parte I: Fondamenti

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Strutturazione logica dei dati: i file

Oggetti Lezione 3. aspetti generali e definizione di classi I

MANUALE PARCELLA FACILE PLUS INDICE

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

Il sistema C.R.M. / E.R.M.

Guida Pro di Verifier

CONTENT MANAGEMENT SY STEM

Progetto SINTESI - Dominio Provinciale

DEFINIZIONI VM: abbreviazione di Virtual Machine (macchina virtuale).

Transcript:

1 ocean, MOCA 2008 Introduzione all'analisi dei malware

2 Introduzione all'analisi dei malware ocean, MOCA 2008 Introduzione L'analisi dei malware è una attività svolta da appassionati e ricercatori, ma risulta utile anche per altre figure nel mondo dell'i.t., quali gli amministratori di sistema. Attraverso l'analisi è possibile sviluppare delle contromisure effettive, strategie di risk management, un incident response dei sistemi compromessi, sviluppare a priori un incident response plan, creare delle impronte comportamentali da utilizzare in sistemi di HIPS o ottenere informazioni utili per il riconoscimento automatico da parte di software antivirus.

3 Introduzione all'analisi dei malware ocean, MOCA 2008 Strumenti e Tecniche Creazione di un ambiente sicuro per l'analisi analisi È innanzitutto necessario creare un ambiente sicuro per poter analizzare il codice evitando rischi. Si possono utilizzare dei pc organizzati in una rete isolata esclusivamente per questo scopo, creando immagini dei dischi per ripristinare lo stato iniziale. O una virtual machine, molti software di virtualizzazione permettono di creare delle snapshot tramite cui ripristinare i diversi stati.

4 Introduzione all'analisi dei malware ocean, MOCA 2008 L'analisi statica può essere effettuata con le dovute precauzioni anche al di fuori dell'ambiente creato per l'analisi, per esempio, per maggiore sicurezza, su un SO differente da quello per cui è stato sviluppato il malware. Per poter verificare come il malware interagisce può essere necessario allestire una rete locale isolata, in cui siano presenti server associati a determinati servizi (dns, server windows, server *nix...), utilizzando netcat per interagire o creando dei software server adatti. L'approccio da adottare risulta spesso più semplice, basta una unica macchina virtuale su cui sia stata impostata l'accesso a nessuna rete o una rete che possa comunicare solo con la macchina host. L'utilizzo delle virtual machine, non garantisce però una sicurezza perfetta. Alcuni malware sono in grado di riconoscere la presenza della virtual machine, per esempio verificando la presenza di driver specifici della virtual machine (le guest additions di virtualbox), la presenza di chiavi nel registro (vmware),

5 Introduzione all'analisi dei malware ocean, MOCA 2008 utilizzando i meccanismi di comunicazione guest-host / host-guest, istruzioni privilegiate, o valori di ritorno di alcune istruzioni (CPUID, in Virtual Pc ritorna Connectix CPU ). Oltretutto, come suggerito nel paper Attacks on Virtual Machine Emulators (Peter Ferrie, Symantec), ci possono essere casi in cui il malware possa riuscire ad evadere l'ambiente della virtual machine: nel caso di una rete host-only, eventuali bug presenti nei driver di rete dell'host, o in servizi presenti sull'host possono essere sfruttati, attraverso l'invio di pacchetti appositamente creati, o sfruttando bug (per esempio degli input non controllati) presenti in alcuni componenti del software di virtualizzazione (nel 2005, un heap buffer corruption riguardante il componente VMnat di Vmware). L'analisi di un malware può essere svolta utilizzando due metodi: analisi statica e dinamica (esistono anche metodi di analisi automatica, che non rientrano in queste categorie). Entrambe i metodi hanno i loro pregi e difetti, e vengono utilizzati in maniera complementare.

6 Introduzione all'analisi dei malware ocean, MOCA 2008 Malware Analysis Static Analysis Black Box Dynamic Analysis White Box

7 Introduzione all'analisi dei malware ocean, MOCA 2008 Static Analysis Consiste nell'analizzare i file senza eseguirli, con un po' di attenzione questo tipo di analisi può essere effettuata anche nell'ambiente host (meglio se diverso dall'ambiente per cui è stato sviluppato il malware). Script contenenti exploit possono essere analizzati tramite static analysis. Gli strumenti utilizzati per questo tipo di analisi sono quindi, PE editor, disassemblatori, e decompilatori, e unpacker che non richiedano l'esecuzione del malware (per esempio upx). È utile in questa fase prendere nota degli hash md5 dei vari file di cui è composto il malware.

8 Introduzione all'analisi dei malware ocean, MOCA 2008 Alcuni strumenti utili durante questa analisi sono: IDA Pro (http://www.hex-rays.com/idapro/), un ottimo disassembler commerciale, al momento è possibile anche scaricare la versione 4.3 free. CFF Explorer (http://www.ntcore.com/exsuite.php), un ottimo PE editor, utilizza anche una lista di signatures per poter riconoscere con quale compilatore un file pe sia stato compilato, o se sia stato utilizzato un protettore/packer comune. Malzilla (http://malzilla.sourceforge.net) utile per visualizzare codice/script di exploit contenuti nelle pagine web, è molto utile per analizzare pagine che utilizzano javascript offuscati. PEid (http://www.peid.has.it) md5sum, sha1sum

9 Introduzione all'analisi dei malware ocean, MOCA 2008 Dynamic Analysis Spesso, una analisi statica non è sufficiente. I malware possono utilizzare tecniche che rendono complessa l'analisi (layer di compressione/cifratura, self modifying code...), in questi casi sarà quasi sempre necessario controllare il flusso dell'esecuzione tramite un debugger, per poter analizzare prima i vari layer presenti, e solo infine analizzare il comportamento dell'eseguibile. Per questo viene utilizzata la dyniamic analysis, la quale richiede l'esecuzione del codice e può essere suddivisa in due metodi black box e white box.

10 Introduzione all'analisi dei malware ocean, MOCA 2008 Black box Si effettua senza avere necessità di comprendere i meccanismi interni del malware, ne vengono studiati gli effetti sul sistema. Durante l'esecuzione utilizzando strumenti quali packet sniffers, file e registry monitors e dopo l'esecuzione, cercando nuovi file/chiavi di registro presenti. Sysanalyzer (http://labs.idefense.com/software/malcode.php) Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) TCPView (http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx) Wireshark (http://www.wireshark.org/) ospy (http://code.google.com/p/ospy/)

11 Introduzione all'analisi dei malware ocean, MOCA 2008 White box È più complesso, e richiede maggiori conoscenze rispetto all'analisi black box, ma consente di ottenere informazioni più approfondite sul funzionamento, sulla struttura e sul codice del malware. Di solito non si ha a disposizione il sorgente del malware, quindi bisognerà effettuare una analisi file binario (il file eseguibile), dove l'analisi statica tramite il disassembler non ci abbia fornito abbastanza informazioni, è necessario l'uso di un debugger, per potere controllare l'esecuzione del codice a basso livello (assembly). Windbg (http://www.microsoft.com/whdc/devtools/debugging/default.mspx) Ollydbg (http://www.ollydbg.de/) IDA Pro (http://www.hex-rays.com/idapro/) Rasta Ring 0 debugger (http://rr0d.droids-corp.org/) Syser Debugger (http://www.sysersoft.com/) PaiMei (http://pedram.openrce.org/code/paimei/)

12 Introduzione all'analisi dei malware ocean, MOCA 2008 Introduzione al linguaggio assembly L'assembly è un linguaggio a basso livello, molto vicino al linguaggio macchina. Nel linguaggio macchina, delle sequenze di bit specifiche sono associate a delle istruzioni basilari. Il linguaggio assembly associa a delle istruzioni mnemoniche questi codici operativi (opcodes). Per ogni architettura differente esiste quindi un differente linguaggio assembly, noi ci interesseremo della architettura intel x86 a 32 bit. L'argomento è molto vasto, vedremo solo le caratteristiche più importanti, e soprattutto come analizzare un semplice programma scritto nel linguaggio di alto livello C.

13 Introduzione all'analisi dei malware ocean, MOCA 2008 I Registri I registri sono dei contenitori, come le variabili di un linguaggio di alto livello.

14 Introduzione all'analisi dei malware ocean, MOCA 2008 I primi otto registri chiamati anche general-purpose registers, possono essere utilizzati in maniera generica, ma hanno anche degli usi specifici. EAX: accumulatore EBX: puntatore a dati ECX: contatore EDX: puntatore I/O ESI: puntatore di origine per le operazioni sulle stringhe EDI: puntatore di destinazione per le operazioni sulle stringhe ESP: stack pointer EBP: puntatore a dati nello stack EIP è un registro particolare e contiene l'inidirizzo della prossima istruzione che deve essere eseguita.

15 Introduzione all'analisi dei malware ocean, MOCA 2008 EFLAGS è un registro che contiene dei flag, quelli che ci interessano sono gli status flag e il flag df. Gli status flags indicano il risultato di operazioni aritmetiche. Quelli che vengono usati maggiormente sono: CF, carry flag: indica se una istruzione ha dovuto effettuare il riporto di un bit. ZF, zero flag: indica se il risultato è zero. SF, sign flag: indica se il risultato è positivo o negativo. C'è anche un flag DF di direzione, controlla la direzione di lettura/scrittura per le istruzioni sulle stringhe.

16 Introduzione all'analisi dei malware ocean, MOCA 2008 Lo Stack È una struttura di tipo LIFO (Last In First Out) presente in memoria, lo stack pointer punta a quest'area di memoria, che solitamente viene manipolata attraverso le istruzioni di push e pop. Oltre a contenere dati contiene anche gli indirizzi di ritorno delle call. Infatti quando viene eseguita una istruzione CALL, per chiamare una sottoprocedura, viene messo nello stack l'indirizzo della istruzione successiva rispetto alla call. In questo modo, terminata la procedura, attraverso l'istruzione RET, il programma riprende l'esecuzione dalla istruzione immediatamente successiva. PUSH EAX PUSH EBX CALL SOMMA MOV [RISULTATO], EAX SOMMA: PUSH EBP MOV EBP,ESP MOV EAX, [EBP+8] MOV EBX, [EBP+C] ADD EAX, EBX POP EBP RET

17 Introduzione all'analisi dei malware ocean, MOCA 2008 Le istruzioni Nella sintassi intel il primo operando rappresenta la destinazione, il secondo l'origine dei dati. MOV EAX, EBX, copia il contenuto di ebx in eax. MOV EAX, [EBX] copia la dword puntata dall'indirizzo contenuto inebx, in eax. JMP $1234, è un salto incondizionato all'indirizzo 1234. CMP EAX, EBX confronta il contenuto di EAX e EBX, e modifica gli status flags di conseguenza. Ci sono anche i salti condizionati il salto viene eseguito o meno a seconda del flag corrispondente. JNZ/JNE salta solo se il risultato dell'ultima operazione è differente (se eax ed ebx nell'istruzione cmp sono differenti) JLE, salta se minore o uguale...

18 Introduzione all'analisi dei malware ocean, MOCA 2008 Da linguaggio di alto livello all'assembly Vediamo ora un piccolo esercizio, per cominciare a prendere dimestichezza con l'assembler. int somma(int a, int b){ return (a+b); } int main(void){ int i,j; for (i=0, j=0;i<5;i++){ j = somma(i,j); printf("hello, %d\n",j); } return 0; }

19 Introduzione all'analisi dei malware ocean, MOCA 2008 Il risultato della compilazione è il seguente: (listato_1) Le strutture di alto livello sono facilmente distinguibili all'interno del codice assembly.

20 Introduzione all'analisi dei malware ocean, MOCA 2008 Il formato PE È il formato utilizzato per i file eseguibili di windows. Le parti più interessanti sono sicuramente il pe header e la section table. Le sezioni possono contenere codice o dati. Del pe header in particolare ci interessano l'entry point, che descrive il punto da cui comincia il codice, l'image base, che specifica l'indirizzo dove verrà mappato in memoria il file. Le entry della struttura IMAGE_DATA_DIRECTORY contenute nell'optional header, sono altrettanto interessanti, tra queste entry è presente IMAGE_DIRECTORY_ENTRY_IMPORT, o Import Table.

21 Introduzione all'analisi dei malware ocean, MOCA 2008 La Import Address Table La IAT è una tabella di puntatori a funzioni esterne che l'applicazione utilizza. La locazione in memoria delle dll, però, è dinamica. Quindi il linker non può conoscere a priori dove una certa funzione è in memoria. La tabella viene quindi creata in maniera dinamica, attraverso il nome della funzione e della dll. Il loader di windows, quindi sovrascriverà la IAT, con le locazioni ottenute. Ogni volta che una funzione viene richiamata, viene utilizzato il puntatore della iat, il metodo utilizzato può cambiare a seconda del compilatore e delle ottimizzazioni. È facile trovare per esempio uno schema simile a questo: (A meno che l'indirizzo della procedura non venga ottenuto a runtime, per esempio attraverso GetProcAddress)

22 Introduzione all'analisi dei malware ocean, MOCA 2008 PE Packers I pe packers (anche i crypters/protectors) sono dei software che rendono più complessa l'analisi e il riconoscimento tramite signatures da parte degli antivirus. Il contenuto del file exe originale viene compresso/cifrato. All'interno del nuovo file eseguibile saranno presenti i dati originali compressi e uno stub che provvede alla decompressione. Lo stub utilizza una propria IAT (spesso con poche funzioni come GetProcAddress, LoadLibraryA e VirtualAlloc), una volta eseguita la decompressione in memoria, la IAT viene popolata con le entry dell'eseguibile originale. L'analisi statica in questo caso è quindi inutile, sarà necessario prima rimuovere il layer (o più di uno) di compressione/protezione per rendere più semplice l'analisi in seguito.

23 Introduzione all'analisi dei malware ocean, MOCA 2008 Una volta analizzato il layout del pe, se sembra sia stato utilizzato un packer possiamo utilizzare un tool come PEid o CFF Explorer, per poter identificare il packer usato. (l'identificazione è basata su signatures, quindi è abbastanza semplice modificare il pe in modo da non rendere possibile l'identificazione del packer). Qualunque sia il packer il codice/dati originali devono essere in memoria per poter essere utilizzati, per poter effettuare l'unpacking dobbiamo conoscere il momento esatto in cui i dati sono presenti in memoria. È anche possibile che i dati siano presenti in memoria solo per poco tempo. Per eseguire l'unpacking è necessario quindi raggiungere l'entry point originale (OEP) e dumpare il processo, modificare il pe header in modo da ripristinare l'entry point, e ripristinare una IAT valida. Ci sono dei tool appositi per ricostruire la Import Table in maniera automatica, Revirgin e ImpRec.

24 Introduzione all'analisi dei malware ocean, MOCA 2008 UPX Unpacking Notiamo immediatamente che il file PE è compresso, ci sono poche import, i dati presenti nella resource directory non sono consistenti. Una veloce occhiata all'entry point rivela lo stub di upx:

25 Introduzione all'analisi dei malware ocean, MOCA 2008 Il pushad all'inizio salva i valori presenti nei registri all'inizio dell'esecuzione, upx salva nello stack questi valori e li ripristina immediatamente prima di saltare all'oep. Per raggiungere l'entry point, quindi la maniera più semplice è cercare per le due istruzioni POPAD / JMP, e mettere un breakpoint sul jmp, o eseguire l'istruzione pushad e mettere un memory breakpoint sull'accesso a quella zona di memoria, Lasciare eseguire lo stub di upx e arrivati al breakpoint, steppare fino all'oep.

26 Introduzione all'analisi dei malware ocean, MOCA 2008 Arrivati all'oep possiamo utilizzare il plugin OllyDmp, e utilizzare l'opzione integrata nel plugin per ricostruire la IAT (o utilizzando ImpRec).

27 Introduzione all'analisi dei malware ocean, MOCA 2008 Antidebug Ci sono diversi metodi tramite cui il malware può riconoscere la presenza di un debugger: IsDebuggerPresent RDTSC, QueryPerformanceCounter, GetTickCount PEB->IsDebugged NtGlobalFlags HeapFlags... Una reference utile sull'argomento è Windows Anti-Debug Reference (Nicolas Falliere) http://www.securityfocus.com/infocus/1893

28 ocean, MOCA 2008