Osquery consente di interrogare direttamente il sistema operativo con query SQL per individuare processi sospetti, connessioni anomale e meccanismi di persistenza. Un approccio utile nell’analisi forense, soprattutto quando antivirus e strumenti basati su firme non rilevano malware attivi.
Il presupposto che attraversa quasi tutta la sicurezza informatica è che per proteggere un sistema bisogna dotarlo di strumenti che sorveglino ciò che accade e intervengano quando rilevano qualcosa di anomalo. Su questa logica funzionano gli antivirus, i sistemi di intrusion detection, le piattaforme EDR (Endpoint Detection and Response) e sostanzialmente ogni prodotto commerciale che un’azienda acquista per difendere i propri asset. Il meccanismo di fondo è sempre lo stesso: il software confronta ciò che osserva con un catalogo di comportamenti o firme note, e quando trova una corrispondenza genera un alert. Un approccio consolidato, ma che porta con sé un punto cieco strutturale in quanto la qualità della protezione dipende interamente dalla qualità del catalogo.
È dove questo punto cieco diventa un problema concreto che il discorso si fa interessante. Quando si passa dalla protezione preventiva all’analisi forense, cioè a quel momento in cui un analista deve sedersi davanti a una macchina e stabilire se è stata compromessa, da chi e come, gli strumenti basati su firme smettono semplicemente di essere utili. Ci si trova davanti a macchine con suite antivirus attive e aggiornate che risultano “pulite” a ogni scansione mentre ospitano processi malevoli perfettamente funzionanti. Malware caricato direttamente in memoria RAM, invisibile a qualunque scansione basata su file. Eseguibili rinominati per imitare processi di sistema legittimi che nessuna firma ha ancora catalogato. Non si tratta di scenari teorici ma della condizione operativa standard di chi indaga su compromissioni reali.
Osquery parte da un presupposto completamente diverso, e per certi versi opposto. Invece di confrontare ciò che vede con un catalogo di cose note, trasforma l’intero sistema operativo in un database relazionale interrogabile con il linguaggio SQL standard, lo stesso che qualunque amministratore di database o sviluppatore già conosce. Processi in esecuzione, connessioni di rete, porte in ascolto, servizi attivi, chiavi di registro, task schedulati, hash dei file, utenti e moduli del kernel diventano tutti tabelle con colonne e righe su cui si possono eseguire query SQL. Questo permette a chi indaga di interrogare direttamente il sistema operativo e capire in tempo reale cosa sta accadendo al suo interno, senza doversi affidare ad applicazioni esterne.
Osquery nasce nel 2014 all’interno di Facebook, dove il team di sicurezza affrontava un problema di scala che nessun prodotto commerciale dell’epoca risolveva in modo soddisfacente: monitorare decine di migliaia di server e workstation eterogenei con un unico strumento capace di restituire risposte coerenti indipendentemente dal sistema operativo sottostante. La soluzione che costruirono era così efficace che Facebook decise di rilasciarla come progetto open source. Nel giro di pochi anni il tool è passato da strumento interno di una singola azienda a infrastruttura adottata da realtà come Palantir, l’azienda americana che fornisce piattaforme di analisi dati all’intelligence e alle forze armate statunitensi. Palantir non solo lo utilizza in produzione sulle proprie flotte di endpoint ma ne pubblica apertamente le configurazioni su GitHub come riferimento per l’intera comunità.
Nel 2019 la gestione e lo sviluppo del progetto sono passati alla Linux Foundation, garantendone l’indipendenza da qualunque singolo vendor. Da allora il lavoro della comunità è proseguito con ritmo costante e l’ultima release stabile, la 5.22.1, è stata pubblicata a fine febbraio 2026. Oggi osquery è disponibile per Linux, macOS e Windows ed espone oltre duecento tabelle virtuali che coprono praticamente ogni aspetto misurabile di un sistema operativo:
- Processi e servizi in esecuzione
- Connettori di rete e porte aperte
- File di avvio e task pianificati
- Registro di sistema e chiavi di avvio
- Statistiche e log di accesso agli utenti
Su questa base piattaforme come Fleet, un sistema open source di gestione centralizzata degli endpoint, hanno costruito interi ecosistemi di sicurezza a livello enterprise, permettendo di orchestrare osquery su migliaia di macchine contemporaneamente.
Per capire cosa osquery permette concretamente di individuare, bisogna prima capire come funziona un attacco. Chi si occupa di sicurezza offensiva conosce bene le tre condizioni che qualunque attacco informatico deve necessariamente soddisfare:
- Presenza di un servizio o processo anomalo
- Connessione di rete verso un indirizzo esterno sospetto
- Meccanismo di persistenza che garantisce il rilancio del malware
Queste tre condizioni non sono aggirabili e un analista deve quindi “smontare” l’attacco nelle sue componenti obbligate, interrogando il sistema per scovare servizi anomali, connessioni sospette e meccanismi di persistenza nascosti.
Indagine con osquery: servizi anomali
Ora che sappiamo cosa cercare, andiamo a vedere come usare osquery per condurre un’indagine forense su una macchina compromessa, partendo proprio da queste tre condizioni. Il primo passo consiste nel cercare il servizio anomalo. Quando un attaccante compromette una macchina installa un processo che gira in background per mantenerne il controllo, e quel processo compare necessariamente nell’elenco dei servizi del sistema operativo, per quanto cerchi di nasconderlo. Con osquery basta una singola query per estrarre la lista completa di tutti i servizi presenti, comprensiva di nome, tipo di avvio, percorso dell’eseguibile e account utente con cui vengono eseguiti.
Il risultato sarà una lista lunga dato che un sistema operativo in condizioni normali esegue decine di servizi legittimi e la vera competenza dell’analista sta nel distinguere ciò che deve esserci da ciò che non dovrebbe. Le anomalie da cercare sono di due tipi:
- Servizi che non dovrebbero essere in esecuzione, ad esempio processi di sistema che non richiedono di rimanere sempre avviati
- Eseguibili con nomi alterati che fingono di essere file legittimi ma non lo sono, un classico trucco del malware
Connessioni di rete sospette
Una volta identificati eventuali servizi sospetti, la domanda successiva riguarda la connessione di rete. Un servizio malevolo che non comunica con l’esterno è di fatto inerte. Se l’attaccante sta controllando la macchina, deve esistere un processo che in questo momento mantiene una connessione attiva verso un indirizzo remoto o è in ascolto su una porta. Osquery permette di far emergere esattamente questa relazione incrociando in una singola query la tabella dei processi attivi con quella delle porte in ascolto.
Il risultato è una mappa di tutto ciò che sulla macchina sta
