Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa...

20
Pattern Recognition and Applications Lab Università di Cagliari, Italia Dipartimento di Ingegneria Elettrica ed Elettronica Strumenti per l’Analisi Statica e Dinamica di Eseguibili Strumenti per l’Analisi Statica e Dinamica di Eseguibili Dott. Ing. Davide Maiorca [email protected] Corso di Sicurezza Informatica – A.A. 2014/2015

Transcript of Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa...

Page 1: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

Pattern Recognition and Applications Lab

Università di Cagliari, Italia

Dipartimento di Ingegneria Elettrica

ed Elettronica

Strumenti per l’Analisi Statica e Dinamica di Eseguibili

Strumenti per l’Analisi Statica e Dinamica di Eseguibili

Dott. Ing. Davide Maiorca

[email protected]

Corso di Sicurezza Informatica – A.A. 2014/2015

Page 2: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Sommario Sommario

• Strumenti per Linux

– Strings

– EDB-Debugger

– VirusTotal

• Strumenti Per Windows

– Introduzione al Portable Executable

– PEId

– Packing

– OllyDBG

– Anubis

Page 3: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Introduzione Introduzione

• Nelle precedenti lezioni, abbiamo analizzato a fondo diversi eseguibili

• L’analisi era volta a capire come potevano essere sfruttate delle vulnerabilità – Anche effettuando degli attacchi complessi

• Per svolgere al meglio queste analisi, esistono tanti altri strumenti oltre a quelli che abbiamo visto in precedenza

• Questa lezione vuole fornire una panoramica di alcuni di questi

• Ci concentreremo su Linux ma anche, e soprattutto, su Windows

• Il numero di malware per Windows è, infatti, molto più elevato rispetto a Linux! – E’, quindi, importante illustrare gli strumenti essenziali per l’analisi di eseguibili

Windows …

– …e mostrarne anche la loro struttura base!

• Vedremo sia esempi di analisi statica che dinamica

Page 4: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Strumenti per Linux Strumenti per Linux

Page 5: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Strings Strings

• Abbiamo visto a fondo readelf, objdump e gdb – Sono gli strumenti principali per analizzare un eseguibile Linux!

• strings è un comando che vi consente di ispezionare le stringhe di un eseguibile

• Funziona su Linux e su OSX – Windows ha delle varianti apposite

• Questo strumento è utile per iniziare ad avere una «idea» sull’eseguibile che andate ad analizzare

• Alle volte, potreste immediatamente visualizzare delle stringhe sospette… – Per esempio, che si riferiscono all’utilizzo di shellcode…

– Oppure che richiamano ad un sito malevolo

• Per eseguirlo scrivete da terminale strings «eseguibile»

Page 6: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

EDB-Debugger EDB-Debugger

• EDB-Debugger è un debugger che dispone di una interfaccia grafica

• Simile a GDB, ma potete sfruttare i vantaggi dell’interfaccia grafica!

• Lo trovate sulla distribuzione kali

• Aprite uno degli eseguibili delle lezioni precedenti con edb debugger

• debug -> run

• Vi porterà all’inizio del main (quando possibile)

• La sintassi di assembly è un po’ diversa, ma…

• …potete controllare, nello stesso momento, tutto lo stack e tutti i registri

• Inoltre, per ogni istruzione assembly vi viene riportata una «sintesi» delle modifiche dell’istruzione stessa

• Potete procedere istruzione per istruzione e decidere se entrare nelle «call» o saltarle

Page 7: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

EDB-Debugger (2) EDB-Debugger (2)

• EDB-Debugger ha altre funzionalità interessanti

• Può ricercare i ROP gadgets in memoria in maniera automatica…

• Può anche individuare delle funzioni all’interno di una zona di memoria

• L’utilizzo è leggermente meno intuitivo, per certi aspetti, rispetto a GDB

• E’ anche una questione dello stile che preferite usare!

• Normalmente, si usa una combinazione fra objdump ed un debugger, oppure fra più debuggers (funzionalità diverse)

Page 8: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Virus Total Virus Total

• VirusTotal è un servizio online per l’analisi automatica di malware

• Racchiude, in sostanza, più di 50 antivirus…

• Ogni antivirus analizza il file e stabilisce se è un malware o meno…

• Il servizio fornisce anche delle analisi aggiuntive – Ad esempio, nel caso di un elf, vi mostra le sezioni ed i segmenti del file

– Vi mostra se usate librerie statiche o dinamiche…

• Alla fine dell’analisi, il servizio vi fornirà un punteggio

• Il punteggio viene incrementato di 1 ogni volta che un Antivirus ritiene che il campione sia un malware

• NORMALMENTE i file con punteggio 0 sono benigni… – Ma non è sempre così!

– Potrebbe anche essere un malware particolarmente evasivo

• Invece, i campioni con un punteggio superiore a 10-20 sono ragionevolmente dei malware…

• http://www.virustotal.com

Page 9: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Strumenti per Windows Strumenti per Windows

Page 10: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Windows – Portable Executable (PE) Windows – Portable Executable (PE)

• Come ben sapete, la maggior parte dei malware colpisce macchine Windows

• E’ quindi importante dare una descrizione di alcuni strumenti di analisi per eseguibili Windows

• Il formato utilizzato da Windows si chiama Portable Executable (PE)

• Ha qualche piccolo punto in comune con ELF…

