Malicious software, also know as malware, represent one of the major threats to computer systems. Principal targets of these software are sensitive data and malware authors release new threats every day, motivated by financial gain. The most effective way to contrast malware is through their analysis. We can differentiate analysis techniques between static and dynamic analysis. Static ana- lysis is based on code analysis (e.g., assembly, source) and present the advantage of high code coverage and scalability, whereas is essentially ineffective against code obfuscation and packing. Dynamic analysis is based on observing the execution flow of a running program to identify behaviors or dependencies among API functions. One of the main problems in malware analysis is the automatic detection of re- levant malicious behaviors. The state of the art requires analysts to manually inspect malware to extract relevant data used to define rules that represent be- haviors. The definition of behaviors is often a difficult task and relies directly on data extracted from the execution flow of a program, that are typically extrac- ted manually using debuggers. Due to the increasing number of new malware samples and the increase of features, this manual analysis become infeasible, ou- tlining the need of automatic processes in order to increase coverage of analyzed malware. In this scenario, I present Pandora , a flexible and transparent Windows Native API tracer. The system trace all the native API called by a process, and its sub-processes, in execution on a Windows operative system, including their ar- guments and outcome, performing the unmarshalling of the extracted data wi- thout the need to modify the inspected operative system. I tested Pandora first verifying the correctness of the extracted data both by checking it manually and by comparing its reports with reports of other simi- lar platforms, and then comparing its performance penalization with respect an execution without tracing.

I programmi malevoli, anche conosciuti con il termine malware, rappresenta- no una delle maggiori minacce ai sistemi informatici. Il principale obiettivo di questi programmi è quello di creare strumenti in grado di sottrarre informazioni sensibili da macchine di utenti ed imprese, come ad esempio credenziali ban- carie o informazioni riservate delle imprese, al fine di poterle poi rivendere o quantomeno sfruttare per ottenere benefici finanziari. Questo fenomeno ha por- tato alla nascita di veri e propri servizi, chiamati pay-per-install, tramite i quali gli autori di malware possono pagare terzi per installare il loro software su un ingente numero di macchine, tramite vari vettori di infezione quali spam (invio di messaggi indesiderati), social engineering (termine utilizzato nel campo della sicurezza informatica per indicare lo studio del comportamento delle persone al fine di poterne estrapolare informazioni sensibili senza che se ne rendano conto). L’espansione di mercati come questo ha portato alla creazione di un numero sem- pre maggiore di questi software malevoli che sono diventati al contempo sempre più sofisticati, dotati delle più svariate funzionalità e sempre più frequentemente aggiornati al fine di non essere riconosciuti da sistemi di protezione ed antivirus. Le aziende che producono software di protezione da queste minacce ricevono ogni giorno sempre più campioni da analizzare per comprenderne il livello di malevolenza ed eventualmente crearne una firma univoca per una futura iden- tificazione. La creazione di queste firme univoche però non è più sufficiente per via del fatto che gli autori di questi programmi malevoli hanno cominciato a creare diverse versioni dello stesso programma con le stesse funzionalità che utilizzano tecniche per nascondersi. Per questi motivi, la possibilità di analizzare un numero quanto più elevato possibile di campioni è diventato fondamentale per la ricerca nel campo della sicurezza informatica, al pari dell’abilità di deter- minare e catalogare i comportamenti di questi programmi. Per comportamenti si intende generalmente una sequenza di azioni o eventi volta a raggiungere un determinato obiettivo (come per esempio l’invio di messaggi indesiderati). In generale la definizione di comportamenti è svolta manualmente da analisti, tut- tavia il numero di analisti in grado di svolgere questo lavoro non è sufficiente a coprire l’ingente numero di campioni malevoli che vengono creati giornalmen- te, sottolineando l’esigenza di sviluppare tecniche di analisi automatiche così da incrementare la quantità di analisi riducendone al contempo il tempo necessario per svolgerle. Le tecniche più utilizzate per l’analisi di programmi malevoli sono l’analisi sta- tica e l’analisi dinamica. L’analisi statica viene effettuata generalmente su codice macchina e codice sorgente dell’eseguibile. Ha il vantaggio di permettere l’analisi quasi totale del codice a disposizione, tuttavia risulta inefficace nel caso in cui il campione sia stato programmato utilizzando tecniche di offuscamento del codi- ce sorgente, tipicamente ottenuto cifrandolo o semplicemente comprimendolo. L’analisi dinamica viene invece effettuata sul flusso di esecuzione del program- ma analizzato. Il flusso di esecuzione del programma viene tipicamente estratto mandandolo in esecuzione su piattaforme che ne monitorano le azioni produ- cendo log dei flussi. Tipicamente questo tipo di analisi viene utilizzata per la ri- levazione di comportamenti malevoli noti all’interno di un programma. Queste tecniche, al contrario di quelle statiche, sono efficaci anche contro l’offuscamento del codice macchina o sorgente, ma presentano tuttavia il limite di rivelare solo le azioni che vengono effettivamente eseguite durante l’esecuzione del programma, perdendo potenziali comportamenti non scatenati dalla mancata interazione con quest’ultimo. Questo problema può essere parzialmente aggirato riproducendo ed eventualmente pilotando l’esecuzione del programma in esame al fine di mo- strare anche i comportamenti non osservati in esecuzioni precedenti. Un altro limite da non sottovalutare è inoltre il fatto che molti malware vengono imple- mentati con controlli all’inizio dell’esecuzione per capire se sono in esecuzione in una macchina virtuale, e quindi con molta probabilità sotto ispezione, variando di conseguenza il proprio comportamento non manifestando per esempio i com- portamenti malevoli in esso definiti. In questo scenario, con il mio lavoro Pandora , presento una soluzione flessibile e trasparente per il tracciamento delle API native di sistemi operativi Windows. Il sistema traccia tutte le chiamate di API native effettuate da un processo, e i suoi sotto processi, in esecuzione su un sistema operativo Windows includendo l’estrazione degli argomenti e del valore di ritorno, effettuando anche la de se- rializzazione dei dati estratti senza la necessità di modificare il sistema operativo ispezionato. Pandora è stato testato prima di tutto verificando la correttezza dei dati estratti controllandoli manualmente e comparandoli con i dati estratti da piattaforme si- mili, ed in secondo luogo valutandone la penalizzazione in termini di tempo di esecuzione rispetto all’esecuzione su un sistema senza tracciamento.

