Il bello di HackInBo

Sabato 14 ottobre si è tenuta a Bologna la nona edizione di HackInBo alla quale ho avuto il piacere di partecipare come relatore in compagnia di  cinque grandi esperti della security italiana e della mitica Yvette Agostini alla quale, come per le precedenti edizioni, è affidato l’arduo compito di moderare l’evento.

Avevo avuto l’onore di sedere al tavolo di HackInBo nella prima edizione svoltasi nel lontano 2013, già allora fu un evento di grande successo ma in quest’ultima edizione Mario è andato ben oltre le aspettative: una sala convegni degna di ospitare eventi di un certo calibro che purtroppo non è stata sufficiente per soddisfare le 1200 richieste di iscrizione ma ha potuto accontentare solo 474 partecipanti provenienti da ogni angolo dello stivale.

Il primo intervento è stato il mio. Ho raccontato la mia personale esperienza nel CERT-PA in merito all’emergenza WannaCry cercando di mettere in evidenza le difficoltà tecniche ed operative oltre all’importanza di condividere correttamente le informazioni quando ci si trova a dover gestire uno stato di crisi.

Per il secondo intervento la parola è stata ceduta a Federico Dotta che ha illustrato Brida, uno strumento di ausilio nelle attività di reverse engineering utile per portare a compimento attività di penetration testing complesse sulle applicazioni mobile.

Poi è stata la volta di Francesco Schifilliti con un talk mirato ai linguaggi strutturati, STIX in particolare, e alle soluzioni tecnologiche ad oggi presenti sul mercato che aiutano a rappresentare e condividere le informazioni (IoC) relativi ad un incidente informatico.

Dopo la pausa pranzo ha preso parola Luca Bongiorni che sin da subito ha conquistato l’attenzione della platea mostrando i dettagli del progetto WHID Injector e illustrandone le potenzialità nel contesto di una attività di penetration testing. L’intervento di Luca ha provocato una standing ovation finale da brivido 🙂

A seguire Alessandro Tanasi, papà del progetto Cuckoo Sandbox, che finalmente ho avuto il piacere di conoscere e di seguire il suo intervento con particolare attenzione.

Alessandro ha descritto le feature di Cuckoo svelando, almeno per me, alcuni aspetti che ignoravo.

Dulcis in fundo Stefano Maistri ha sapientemente parlato di malware detection e modellazione comportamentale os agnostic. Un sistema in grado di fornire un metodo standard per l’analisi di malware, per la classificazione, per l’identificazione di componenti condivise e di funzioni dormienti tra i vari malware.

La chiusura dei lavori è stata siglata dall’immancabile tavola rotonda alla quale hanno partecipato due ospiti di eccezione: Francesca Bosco e Pierluigi Perri. L’argomento di discussione che ha suscitato curiosità e numerosi interrogativi da parte della platea – ragione per cui a mio avviso avrebbe meritato molto più spazio -, è stato il data breach a Equifax.

HackInBo ha offerto a tutti, nessuno escluso, l’opportunità di rivedere vecchi amici e conoscere nuove persone con le quali potersi confrontare apertamente su tematiche inerenti la security. È stato bello incontrare Mattia Epifani, Fabio Pietrosanti, Simone Margaritelli, Giovanni Mellini, Andrea Draghetti, Denis Frati, e tantissimi altri amici che mi perdoneranno se non li ho citati in questo post.

Credo che il tweet di Stefano pur esagerando abbia sintetizzato perfettamente l’ambiente.

In conclusione, mi è doveroso ringraziare:

  • Mario Anglani per l’impegno e la dedizione che da anni pone nella cura dell’evento e nel sostegno dell’associazione Onlus “Non Basta Un Sorriso“.
  • Lo staff tecnico che ci ha seguiti e supportati costantemente.
  • Riccardo Corrado per non aver perso le staffe per la consegna ultim’ora delle mie slide.
  • Elio Catapano per avermi sopportato nei due giorni dedicati a questa avventura.
  • Ai partecipanti per aver contribuito anche questa volta a rendere strepitoso questo evento.

Le slide, i video, le foto saranno presto disponibili sul sito ufficiale di HackInBo.

Il CERT-PA e la Malware Analysis: Strumenti e casi di studio

Sono online le slide del Workshop GARR 2017 – Netvolution tenutosi nei giorni dal 4 al 6 aprile a Roma presso la sede centrale del Consiglio Nazionale delle Ricerche. Per chi fosse interessato, le slide del mio intervento sono consultabili direttamente dal sito del GARR o su Slideshare.

