Come è stata violata Hacking Team

Il caso dell’hacker Phineas Fisher che ha violato Hacking Team è un esempio concreto di come la sicurezza informatica sia un tema sempre più rilevante, non solo per gli individui ma anche per le aziende.

Phineas Fisher è un hacker che ha preso di mira Hacking Team, una società italiana specializzata nella produzione di software per il monitoraggio delle comunicazioni digitali. La violazione ha portato alla pubblicazione di una grande quantità di dati riservati, come email, documenti interni e codice sorgente dei software prodotti dall’azienda.

Ma come ha fatto Phineas Fisher ad accedere alle informazioni riservate di Hacking Team? In questo articolo, analizzeremo il suo modus operandi, diviso in diversi paragrafi. Potete trovare la guida originale al seguente indirizzo: https://gist.github.com/jaredsburrows/9e121d2e5f1147ab12a696cf548b90b0

Nella prima parte, Phineas Fisher esorta i suoi lettori a prendere precauzioni per proteggere la propria privacy e la propria sicurezza informatica. Consiglia di cifrare il proprio disco rigido e di utilizzare una macchina virtuale con tutto il traffico instradato attraverso Tor. In questo modo, il traffico è anonimizzato e la propria vita personale e le attività di hacking sono mantenute separate. Inoltre, consiglia di non connettersi direttamente a Tor, ma di utilizzare il wifi di altre persone o un bridge node VPN per evitare di correlare l’attività dell’hacker con l’attività internet di casa.

Nella sezione successiva, Phineas Fisher descrive l’infrastruttura che utilizza per condurre le sue attività di hacking. Utilizza nomi di dominio per gli indirizzi C&C e tunnel DNS per garantire l’uscita dal sistema. Inoltre, utilizza server stabili per la ricezione di shell di connessione, per lanciare attacchi e memorizzare il bottino. Infine, utilizza server compromessi come pivot per nascondere gli indirizzi IP dei server stabili.

Per proteggere la sua identità, Phineas Fisher utilizza un metodo di pagamento anonimo come bitcoin e registra nuovi server e nomi di dominio con nuovi indirizzi email e nuovi indirizzi bitcoin.

Infine, Phineas Fisher cambia il suo modo di fare alcune cose per non lasciare le sue impronte digitali solite e per evitare che il suo attacco sia collegato ad altri hacker. Utilizza solo strumenti disponibili pubblicamente o creati appositamente per questo attacco.

Ricognizione

Nella seconda parte del suo racconto, Phineas Fisher descrive le tecniche che ha usato per raccogliere informazioni sulla società e i suoi dipendenti. Inoltre, descrive le due tecniche comuni usate per ottenere un punto di ingresso nella rete, nonché la ragione per cui non ha usato la tecnica più diffusa, ovvero l’ingegneria sociale.

La raccolta di informazioni è la prima fase della maggior parte degli attacchi informatici e Phineas Fisher lo ritiene essenziale. Ci sono alcune tecniche utilizzate per raccogliere informazioni sulla società, tra cui Google, la ricerca di sottodomini, ricerche whois e reverse whois, la scansione delle porte e l’impronta digitale. Tutti questi strumenti possono rivelarsi utili per scoprire dettagli sulla società che possono essere usati per effettuare un attacco informatico. Tuttavia, Phineas Fisher sottolinea che la raccolta di informazioni è spesso un processo noioso e lungo.

Per quanto riguarda le informazioni sociali, Phineas Fisher suggerisce di utilizzare LinkedIn, Google, theHarvester e recon-ng. Questi strumenti possono fornire informazioni sugli impiegati, sui loro ruoli, sulle loro informazioni di contatto, sul sistema operativo che utilizzano, sui browser, sui plugin e sul software.

La sezione successiva del racconto descrive le due tecniche comuni utilizzate per entrare nella rete: l’ingegneria sociale e la vulnerabilità del software. Phineas Fisher sottolinea che l’ingegneria sociale, in particolare il spear phishing, è la tecnica più utilizzata dagli hacker e spesso la più efficace. Tuttavia, ha deciso di non utilizzare questa tecnica per violare Hacking Team, poiché l’azienda è specializzata in questo tipo di attacchi e sarebbe quindi stata molto attenta a individuare un attacco di questo tipo.

Invece, Phineas Fisher ha scelto di trovare una vulnerabilità del software e di sfruttarla per entrare nella rete di Hacking Team. Questo ha richiesto molto lavoro e sforzo, ma alla fine ha permesso all’hacker di accedere alla rete e di sottrarre dati sensibili.