PANDORA : a flexible and transparent Windows native API tracer

MAZZONI, SIMONE
2014/2015

Abstract

Malicious software, also know as malware, represent one of the major threats to computer systems. Principal targets of these software are sensitive data and malware authors release new threats every day, motivated by financial gain. The most effective way to contrast malware is through their analysis. We can differentiate analysis techniques between static and dynamic analysis. Static ana- lysis is based on code analysis (e.g., assembly, source) and present the advantage of high code coverage and scalability, whereas is essentially ineffective against code obfuscation and packing. Dynamic analysis is based on observing the execution flow of a running program to identify behaviors or dependencies among API functions. One of the main problems in malware analysis is the automatic detection of re- levant malicious behaviors. The state of the art requires analysts to manually inspect malware to extract relevant data used to define rules that represent be- haviors. The definition of behaviors is often a difficult task and relies directly on data extracted from the execution flow of a program, that are typically extrac- ted manually using debuggers. Due to the increasing number of new malware samples and the increase of features, this manual analysis become infeasible, ou- tlining the need of automatic processes in order to increase coverage of analyzed malware. In this scenario, I present Pandora , a flexible and transparent Windows Native API tracer. The system trace all the native API called by a process, and its sub-processes, in execution on a Windows operative system, including their ar- guments and outcome, performing the unmarshalling of the extracted data wi- thout the need to modify the inspected operative system. I tested Pandora first verifying the correctness of the extracted data both by checking it manually and by comparing its reports with reports of other simi- lar platforms, and then comparing its performance penalization with respect an execution without tracing.
POLINO, MARIO
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-lug-2015
2014/2015
I programmi malevoli, anche conosciuti con il termine malware, rappresenta- no una delle maggiori minacce ai sistemi informatici. Il principale obiettivo di questi programmi è quello di creare strumenti in grado di sottrarre informazioni sensibili da macchine di utenti ed imprese, come ad esempio credenziali ban- carie o informazioni riservate delle imprese, al fine di poterle poi rivendere o quantomeno sfruttare per ottenere benefici finanziari. Questo fenomeno ha por- tato alla nascita di veri e propri servizi, chiamati pay-per-install, tramite i quali gli autori di malware possono pagare terzi per installare il loro software su un ingente numero di macchine, tramite vari vettori di infezione quali spam (invio di messaggi indesiderati), social engineering (termine utilizzato nel campo della sicurezza informatica per indicare lo studio del comportamento delle persone al fine di poterne estrapolare informazioni sensibili senza che se ne rendano conto). L’espansione di mercati come questo ha portato alla creazione di un numero sem- pre maggiore di questi software malevoli che sono diventati al contempo sempre più sofisticati, dotati delle più svariate funzionalità e sempre più frequentemente aggiornati al fine di non essere riconosciuti da sistemi di protezione ed antivirus. Le aziende che producono software di protezione da queste minacce ricevono ogni giorno sempre più campioni da analizzare per comprenderne il livello di malevolenza ed eventualmente crearne una firma univoca per una futura iden- tificazione. La creazione di queste firme univoche però non è più sufficiente per via del fatto che gli autori di questi programmi malevoli hanno cominciato a creare diverse versioni dello stesso programma con le stesse funzionalità che utilizzano tecniche per nascondersi. Per questi motivi, la possibilità di analizzare un numero quanto più elevato possibile di campioni è diventato fondamentale per la ricerca nel campo della sicurezza informatica, al pari dell’abilità di deter- minare e catalogare i comportamenti di questi programmi. Per comportamenti si intende generalmente una sequenza di azioni o eventi volta a raggiungere un determinato obiettivo (come per esempio l’invio di messaggi indesiderati). In generale la definizione di comportamenti è svolta manualmente da analisti, tut- tavia il numero di analisti in grado di svolgere questo lavoro non è sufficiente a coprire l’ingente numero di campioni malevoli che vengono creati giornalmen- te, sottolineando l’esigenza di sviluppare tecniche di analisi automatiche così da incrementare la quantità di analisi riducendone al contempo il tempo necessario per svolgerle. Le tecniche più utilizzate per l’analisi di programmi malevoli sono l’analisi sta- tica e l’analisi dinamica. L’analisi statica viene effettuata generalmente su codice macchina e codice sorgente dell’eseguibile. Ha il vantaggio di permettere l’analisi quasi totale del codice a disposizione, tuttavia risulta inefficace nel caso in cui il campione sia stato programmato utilizzando tecniche di offuscamento del codi- ce sorgente, tipicamente ottenuto cifrandolo o semplicemente comprimendolo. L’analisi dinamica viene invece effettuata sul flusso di esecuzione del program- ma analizzato. Il flusso di esecuzione del programma viene tipicamente estratto mandandolo in esecuzione su piattaforme che ne monitorano le azioni produ- cendo log dei flussi. Tipicamente questo tipo di analisi viene utilizzata per la ri- levazione di comportamenti malevoli noti all’interno di un programma. Queste tecniche, al contrario di quelle statiche, sono efficaci anche contro l’offuscamento del codice macchina o sorgente, ma presentano tuttavia il limite di rivelare solo le azioni che vengono effettivamente eseguite durante l’esecuzione del programma, perdendo potenziali comportamenti non scatenati dalla mancata interazione con quest’ultimo. Questo problema può essere parzialmente aggirato riproducendo ed eventualmente pilotando l’esecuzione del programma in esame al fine di mo- strare anche i comportamenti non osservati in esecuzioni precedenti. Un altro limite da non sottovalutare è inoltre il fatto che molti malware vengono imple- mentati con controlli all’inizio dell’esecuzione per capire se sono in esecuzione in una macchina virtuale, e quindi con molta probabilità sotto ispezione, variando di conseguenza il proprio comportamento non manifestando per esempio i com- portamenti malevoli in esso definiti. In questo scenario, con il mio lavoro Pandora , presento una soluzione flessibile e trasparente per il tracciamento delle API native di sistemi operativi Windows. Il sistema traccia tutte le chiamate di API native effettuate da un processo, e i suoi sotto processi, in esecuzione su un sistema operativo Windows includendo l’estrazione degli argomenti e del valore di ritorno, effettuando anche la de se- rializzazione dei dati estratti senza la necessità di modificare il sistema operativo ispezionato. Pandora è stato testato prima di tutto verificando la correttezza dei dati estratti controllandoli manualmente e comparandoli con i dati estratti da piattaforme si- mili, ed in secondo luogo valutandone la penalizzazione in termini di tempo di esecuzione rispetto all’esecuzione su un sistema senza tracciamento.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2015_07_mazzoni.pdf

solo utenti autorizzati dal 09/07/2016

Descrizione: Tesi completa
Dimensione 749.69 kB
Formato Adobe PDF
749.69 kB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/108691