Analyzing untrusted binaries can be a difficult and complex task and, due to the ever-growing bare size of the data to analyze, there is an increasing research effort to achieve better performances in order to maximize analyzed data and minimize computation time; some applications require real-time performance to analyze the memory of monitored systems while running. There are two types of analyses, static and dynamic, and there exist tools, such as Jackdaw, that exploit a hybrid approach. In particular, Jackdaw extracts behaviors from binaries in order to simplify analysts’ work. The main goal of performing a static analysis in a malware detection system is to characterize different areas of a suspect file in order to obtain a set of fingerprints that characterize the machine code behavior. In this work we describe Apìcula, a new approach to static analysis, that aims to substitute the state-of-the-art static analysis tools, such as Disasm, with a simplified ad-hoc system that allows faster and more precise analyses, therefore obtaining more precise and characterizing set of fingerprints. We propose a system able to detect areas of a binary, or more in general of a stream of bytes, in which specific API calls are used; we characterize them with a set of fingerprints. In particular, we will focus on nodes inside a simplified Control Flow Graph, which is reconstructed from the stream of bytes, we characterize the behavior of the node with our set of fingerprints and with this information we are able to locate nodes that perform a specific API call. We have proven that our fingerprinting methodology achieves better recognition performances w.r.t. Disasm. We also propose a real-time detection system, involving an FPGA directly connected to the memory of a monitored system, that can analyze the memory pages and to check whether or not a known malicious behavior is present in a memory page.

L’analisi di eseguibili, o più in generale file sospetti, con lo scopo di riconoscere se essi sono, o contengono, malware, cioè programmi malevoli, può essere un compito molto difficile; la quantità di dati da analizzare è in continua crescita e perciò è quantomai necessario di sviluppare nuovi e innovativi sistemi in grado di analizzare il maggior numero di dati possibile nel minor tempo possibile, ma sempre mantenendo la capacità di ricononoscere comportamenti malevoli. L’uso di programmi automatizzati è sempre più necessario perché la mole di dati da analizzare è troppo elevata, perché sia possibile richiedere l’intervento umano, anche solo allo scopo di revisionare i risultati di analisi automatizzate, o a maggior ragione per svolgere l’analisi stessa. Sempre più velocemente nuovi malware, cioè programmi malevoli, vengono sviluppati, rilasciati o aggiornati, con lo scopo di sfruttare nuove vulnerabilità e di evitare di essere riconosciuti dai sistemi usati per rilevare programmi malevoli, per esempio i cosiddetti antivirus. Per riconoscere questi programmi malevoli è necessario caratterizzarli in maniera specifica, analizzandoli preventivamente, in modo da riuscire a rilevare la loro presenza all'interno di un sistema monitorato, usando una metodologia specifica. Normalmente le aziende che rilasciano programmi di protezione associano a uno specifico programma malevolo una firma univoca, che viene usata per rilevarli successivamente nei singoli sistemi monitorati; attualmente però questo approccio è facilmente aggirato dagli autori di programmi malevoli, i quali utilizzano nuove tecniche per nascondere i loro programmi e sono capaci di creare multiple versioni, che svolgono le stesse funzionalità, ma evitano di essere rilevate. Inoltre nuovi programmi malevoli sono programmati con la capacità di mutare nel tempo, con modalità non dissimili dall'evoluzione genetica di batteri e virus. Per questi motivi un nuovo approccio, basato sul riconoscimento di comportamenti specifici intrapresi da questi programmi malevoli, sta sempre più prendendo piede negli ambienti di ricerca sulla sicurezza informatica: un comportamento è composto da una serie di azioni svolte dal singolo programma malevolo, volte a svolgere un determinato comportamento dannoso (per esempio acquisire dati da una macchina infetta e inviarli via web al computer dell’agente malevolo). Questi comportamenti possono essere condivisi da diversi programmi malevoli e possono sopravvivere in diverse versioni degli stessi. Un esperto analista umano può possedere le competenze per riconoscere questi comportamenti, analizzando manualmente un programma malevolo, ma vista la crescente quantità di dati è necessario adottare programmi automatizzati che siano in grado di svolgere autonomamente il medesimo lavoro, riducendo così il tempo necessario per svolgere un’analisi e aumentando notevolmente la quantità di dati che possono essere analizzati in un certo periodo di tempo. Esistono due differenti tecniche di analisi automatizzata: analisi statica, la quale consiste nell'analizzare, senza eseguirlo, un eseguibile andando a interpretare il codice macchina, e analisi dinamica, la quale invece osserva le azioni intraprese dall'eseguibile, durante la sua esecuzione. L’analisi statica ha il vantaggio di riuscire ad analizzare per intero tutti i possibili comportamenti dell’eseguibile analizzato, ma nel caso in cui l’autore dell’eseguibile in questione abbia utilizzato tecniche di offuscamento, cioè tecniche che modificano l’eseguibile in modo da nascondere le sue vere intenzioni, la sola analisi statica non è in grado di rilevare i comportamenti malevoli nascosti. L’analisi dinamica ha il vantaggio di essere capace di monitorare le azioni che vengono veramente intraprese dal’eseguibile, anche se la loro codifica in codice macchina è stata offuscata, ma non è in grado di rilevare azioni che non vengono intraprese dal programma malevolo durante una singola esecuzione, anche solo perché lo stesso rileva di essere osservato, e perciò evita di intraprendere determinati comportamenti.Sono presenti applicativi che combinano questi due tipi di analisi, intraprendendo un approccio ibrido, in modo da ottenere i vantaggi di entrambe e di mitigare gli svantaggi; Jackdaw è un sistema che sfrutta questo tipo di approccio. In questa pubblicazione presentiamo Apìcula: un nuovo approccio per svolgere un’analisi statica, che ha l’intento di sostituire gli applicativi che sono considerati l’attuale stato dell’arte in questo campo, proponendo un sistema che garantisce analisi semplificate, e quindi più veloci, ma anche migliori prestazioni di riconoscimento. Apìcula è capace di caratterizzare specifiche porzioni dell’eseguibile, chiamate nodi, usando un insieme di fingerprints, cioè “impronte digitali” che descrivono le possibili azioni intraprese dal nodo. In particolare abbiamo concentrato la nostra analisi su nodi che contengono chiamate di funzioni API. In questo modo Apìcula è capace di riconoscere specifiche chiamate API in specifiche aree del file analizzato. Abbiamo dimostrato che l’analisi statica offerta da Apìcula riesce a ottenere ottime prestazioni di riconoscimento. Dato che Jackdaw è capace di estrarre comportamenti da malware analizzati (in particolare questi comportamenti sono definiti da sequenze di chiamate API), abbiamo integrato Apìcula come sottosistema all'interno di Jackdaw, svolgendo quindi la sua analisi statica in sostituzione del precedente applicativo, chiamato Disasm. Proponiamo un sistema innovativo, volto a rilevare programmi malevoli, che è potenzialmente capace di riconoscere in tempo reale i programmi malevoli eseguiti in memoria nel sistema monitorato; per fare ciò usiamo Apìcula per cercare le sequenze di chiamate a funzioni API, estratte tramite una precedente analisi dei eseguibili malevoli effettuata con Jackdaw, che sappiamo identificare uno specifico comportamento potenzialmente malevolo.

