Articoli con tag Information security

Il cugino del WordPress Autotest: Unmask Parasites

Il test per blog infetti non è più disponibile su questo sito, ma qualcuno ha implementato un servizio simile, impiegando Google App Engine: Unmask Parasites.

Il servizio esegue dei controlli sul codice emesso dal web server del sito esaminato alla ricerca di indizi e segni tipici dell’intrusione che per oltre un anno ha devastato i blog basati su versioni obsolete e vulnerabili di WordPress. Oltre questo, propone di usare Google per individuare i segni esterni dell’intrusione.

Peccato che, dagli ultimi siti analizzati, l’iniezione di link abusivi sia praticamente sparita per fare posto a codice malevolo molto più pericoloso. Non so se il sito in questione faccia dei controlli in tal senso, ma posso affermare che tali controlli sono quasi impossibili da automatizzare, per una ragione molto semplice: mentre l’iniezione di link nascosti ha certe caratteristiche comuni e ben individuabili, le violazioni su cui sto indagando negli ultimi tempi inseriscono del codice PHP offuscato che produce pagine web con codice Javascript, a sua volta offuscato, che opera redirect o tenta di rifilare malware a chi visita il sito. Il modello di offuscamento cambia ogni volta e non è possibile trovare degli elementi comuni, tali da permettere un automatismo nella ricerca.

Insomma, il mentecatto, come sospettavo, si sta dando da fare. La soluzione è sempre la stessa: aggiornare prima di essere violati.

Tags: , ,

NTFS, file cancellati e tool di analisi (parte II)

Non potevo accontentarmi di lasciare perdere l’argomento, trattato qualche giorno fa, rimanendo con un punto interrogativo. Quindi eccomi di nuovo qui a riprendere il discorso sui file cancellati in NTFS e sui tool forensi.

Ho condotto ulteriori analisi, in particolare sulle due immagini disco generate con Windows XP ed ho scoperto cose interessanti, lavorando però di dump esadecimale.

Ho estratto il file $MFT da entrambe le immagini, ne ho fatto il dump esadecimale e li ho messi a confronto usando gvimdiff, la versione grafica del noto editor Vim nella variante per mostrare le differenze fra due file.

Il file è la Master File Table del filesystem e contiene praticamente tutte le informazioni per mettere insieme i pezzi del filesystem. La struttura è molto complessa, ma per quello che ci serve cercheremo di limitarci all’essenziale per capire come stanno le cose, a scapito dell’estremo dettaglio, che in questo specifico caso non ci interessa.

Riassumo il problema: nella directory docs sono stati cancellati due dei quattro file PDF presenti (pdf2.pdf e pdf4.pdf), e solo uno risulta presente e recuperabile (pdf2.pdf), l’altro pare svanito nel nulla. Tutti i tool forensi provati mostrano questo risultato, sia open source che commerciali.

Confrontando i dump esadecimali delle due MFT si trova il problema. La directory è un file come tutti gli altri, che in questo caso viene memorizzato all’interno della MFT stessa, nello stesso record, vista la ridotta dimensione, condizione in cui il file viene chiamato “residente”. Da qui partono i puntatori agli altri record che rappresentano i singoli file presenti nella directory. Nella MFT dell’immagine con tutti i file prima della cancellazione il record è posizionato nella entry numero 29, all’offset 0×7400 del file. I file sono invece posizionati come segue:

  • pdf1.pdf – entry 33
  • pdf2.pdf – entry 31
  • pdf3.pdf – entry 32
  • pdf4.pdf – entry 30

cosa verificabile con Autopsy nella sezione dei metadati. La struttura dati della directory è lunga 464 bytes, sempre secondo la MFT.

Nell’immagine con i file cancellati la struttura della directory è lunga solo 256 bytes, indice che è stata “accorciata”, fra poco vedremo il perché. Le entry di prima contengono:

  • pdf1.pdf – entry 33
  • pdf2.pdf (deleted) – entry 31
  • pdf3.pdf – entry 32
  • images/Thumbs.db – entry 30

andando a vedere la struttura della directory nella MFT si nota questo:


