CyberProbe, l’identificazione di infrastrutture maligne su larga scala

CyberProbe è diviso in 2 moduli complementari, il primo si occupa di generare le impronte digitali dei server (Adversarial Fingerprint Generation – AFG), mentre il secondo è capace di scansionare (Scanning Module) e identificare i sistemi che hanno delle comunicazioni simili a quelle identificate nel modulo AFG.

Adversarial Fingerprint GenerationPer fingerprint si intende una serie di richieste e risposte di rete che possono identificare univocamente un tipo di server e l’operazione a cui appartiene.
Ad esempio ci sono tecniche di fingerprinting utilizzate per identificare il sistema operativo di una macchina collegata ad una rete. Inviando diversi pacchetti e studiando le risposte è possibile, ad esempio, identificare se un host utilizza il sistema operativo Linux, MacOS o Windows, il tutto con un buon livello di precisione. In questo tipo di scenario un analista che vuole creare dei fingerprint per un sistema operativo, per esempio Android, dovrà collegare un dispositivo con OS Android alla rete, inviando quante richieste vuole verso il device. Una volta generato un fingerprint di questo tipo e inviato ad un qualsiasi dispositivo, questo produrrà delle risposte che consentiranno di classificare il sistema in uso come appartenente alla categoria Android o meno.
Nel caso di CyberProbe, i fingerprint generati si chiamano “adversarial”, questo aggettivo sottolinea le difficoltà degli analisti che hanno a disposizione un numero limitato di richiesta da poter inviare. Trovandosi in un territorio “avverso” è infatti molto alta la probabilità di essere scoperti dai cybercriminali, che potrebbero mettere in atto tattiche e diversivi per bloccare la generazione dei fingerprint. Per questa ragione gli autori di CyberProbe utilizzano come base di partenza catture di traffico di rete effettuate da un determinato tipo di malware eseguito in un ambiente protetto (sandbox), con accesso ad Internet tramite VPN e con diversi punti di uscita localizzati nei diversi continenti. CyberProbe estrapola automaticamente la comunicazione del malware verso uno o più server, interpretando la cattura del traffico di rete. A questo punto il sistema effettua una ripetizione della comunicazione, facendosi passare così per una macchina infetta. Se riceve una risposta significa che il server è ancora attivo.

CyberProbe, l’identificazione di infrastrutture maligne su larga scala

Come funziona CyberProbe: nello schema sono evidenziate due operazioni di CyberCrime, una contiene solo exploit server (colore nero), la seconda contiene invece server di monetizzazione e Command and Control (arancio e rosso). CyberProbe è in grado di generare fingerprint per ogni operazione e tipologia di server e, tramite il risultato della scansione, classifica i server scansionati nelle rispettive operazioni o come benigni

Questo server viene anche chiamato seed-server (server seme), dal quale ha inizio la generazione del fingerprint. Prendendo la richiesta che ha inviato il malware, CyberProbe si occupa di cambiare il valore di alcuni campi, modificando determinate opzioni, inviando nuovamente una richiesta ed esaminando la successiva risposta.
Una volta raggiunto un grado di confidenza adeguato da parte del sistema è possibile generare il fingerprint.

CyberProbe, l’identificazione di infrastrutture maligne su larga scala

L’immagine mostra le due componenti di CyberProbe: Adversarial Fingerprint Generation (di colore verde) e Scanning (colore azzurro)

Un fingerprint si compone di 3 elementi: una funzione di selezione della porta (TCP o UDP) verso la quale verrà inviata la comunicazione, una di generazione delle richieste da inviare (probes) e una funzione di classificazione delle risposte. Quest’ultima viene tradotta automaticamente in una signature per i più noti IDS come Snort e Suricata.

Di seguito un esempio di fingerprint per l’operazione chiamata ClickPayz:

Clickpayz1
Probe: GET /td?aid=e9xmkgg5h6&said=26427
Snort Signature:
content: “302”; http_stat_code;
content: “\r\n\r\nLoading…”

Come è possibile osservare il probe che viene inviato è una richiesta HTTP GET con dei particolari parametri. CyberProbe invia questa richiesta verso tutti gli indirizzi IP attivi sulla porta 80 di Internet e, se riceve come risposta il codice di stato HTTP 302 e nel contenuto si trova la stringa “Loading…”, significa che il server appartiene all’operazione sotto analisi.
CyberProbe è in grado di produrre fingerprint per i più comuni protocolli di trasporto utilizzati dal malware come TCP, UDP e per i protocolli di livello applicazione, come ad esempio HTTP. Inoltre funziona anche se la comunicazione è criptata, poiché molto spesso esistono dei campi di messaggi o interi messaggi che restano costanti seppur criptati. Ad esempio, è stato realizzato un fingerprint di una variante del malware Zeroaccess che utilizza comunicazioni UDP criptate grazie ad alcuni pattern che si ripetevano nei messaggi inviati, senza doverli decriptare.