Acquisire documenti Facebook con Hashbot

Anche se è stato già detto tante volte, forse è il caso di ripeterlo prima di procedere con il post: hashbot non è in grado di acquisire documenti online il cui accesso richiede una autenticazione e/o documenti ai quali è stata applicata una restrizione di privacy che ne limita l’accesso a determinati account.

In teoria funziona così

Tizio, per fare un esempio, non potrà acquisire con hashbot il documento che Caio ha condiviso via dropbox con Sempronio. Allo stesso modo, Tizio non potrà acquisire la foto che Caio ha pubblicato su facebook alla quale ha applicato una restrizione per limitare l’accesso solo a determinati account, tra cui quello di Sempronio.

Nella pratica, ma questo vale solo per le foto, possiamo ricorrere a una escamotage

Se Sempronio informa Tizio che Caio ha pubblicato una foto, Tizio potrà comunque procedere con l’acquisizione della foto (nonostante le restrizioni) a patto che Sempronio fornisca la url statica che punta alla foto (“click destro” sulla foto » “copia indirizzo immagine”), e non il permalink al post che risulterebbe inaccessibile. La procedura di acquisizione sarà quindi limitata al documento (immagine) allegato al post come riportato al punto 2 dei paragrafi successivi e non al contenuto testuale presente nello stesso post.

Nel caso di post pubblici invece…

Discorso diverso per quanto riguarda i post pubblicati su pagine facebook e profili personali che non presentano restrizioni di privacy. In questi casi, stiamo parlando di informazioni pubblicamente accessibili. Prendiamo come esempio questo post pubblicato sulla mia bacheca, al quale è possibile accedere anche senza autenticarsi al social.

Procediamo con l’acquisizione

1) Il permalink al post, quello che daremo in pasto ad hashbot, è il seguente:

https://www.facebook.com/photo.php?fbid=10154219966677182&set=a.59279192181.73259.565977181&type=3&theater

In questo modo acquisiremo il codice sorgente (html) della pagina generata, testo compreso, ma non la foto.

2) Per acquisire anche il documento allegato al post (ovvero la foto), occorre la url statica che punta all’immagine, che in questo caso è la seguente (“click destro” sulla foto » “copia indirizzo immagine”):

https://scontent-mxp1-1.xx.fbcdn.net/v/t31.0-8/14700782_10154219966677182_3390284724316711863_o.jpg?oh=d1bdadb6c465345c676d85cddf826474&oe=5990EA41

Si procede quindi con una seconda acquisizione fornendo a hashbot questa seconda url.

In conclusione hashbot restituirà due pacchetti

Il primo prova l’esistenza della pagina incriminata, il pacchetto conterrà informazioni tecniche sulla pagina acquisita e il sorgente (html) nel quale sarà presente la parte testuale e la url che punta a una immagine, ma non l’immagine. Quindi da solo non sarà sufficiente a dimostrare il contenuto dell’immagine. (Serve nel caso di post pubblici, non è possibile applicarlo per i post con restrizioni).

Il secondo invece conterrà le informazioni tecniche relative al documento (immagine) pubblicato con il post insieme all’immagine oggetto di acquisizione, la cui url acquisita sarà presente nel sorgente del html restituito con il primo pacchetto. (Serve nel caso di post pubblici e nel caso di foto pubblicate su post con restrizioni).

Hashbot non è deceduto. I dati sono al sicuro.

Scrivo rapidamente questo post per informare e rassicurare gli utenti che dal 2009 ad oggi hanno usufruito di hashbot per l’acquisizione forense di pagine e documenti web, giustamente preoccupati per i loro dati, che le informazioni acquisite sono al sicuro, il server è ancora operativo ma il dominio hashbot.com al momento non punta al servizio.

Chiedo gentilmente di pazientare ancora qualche giorno. Il servizio tornerà nuovamente online e, più in là, con calma, deciderò le sorti.

Approfitto per ringraziare coloro i quali si sono premurati di contattarmi per chiedere spiegazioni ed essersi messi a disposizione per il sostegno. Ringrazio altresì la comunità forense italiana, i legali, e i colleghi che hanno creduto nel progetto sin dal primo giorno. È merito loro se hashbot è diventato quasi “uno standard” in ambito forense e in questi anni è stato oggetto di studio e argomento di tesi in diverse università italiane.