00007590:  0803 7000 6400 6600 3100 2E00 7000 6400    ..p.d.f.1...p.d.
000075A0:  6600 0000 0000 0000 2000 0000 0000 0100    f....... .......
000075B0:  6800 5200 0000 0000 1D00 0000 0000 0100    h.R.............
000075C0:  96D8 C62C C323 C901 00D0 106D 741D C901    ...,.#.....mt...
000075D0:  00D0 106D 741D C901 F03A C92C C323 C901    ...mt....:.,.#..
000075E0:  0094 0200 0000 0000 E493 0200 0000 0000    ................
000075F0:  2000 0000 0000 0000 0803 7000 6400 0800     .........p.d...
00007600:  3300 2E00 7000 6400 6600 0000 0000 0000    3...p.d.f.......
00007610:  0000 0000 0000 0000 1000 0000 0200 0000    ................
00007620:  FFFF FFFF 8279 4711 2E4F BD2C C323 C901    .....yG..O.,.#..
00007630:  0003 BA45 741D C901 0003 BA45 741D C901    ...Et......Et...
00007640:  5275 3E14 5B24 C901 009E 0200 0000 0000    Ru>.[$..........
00007650:  D99D 0200 0000 0000 2000 0000 0000 0000    ........ .......
00007660:  0803 7000 6400 6600 3400 2E00 7000 6400    ..p.d.f.4...p.d.
00007670:  6600 0000 0000 0000 0000 0000 0000 0000    f...............
00007680:  1000 0000 0200 0000 FFFF FFFF 8279 4711    .............yG.
00007690:  2E4F BD2C C323 C901 0003 BA45 741D C901    .O.,.#.....Et...
000076A0:  0003 BA45 741D C901 5275 3E14 5B24 C901    ...Et...Ru>.[$..
000076B0:  009E 0200 0000 0000 D99D 0200 0000 0000    ................
000076C0:  2000 0000 0000 0000 0803 7000 6400 6600     .........p.d.f.
000076D0:  3400 2E00 7000 6400 6600 0000 0000 0000    4...p.d.f.......
000076E0:  0000 0000 0000 0000 1000 0000 0200 0000    ................
000076F0:  FFFF FFFF 8279 4711 0000 0000 0000 0000    .....yG.........

che nella MFT prima della cancellazione è invece così:


00007590:  0803 7000 6400 6600 3100 2E00 7000 6400    ..p.d.f.1...p.d.
000075A0:  6600 0000 0000 0000 1F00 0000 0000 0100    f...............
000075B0:  6800 5200 0000 0000 1D00 0000 0000 0100    h.R.............
000075C0:  E213 C22C C323 C901 8037 4114 741D C901    ...,.#...7A.t...
000075D0:  8037 4114 741D C901 3C76 C42C C323 C901    .7A.t...<v.,.#..
000075E0:  0034 0200 0000 0000 3C33 0200 0000 0000    .4......<3......
000075F0:  2000 0000 0000 0000 0803 7000 6400 6600     .........p.d.f.
00007600:  3200 2E00 7000 6400 6600 0000 0000 0000    2...p.d.f.......
00007610:  2000 0000 0000 0100 6800 5200 0000 0000     .......h.R.....
00007620:  1D00 0000 0000 0100 96D8 C62C C323 C901    ...........,.#..
00007630:  00D0 106D 741D C901 00D0 106D 741D C901    ...mt......mt...
00007640:  F03A C92C C323 C901 0094 0200 0000 0000    .:.,.#..........
00007650:  E493 0200 0000 0000 2000 0000 0000 0000    ........ .......
00007660:  0803 7000 6400 6600 3300 2E00 7000 6400    ..p.d.f.3...p.d.
00007670:  6600 0000 0000 0000 1E00 0000 0000 0100    f...............
00007680:  6800 5200 0000 0000 1D00 0000 0000 0100    h.R.............
00007690:  2E4F BD2C C323 C901 0003 BA45 741D C901    .O.,.#.....Et...
000076A0:  0003 BA45 741D C901 E213 C22C C323 C901    ...Et......,.#..
000076B0:  009E 0200 0000 0000 D99D 0200 0000 0000    ................
000076C0:  2000 0000 0000 0000 0803 7000 6400 6600     .........p.d.f.
000076D0:  3400 2E00 7000 6400 6600 0000 0000 0000    4...p.d.f.......
000076E0:  0000 0000 0000 0000 1000 0000 0200 0000    ................
000076F0:  FFFF FFFF 8279 4711 0000 0000 0000 0000    .....yG.........

Proviamo a riassumere. La directory è stata compattata per conservare i dati di soli due file invece di quattro e nella operazione le entry dei file pdf3.pdf e pdf4.pdf vanno a soprascrivere quella del file pdf2.pdf, poi viene accorciata, perdendo le indicazioni relative al file pdf4.pdf. Tutte queste informazioni si perdono e solo andando di dump esadecimale diretto sul file $MFT si possono vedere.
La entry 30, riguardante il file pdf4.pdf viene soprascritta autonomamente da Windows: nel momento in cui sono andato dalla directory docs alla directory images è passato alla modalità “visualizzatore di immagini”, creando e scrivendo il file delle thumbnail (Thumbs.db), soprascrivendo di fatto la entry del file pdf4.pdf. Il file pdf2.pdf è recuperabile perché, anche se eliminato dalla struttura dati della directory, è ancora presente la sua entry nella MFT, mentre il file pdf4.pdf, pur se ancora presente nella entry della directory docs, non è all’interno di alcuna struttura dati valida, e la sua entry è stata soprascritta da un altro file. Ecco perché il file pdf4.pdf è “sparito”.

Insomma, alla fine niente di strano o preoccupante in sé, solo normali operazioni del filesystem e le sue decisioni autonome relative all’efficienza ed al mantenimento della coerenza interna. Se non mi fossi posto il dubbio, e non avessi operato in questo modo, non avrei mai notato le discrepanze e la “scomparsa” dei file cancellati. Lavorando solo con i tool non si ottiene “tutta la verità”. Occorre come sempre competenza ed un pizzico di scetticismo, che non guasta mai.

Quindi, a maggior ragione
Trust no one

Tags: , , ,

Owned WordPress: blog “dormienti”, aggiornamenti inutili e varie

Sono più di due mesi che non parlo dell’argomento, ma non significa assolutamente che il pericolo sia passato, tutt’altro. Il numero di blog italiani violati è molto alto, e si mantiene costante non perché la tempesta sia passata, ma per altre ragioni, legate sia alla maggiore reattività dei motori di ricerca sia alla scarsissima reattività dei proprietari dei blog. Ma potrebbero esserci novità in arrivo.

Da qualche tempo ho notato un comportamento diverso per alcuni dei blog violati. Il WordPress Autotest restituisce risultati con meno punteggi rossi, nei test delle parole chiave, in quello dei link nelle differenze e le stesse differenze sono spesso tutti di un rassicurante verde. L’infezione c’è, tanto che gli indicatori certi, basati sulle firme caratteristiche, sono rossi, ed anche una ispezione “visiva” al codice HTML emesso dal server mostra i segni inequivocabili della violazione. Ma il codice infiltrato nel blog non emette alcun link. Non è il risultato di una pulizia mal riuscita del blog, perché i tag di apertura e chiusura (DIV), il falso account di Google AdSense ed il codice Javascript di occultamento sono al loro posto, ben nascosti dentro il database, e vengono emessi alla visita degli spider, quindi sia i record fasulli nel database che il falso plugin sono al loro posto.

Probabilmente ci sono meno clienti per lo spam, o magari è una mossa per fare riprendere fiato al blog rispetto ai motori di ricerca, e fargli riguadagnare posizioni. Sono già due volte che succede, e la prima volta nel giro di 48 ore i blog “dormienti” erano di nuovo pronti ad emettere 100-200 link alla visita di uno spider.

Quindi, se avete fatto il test e sia i link che le parole proibite erano verdi, ma gli indicatori certi erano rossi (i test H e I) il vostro blog è ancora in mano a qualcun altro.

Parlando d’altro, ho trovato due blog aggiornati a WordPress 2.6.2 che presentano tutti i segni della violazione, nessuno escluso, a conferma che neanche l’aggiornamento alla versione 2.6.2 è più sufficiente per ripulire un blog violato in precedenza. Non è da escludere che il mentecatto abbia fatto un “upgrade” al codice iniettato, per supportare anche la versione 2.6.x. Niente male, considerando che molti plugin di WordPress sono molto meno aggiornati e spesso fermi alla versione 2.3.x o al massimo alla 2.5.x. Ricordo che se il blog era “pulito”, un aggiornamento anche solo alla versione 2.5.1 lo mette al sicuro dall’essere violato una volta per tutte, mentre se il blog era stato violato prima di essere aggiornato ad una versione 2.5.1 o successiva, l’aggiornamento da solo non risolve un bel niente (vedere anche qui). E’ come installare la porta blindata, con il ladro che dorme in salotto.

Il comportamento di redirect ai siti delle farmacie è sempre presente, ma ci sono delle varianti in cui, invece di reindirizzare il browser, viene emessa una pagina del tutto simile a quella di un normale blog, che però nulla ha a che vedere col blog originale, e non è un redirect, il codice viene emesso direttamente dal server del blog visitato. La pagina contiene una messe di frasi sconnesse sintatticamente, ma ricche di parole chiave tutte legate a farmaci: efficacia ed effetti collaterali, vendita online. Il tutto impaginato e presentato come un normale post, con tanto di tags, commenti a tema, permalink e foglio di stile personalizzato. Forse esperimenti per un tipo differente di spam, o per ingannare gli spider e far indicizzare più link senza paura di essere bannati.

Negli ultimi mesi alcune persone si sono accorte autonomamente di avere il blog violato, grazie a stranezze nell’andamento delle visite, in qualche caso ridotte di un fattore 10, in un altro aumentate di un fattore 5 (!), però con parole chiave non proprio relative al regolare contenuto del sito. Sono stato contattato e ho dato una mano a ripulire, senza “sdraiare” completamente il blog, visto che so cosa cercare e dove, nonostante ogni blog sia violato in modo differente: differenti sono i file modificati, differenti quelli inseriti come falso plugin ed infine differenti le modifiche al database, a parte quella dell’amministratore abusivo.

Come avevo ipotizzato qualche tempo addietro, anche alcuni siti basati su Joomla! sono entrati nel girone infernale dei siti own3d. Ho trovato in blog WordPress violati link nascosti che puntano a siti Joomla! violati. Tutti insieme appassionatamente in mano al mentecatto.

Tags: , ,

Andò per fare phishing e rimase… all’amo?

Qualche giorno addietro, nella lista riservata agli iscritti IISFA del capitolo italiano, è stato segnalato un sito dove sono a disposizione “ready to deploy” dei kit per il phishing per un nutrito elenco di siti di home banking, oltre ai soliti eBay e PayPal.

Passato il primo momento di sorpresa per tanta tracotanza (arrivare a mettere in vendita dei kit per perfetto phisher, il massimo!), la curiosità prende il sopravvento. Lo so, prima o poi mi metterò nei guai per questo…

La domanda che mi frullava per la testa è stata: cosa ci guadagna il tizio? Perché i kit sono liberamente scaricabili, in pacchetti compressi con il formato RAR, senza alcuna protezione. Quindi che razza di pagamento pensa di ottenere?

Lo confesso, ho scaricato un paio di kit, ed ho iniziato ad analizzare il codice, naturalmente in PHP.

E la sorpresa è doppia. Sì, perché c’è molto di più di un kit per il phishing, nei pacchetti. Vado a spiegarmi. Nella più classica modalità da truffatore esperto di umane debolezze, il kit di phishing ha un doppio uso, il secondo dei quali è a danno anche di chi dovesse sfruttare il kit per fare phishing.

Nei file costituenti il kit ve ne è uno che si incarica di spedire al phisher i dati inseriti dall’ignaro navigante che cada nella trappola. Il metodo scelto è l’e-mail, a differenza di altri che semplicemente scrivono i dati su un file locale al server che poi il nostro amico phisher preleverà dopo qualche giorno. In evidenza c’è una riga in PHP dove si intuisce al volo che è il posto dove inserire il proprio indirizzo di posta elettronica per ricevere i dati.

Il file in oggetto è a prima vista molto semplice, ed è costituito da una serie di istruzioni di concatenazione di stringa, per comporre il messaggio contenente user ID, password, numeri di carta di credito, indirizzi, ecc. Guardando meglio il codice si nota che è inutilmente complicato, e che le istruzioni di concatenazione sono assurdamente frammentate. Trattandosi di codice scritto da un Grande Hacker, è abbastanza nella norma, ma tutto sta nel non lasciarsi fuorviare. Guardando il codice e cercando di capire cosa faccia, mi sono reso conto che in una variabile c’era una vocale “e” al posto di una “a”. Le righe erano alternate e componevano DUE messaggi differenti, uno dei quali in realtà era un indirizzo di posta elettronica molto poco intuitivo. Al termine il messaggio composto viene inviato a tre differenti indirizzi di posta elettronica: il primo è quello nella variabile bene in vista, pronto per essere sostituito dall’indirizzo del phisher-wannabe. Gli altri due indirizzi sono presi da due variabili, una è quella inframmezzata alla composizione del messaggio, dell’altra non vi è traccia nel file.

Ho tentato una ricerca in tutti i file del pacchetto di “$Var3″ (il nome della variabile è inventato, è inutile cercarlo con Google…), senza fortuna. Allora ho tentato il jolly: una ricerca per la funzione PHP base64_decode. Tana!

In uno dei form della pagina di phishing c’è un campo input di tipo hidden il cui nome è “Var3″ ed il cui valore è l’output di una chiamata alla funzione base64_decode, con una stringa che, a questo punto l’avrete capito, si risolve in un altro indirizzo di posta elettronica, diverso da tutti gli altri.

In definitiva, se Ernesto (nome inventato), convinto di fare una gran birbonata, installa il kit del perfetto phisher su un sito, i dati li riceverà anche chi ha preparato il kit. E lo scopo è proprio questo, visto lo sforzo che c’è nel codice di nascondere ed offuscare proprio quei due indirizzi di posta aggiuntivi. Se Ernesto venisse scoperto, cosa abbastanza verosimile, pagherebbe dalla A alla Z, mentre il nostro furbacchione si godrebbe i risultati della birbonata di Ernesto, indisturbato. Ricordiamo che avrebbe a sua disposizione tutti i dati che ha in mano Ernesto, inviatigli in “copia conforme”, e che Ernesto probabilmente attenderebbe di averne un po’ prima di iniziare ad usarli, mentre il creatore del kit inizierà ad usarli da subito, prima che Ernesto sospetti qualcosa o che venga scoperto, come quasi certamente sarà.

Tutto ciò, naturalmente, a meno che non si trovi come avversario un investigatore un po’ più smaliziato. A questo punto non avrebbe vita troppo facile, ma per prima cosa sarebbe necessario che l’investigatore si ponga la domanda, si faccia venire il dubbio.

Altrimenti, la cosa potrebbe venir fuori solo al momento dell’interrogatorio di Ernesto.

Ecco, immaginate. Sala per interrogatori, due agenti vestiti di scuro, uno in piedi alle spalle di Ernesto, l’altro seduto dall’altra parte del tavolo:
- Chi ti ha aiutato a creare il codice per il phishing?
- L’ho fatto io! (Ernesto, credendo di fare più impressione, tenta di prendersi il merito)
- Naaahhh. Non ne sei capace. Abbiamo visto nel tuo computer. Il codice che sviluppi non gli si avvicina neanche. Abbiamo curiosato nella cache del tuo browser e sappiamo dove l’hai preso.

Chi è meno credibile: Ernesto che si vanta di aver sviluppato del codice, cosa di cui non è neanche lontanamente capace, o l’investigatore smaliziato al punto da capire che il livello di competenza di Ernesto è insufficiente ed è anche lui vittima di qualcun altro più furbo?

Fate voi. Al solito, non mi rimane che ricordare:
Trust no one

Tags: , , , ,

NTFS, file cancellati e tool di analisi

Come spesso mi succede, quando sto lavorando a qualcosa mi imbatto in comportamenti inattesi che, per mia sfortuna, mi distraggono dal mio compito principale fino a quando la mia curiosità, un tantino patologica, non è soddisfatta.

Qualche settimana fa stavo lavorando su un set di memorie flash di vario tipo (pen drive, SD, Memory Stick, CompactFlash) per verificare alcune ipotesi per uno studio di cui forse parlerò in altra occasione. Le operazioni erano banali, più o meno sintetizzabili in questa sequenza:

  1. cancella il contenuto scrivendo tutti zeri
  2. formatta la memoria in un filesystem scelto fra FAT, Ext3 e NTFS
  3. scrivici dei file dentro, 4 PDF e 30 immagini
  4. smonta, fai l’immagine con dd
  5. rimonta, cancella alcuni file, 2 PDF e 9 immagini, sempre le stesse
  6. smonta, fai l’immagine con dd
  7. analizza le immagini per verificare che i dati siano sul supporto e che siano recuperabili con vari tool, anche per uso forense

I tool utilizzati erano Foremost e lo Sleuthkit.

Ebbene, la stranezza rilevata è questa: nel primo supporto in cui ho provato con il filesystem NTFS (un pen drive da 1 gigabyte, acquistato in un centro commerciale) le nove immagini cancellate erano totalmente recuperabili, mentre dei due PDF cancellati, secondo Sleuthkit, non vi era traccia, nel senso che non erano neanche fra i file cancellati e non recuperabili. Non solo, erano segnate come cancellate e non recuperabili 4 copie dell’immagine numero 4 e 5 copie dell’immagine numero 5, che naturalmente non avevo toccato.

Usando Foremost, come atteso, i file erano tutti recuperabili, senza problemi.

Questa cosa, in prima battuta, mi ha fatto pensare ad un mio errore di manovra, per cui ho rifatto il test con un altro supporto, una scheda SD da un gigabyte. Stessa storia, unico cambiamento è stato che uno dei due file PDF risultava fra i cancellati e recuperabile, l’altro era sparito, mentre venivano segnate 5 copie dell’immagine numero 4 e 6 copie dell’mmagine numero 5 cancellate e non recuperabili. Foremost, al solito, recuperava tutto.

Ho cambiato le condizioni del test, pensando a qualche stranezza nella gestione dei dischi removibili, ed ho avviato una macchina virtuale con Windows XP Professional SP2 tramite Qemu, a cui ho “collegato” un disco virtuale da 80 megabyte, formattato NTFS. Stesse operazioni, stessa storia: i due PDF cancellati non risultano da nessuna parte, secondo Sleuthkit, mentre le immagini sono tutte recuperabili e c’è sempre la coppia di immagini segnalate fra le cancellate più volte e non recuperabili.

Sempre più perplesso ne ho parlato con i “colleghi di lista” di CFItaly. Ne è nata una discussione che ritengo estremamente fruttuosa, e che provo a riassumere.

Sono state proposte varie spiegazioni, a partire dalla interferenza della virtualizzazione, cosa che ho scartato, verificando su un computer con installato Windows XP Professional SP2: il mio notebook dell’ufficio, a cui ho leggermente ristretto la partizione di ripristino e ne ho ricavato 80 megabyte per creare un disco da formattare in NTFS. Il risultato è stato analogo ai precedenti. Allora è stata fatta l’ipotesi che la partizione fosse troppo esigua, cosa che ho escluso allargando la partizione nel notebook a 350 megabyte, e trovando ancora gli stessi risultati.

A questo punto ho posto io il dubbio che fosse Sleuthkit ad avere dei problemi ed a “mancare” alcune informazioni critiche. Test fatti da colleghi di lista che avevano a disposizione prodotti commerciali, nomi noti nel campo, escludevano anche questa ipotesi: i tool commerciali restituiscono lo stesso identico risultato dello Sleuthkit.

Quello che ho potuto verificare è che il numero e la posizione dei file che “spariscono” dopo la cancellazione, secondo lo Sleuthkit, e che invece sono completamente recuperabili da Foremost, cambia in funzione dell’ordine in cui avvengono le operazioni e dagli intervalli di tempo fra le stesse.

In conclusione, il risultato è che il filesystem NTFS può “nascondere” dati importanti, a causa di qualcosa nel metodo di gestione dei file cancellati, e che l’elenco non solo dei file recuperabili, ma anche quello dei file cancellati in generale, può contenere dati fuorvianti, o incompleti.

Se avete voglia di cimentarvi, ho preparato tre pacchetti zip:

  • il primo con le immagini del disco “virtuale” collegato alla macchina Windows XP con Qemu. Uno dei file è quello dove i file sono stati solo cestinati, il secondo dove invece sono stati direttamente cancellati, il nome è “parlante”. NB: queste due sono immagini del disco completo, con tanto di tabella delle partizioni
  • Il secondo contiene due immagini ottenute con dd della partizione “rimediata” dal mio notebook, la prima con i file appena messi e la seconda con i file appena cancellati.
  • La terza contiene una sola immagine, sempre ricavata dalla partizione del notebook, dove ho semplicemente cambiato qualcosa nell’ordine di cancellazione e nei tempi, attendendo un po’ prima di cancellare dell’altro.

A questo punto ci sta anche bene:
Trust no one

Tags: , , , ,

Malware e attacchi combinati: un caso reale.

Il fatto che i creatori di malware non siano dei semplici ragazzotti con problemi di socializzazione, ma siano in realtà organizzazioni criminali con intenti precisi, dovrebbe essere ormai una cosa accettata.

Purtroppo non è così, dato che periodicamente tornano alla ribalta complotti e trame oscure che vedrebbero coinvolti produttori di tool di sicurezza e di sistemi operativi.

Questo potrebbe essere confutato abbastanza facilmente se prima di parlare ci si documentasse in materia, ma, come ben si sa, documentarsi costa fatica, sopratutto nella ricerca di fonti attendibili.

Da parte mia, per quanto può valere, le analisi che ho condotto e conduco su campioni di malware che mi capitano per le mani, sia presi da dentro computer compromessi che direttamente “alla fonte”, rivelano delle caratteristiche comuni:

  • Sono eseguibili indipendenti, che non agiscono da virus propriamente detti, ossia non si “agganciano” ad un altro eseguibile modificandone il file su disco, ma vivono di vita propria.
  • La tecnica di propagazione si basa esclusivamente sulla diffusione tramite circuiti frequentati da un gran numero di utenti: falsi crack o falsi installer per applicazioni distribuiti via peer to peer, link in messaggi di spam erotico o pornografico in forum, blog e mailing list, siti che distribuiscono software pirata o strumenti per copiare illegalmente software (crack, keygen e simili). Il malware stesso molto spesso non possiede strumenti per la propagazione. Fanno eccezione alcune varianti che si propagano via Instant Messenger.
  • Per l’attivazione non usano particolari tecniche, non sfruttano falle o bug nel sistema operativo o nelle applicazioni. Semplicemente si aspettano di essere avviati dall’utente stesso, con metodi più o meno tutti incentrati su social engineering e inganno.
  • Per potersi insediare richiedono che l’utente che li attiva abbia un account di livello amministrativo, altrimenti falliscono in parte o del tutto l’insediamento.
  • Sono composti da più elementi, parte dei quali scaricati da Internet al momento dell’attivazione. Questo per mantenere le dimensioni del file contenute, e poterlo spedire senza troppi problemi attraverso qualsiasi connessione sia disponibile, dal dialup analogico alla connessione GPRS. Inoltre si può pensare che la parte che si attiva per prima sia una sorta di squadra d’assalto, che prepara il campo per il grosso delle forze d’attacco. Altro vantaggio è il poter cambiare la parte scaricata a seconda delle esigenze, lasciando identica la parte di attivazione.
  • A fronte di un modesto sforzo per l’insediamento, molta energia viene spesa per renderne difficilissima la rimozione, usando tutto un campionario di tecniche di occultamento, evasione e contrasto: Alternate Data Streams, rootkit, filtri di visualizzazione, ricerca attiva e terminazione degli strumenti di sicurezza (antivirus e firewall), rimozione di permessi all’utente amministratore legittimo, blocco di applicazioni diagnostiche.
  • Negli ultimi tempi è anche cambiato il comportamento al termine dell’opera di insediamento: mentre prima si avevano una serie di sintomi evidenti e fastidiosi (popup e dirottamento del browser durante la navigazione, comparsa di icone nell’area di notifica della barra delle applicazioni, traffico anomalo nella connessione a Internet, rallentamento generale del computer), molti esemplari tendono a rimanere silenti ed a operare con molta discrezione per non destare sospetti o, peggio, dopo aver compiuto la missione primaria, ad esempio collezionare informazioni dal computer compromesso, cambiano comportamento tornando ad essere fastidiosi come tutti gli altri.

Ciò rende i malware appartenenti a questa generazione estremamente pericolosi, ed il motivo sarà evidente alla fine di quanto vado a raccontarvi.

L’antefatto

Verso la fine di luglio, un impiegato di una società che ha un sito web di e-commerce riceve una mail apparentemente proveniente dal corriere espresso da cui abitualmente si servono. L’impiegato gestisce sia i rapporti col corriere sia gli aggiornamenti al sito web della società, a cui accede via FTP. Questo ha fatto sì che l’impiegato, pur con buone conoscenze di informatica, aprisse il messaggio, contenente un avviso di mancata consegna ed allegato un file compresso, al cui interno, mascherato con icona di documento di Microsoft Word, vi era un eseguibile.

E’ un attimo: l’impiegato esegue il fatidico doppio clic e dopo una pausa iniziale in cui pare non succedere nulla, a breve compaiono alcuni sintomi, molto lievi, che qualcosa non va: antivirus disattivato, blocchi di Internet Explorer, cose così.

Un intervento del tecnico preposto troverà la macchina infetta, probabilmente da una qualche variante di un malware che in quel periodo ha fatto parecchi danni, denominato TSPY_ZBOT.PF, oppure di Agent.JEN, un altro malware molto simile, ed entrambi usavano un falso messaggio a nome dello stesso corriere. Purtroppo sia l’e-mail che l’esemplare “attivato” vengono cancellati nell’operazione di bonifica, quindi non è dato conoscere l’esatta natura del malware.

Nota
Ora, ad essere completamente onesti, non abbiamo la prova certa, ossia non abbiamo potuto fare una analisi del malware, non più disponibile, per verificare in prima persona di quali funzioni era dotato, se e come abbia catturato le informazioni che hanno portato a quanto verrà esposto fra poco, ma possiamo essere ragionevolmente certi che i due episodi siano collegati per ragioni che saranno evidenti al termine.

L’incidente

Qualche giorno dopo uno dei clienti telefona piuttosto contrariato alla società, lamentando che durante la visita al sito di e-commerce ha ricevuto un attacco sotto forma della proposta di installazione di un falso antivirus. E’ il famigerato Antivirus XP 2008.

Un momento di incertezza, ma il cliente è conosciuto ed è affidabile, quindi la sua segnalazione viene presa con la dovuta considerazione. Chiamato il fornitore dello spazio web e dell’applicazione di e-commerce, da una rapida verifica risulta che gran parte dei file del sito sono stati iniettati con codice Javascript che attraverso la solita IFRAME propone la falsa scansione antivirus e l’installazione del programma Antivirus XP 2008. La stranezza, in un primo tempo non notata, è che i file iniettati sono in gran parte HTML statici, non script PHP, linguaggio in cui è fatta l’applicazione di e-commerce, e l’iniezione è ben posizionata all’intero delle pagine, mostrando che l’aggiunta del tag IFRAME non è risultato di una modifica “append”, tipica di attacchi RFI o SQL injection.

In un primo tempo la cosa passa inosservata, e viene caricata una copia pulita del sito, ripulendo tutti i segni dell’intrusione.

Passano due giorni ed arriva una nuova segnalazione, con lo stesso problema: la scansione simulata e la proposta di installazione dell’antivirus fasullo.

Altro giro di controlli, e viene sempre trovata la stessa serie di modifiche. Sui log del web server, esaminati accuratamente, visto anche che stavolta si è riusciti ad individuare un arco temporale molto ristretto, non si trova nulla di strano. A questo punto un sospetto si fa strada: un rapido controllo ai log del servizio FTP, usato per accedere allo spazio di hosting, rivela due accessi immediatamente precedenti alla segnalazione da parte dei clienti. All’esame appare evidente che il sito è stato prima copiato dall’attaccante sul proprio computer, usando username e password dell’impiegato colpito dal virus. L’indirizzo IP dell’attaccante apparteneva ad una classe di indirizzi dinamici assegnata ad un provider ADSL in un paese europeo, probabilmente una ulteriore macchina compromessa che agiva da open proxy. Poco dopo, sempre nei log, appariva l’operazione inversa, con cui l’attaccante aveva sostituito i file sul server con quelli da lui modificati. Subito prima della seconda segnalazione appariva soltanto l’arrivo dei file, segno che l’attaccante aveva conservato una copia in locale dei file modificati.

La soluzione

Stavolta sono state prima cambiate le credenziali di accesso via FTP appartenenti all’impiegato, che ha ricevuto le nuove. Il sito è stato nuovamente ripulito, ed a distanza di due mesi non ci sono state altre intrusioni, prova che il punto d’ingresso era proprio il servizio FTP, con le credenziali trafugate all’impiegato.

Considerazioni finali

Si è trattato proprio di un attacco combinato: il messaggio e-mail con lo scopo di far avviare il programma che funge da squadra d’assalto; il programma scarica ed installa altre componenti, fra le quali possiamo ipotizzare un keylogger, o magari la collezione dei file di credenziali dei programmi più noti, e li invia all’attaccante che con la successiva analisi estrae indirizzo FTP e credenziali di accesso al sito di e-commerce. L’iniezione del codice Javascript, con conseguente infezione dei visitatori del sito, e quindi una maggiore diffusione delle infezioni con l’antivirus fasullo, che, lo ricordo, aveva come scopo quello di installarsi e chiedere un codice di attivazione da ottenere con carta di credito, i cui dati sarebbero poi stati usati per fare altri acquisti da parte dell’incursore.

Come abbiamo detto in precedenza, non possiamo dimostrare con certezza quali dati il malware abbia collezionato, ed in quale modo, dai computer delle vittime del falso messaggio del corriere, ma le prove che sia stato fatto ci sono: la sequenza di eventi e le circostanze che hanno portato all’incidente di sicurezza appena esposto. Non è difficile immaginare che se l’acquisizione dei dati è fatta tramite keylogger, molte vittime si sono viste apparire strane cose nei loro account di home banking, o nei loro account di posta. Questo tipo di dati è preziosissimo per questi criminali, e l’acquisizione dei dati del conto di una persona “pulita” serve ad aprire altri conti correnti bancari a suo nome con cui fare operazioni di riciclaggio.

Non è necessario operare sul conto stesso della persona, che anzi deve rimanere il più possibile all’oscuro del furto di identità. Lo scopo non è rubare qualche centinaio di euro dal suo conto, ma di far transitare decine di migliaia di euro sull’altro conto, di cui la vittima non sa nulla, per ripulire il denaro e farne perdere le tracce, almeno il tempo necessario per sparire senza lasciare traccia.

Questa parte dell’operazione, ossia il rilascio del malware e la collezione dei dati delle persone, è solo il primo passo di una operazione molto più articolata, in cui probabilmente l’installazione del falso antivirus è solo un ulteriore passo. O può darsi che non c’entri nulla, e che sia solo un bonus concesso a chi ha creato e rilasciato il malware per tirar su qualche altro soldo.

In definitiva, in confronto a questo scenario, il presunto complotto dei produttori di antivirus che creano virus per vendere più antivirus impallidisce del tutto, per non dire che fa sorridere nella sua ingenuità.

Questo di complotto è molto più verosimile, e infinitamente più pericoloso.

Come sempre,
Trust no one

Tags: , ,

Analizzatore spettrografico di file

A seguito di uno scambio di idee con gli amici di CFItaly, mi è venuta l’idea di provare a giocare un po’ con l’analisi statistica del contenuto di un file generico. Non è una idea nuova (rif. Denis Frati), certamente no, ma al solito ogni tanto mi piace di curiosare in cose per me nuove.

Il risultato è un programmino semplicissimo, che ho chiamato Prisma.

L’idea è questa: in ogni tipologia di file la presenza di certi valori di byte non è casuale, ma è in qualche modo legata al contenuto del file stesso. Per cui un file di testo avrà una particolare distribuzione dei valori dei byte, mentre una immagine o un file eseguibile ne avranno una differente, anche in funzione della codifica. Analizzando le frequenze con cui ogni valore di byte compare nel file si potrebbero individuare anomalie nel contenuto del file stesso, come ad esempio un testo nascosto in un file audio, oppure più semplicemente file camuffati: immagini spacciate come file compressi e simili.

Funziona in questo modo: si forniscono in standard input i dati da analizzare, per esempio un file, e in uscita si hanno tre differenti tipi di output a scelta. Il primo, banale, è un file CSV con i dati di frequenza complessivi di tutti i dati forniti in ingresso. E’ utilizzabile per fare un grafico con OpenOffice Calc e simili.

L’altro output è grafico, sotto forma di immagine PNG, in due varianti: la più semplice mostra uno spettrogramma complessivo per tutti i dati in input, ed è semplicemente una differente rappresentazione dei dati forniti anche in CSV, tanto che si possono chiedere entrambi. La seconda opzione è più intrigante: produce una immagine larga 256 pixel in cui ogni riga è lo spettrogramma di un blocco di dati in input, e la dimensione del blocco è configurabile. In pratica si ha un colpo d’occhio sul contenuto del file, reso in forma grafica.

Spettro di un file di testo
Questo è lo spettro di un file di testo (la licenza GNU GPL per la precisione).

Spettro di un file Wave
Questo è quello che si ottiene usando un file Wave.

Spettrogramma di un file Wave
Questo invece è lo spettrogramma dello stesso file (clicca sull’immagine per la dimensione reale).

Il primo file è stato ottenuto col comando:


$ cat COPYING | prisma -p asciitext.png

Lo spettrogramma del file Wave invece è stato ottenuto col comando:


$ cat test.wav | prisma -p wave-big.png -b 100000

Per chi è interessato, il programma è rilasciato sotto licenza GNU GPLv2, ed il tarball dei sorgenti con il makefile per compilare ed installare il tutto, con tanto di pagine man in italiano ed inglese è scaricabile qui. Richiede le librerie e gli header di ImageMagick per la compilazione

Sono ovviamente graditi commenti e suggerimenti per il miglioramento.

Tags: , , ,

ISM Conference 2008

Quest’anno l’annuale incontro del gruppo ISMProfessional è stato un po’ sotto tono, a causa degli impegni lavorativi di molti dei componenti.

Per questo ho proposto di incontrarci in uno dei miei luoghi di presenza lavorativa. Il motivo è che da questa settimana avvieremo il nuovo cuore dell’archivio digitale radiofonico, mandando a riposo il vecchio dopo ben dieci anni di onorato servizio. I passi fatti dalla tecnologia da 1998 ad oggi sono impressionanti, e sono ben visibili soprattutto nel più spettacolare dei componenti: la tape library.

Questo elemento contiene tutto l’audio e gli elementi multimediali di contorno che sono nell’archivio. Eccovi un breve resoconto del contenuto ad oggi:

  • 146.000 bobine di nastro da 1/4 di pollice, durata media 20 minuti ognuna, riversate in digitale dal 1997 al 2000, per un totale di oltre 48.000 ore di audio.
  • 70.000 titoli CD, riversati con il metodo del ripping. Ogni titolo può essere un singolo CD, o un cofanetto da 2,3,4,5 o 6 CD.
  • La registrazione 24×365 delle tre reti radiofoniche dal 1995 ad oggi e della rete parlamentare dal 1996 ad oggi.

Per dare una idea delle dimensioni in byte dell’archivio, siamo al momento intorno ai 180 Tbyte. Ma forse è molto più efficace una foto.

Questo è l’esterno della vecchia tape library. Per dare una idea delle dimensioni, la torre che si vede in primo piano è alta due metri e mezzo, con base quadrata di 2,3 metri di lato. All’interno vi è un meccanismo con un ingranaggio in acciaio di 1,9 metri di diametro. Ognuna delle due torri contiene 5.120 cartucce DLT7000/DLT IV. La movimentazione è fatta da un braccio con pinza pneumatica, comandato da un controller industriale. All’interno vi sono 14 drive DLT7000. Ecco una foto dell’interno dove si vede lo scaffale delle cartucce, tutte etichettate con codice a barre, e la colonna centrale su cui è imperniato il braccio.

La nuova tape library, acquistata nel 2007, e messa in funzione a pieno regime nel novenbre 2007, è molto meno “appariscente”, ma è un concentrato di tecnologia: 4 bracci indipendenti, ridondanze multiple, drive LTO/Ultrium-3 in fibre channel nativi. Inoltre, nello stesso volume di una cartuccia DLT ora vi sono dieci volte più dati: da 40Gbyte a cartuccia dei DLT siamo passati ai 400Gbyte di Ultrium.
Ecco una foto della nuova tape library, con a fianco il rack dei server che la gestiscono e che costituiscono il cuore dell’archivio.

Qui una foto ravvicinata dell’interno. E’ presa con lo sportello chiuso, quindi si vede poco dell’interno.

La migrazione dei dati dal vecchio archivio al nuovo è avvenuta senza impatti sulla normale attività degli utenti. In quattro mesi tutto il materiale è stato migrato dai DLT ai nastri Ultrium. In questi giorni si procederà alla commutazione dei servizi sul nuovo sistema.

Con gli amici del gruppo ISMProfessional ho fatto il consueto “giro turistico”, con dimostrazione dell’attività dei due robot. Per come è progettato il sistema, capita raramente di dover accedere al materiale su nastro, per cui al momento della dimostrazione è necessario scegliere qualcosa dall’archivio che sia certamente poco richiesto.

Nel nucleo dell’archivio batte il cuore di un pinguino: varie funzioni, fondamentali, sono svolte da server Linux. Le distribuzioni più usate sono SUSE 9 e, indovinate un po’, Fedora.

Per quest’anno è andata così. Speriamo il prossimo di avere più tempo, e magari di organizzare qualcosa di più vicino agli interessi per cui il gruppo è nato.

Tags: ,

Disco USB cifrato con Fedora

Dopo il furto subito poco prima di Natale 2006, dove ho perso anche un disco USB con parecchi dati dentro (i dati non li ho persi, santo backup del backup…), ho cominciato a riflettere su come evitare che in simili frangenti uno sconociuto possa venire in possesso di dati per lo meno strettamente personali, se non riservati.

Dalla mailing lista di Fedora mi è giunto un articolo sulla cifratura trasparente di dischi interi usando un sistema introdotto dalla Core 5, che ora è praticamente giunto alla maturità.

Il risultato è che il mio nuovo disco USB è cifrato, ed ho scritto anche questo articolo.

Buona lettura.

Aggiornamento del 3 ottobre 2007
Il tutto funziona sulle ultime versioni di Fedora.

Tags: , , ,

Hacker? A chi?

hacker emblem

Chi ha mai giocato con il simulatore Life dovrebbe riconoscere nell’immagine un aliante, ossia un gruppo di cinque “cellule” che si muove in diagonale durante l’evoluzione della simulazione.

Questo simbolo è stato scelto da Eric S. Raymond come emblema degli hacker. Sullo stesso sito vi è uno stimolante How to become a hacker (Come diventare un hacker).

A febbraio esce il nuovo libro di Raoul Chiesa, Profilo Hacker.

Entrambi usano il termine hacker, ma con significato ed accezione diversi. Parliamone…

Prosegui la lettura »

Tags: , ,