slides

Transcript

slides
Università degli Studi di Milano
Facoltà di Scienze e Tecnologie
Dipartimento di Informatica
Next generation malware
Srdjan Matic <[email protected]>
Aristide Fattori <[email protected]>
A.A. 2013–2014
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
1 / 32
Introduzione
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
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
3 / 32
replicazione autonoma
no replicazione
replicazione
Tipologie di malware
Virus
Worm
Root-kit
Dialer
Spyware
Trojan horse
necessita ospite
Keylogger
nessun ospite
dipendenza da ospite
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
4 / 32
Diffusione
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
5 / 32
Diffusione
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
5 / 32
Diffusione
Q3 2013 ⇒ 700k samples per day
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
5 / 32
Tecniche di infezione e propagazione
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
6 / 32
Tecniche di infezione e propagazione
File infection
Device removibili
File transfers (mail, P2P, file sharing)
Vulnerabilità
Social engineering (fake av, fake codec, fake . . . )
Drive by download
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
6 / 32
Tecniche di propagazione
Drive-by-download
Osservazioni:
1
Lo scenario è cambiato, la maggior parte delle attività sono su
web.
2
Molte vulnerabilità trovate nei browser.
3
(1) + (2) ⇒ worm che si diffondono via web
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
7 / 32
Tecniche di propagazione
Drive-by-download
Osservazioni:
1
Lo scenario è cambiato, la maggior parte delle attività sono su
web.
2
Molte vulnerabilità trovate nei browser.
3
(1) + (2) ⇒ worm che si diffondono via web
Come?
1
crea (o compromette) un sito per ospitare exploit
2
exploita i browser vulnerabili che visitano il sito
3
scarica il codice del worm sulla vittima
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
7 / 32
Perché una cosı̀ grande diffusione?
omogeneità, connettività e configurazione
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
8 / 32
Perché una cosı̀ grande diffusione?
omogeneità, connettività e configurazione
scarsa attenzione
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
8 / 32
Perché una cosı̀ grande diffusione?
omogeneità, connettività e configurazione
scarsa attenzione
incentivo economico (approfondito più avanti)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
8 / 32
Perché una cosı̀ grande diffusione?
omogeneità, connettività e configurazione
scarsa attenzione
incentivo economico (approfondito più avanti)
le contromisure attuali non funzionano
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
8 / 32
Contromisure
Detection signature-based
Come funziona?
Database di signature
Un’applicazione che contiene una signature nota viene
considerate infetta
Codice applicazione
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
9 / 32
Contromisure
Detection signature-based
Come funziona?
Database di signature
Un’applicazione che contiene una signature nota viene
considerate infetta
Signature
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
9 / 32
Contromisure
Detection signature-based
Come funziona?
Database di signature
Un’applicazione che contiene una signature nota viene
considerate infetta
Srdjan Matic, Aristide Fattori
+
+
+
+
+
+
Malware
A.A. 2013–2014
9 / 32
Tecniche di self-defense
Packing
Codice maligno nascosto da 1+ layer di compressione/cifratura
Decompressione/decrifratura a run-time
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
10 / 32
Tecniche di self-defense
Packing
Codice maligno nascosto da 1+ layer di compressione/cifratura
Decompressione/decrifratura a run-time
Malicious
code
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
10 / 32
Tecniche di self-defense
Packing
Codice maligno nascosto da 1+ layer di compressione/cifratura
Decompressione/decrifratura a run-time
Unpacking
routine
Srdjan Matic, Aristide Fattori
Malicious
code
Malware
A.A. 2013–2014
10 / 32
Tecniche di self-defense
Packing
Codice maligno nascosto da 1+ layer di compressione/cifratura
Decompressione/decrifratura a run-time
Unpacking Unpacking
routine
routine
Malicious
code
Problema?
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
10 / 32
Tecniche di self-defense
Polimorfismo
Mutazione #1
Mutazione #2
Mutazione #3
Problema: la routine di packing può essere rilevata
Idea: variare la routine di packing ad ogni infezione
La semantica della routine rimane sempre la stessa
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
11 / 32
Tecniche di self-defense
Polimorfismo
Mutazione #1
Mutazione #2
Mutazione #3
Problema: la routine di packing può essere rilevata
Idea: variare la routine di packing ad ogni infezione
La semantica della routine rimane sempre la stessa
Problema?
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
11 / 32
Tecniche di self-defense
Metamorfismo
“Metamorphics are body-polymorphics” (Igor Muttik)
A ogni infezione muta l’intero corpo del malware . . .
. . . quindi non esiste una versione in chiaro
Mutazione #1
Srdjan Matic, Aristide Fattori
Mutazione #2
Malware
Mutazione #3
A.A. 2013–2014
12 / 32
Tecniche di self-defense
Metamorfismo
“Metamorphics are body-polymorphics” (Igor Muttik)
A ogni infezione muta l’intero corpo del malware . . .
. . . quindi non esiste una versione in chiaro
Come funziona?
1
Analizza il proprio codice
2
Identifica dei blocchi
3
Applica mutazioni
Srdjan Matic, Aristide Fattori
Codice
malware
Malware
A.A. 2013–2014
12 / 32
Tecniche di self-defense
Metamorfismo
“Metamorphics are body-polymorphics” (Igor Muttik)
A ogni infezione muta l’intero corpo del malware . . .
. . . quindi non esiste una versione in chiaro
blocco1
blocco2
Come funziona?
blocco3
1
Analizza il proprio codice
blocco4
2
Identifica dei blocchi
blocco5
3
Applica mutazioni
blocco6
blocco7
blocco8
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
12 / 32
Tecniche di self-defense
Metamorfismo
“Metamorphics are body-polymorphics” (Igor Muttik)
A ogni infezione muta l’intero corpo del malware . . .
. . . quindi non esiste una versione in chiaro
blocco1
blocco2
Come funziona?
blocco3
1
Analizza il proprio codice
blocco4
2
Identifica dei blocchi
blocco5
3
Applica mutazioni
blocco6
blocco7
blocco8
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
12 / 32
Tecniche di self-defense
Metamorfismo
“Metamorphics are body-polymorphics” (Igor Muttik)
A ogni infezione muta l’intero corpo del malware . . .
. . . quindi non esiste una versione in chiaro
blocco1
blocco6
Come funziona?
blocco3
1
Analizza il proprio codice
blocco9
2
Identifica dei blocchi
blocco5
3
Applica mutazioni
blocco2
blocco10
blocco8
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
12 / 32
Tecniche di self-defense
Metamorfismo
“Metamorphics are body-polymorphics” (Igor Muttik)
A ogni infezione muta l’intero corpo del malware . . .
. . . quindi non esiste una versione in chiaro
Problema
Analizzatore di codice particolarmente complesso
Sviluppare un motore metamorfico è molto difficile
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
12 / 32
Tecniche di self-defense
Malware emulators
mov
xor
inc
int
%ax, $0xcafe;
%ebx, %ebx;
%ecx;
$0x2e;
inst37 %r6 , $0xcafe;
inst15 %r2 , %r2 ;
inst24 %r11 ;
inst4 $0x2e;
Programma originale
VM
Programma offuscato
1
2
3
Codice del malware trasformato in bytecode
Bytecode interpretato a run-time da una VM
Bytecode mutato ad ogni infezione
Automatic Reverse Engineering of Malware Emulators
M. Sharif, A. Lanzi, J. Giffin, W. Lee
Oakland 2009
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
13 / 32
Tecniche di self-defense
Malware emulators
mov
xor
inc
int
%ax, $0xcafe;
%ebx, %ebx;
%ecx;
$0x2e;
inst37 %r6 , $0xcafe;
inst15 %r2 , %r2 ;
inst24 %r11 ;
inst4 $0x2e;
Programma originale
VM
Programma offuscato
1
2
3
Codice del malware trasformato in bytecode
Bytecode interpretato a run-time da una VM
Bytecode mutato ad ogni infezione
Automatic Reverse Engineering of Malware Emulators
M. Sharif, A. Lanzi, J. Giffin, W. Lee
Oakland 2009
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
13 / 32
IDA Python
Let the machine do the dirty work!
IDA Python
Alt-F7 in IDA
idaq.exe -A -OIDAPython:yourscript.py file.bin
idaq.exe -Syourscript.py mydatabase.idb
idaq.exe -S“yourscript.py arg1 arg2 arg3” mydatabase.idb
Identificare sezione e scorrere .text
f o r s i n Segments ( ) :
i f SegName ( s ) == ” . t e x t ” :
start = s
end = SegEnd ( s )
ea = s t a r t
w h i l e ea <= end :
p r i n t GetDisasm ( ea )
ea = NextHead ( ea )
Srdjan Matic, Aristide Fattori
# disass
Malware
i s t r u z i o n e @ ea
A.A. 2013–2014
15 / 32
IDA Python
Funzioni utili
GetFunctionName(ea)
GetMnen(ea)
GetOpnd(ea, pos) # pos = 0, ...
GetOpndValue(ea, pos) # pos = 0, ...
Dword(addr) # *(int *)addr
MakeComm(ea) # Aggiunge commento a istruz ea
PatchDword(ea, new) # *(int *)addr = new
PatchByte(ea, new) # *(char *)addr = new
MakeName(ea, ‘‘l’’) # add label l to ea
DecodeInstruction(ea) # return object with
instruction info, (e.g., size)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
16 / 32
Hands on!
http://security.di.unimi.it/sicurezza1314/idapython.tar.gz
Reversare ex1
Provare ex1.py
Scrivere uno script IDAPython che de-offuschi automaticamente
poly
Scrivere uno script IDAPython che patchi automaGicamente ex2 per
eliminare l’offuscamento
http://www.offensivecomputing.net/papers/IDAPythonIntro.pdf
Next-generation malware:
detection e analisi
Tecniche di self-defense
Contromisure
Signature-based detection è troppo debole
Verso tecniche più “semantiche”
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
19 / 32
Tecniche di self-defense
Contromisure
Signature-based detection è troppo debole
Verso tecniche più “semantiche”
Soluzioni
Analisi dinamica
Granularità a livello di system call (behavioral analysis)
Problemi
Performance
Falsi positivi
Information leakage
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
19 / 32
Next-generation malware detector
Situazione attuale: Algorithmic detection/unpacking
Malware detector
Malicious program
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
20 / 32
Next-generation malware detector
Situazione attuale: Algorithmic detection/unpacking
Malware detector
Malicious program
Srdjan Matic, Aristide Fattori
????
Malware
A.A. 2013–2014
20 / 32
Next-generation malware detector
Situazione attuale: Algorithmic detection/unpacking
Malware detector
Malicious program
????
????
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
20 / 32
Next-generation malware detector
Situazione attuale: Algorithmic detection/unpacking
Malware detector
Malicious program
????
????
Srdjan Matic, Aristide Fattori
Malware
Malicious
A.A. 2013–2014
20 / 32
Next-generation malware detector
Situazione attuale: Algorithmic detection/unpacking
Malware detector
Malicious program
????
????
Malicious
Problemi
ogni packer richiede un unpacker specifico
troppe famiglie di packer
Symantec: da 6 ore a 6 mesi per packer
multi-layer packing
Funziona anche per malware polimorfici ma ogni sample richiede
un algoritmo di detection ad-hoc: sforzo insostenibile per le
compagnie di AV.
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
20 / 32
Next-generation malware detector
Unpacking generico
Idea
analisi dinamica
emulazione/tracing dell’esecuzione fino al termine della
routine di unpacking
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
21 / 32
Next-generation malware detector
Unpacking generico
Idea
analisi dinamica
emulazione/tracing dell’esecuzione fino al termine della
routine di unpacking
Packed code
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
21 / 32
Next-generation malware detector
Unpacking generico
Idea
analisi dinamica
emulazione/tracing dell’esecuzione fino al termine della
routine di unpacking
Packed code
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
21 / 32
Next-generation malware detector
Unpacking generico
Idea
analisi dinamica
emulazione/tracing dell’esecuzione fino al termine della
routine di unpacking
Packed code
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
21 / 32
Next-generation malware detector
Unpacking generico
Idea
analisi dinamica
emulazione/tracing dell’esecuzione fino al termine della
routine di unpacking
Unpacked
code
Packed code
Un po’ di nomi. . .
OmniUnpack
Renovo
Justin
PolyUnpack
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
21 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i
Page
#
0
1
2
...
Srdjan Matic, Aristide Fattori
Access
W WX
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
h x(0) , w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i
Page
#
0
1
2
...
Access
W WX
Esecuzione pagina 0
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2) , s0 , w (1), x(1), s1 , x(2), s2 , . . .i
Page
#
0
1
2
...
Access
W WX
•
Scrittura pagina 2
W = W ∪ {2}
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i
s0 = NtOpenFile
Page
#
0
1
2
...
Access
W WX
•
Esecuzione system call s0
(non pericolosa e WX = ∅)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1) , x(1), s1 , x(2), s2 , . . .i
Page
#
0
1
2
...
Access
W WX
•
•
Scrittura pagina 1
W = W ∪ {1}
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1) , s1 , x(2), s2 , . . .i
Page
#
0
1
2
...
Access
W WX
•
•
•
Esecuzione pagina 1
WX = WX ∪ {1} (pagine written-then-executed)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i
s1 = NtOpenKey
Page
#
0
1
2
...
Access
W WX
•
•
•
Esecuzione system call s1 (non pericolosa)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2) , s2 , . . .i
Page
#
0
1
2
...
Access
W WX
•
•
•
•
Esecuzione pagina 2
WX = WX ∪ {1}
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . .i
s2 = NtDeleteFile
Page
#
0
1
2
...
Access
W WX
•
•
•
•
Esecuzione system call s2 (pericolosa)
Viene invocato il malware detector per
analizzare le pagine in W
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , . . . i
Page
#
0
1
2
...
Access
W WX
Se il programma non è maligno, W e WX diventano ∅ e
l’esecuzione riprende
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Next-generation malware detector
Unpacking generico: OmniUnpack
Execution trace
hx(0), w (2), s0 , w (1), x(1), s1 , x(2), s2 , i
Page and
Access
OmniUnpack: Fast, Generic,
Safe Unpacking of Malware
# Christodorescu,
W WX Somesh Jha
L. Martignoni, M.
0ACSAC 2007
1
2
...
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
22 / 32
Analisi dinamica in ambienti emulati/virtualizzati
Esempi
Anubis
CWSandbox
BitBlaze
Come funzionano?
1
Esecuzione dell’applicazione sospetta in un emulatore
2
Monitoring dell’esecuzione (VM introspection)
3
Rilevamento di comportamenti maligni
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
23 / 32
Rilevamento VM
Red-pill
Programma in grado di rilevare se eseguito all’interno di un
emulatore (o virtualizzatore)
CPU
Srdjan Matic, Aristide Fattori
EMU
Malware
A.A. 2013–2014
24 / 32
Rilevamento VM
Red-pill
Programma in grado di rilevare se eseguito all’interno di un
emulatore (o virtualizzatore)
void main() {
redpill = ‘‘\x08\x7c\xe3\x04...’’;
if (((void (*)())redpill)()) {
// Eseguito su CPU fisica
return CPU;
} else {
// Eseguito su CPU emulata
return EMU;
}
}
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
24 / 32
Rilevamento VM
Red-pill
Programma in grado di rilevare se eseguito all’interno di un
emulatore (o virtualizzatore)
A fistful of red-pills
R. Paleari, L. Martignoni, G. Fresi Roglia, D. Bruschi
WOOT 2009
Testing CPU Emulators
L. Martignoni, R. Paleari, G. Fresi Roglia, D. Bruschi
ISSTA 2009
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
24 / 32
Malware/exploit as a Service
Scenario
Da “Hacking for fun” a “Hacking for profit”
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
26 / 32
Pay Per Install (PPI)
Come monetizzare il malware?
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
27 / 32
Pay Per Install (PPI)
Come monetizzare il malware?
Introduzione di malware as a service: monetizzare l’intera catena
di distribuzione del malware, automatizzando le infezioni e
garantendone la persistenza
Interazioni
Il client contatta il provider del servizio PPI, mandandogli un
malware
Il provider “prepara” il malware (packing, obfuscation, . . . )
Gli affiliate infettano le vittime con un downloader
Il downloader eseguito sulla vittima scarica il malware del
client dal provider
Una volta installato il downloader, il provider gestisce
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
27 / 32
Pay Per Install (PPI) (2)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
28 / 32
Pay Per Install (PPI) (2)
Measuring Pay-per-Install: The Commoditization of Malware Distribution
Juan Caballero, Chris Grier, Christian Kreibich, Vern Paxson
USENIX Security 2011
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
28 / 32
Exploit as a Service
I client comprano (o affittano) l’exploit kit + opzionalmente il suo
hosting, possono comprare aggiornamenti (nuovi 0day)
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
29 / 32
Exploit as a Service
I client comprano (o affittano) l’exploit kit + opzionalmente il suo
hosting, possono comprare aggiornamenti (nuovi 0day)
Manufacturing Compromise: The Emergence of Exploit-as-a-Service
C. Griery, L. Ballard, J. Caballero, N. Chachra, C. J. Dietrich,
K. Levchenko, P. Mavrommatis, D. McCoy, A. Nappa, A. Pitsillidis,
N. Provos, M. Z. Raque, M. A. Rajab, C. Rossow, K. Thomasy,
V. Paxsony, S. Savage, G. M. Voelker
CCS ’12
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
29 / 32
Exploit as a Service
Exploit Kit
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
30 / 32
Exploit as a Service
Exploit Kit
•
•
•
•
http://goo.gl/u3NN4
http://goo.gl/6rjpW
Aggiornato con 0-day
Statistiche successo exploiting
Autore arrestato nel 2013
http://goo.gl/UuGqxJ
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
30 / 32
Exploit as a Service
Exploit Kit (2): Blackhole
Srdjan Matic, Aristide Fattori
Malware
A.A. 2013–2014
31 / 32
So long and thanks for all the fish!
[email protected]