Tecniche di Evasione Sandbox Online – Proof of Concept

È un dato di fatto che gli incidenti di sicurezza causati da malware sono tra i più frequenti. Al fine di contenere l’incidente e/o valutare l’impatto è importante analizzare le informazioni relative alla natura del malware e al suo comportamento. La raccolta di queste informazioni consente di individuare infezioni provenienti da malware appartenenti alla stessa famiglia e di studiare soluzioni per risolvere o contenere la compromissione.

L’analisi dei sample mediante sandbox online è diventata una pratica comune tra gli analisti di sicurezza, spesso senza tener conto che i report prodotti dalle sandbox online non sono sufficienti a fornire una risposta certa ed esauriente.

Scenari possibili

Se il report presenta attività network verso il dominio taldeitali.net non è detto che il dominio in questione sia il solo che il malware sia capace di contattare. Idem se il report non fornisce alcuna evidenza relativa alle attività di rete.

Nel primo caso, il malware potrebbe contenere una lista di domini di backup da utilizzare nel caso in cui una delle risorse da contattare non risulti più raggiungibile. Nel secondo caso, avendo individuato l’ambiente in cui è stato eseguito, il malware potrebbe aver cambiato comportamento e di conseguenza il report prodotto dalla sandbox conterrà informazioni parzialmente o totalmente errate.

Proof of concept

sample_anti_malwr

Il sample riportato nello screenshot, è un proof di malware dropper creato in laboratorio che utilizza due indirizzi [righe 5, 6 (principale) e 9, 10 (alternativo)] da cui prelevare il file malware.exe e verso cui inviare le informazioni carpite.

Alla riga 16 viene acquisito uno dei tanti elementi univoci dell’host compromesso che successivamente verrà comparato con le variabili $Anubis e $Malwr [riga 26]. Se il riscontro è positivo, quindi il malware si è reso conto di esser stato eseguito all’interno di una sandbox online da lui nota, non compierà alcuna azione [riga 27] e il report prodotto non conterrà alcuna informazione relativa alle attività network (Malwr.com report).

malwr

Lo stesso sample sottoposto a una sandbox non nota al malware produrrà invece un report incompleto qualora la risorsa all’indirizzo principale [riga 5] risulti raggiungibile. (Reverse.it report).

reverse

In nessuno dei due casi l’analista che si affida esclusivamente al report delle sandbox online avrà evidenza dell’esistenza dell’indirizzo alternativo noto al malware [riga 9].

PEframe 5.0 – Le novità introdotte

Dopo tre mesi di test, dal 10 febbraio 2016 è finalmente disponibile la versione 5.0 di PEframe. Questa nuova versione, di cui il codice è stato quasi interamente riscritto, corregge un bug presente nella 4.2 (e precedenti) e implementa nuove funzionalità (vedi changelog) che consentono all’analista di scavare più in profondità ed ottenere maggiori dettagli tecnici dall’analisi statica del malware.

Nell’attesa di scrivere e rendere pubblica una documentazione completa, provo a sintetizzare i cambiamenti sostanziali apportati alla nuova versione.

A partire dalla 5.0 l’analisi è stata parzialmente estesa anche a malware di tipo ELF

L’output utente è rimasto pressocchè invariato rispetto alle precedenti versioni. È stata introdotta la sezione “Resources info”, migliorata la ricerca di nomi file e url, ed ora è possibile consultare integralmente le informazioni catturate da PEframe utilizzando l’opzione --json.

Tra le feature recentemente introdotte vale la pena citare la ricerca dei mutex objects e il detection rate di VirusTotal. Quest’ultima funzione, che necessita di una API Key configurabile manualmente attraverso il file stringsmatch.json, non carica il malware su VirusTotal ma verifica se l’hash del file è presente su VirusTotal e in caso affermativo restituisce il valore relativo all’ultima sottomissione.

Grazie al file di configurazione (stringsmatch.json) è possibile editare la sezione fuzzing per personalizzare le analisi attraverso il parsing delle stringhe.

Per una rapida analisi è consigliato lanciare peframe con il seguente comando:

peframe filename.exe

Per una visione completa dei dettagli tecnici, o per acquisire i dati completi attraverso sistemi automatici, è doveroso utilizzare la seguente sintassi:

peframe --json filename.exe

Per concludere…

Link: https://github.com/guelfoweb/peframe

HackInBo Security Dinner 2015

hackinbo-security-dinner