In generale, Phineas Fisher raccomanda di iniziare con l’ingegneria sociale quando si cerca di violare una rete, poiché spesso è la tecnica più efficace. Tuttavia, come dimostra il suo caso, anche le vulnerabilità del software possono essere sfruttate con successo se si ha il tempo e le risorse necessarie.

Tecnical exploitation

Dopo aver effettuato la reconnaissance, Phineas Fisher si è dedicato alla fase di technical exploitation. Hacking Team aveva pochissimi sistemi esposti su Internet: il sito web principale (un blog Joomla), un server di posta elettronica, un paio di router, due VPN e un appliance per il filtraggio dello spam. Phineas Fisher ha valutato tre opzioni per trovare una vulnerabilità: cercare una 0day in Joomla, cercare una 0day in Postfix o cercare una 0day in uno dei dispositivi embedded. Quest’ultima opzione sembrava la più semplice, ed è stata quella scelta da Phineas Fisher.

Dopo due settimane di lavoro di reverse engineering, Phineas Fisher ha trovato una vulnerabilità che gli ha permesso di ottenere un remote root exploit su uno dei dispositivi embedded. Poiché le vulnerabilità non sono ancora state corrette, Phineas Fisher non ha rivelato ulteriori dettagli su di esse, ma ha consigliato di fare riferimento alle fonti da lui citate per maggiori informazioni sulla ricerca di vulnerabilità.

Dopo aver trovato la vulnerabilità, Phineas Fisher ha fatto un lavoro di preparazione per l’attacco. Ha scritto un firmware backdoored e ha compilato vari strumenti di post-exploitation per il dispositivo embedded. Il backdoor serviva per proteggere l’exploit: usando l’exploit una sola volta e tornando attraverso il backdoor, sarebbe stato più difficile individuare e correggere le vulnerabilità.

Gli strumenti di post-exploitation preparati da Phineas Fisher includevano diverse utility Unix, come Busybox, Nmap, Responder.py, Python, Tcpdump, Dsniff, Socat e Screen. Questi strumenti gli avrebbero permesso di eseguire una serie di attacchi alla rete interna di Hacking Team, tra cui la scansione della rete, l’esecuzione di attacchi contro reti Windows, lo sniffing del traffico e la creazione di un proxy SOCKS per accedere alla rete locale da qualsiasi programma.

Infine, Phineas Fisher ha speso una settimana testando il suo exploit, il backdoor e gli strumenti di post-exploitation nelle reti di altre aziende vulnerabili prima di entrare nella rete di Hacking Team, per minimizzare il rischio di essere scoperto.

In sintesi, Phineas Fisher è riuscito a violare la rete di Hacking Team sfruttando una vulnerabilità in un dispositivo embedded e utilizzando una serie di strumenti di post-exploitation per eseguire una serie di attacchi alla rete interna dell’azienda. La sua preparazione meticolosa e la sua attenzione ai dettagli gli hanno permesso di minimizzare il rischio di essere scoperto e di mantenere l’accesso alla rete per un lungo periodo di tempo.

Prima di usare lo sfruttamento contro Hacking Team, Phineas Fisher ha fatto molte prove e test. Ha scritto un firmware con backdoor e ha compilato vari strumenti post-sfruttamento per il dispositivo incorporato. Il backdoor serve per proteggere lo sfruttamento. Usare lo sfruttamento solo una volta e poi tornare attraverso il backdoor lo rende più difficile da identificare e risolvere le vulnerabilità.