• Ad esempio, anche qui è presente un header che descrive le sezioni di un eseguibile – E le sezioni più importanti sono sempre .text e .data, che vengono copiate in memoria!

• Ci sono anche parecchie differenze! – L’header principale è chiamato MZ Header

– Il file header ed il section header sono contenuti dentro un header più grande, chiamato PE Header

– Le librerie caricate dinamicamente prendono il nome di DLL (Dynamic-Link Library)

Page 11: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Windows – Portable Executable (PE) Windows – Portable Executable (PE)

Page 12: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

PEID PEID

• E’ qualcosa di molto simile a readelf, ma per eseguibili Windows

• Vi fornisce delle indicazioni sulla struttura dell’eseuguibile – In termini di sezioni…

– …ma anche di stringhe! Ha funzionalità simili a strings

– Potete anche vedere diverse istruzioni macchina

• Sicuramente, però, la funzionalità più interessante è l’individuazione di packers

Page 13: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Packers Packers

• Gli Antivirus (come quelli di VirusTotal) si basano su un sistema di firme per individuare un malware

• Il problema è che questi possono essere evasi facilmente se qualcosa, nella struttura dell’eseguibile, cambia…

• Il packing è una tecnica per «nascondere» un eseguibile dentro un altro eseguibile – Solitamente attraverso una compressione

• L’eseguibile nascosto viene decompresso a runtime e caricato in memoria – Vengono usate delle routines speciali

• In questo modo, un’analisi statica non può accorgersi che il malware è stato «nascosto»

• La dimensione dell’eseguibile in memoria è, naturalmente, ora molto maggiore

• Ovviamente, questi packers possono essere individuati se le loro «routines» di decompressione sono note

Page 14: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

OllyDBG OllyDBG

• Uno degli strumenti principali per l’analisi di eseguibili Windows

• Open Source

• Molto simile a EDB-Debugger come struttura

• Potete visualizzare contemporaneamente i registri, lo stack, l’hex-dump

• Potete ovviamente anche muovervi istruzione per istruzione

• Presente anche una versione a 64 bit

Page 15: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

OllyDBG OllyDBG

Page 16: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

IDAPro IDAPro

• Il «disassemblatore» per eccellenza di eseguibili – Commerciale

• Consente di effettuare una miriade di operazioni – Analisi statica e dinamica

• In particolar modo, consente di vedere graficamente come le varie funzioni sono collegate fra loro – Il codice viene rappresentato come un insieme di blocchi collegati fra loro

– Attraverso il collegamento fra questi blocchi, è possibile comprendere il flusso del programma

• Consente, inoltre, di apportare delle modifiche all’eseguibile e di creare delle patch – Ad esempio, se vogliamo correggere specifici bug…

• Supporta molti tipi di eseguibili… – Windows, Linux, Android…

• …e di architetture – X86, X64, ARM…

Page 17: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

IDAPro IDAPro

Page 18: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Anubis Anubis

• Servizio online per l’analisi dinamica di eseguibili – Gratuito

• Sfrutta il Sandboxing

• La Sandbox è un ambiente virtualizzato (solitamente modificato ad-hoc) nel quale un eseguibile viene lanciato

• La Sandbox tiene traccia di varie operazioni svolte dall’eseguibile – Ad esempio, se vengono modificati files

– Se ci si collega ad un sito malevolo

– Se vengono creati files aggiuntivi

– E molto altro!

• Alla fine viene creato un report completo nel quale è possibile visualizzare tali operazioni

• http://anubis.iseclab.org

Page 19: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Evasione di Analisi Dinamica Evasione di Analisi Dinamica

• L’analisi dinamica è uno strumento molto potente per l’analisi di eseguibili

• La domanda fondamentale è: può essere evasa?

• Per attaccarla, non si possono usare le stesse tecniche per evadere l’analisi statica – Ad esempio, i packers sono poco efficaci

• Un primo modo per evadere potrebbe essere quello di controllare la differenza fra un ambiente virtualizzato ed uno reale – Non tutte le istruzioni del processore sono perfettamente «virtualizzate»

– L’ambiente virtualizzato può avere delle mancanze a livello hardware

• Un secondo modo è quello di ritardare l’analisi – Si manda in sleep il programma…

– La Sandbox, solitamente, analizza l’eseguibile per diversi minuti (ipotizzando che le operazioni vengano fatte in un certo intervallo di tempo)

– Attraverso lo sleep, la Sanbox può credere che il programma non faccia nulla!

Page 20: Pattern Recognition and Applications Lab Strumenti per l’Analisi … · 2016-01-22 · • Questa lezione conclude la parte di analisi di eseguibili • In generale, avete visto

http://pralab.diee.unica.it

Conclusioni Conclusioni

• Questa lezione conclude la parte di analisi di eseguibili

• In generale, avete visto come è strutturato un eseguibile Linux e avete imparato i principi dell’analisi a basso livello

• Avete visto delle tecniche, anche avanzate, per sfruttare delle vulnerabilità in modo da compromettere la sicurezza di un sistema

• E avete realizzato degli exploit, anche di grande efficacia

• In quest’ultima lezione avete infine visto una panoramica dei principali strumenti di analisi di eseguibili

• Come detto nelle prime lezioni, l’analisi di eseguibili è una disciplina molto complessa – Quasi un’arte!

• Le tecniche di attacco e di difesa si sono evolute nel corso degli anni e continueranno a farlo, in una «corsa alle armi» di cui non si vede ancora la fine!