Che tradotto in altri termini vuol dire cena acara di fine anno. Sulla scia dell’evento organizzato a Roma lo scorso luglio al quale partecipò un numero ristretto di persone – 25 in tutto tra professionisti e appassionati di IT Security e Digital Forensics -, Mario, il patron di HackInBo, ripropone l’evento sabato 12 dicembre in quel di Bologna.

Questa volta si prevede la partecipazione di un folto numero di acari, circa un centianio quelli attualmente registrati su eventbrite.

L’occasione è giusta per rivedere vecchi amici, conoscerne di nuovi e scambiare due chiacchiere. Il fatto di partecipare agli eventi di Sicurezza pregiudica sempre lo scambio di informazioni tra i partecipanti. Questo incontro è l’occasione giusta per parlarsi in totale tranquillità e per fare due chiacchiere. Ovviamente è aperto a tutti e potete portare chi volete!

Sabato 12 saremo a Bologna per inaugurare questa fantastica iniziativa. Partiremo da Roma in auto (quella di Elio, insieme a Michele e Corrado) e contiamo di arrivare sul posto già nel primo pomeriggio per anticipare le chiacchiere. Visto che probabilmente la serata sarà lunga, abbiamo prenotato un b&b in zona per prendercela comoda e tornare a casa l’indomani mattina.

Se non avete ancora confermato siete sempre in tempo per farlo (QUI). Vi aspettiamo sabato a Bologna.

PS – I vegetariani, Mario non si è dimenticato di voi, avranno tempo fino a domani 11 dicembre per confermare la presenza e far variare il numero di portate.

Decifrare il traffico della botnet Athena HTTP

athena-http

Se state analizzando la botnet Athena HTTP questo script in python che ho postato su gist potrebbe tornarvi utile per decifrare le informazioni scambiate tra il malware e il server di C&C. Individuare il traffico non è difficile, sono tutte richieste HTTP di tipo POST. Decifrare di volta in volta la comunicazione risulta un pelino più rognoso.

L’algoritmo di cifratura utilizzato nello script è valido per la versione 1.0.8 di Athena HTTP e del builder.

Benvenuto LUKS (cryptsetup)

Per anni ho usato TrueCrypt ed ho continuato ad utilizzarlo anche dopo il clamoroso annuncio apparso in cima alla pagina di download “WARNING: Using TrueCrypt is not secure as it may contain unfixed security issues”. Solo di recente ho deciso di migrare i dati custoditi nel contenitore TrueCrypt su un supporto predisposto con cifratura LUKS, soluzione che si presta a molteplici possibilità di utilizzo in base alle esigenze.

Per cifrare i device portatili ho usato Cryptsetup, già presente nella distro Backbox. Dopo aver individuato la partizione da cifrare (fate attenzione a non commettere errori) si procede con la formattazione del supporto.

# cryptsetup luksFormat /dev/sdg1

Alla domanda “Are you sure? (Type uppercase yes):” rispondere con YES e quando richiesta digitare la passphrase .

Se al posto della passphrase si opta per un keyfile la sintassi diventa la seguente:

# cryptsetup luksFormat /dev/sdg1 keyfile

Montiamo la partizione cifrata e assegnamo un’etichetta per individuare la partizione quando verrà mappata. Es. “LUKS001”.

# cryptsetup luksOpen /dev/sdg1 LUKS001

Vi verrà chiesto di digitare la passphrase.

Ora ci tocca formattare la partizione appena montata. Per esigenze lavorative (leggasi compatibilità con sistemi Windows) ho scelto FAT32.

# mkfs.vfat /dev/mapper/LUKS001 -n LUKS001

Per ext4 e ntfs la sintassi è la seguente:

# mkfs.ext4 /dev/mapper/LUKS001 -L LUKS001
# mkfs.ntfs /dev/mapper/LUKS001 -L LUKS001

Fatto ciò abbiamo concluso, chiudiamo la nostra partizione (LUKS001) e stacchiamo il device dalla porta USB.

# cryptsetup luksClose LUKS001

Quando lo ricollegheremo, il sistema chiederà di digitare la passphrase per montare il supporto. Comodo.

luks

A proposito di comodità, una feature davvero interessante è la possibilità di utilizzare la tecnica di Key escrow per generare una seconda chiave (sono disponibili 8 slot) con gli stessi privilegi della prima.

# cryptsetup luksAddKey /dev/sdg1

Vi verrà chiesto di digitare la prima passphrase e immediatamente dopo di configurarne una seconda.