Di seguito, spiego in dettaglio i principali strumenti di post-exploitation utilizzati da Phineas Fisher:

  1. Busybox: Busybox è un insieme di strumenti Unix, tra cui comandi standard come ls, cp, mv e altri. Questi comandi non erano disponibili sul sistema di Hacking Team, quindi Phineas Fisher ha utilizzato Busybox per accedere a queste utilità standard.
  2. Nmap: Nmap è uno strumento di scansione di rete utilizzato per identificare host, porte e servizi all’interno di una rete. Phineas Fisher ha utilizzato Nmap per mappare la rete di Hacking Team e identificare i dispositivi e le porte aperte all’interno della rete.
  3. Responder.py: Responder.py è uno strumento utilizzato per attaccare reti Windows quando si ha accesso alla rete interna, ma non si ha un account utente di dominio. Phineas Fisher ha utilizzato Responder.py per catturare le credenziali degli utenti di Windows e ottenere l’accesso a ulteriori risorse all’interno della rete di Hacking Team.
  4. Python: Python è un linguaggio di programmazione utilizzato da Phineas Fisher per eseguire Responder.py e altri strumenti di post-exploitation.
  5. Tcpdump: Tcpdump è uno strumento utilizzato per catturare e analizzare il traffico di rete. Phineas Fisher ha utilizzato Tcpdump per analizzare il traffico di rete di Hacking Team e raccogliere informazioni utili sulla rete.
  6. Dsniff: Dsniff è uno strumento utilizzato per il furto di credenziali di autenticazione per i protocolli in testo chiaro come FTP. Phineas Fisher ha utilizzato Dsniff per ottenere le credenziali degli utenti di Hacking Team e ottenere l’accesso a ulteriori risorse all’interno della rete.
  7. Socat: Socat è uno strumento utilizzato per creare connessioni di rete avanzate. Phineas Fisher ha utilizzato Socat per creare una connessione a una shell remota con un terminale pseudo-tty, il che gli ha permesso di eseguire comandi sulla rete di Hacking Team come se fosse in quella rete.
  8. Screen: Screen è uno strumento che consente di creare sessioni di shell persistenti su un sistema remoto. Phineas Fisher ha utilizzato Screen per mantenere le sue connessioni alla rete di Hacking Team attive anche se si disconnetteva dalla rete.
  9. SOCKS proxy server: Phineas Fisher ha utilizzato un proxy SOCKS per accedere alla rete di Hacking Team da qualsiasi programma.
  10. Tgcd: Tgcd è uno strumento utilizzato per inoltrare porte attraverso un firewall. Phineas Fisher ha utilizzato Tgcd per inoltrare le porte necessarie per il proxy SOCKS attraverso il firewall di Hacking Team.

Dopo aver raccolto informazioni su Hacking Team e individuato le vulnerabilità del loro sistema, Fisher era finalmente pronto per entrare nel loro sistema. La sua prima preoccupazione era quella di evitare di essere scoperto. Non voleva che il sistema diventasse instabile e che gli impiegati iniziassero a investigare.

Fisher ha speso una settimana testando il suo exploit, il backdoor e gli strumenti di post-exploitation nelle reti di altre aziende vulnerabili prima di entrare nel sistema di Hacking Team. Una volta che si è sentito abbastanza sicuro, è entrato nel sistema di Hacking Team attraverso una vulnerabilità nel loro server Apache.

Una volta dentro, Fisher ha voluto dare un’occhiata attorno e pianificare il suo prossimo passo. Ha iniziato a eseguire Responder.py in modalità di analisi (-A per ascoltare senza inviare risposte avvelenate) e ha fatto una scansione lenta con nmap.

Fisher ha poi scoperto che ci sono stati dei database MongoDB non autenticati all’interno del sistema di Hacking Team. Questi erano i database per le istanze di prova di RCS. L’audio registrato da RCS viene archiviato in MongoDB con GridFS. La cartella audio nel torrent è stata ottenuta da qui. Quindi, Fisher ha scoperto che stavano spiando se stessi senza saperlo.

Sebbene ascoltare le registrazioni e vedere le immagini della webcam di Hacking Team che sviluppavano il loro malware fosse divertente, non era molto utile. I loro backup insicuri erano la vulnerabilità che aveva aperto le porte. Secondo la loro documentazione, i loro dispositivi iSCSI dovevano essere su una rete separata, ma Fisher ne ha trovati alcuni nella loro sotto-rete 192.168.1.200/24.

iSCSI richiede un modulo del kernel, e sarebbe stato difficile compilarlo per il sistema integrato. Fisher ha quindi inoltrato la porta in modo da poterlo montare da un VPS.

Fisher ha anche creato un server proxy SOCKS da utilizzare con proxychains per accedere alla rete locale di Hacking Team da qualsiasi programma e ha installato tgcd per inoltrare le porte attraverso il firewall.

In sintesi, Fisher è riuscito a penetrare il sistema di Hacking Team attraverso una vulnerabilità nel loro server Apache, ha esplorato la rete interna e ha trovato i database MongoDB non autenticati, che hanno permesso a Fisher di ottenere le informazioni che cercava. Inoltre, Fisher ha creato un server proxy SOCKS e ha installato tgcd per inoltrare le porte attraverso il firewall. Tuttavia, Fisher ha lavorato molto duramente per evitare di essere scoperto, testando il suo exploit e i suoi strumenti di post-exploitation su altre aziende vulnerabili per una settimana prima di entrare nel sistema di Hacking Team.

Lateralizzazione