Apicula : static detection of API call in malware memory

SALVADORE, MATTEO;NESPOLI, BENEDETTO MARIA
2018/2019

Abstract

Analyzing untrusted binaries can be a difficult and complex task and, due to the ever-growing bare size of the data to analyze, there is an increasing research effort to achieve better performances in order to maximize analyzed data and minimize computation time; some applications require real-time performance to analyze the memory of monitored systems while running. There are two types of analyses, static and dynamic, and there exist tools, such as Jackdaw, that exploit a hybrid approach. In particular, Jackdaw extracts behaviors from binaries in order to simplify analysts’ work. The main goal of performing a static analysis in a malware detection system is to characterize different areas of a suspect file in order to obtain a set of fingerprints that characterize the machine code behavior. In this work we describe Apìcula, a new approach to static analysis, that aims to substitute the state-of-the-art static analysis tools, such as Disasm, with a simplified ad-hoc system that allows faster and more precise analyses, therefore obtaining more precise and characterizing set of fingerprints. We propose a system able to detect areas of a binary, or more in general of a stream of bytes, in which specific API calls are used; we characterize them with a set of fingerprints. In particular, we will focus on nodes inside a simplified Control Flow Graph, which is reconstructed from the stream of bytes, we characterize the behavior of the node with our set of fingerprints and with this information we are able to locate nodes that perform a specific API call. We have proven that our fingerprinting methodology achieves better recognition performances w.r.t. Disasm. We also propose a real-time detection system, involving an FPGA directly connected to the memory of a monitored system, that can analyze the memory pages and to check whether or not a known malicious behavior is present in a memory page.
CARMINATI, MICHELE
POLINO, MARIO
ING - Scuola di Ingegneria Industriale e dell'Informazione
18-dic-2019
2018/2019
L’analisi di eseguibili, o più in generale file sospetti, con lo scopo di riconoscere se essi sono, o contengono, malware, cioè programmi malevoli, può essere un compito molto difficile; la quantità di dati da analizzare è in continua crescita e perciò è quantomai necessario di sviluppare nuovi e innovativi sistemi in grado di analizzare il maggior numero di dati possibile nel minor tempo possibile, ma sempre mantenendo la capacità di ricononoscere comportamenti malevoli. L’uso di programmi automatizzati è sempre più necessario perché la mole di dati da analizzare è troppo elevata, perché sia possibile richiedere l’intervento umano, anche solo allo scopo di revisionare i risultati di analisi automatizzate, o a maggior ragione per svolgere l’analisi stessa. Sempre più velocemente nuovi malware, cioè programmi malevoli, vengono sviluppati, rilasciati o aggiornati, con lo scopo di sfruttare nuove vulnerabilità e di evitare di essere riconosciuti dai sistemi usati per rilevare programmi malevoli, per esempio i cosiddetti antivirus. Per riconoscere questi programmi malevoli è necessario caratterizzarli in maniera specifica, analizzandoli preventivamente, in modo da riuscire a rilevare la loro presenza all'interno di un sistema monitorato, usando una metodologia specifica. Normalmente le aziende che rilasciano programmi di protezione associano a uno specifico programma malevolo una firma univoca, che viene usata per rilevarli successivamente nei singoli sistemi monitorati; attualmente però questo approccio è facilmente aggirato dagli autori di programmi malevoli, i quali utilizzano nuove tecniche per nascondere i loro programmi e sono capaci di creare multiple versioni, che svolgono le stesse funzionalità, ma evitano di essere rilevate. Inoltre nuovi programmi malevoli sono programmati con la capacità di mutare nel tempo, con modalità non dissimili dall'evoluzione genetica di batteri e virus. Per questi motivi un nuovo approccio, basato sul riconoscimento di comportamenti specifici intrapresi da questi programmi malevoli, sta sempre più prendendo piede negli ambienti di ricerca sulla sicurezza informatica: un comportamento è composto da una serie di azioni svolte dal singolo programma malevolo, volte a svolgere un determinato comportamento dannoso (per esempio acquisire dati da una macchina infetta e inviarli via web al computer dell’agente malevolo). Questi comportamenti possono essere condivisi da diversi programmi malevoli e possono sopravvivere in diverse versioni degli stessi. Un esperto analista umano può possedere le competenze per riconoscere questi comportamenti, analizzando manualmente un programma malevolo, ma vista la crescente quantità di dati è necessario adottare programmi automatizzati che siano in grado di svolgere autonomamente il medesimo lavoro, riducendo così il tempo necessario per svolgere un’analisi e aumentando notevolmente la quantità di dati che possono essere analizzati in un certo periodo di tempo. Esistono due differenti tecniche di analisi automatizzata: analisi statica, la quale consiste nell'analizzare, senza eseguirlo, un eseguibile andando a interpretare il codice macchina, e analisi dinamica, la quale invece osserva le azioni intraprese dall'eseguibile, durante la sua esecuzione. L’analisi statica ha il vantaggio di riuscire ad analizzare per intero tutti i possibili comportamenti dell’eseguibile analizzato, ma nel caso in cui l’autore dell’eseguibile in questione abbia utilizzato tecniche di offuscamento, cioè tecniche che modificano l’eseguibile in modo da nascondere le sue vere intenzioni, la sola analisi statica non è in grado di rilevare i comportamenti malevoli nascosti. L’analisi dinamica ha il vantaggio di essere capace di monitorare le azioni che vengono veramente intraprese dal’eseguibile, anche se la loro codifica in codice macchina è stata offuscata, ma non è in grado di rilevare azioni che non vengono intraprese dal programma malevolo durante una singola esecuzione, anche solo perché lo stesso rileva di essere osservato, e perciò evita di intraprendere determinati comportamenti.Sono presenti applicativi che combinano questi due tipi di analisi, intraprendendo un approccio ibrido, in modo da ottenere i vantaggi di entrambe e di mitigare gli svantaggi; Jackdaw è un sistema che sfrutta questo tipo di approccio. In questa pubblicazione presentiamo Apìcula: un nuovo approccio per svolgere un’analisi statica, che ha l’intento di sostituire gli applicativi che sono considerati l’attuale stato dell’arte in questo campo, proponendo un sistema che garantisce analisi semplificate, e quindi più veloci, ma anche migliori prestazioni di riconoscimento. Apìcula è capace di caratterizzare specifiche porzioni dell’eseguibile, chiamate nodi, usando un insieme di fingerprints, cioè “impronte digitali” che descrivono le possibili azioni intraprese dal nodo. In particolare abbiamo concentrato la nostra analisi su nodi che contengono chiamate di funzioni API. In questo modo Apìcula è capace di riconoscere specifiche chiamate API in specifiche aree del file analizzato. Abbiamo dimostrato che l’analisi statica offerta da Apìcula riesce a ottenere ottime prestazioni di riconoscimento. Dato che Jackdaw è capace di estrarre comportamenti da malware analizzati (in particolare questi comportamenti sono definiti da sequenze di chiamate API), abbiamo integrato Apìcula come sottosistema all'interno di Jackdaw, svolgendo quindi la sua analisi statica in sostituzione del precedente applicativo, chiamato Disasm. Proponiamo un sistema innovativo, volto a rilevare programmi malevoli, che è potenzialmente capace di riconoscere in tempo reale i programmi malevoli eseguiti in memoria nel sistema monitorato; per fare ciò usiamo Apìcula per cercare le sequenze di chiamate a funzioni API, estratte tramite una precedente analisi dei eseguibili malevoli effettuata con Jackdaw, che sappiamo identificare uno specifico comportamento potenzialmente malevolo.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
thesis_Apicula.pdf

non accessibile

Descrizione: Tesi completa
Dimensione 1.52 MB
Formato Adobe PDF
1.52 MB 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/152212