Quattro tazze di tè, la discografia completa dei Van Halen,
l’hard disk a temperatura di fusione ed è saltato fuori
solo questo eseguibile dal nome insipido.
Il fatto che sia evocato
nella chiave Run del registry è però un buon segno. I
sensi di ragno tornano a vibrare…. Sistemiamo per bene gli
strumenti ed iniziamo a sezionare il “binario” sospetto,
con calma, cercando subito ciò che può rivelarci molto
in poco tempo: le stringhe di testo.
L’analisi di un file binario sconosciuto è frequente nelle procedure di Incident Response e Computer Forensics. Possiamo imbatterci in eseguibili di varia natura e dalle innumerevoli e possibili funzionalità (backdoors, logger, rootkits, covert channels ecc… ) a noi oscure, in quanto difficilmente accompagnati dalla guida in linea, dalla pagina “man” relativa e dal codice sorgente.
Uno dei primi passi utili alla rivelazione dello scopo per il quale è stato concepito il file è l’estrazione delle istanze di caratteri dal blocco binario.
Dalle occorrenze trovate possiamo ricavare una moltitudine di dati, tra i quali:
· Informazioni sul programmatore
· Nome del programma
· Librerie utilizzate
· Piattaforma e linguaggio di sviluppo
· Provenienza del software
· Indirizzi IP di destinazione
· Riferimenti di rete
· Messaggi interattivi
· Messaggi di errore e debug
· Richiamo di funzioni
· Impostazioni d’ambiente
· Chiavi di registro
Vediamo un esempio con un ipotetico file sk.exe del quale non sappiamo assolutamente nulla.
Tralasciando le prime procedure (hashing, MAC ecc..) ci dedichiamo direttamente all’estrazione delle parti di testo contenute nel file binario.
Tra i vari programmi dedicati utilizzeremo strings su piattaforma Linux. La versione attuale del programma lavora ottimamente sia con i caratteri ASCII che Unicode, anche se quest’ultima caratteristica è poco conosciuta. Pur esistendo alcuni programmi su piattaforma Microsoft che svolgono altrettanto egregiamente il lavoro ( BinText,WinHex, TextScan), la mia preferenza a strings è motivata dalla maggior flessibilità e dalle possibilità di concatenazione immediata, proprie dei programmi di shell Unix e Linux in particolare.
I risultati ottenuti col passaggio diretto dell’output a grep per un’elaborazione ragionata ed immediata con uno o più parametri di ricerca non è ottenibile con nessun tool per Windows.
Il programma strings estrae le sequenze di caratteri stampabili (di default almeno 4 consecutivi) dalla sezione inizializzata e caricata di un file oggetto, mentre per gli altri file estrae le occorrenze dal file intero.
Col comando seguente estraiamo innanzi tutto i caratteri ASCII:
[mauri@hyena forensics]$ strings –a –t d sk.exe
77 !This program cannot be run in dos mode.
168 Rich
440 .text
479 .data
520 .rsrc
576 MSVBVM60.DLL
….
L’output (183 occorrenze) è tagliato per evidenti problemi di spazio. Con l’opzione –a abbiamo detto a strings di cercare nell’intero file mentre col parametro –t d abbiamo aggiunto l’offset dall’inizio del file in forma decimale. L’offset è ottenibile anche in forma ottale ( o – di default) ed esadecimale ( x ).
[mauri@hyena forensics]$ strings –a –t d -e l sk.exe
8654 @*AD:hackstallIOnssklogsklog.vbp
9848 windir
9868 systemist2.exe
9908 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
10044 Version Information
....
Questa volta abbiamo estratto le stringhe Unicode attraverso l’opzione –e l (-e encoding).
Già dalle prime righe delle 250 totali possiamo ricavare una mole di informazioni non indifferente.
Il file è effettivamente per l’OS Windows, il riferimento alla chiave Run del registry manifesta il probabile avvio in automatico, sono già presenti il richiamo ad una dll (MSVBVM60.DLL) ed il nome di un eseguibile (ist2.exe) per il quale possiamo eseguire ulteriori ricerche in internet.
Il metodo migliore per proseguire l’analisi è concatenare in un file, che analizzeremo in vari modi, i due output (ASCII e Unicode) :
[mauri@hyena forensics]$ strings –a –t d sk.exe > sk_text.txt
[mauri@hyena forensics]$ strings –a –t d -e l sk.exe >> sk_text.txt
[mauri@hyena forensics]$ sort –n sk_text.txt > sk_text_sort.txt
Vediamo qualche dll:
[mauri@hyena forensics]$ grep –I dll sk_text_sort.txt
576 MSVBVM60.DLL
10100 advapi32.dll
12452 VBA6.DLL
30024 MSVBVM60.DLL
30500 DllFunctionCall
…. Qualche eseguibile
[mauri@hyena forensics]$ grep –I exe sk_text_sort.txt
9868 systemist2.exe
10652 .exe
37568 klow.exe
….. Qualche chiave
[mauri@hyena forensics]$ grep –I hkey sk_text_sort.txt
9908 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
13000 HKEY_
13112 HKEY_CLASSES_ROOT
13152 HKEY_CURRENT_USER
13192 HKEY_LOCAL_MACHINE
13236 HKEY_USERS
13264 HKEY_PERFORMANCE_DATA
13312 HKEY_CURRENT_CONFIG
13356 HKEY_DYN_DATA
Nel continuare l’esplorazione dell’elaborato I riferimenti ai tasti:
11240
11256
11280
11364
…
11416
11464
…
11668
11684
11704
11724
11744
11760
…
11912
11928
....
12116
e le seguenti righe:
10848 CreateTextFile
10972 Logging Has Started At:
11024 write
11040 Logging Has Ended At:
suggeriscono come l’eseguibile abbia probabilmente la funzione di keylogger.
Altre ricerche in internet sugli eseguibili e sulle stringhe chiave permettono di arrivare al nome ed allo scopo del programma e confermando i nostri sospetti: sk.exe non è altro che il keylogger skl0g.
In realtà la semplice ricerca di ist2.exe su Google ci indirizza direttamente al sito del produttore del programma: red0xd, che salutiamo volentieri.

| Per
informazioni contattare staff@cybercrimes.it
Il logo cybercrimes.it e le immagini relative sono di proprietà del sito. La documentazione presente nel sito è soggetta alla licenza Creative Commons ed è quindi liberamente riproducibile riportando il nome dell'autore originale. |