In questa parte del racconto, l’hacker Phineas Fisher spiega le diverse tecniche utilizzate per la diffusione all’interno di una rete Windows, ovvero il lateral movement. Per eseguire questa tecnica, è necessario ottenere la password o l’hash di un amministratore locale nel target. L’hacker ha utilizzato principalmente Mimikatz, in particolare sekurlsa::logonpasswords e sekurlsa::msv sui computer in cui già aveva accesso amministrativo. Per l’escalation dei privilegi, ha utilizzato PowerUp e bypassuac.

Per la diffusione remota, Phineas Fisher ha utilizzato diverse tecniche:

  1. psexec: il metodo più comune e universale, che funziona su qualsiasi computer Windows con la porta 445 aperta, ma è anche il meno stealthy. L’hacker ha utilizzato psexec, winexe, metasploit’s psexec_psh, Powershell Empire’s invoke_psexec o il comando integrato di Windows “sc”. Il modulo di metasploit, Powershell Empire e pth-winexe richiedono solo l’hash, non la password.
  2. WMI: il metodo più stealthy, ma richiede che il servizio WMI sia abilitato. Phineas Fisher ha utilizzato wmiexec.py, pth-wmis, Powershell Empire’s invoke_wmi o il comando integrato di Windows wmic. Tutti tranne wmic richiedono solo l’hash.
  3. PSRemoting: se abilitato, è molto conveniente da utilizzare, soprattutto se si utilizza Powershell per tutto.
  4. Scheduled Tasks: consente di eseguire programmi remoti con at e schtasks.
  5. GPO: se tutti questi protocolli sono disabilitati o bloccati dal firewall, una volta diventati Domain Admin, si può utilizzare GPO per eseguire script di login, installare un MSI, eseguire un’attività pianificata o, come nel caso del computer di Mauro Romeo, utilizzare GPO per abilitare WMI e aprire il firewall.

Per quanto riguarda la diffusione “in place”, Phineas Fisher ha utilizzato principalmente due tecniche:

  1. Token Stealing: una volta acquisito l’accesso amministrativo su un computer, è possibile utilizzare i token degli altri utenti per accedere alle risorse nel dominio. Phineas Fisher ha utilizzato Incognito e i comandi di token::* di Mimikatz.
  2. MS14-068: è possibile sfruttare un bug di convalida in Kerberos per generare ticket di Domain Admin.

Persistenza e ricognizione interna

Nella sesta parte del racconto di Phineas Fisher sulla sua violazione di Hacking Team, egli affronta il tema della persistenza e della ricognizione interna.

La persistenza è essenziale per mantenere l’accesso ad un sistema dopo che è stato violato. Tuttavia, Phineas Fisher afferma che non è necessaria quando si mira a colpire le aziende, poiché queste non si fermano mai. Egli usa una tecnica di “persistenza” in stile Duqu 2 che consiste nell’esecuzione in RAM su un paio di server ad alta disponibilità. In caso di riavvio simultaneo dei server, egli ha password e un “golden ticket” come accesso di backup. Phineas Fisher invita a leggere maggiori informazioni sulle diverse tecniche di persistenza per Windows nei link forniti.

Per la ricognizione interna di reti Windows, Phineas Fisher consiglia l’utilizzo di Powerview, uno strumento che consente di comprendere a fondo le reti Windows. Egli consiglia di leggere tutto ciò che è stato scritto dall’autore dell’outil. Powershell è un altro strumento molto potente per la ricognizione interna. Inoltre, esistono ancora molti server Windows 2000 e 2003 privi di Powershell, quindi è necessario imparare le vecchie tecniche, come ad esempio con programmi come netview.exe o il comando “net view” di Windows. Phineas Fisher elenca alcune tecniche che preferisce utilizzare, come il download di un elenco di nomi di file, la lettura di email, la lettura di SharePoint, l’Active Directory e la sorveglianza dei dipendenti.

La sua attività preferita è la caccia ai sysadmin. Spiando Christian Pozzi, uno dei sysadmin di Hacking Team, ha ottenuto accesso ad un server Nagios che gli ha permesso di accedere alla rete di sviluppo con il codice sorgente di RCS. Con una semplice combinazione di Get-Keystrokes e Get-TimedScreenshot da PowerSploit, Do-Exfiltration da nishang e GPO, si può spiare qualsiasi dipendente, o addirittura l’intero dominio.

Phineas Fisher ha poi notato che mancava ancora l’accesso alla Rete Sviluppo, quindi ha iniziato a cercare tra i computer di Mauro Romeo e Christian Pozzi per capire come amministravano quella rete e se c’erano altri sistemi interessanti da investigare. Tutto ciò che gli serviva era alla portata di mano.