
Indagando su questioni legate al phishing, botnet, transazioni fraudolente e gruppi di hacker criminali, gli esperti di Group-IB utilizzano da anni l'analisi grafica per identificare vari tipi di connessioni. In diversi casi ci sono specifici set di dati, algoritmi di rilevamento delle connessioni e interfacce progettate per compiti specifici. Tutti questi strumenti sono stati sviluppati internamente da Group-IB e erano accessibili solo ai nostri dipendenti.
L'analisi grafica dell'infrastruttura di rete (grafico di rete) è stato il primo strumento interno che abbiamo integrato in tutti i prodotti pubblici dell'azienda. Prima di creare il nostro grafico di rete, abbiamo analizzato molte soluzioni simili sul mercato e non abbiamo trovato alcun prodotto che soddisfacesse le nostre esigenze. In questo articolo parleremo di come abbiamo creato il grafico di rete, come lo utilizziamo e quali difficoltà abbiamo affrontato.
Dmitry Volkov, CTO di Group-IB e Responsabile della Cyber Intelligence
Quali sono le funzionalità del grafico di rete di Group-IB?
Indagini
Sin dalla sua fondazione nel 2003, Group-IB ha posto come obiettivo principale l'identificazione, la deanonimizzazione e il perseguimento di criminali informatici. Nessuna indagine su attacchi informatici si è svolta senza un'analisi dell'infrastruttura di rete degli aggressori. All'inizio del nostro percorso, si trattava di un lavoro piuttosto laborioso e "manuale" alla ricerca di legami utili per l'identificazione dei colpevoli: informazioni sui nomi di dominio, indirizzi IP, impronte digitali dei server e altro.
La maggior parte degli attaccanti cerca di operare nella massima anonimato online. Tuttavia, come tutti, commettono errori. L'obiettivo principale di tale analisi è trovare progetti storici "bianchi" o "grigi" degli aggressori che presentano interconnessioni con le infrastrutture dannose utilizzate nel recente incidente che stiamo indagando. Se riusciamo a scoprire i "progetti bianchi", solitamente diventa un compito banale identificare l'attaccante. Nel caso dei "grigi", la ricerca richiede più tempo e sforzi, poiché i loro proprietari tentano di anonimizzare o nascondere i dati di registrazione, ma le possibilità rimangono comunque piuttosto alte. Generalmente, all'inizio della loro attività criminale, gli attaccanti prestano meno attenzione alla propria sicurezza e fanno più errori; quindi, più in profondità riesci a immergerti nella storia, maggiori saranno le possibilità di un'indagine di successo. È proprio per questo che un grafo di rete con una buona storia è un elemento estremamente importante di tale indagine. In termini semplici, più dati storici possiede un'azienda, migliore sarà il suo grafo. Supponiamo che una storia di 5 anni possa contribuire a risolvere, per così dire, 1-2 crimini su 10, mentre una storia di 15 anni offre la possibilità di risolvere tutti e dieci.
Rilevamento di phishing e frodi
Ogni volta che riceviamo un link sospetto per phishing, risorse fraudolente o pirati, costruiamo automaticamente un grafo di risorse di rete collegate e controlliamo tutti gli host trovati per contenuti simili. Questo ci consente di individuare sia i vecchi siti di phishing che sono stati attivi ma sconosciuti, sia i nuovi siti preparati per attacchi futuri ma ancora non utilizzati. Un esempio basilare, che si verifica abbastanza frequentemente: abbiamo trovato un sito di phishing su un server con soli 5 siti. Controllando ciascuno di essi, troviamo contenuti di phishing anche sugli altri siti, il che ci consente di bloccare 5 invece di 1.
Ricerca di backend
Questo processo è necessario per stabilire dove si trova realmente il server malevolo.
Il 99% dei card shop, dei forum hacker, di molteplici risorse di phishing e di altri server dannosi si nascondono sia dietro i propri server proxy che dietro i proxy di servizi legittimi, come Cloudflare. La conoscenza del backend reale è fondamentale per le indagini: diventa noto il provider di hosting da cui è possibile sequestrare il server, offrendo l'opportunità di costruire collegamenti con altri progetti dannosi.
Ad esempio, si ha un sito di phishing per la raccolta di dati sulle carte di credito, che risolve in un indirizzo IP 11.11.11.11, e un indirizzo del card shop, che risolve in un indirizzo IP 22.22.22.22. Durante l'analisi, può emergere che sia il sito di phishing che il card shop condividono l'indirizzo IP del backend, ad esempio 33.33.33.33. Queste informazioni consentono di stabilire un collegamento tra gli attacchi di phishing e il card shop dove potrebbero vendere i dati delle carte di credito.
Correlazione degli eventi
Quando hai due allerta diverse (ad esempio, su IDS) con diversi malware e diversi server per gestire l'attacco, le consideri come due eventi indipendenti. Ma se c'è una buona connessione tra le infrastrutture dannose, diventa chiaro che non sono attacchi diversi, ma fasi di un attacco più complesso e multilivello. E se uno degli eventi è già attribuito a un gruppo di aggressori, anche il secondo può essere attribuito a quel gruppo. Certamente, il processo di attribuzione è significativamente più complesso, quindi considera quanto scritto come un semplice esempio.
Arricchimento degli indicatori
Non ci soffermeremo troppo su questo, poiché è lo scenario più comune di utilizzo dei grafici nella cybersicurezza: fornisci un indicatore in ingresso e ricevi un array di indicatori correlati in uscita.
Identificazione dei modelli
L'identificazione dei modelli è fondamentale per un'adeguata attività di hunting. I grafi non solo permettono di individuare elementi correlati, ma anche di mettere in luce proprietà comuni che caratterizzano determinati gruppi di hacker. Conoscere tali segni distintivi consente di riconoscere l'infrastruttura degli attaccanti già nella fase di preparazione, senza necessità di prove, come e-mail di phishing o malware.
Perché abbiamo creato il nostro grafo di rete?
Ribadisco che abbiamo valutato soluzioni da diversi fornitori, prima di concludere che fosse necessario sviluppare uno strumento nostro, capace di quello che non offre alcun prodotto esistente. La sua realizzazione ha richiesto diversi anni, durante i quali lo abbiamo modificato completamente più volte. Tuttavia, nonostante il lungo periodo di sviluppo, non abbiamo ancora trovato alcun equivalente che soddisfacesse le nostre esigenze. Con il nostro prodotto siamo stati in grado di risolvere praticamente tutti i problemi che abbiamo riscontrato nei grafi di rete esistenti. Di seguito esamineremo questi problemi in dettaglio:
Problema
Soluzione
Mancanza di fornitori con diverse collezioni di dati: domini, DNS passivi, SSL passivi, record DNS, porte aperte, servizi attivi sulle porte, file che interagiscono con nomi di dominio e indirizzi IP. Spiegazione. Di solito, i fornitori offrono tipologie di dati separate e, per ottenere un quadro completo, è necessario acquistare abbonamenti da tutti. Tuttavia, anche in questo caso non sempre è possibile ottenere tutti i dati: alcuni fornitori di SSL passivo forniscono dati solo sui certificati emessi da CA fidate, mentre la copertura dei certificati auto-firmati è estremamente scarsa. Altri forniscono dati anche sui certificati auto-firmati, ma li raccolgono solo dalle porte standard.
Abbiamo raccolto tutte le collezioni sopra menzionate autonomamente. Ad esempio, per la raccolta di dati sui certificati SSL, abbiamo sviluppato un servizio che li raccoglie sia da CA fidate che attraverso la scansione dell'intero spazio IPv4. I certificati sono stati raccolti non solo dagli IP, ma anche da tutti i domini e sottodomini del nostro database: se hai un dominio example.com e il suo sottodominio E tutti si risolvono in IP 1.1.1.1, quindi quando si tenta di ottenere un certificato SSL dalla porta 443 per IP, dominio e sottodominio, si possono ottenere tre risultati diversi. Per raccogliere dati sulle porte aperte e sui servizi attivi, abbiamo dovuto creare un nostro sistema di scansione distribuito, poiché gli indirizzi IP dei server di scansione di altri servizi erano spesso 'in blacklist'. Anche i nostri server di scansione finiscono in blacklist, ma il risultato nella rilevazione dei servizi di cui abbiamo bisogno è migliore rispetto a chi scansiona semplicemente il maggior numero possibile di porte e vende l'accesso a questi dati.
Assenza di accesso all'intero database di registrazioni storiche. Spiegazione. Ogni fornitore normale ha una buona storia accumulata, ma per motivi naturali non abbiamo potuto ottenere l'accesso a tutti i dati storici come clienti. Cioè, è possibile ottenere tutta la storia per una singola registrazione, ad esempio, per un dominio o un indirizzo IP, ma non è possibile vedere la storia complessiva — e senza questo non si può avere una visione completa.
Per raccogliere il maggior numero possibile di registrazioni storiche sui domini, abbiamo acquistato diverse basi di dati, esaminato numerose risorse aperte che avevano questa storia (fortunatamente ce n'erano molte), e raggiunto accordi con i registrar dei nomi di dominio. Tutti gli aggiornamenti nelle nostre collezioni, naturalmente, sono conservati con la storia completa delle modifiche.
Tutte le soluzioni esistenti consentono di costruire il grafo manualmente. Spiegazione. Supponiamo che tu abbia acquistato numerosi abbonamenti da tutti i possibili fornitori di dati (di solito definiti "arricchitori"). Quando hai bisogno di costruire un grafo, fornisci manualmente il comando per completare il collegamento dal nodo desiderato, successivamente scegli gli elementi emersi e dai il comando per costruire i collegamenti da essi, e così via. In questo caso, la responsabilità per la qualità della costruzione del grafo ricade interamente sulla persona.
Abbiamo implementato la costruzione automatica dei grafi. Cioè, se hai bisogno di creare un grafo, le connessioni dal primo elemento vengono generate automaticamente, e anche da tutti i successivi. L'esperto deve solo indicare la profondità da cui costruire il grafo. Il processo di costruzione automatica dei grafi è semplice, ma altri fornitori non lo realizzano perché produce un'enorme quantità di risultati non pertinenti, e abbiamo dovuto tenere conto anche di questo difetto (vedi sotto).
Il numero eccessivo di risultati irrilevanti è un problema comune in tutti i grafi degli elementi di rete. Spiegazione. Ad esempio, un "dominio problematico" (coinvolto in un attacco) può essere collegato a un server che negli ultimi 10 anni ha avuto legami con 500 altri domini. Quando si aggiungono manualmente o si costruisce automaticamente il grafo, tutti questi 500 domini devono apparire nel grafo, anche se non sono correlati all'attacco. Oppure, ad esempio, si controlla un indicatore IP da un rapporto di un fornitore di sicurezza. Di solito, tali rapporti arrivano con un notevole ritardo e spesso coprono un anno o più. È probabile che, al momento della lettura del rapporto, il server con quell'indirizzo IP sia già stato affittato a qualcun altro con collegamenti diversi, e la costruzione del grafo porterà a ottenere nuovamente risultati irrilevanti.
Abbiamo addestrato il sistema a identificare elementi irrilevanti usando la stessa logica che i nostri esperti impiegavano manualmente. Ad esempio, stai controllando un dominio scadente example.com, che attualmente si risolve in IP 11.11.11.11, mentre un mese fa si risolveva in IP 22.22.22.22. Con l'IP 11.11.11.11, oltre al dominio example.com, è collegato anche example.ru, mentre con l'IP 22.22.22.22 sono collegati 25.000 altri domini. Il sistema, come un umano, comprende che l'11.11.11.11 è probabilmente un server dedicato e, poiché il dominio example.ru è simile per scrittura a example.com, con una grande probabilità sono correlati e devono essere presenti nel grafo; tuttavia, l'IP 22.22.22.22 appartiene a un hosting condiviso, quindi non è necessario includere tutti i suoi domini nel grafo, a meno che non ci siano altre connessioni che mostrano che uno di questi 25.000 domini deve essere incluso (ad esempio, example.net). Prima che il sistema comprenda che le connessioni devono essere interrotte e non includere parte degli elementi nel grafo, considera numerosi attributi degli elementi e dei cluster in cui questi elementi sono raggruppati, così come la robustezza delle connessioni attuali. Ad esempio, se abbiamo un piccolo cluster nel grafo (50 elementi) che include un dominio scadente e un altro grande cluster (5.000 elementi) e entrambi i cluster sono collegati da un legame con una robustezza molto bassa (peso), questa connessione verrà interrotta e gli elementi del grande cluster saranno rimossi. Ma se ci sono molte connessioni tra il piccolo e il grande cluster e la loro robustezza aumenta gradualmente, in questo caso la connessione non verrà interrotta e nel grafo rimarranno gli elementi necessari di entrambi i cluster.
Non viene considerato l'intervallo di possesso del server e del dominio. Spiegazione. Il termine di registrazione dei "cattivi domini" scade prima o poi, e vengono nuovamente acquistati per scopi dannosi o legittimi. Anche gli hosting bulletproof affittano i server a diversi hacker, quindi è fondamentale conoscere e tenere in considerazione l'intervallo in cui ciascun dominio/server è stato gestito da un unico proprietario. Ci troviamo spesso di fronte a situazioni in cui un server con IP 11.11.11.11 è ora utilizzato come C&C per un banchiere bot, mentre solo due mesi fa era controllato da un ransomware. Se si stabilisce un collegamento senza considerare gli intervalli di possesso, sembrerà che ci sia una connessione tra i proprietari della rete bot bancaria e i ransomware, mentre in realtà non c'è. In questo lavoro, un errore di questo tipo è critico.
Abbiamo insegnato al sistema a determinare gli intervalli di proprietà. Per i domini questo è relativamente semplice, poiché nel whois sono spesso indicate le date di inizio e di scadenza della registrazione e, quando c'è una storia completa delle modifiche whois, determinare gli intervalli è facile. Quando un dominio non è scaduto, ma la sua gestione è stata trasferita ad altri proprietari, è possibile tracciarlo anche in questo caso. Per i certificati SSL non c'è questo problema, poiché viene emesso una sola volta, non viene rinnovato e non può essere trasferito. Tuttavia, per i certificati autofirmati non ci si può fidare delle date indicate nella validità del certificato, perché è possibile generare un certificato SSL oggi e indicare la data di inizio della validità del certificato dal 2010. Determinare gli intervalli di proprietà per i server è il più complesso, poiché le date e le durate di affitto sono disponibili solo presso i fornitori di hosting. Per determinare il periodo di proprietà di un server, abbiamo iniziato a utilizzare i risultati della scansione delle porte e della creazione di impronte delle applicazioni in esecuzione sulle porte. Sulla base di queste informazioni, possiamo dire con una discreta precisione quando il proprietario di un server è cambiato.
Poche relazioni. Spiegazione. Oggi non è nemmeno un problema ottenere gratuitamente un elenco di domini in cui è specificato un determinato indirizzo e-mail, o scoprire tutti i domini associati a un certo indirizzo IP. Tuttavia, quando si parla di hacker che fanno tutto il possibile per rimanere nell'ombra, sono necessari «trucchi» aggiuntivi per individuare nuove proprietà e costruire nuove relazioni.
Abbiamo dedicato molto tempo alla ricerca di come estrarre dati non disponibili tramite metodi tradizionali. Non possiamo descrivere qui come funziona, per ragioni ovvie, ma in determinate circostanze gli hacker commettono errori durante la registrazione dei domini o l'affitto e la configurazione dei server, permettendo così di scoprire indirizzi email, pseudonimi di hacker e indirizzi di backend. Maggiore è il numero di relazioni che estrai, più precisamente puoi costruire i grafi.
Come funziona il nostro grafo
Per iniziare a utilizzare il grafo di rete, è necessario inserire nella barra di ricerca un dominio, un indirizzo IP, un'email o un'impronta di certificato SSL. Ci sono tre condizioni che l'analista può gestire: tempo, profondità dei passaggi e pulizia.
![]()
Tempo
Tempo – data o intervallo in cui l'elemento ricercato è stato utilizzato per scopi dannosi. Se non si specifica questo parametro, il sistema determinerà automaticamente l'ultimo intervallo di possesso di questa risorsa. Ad esempio, l'11 luglio, la compagnia Eset ha pubblicato su come Buhtrap utilizza exploit 0-day per il cyber spionaggio. Alla fine del rapporto ci sono 6 indicatori. Uno di questi, secure-telemetry[.]net, è stato nuovamente registrato il 16 luglio. Pertanto, se costruisci un grafico dopo il 16 luglio, otterrai risultati non pertinenti. Ma se specifichi che questo dominio è stato utilizzato fino a quella data, il grafico includerà 126 nuovi domini e 69 indirizzi IP non presenti nel rapporto Eset:
- ukrfreshnews[.]com
- unian-search[.]com
- vesti-world[.]info
- runewsmeta[.]com
- foxnewsmeta[.]biz
- sobesednik-meta[.]info
- rian-ua[.]net
- e altro.
Oltre agli indicatori di rete, troviamo subito collegamenti con file dannosi che erano connessi a questa infrastruttura e tag che suggeriscono che sono stati utilizzati Meterpreter, AZORult.
La cosa migliore è che ottieni questo risultato in un secondo e non devi più passare giorni ad analizzare i dati. Senza dubbio, questo approccio riduce drasticamente il tempo per le indagini, che spesso risulta essere cruciale.

Il numero di passaggi o la profondità della ricorsione con cui verrà costruito il grafo
Per impostazione predefinita, la profondità è pari a 3. Ciò significa che saranno trovati tutti gli elementi direttamente correlati all'elemento ricercato, poi per ciascun nuovo elemento verranno create nuove connessioni con altri elementi, e infine da nuovi elementi del passo precedente sorgeranno nuovi elementi.
Prendiamo come esempio un caso non correlato ad APT e a exploit zero-day. Di recente, su Habr, è stato descritto un caso interessante di frode legato alle criptovalute. Nel rapporto viene menzionato il dominio — themcx[.]co, utilizzato dai truffatori per ospitare un sito apparentemente di cambio Miner Coin Exchange, e phone-lookup[.]xyz, per attrarre traffico.
Dalla descrizione è chiaro che lo schema richiede un'infrastruttura piuttosto ampia per attirare traffico verso risorse fraudolente. Abbiamo deciso di esaminare questa infrastruttura costruendo un grafo in 4 passi. Alla fine, abbiamo ottenuto un grafo con 230 domini e 39 indirizzi IP. Successivamente, suddividiamo i domini in 2 categorie: quelli che sembrano servizi di criptovalute e quelli destinati a generare traffico tramite servizi di verifica telefonica.
Collegati alle criptovalute
Collegati ai servizi di verifica telefonica
coinkeeper[.]cc
caller-record[.]site.
mcxwallet[.]co
phone-records[.]space
btcnoise[.]com
fone-uncover[.]xyz
cryptominer[.]watch
number-uncover[.]info

Pulizia
Per impostazione predefinita, l'opzione "Pulizia del grafo" è attivata e tutti gli elementi non pertinenti verranno rimossi dal grafo. A proposito, è stata utilizzata anche in tutti i precedenti esempi. Anticipando la domanda naturale: come posso fare per non eliminare qualcosa di importante? Rispondo: per gli analisti che amano costruire grafi manualmente, la pulizia automatizzata può essere disattivata e il numero di passi può essere impostato su 1. Successivamente, l'analista potrà completare il grafo con gli elementi di cui ha bisogno e rimuovere gli elementi non pertinenti alla task assegnata dal grafo.
Nella sezione analitica sono già disponibili la cronologia delle modifiche di whois, DNS, così come le porte aperte e i servizi avviati su di esse.

Phishing finanziario
Abbiamo esaminato le azioni di un gruppo APT che, per diversi anni, ha condotto attacchi di phishing contro clienti di vari banche in diverse regioni. Un tratto distintivo di questo gruppo era la registrazione di domini molto simili ai nomi di banche reali, e la maggior parte dei siti di phishing presentava lo stesso design; le differenze erano solo nei nomi delle banche e nei loro loghi.

In questo caso, l'analisi grafica automatizzata ci è stata di grande aiuto. Prendendo uno dei loro domini - lloydsbnk-uk[.]com, abbiamo costruito in pochi secondi un grafo di profondità 3 che ha rivelato oltre 250 domini pericolosi utilizzati da questo gruppo dal 2015 e ancora in uso. Alcuni di questi domini sono stati già acquisiti dalle banche, ma dai registri storici risulta che in precedenza erano stati registrati dagli attaccanti.
Per maggiore chiarezza, nella figura è mostrato un grafo di profondità 2.
È interessante notare che già nel 2019 gli aggressori avevano modificato la loro tattica, registrando non solo domini bancari per l'hosting di web phishing, ma anche domini di varie aziende di consulenza per l'invio di email di phishing. Ad esempio, i domini swift-department.com, saudconsultancy.com, vbgrigoryanpartners.com.

Cobalt gang
Nel dicembre 2018, il gruppo hacker Cobalt, specializzato in attacchi mirati alle banche, ha effettuato un invio di email a nome della Banca Nazionale del Kazakistan.

Le email contenevano collegamenti a hXXps://nationalbank.bz/Doc/Prikaz.doc. Il documento scaricabile conteneva una macro che avviava powershell, cercando di scaricare ed eseguire un file da hXXp://wateroilclub.com/file/dwm.exe in %Temp%einmrmdmy.exe. Il file %Temp%einmrmdmy.exe, noto anche come dwm.exe, è il CobInt stager, progettato per interagire con il server hXXp://admvmsopp.com/rilruietguadvtoefmuy.
Immagina di non avere la possibilità di ricevere queste email di phishing e di condurre un'analisi completa dei file dannosi. Il grafico relativo al dominio malevolo nationalbank[.]bz mostra immediatamente i legami con altri domini malevoli, attribuendoli a un gruppo e indicando quali file sono stati utilizzati nell'attacco.

Prendiamo da questo grafo l'indirizzo IP 46.173.219[.]152 e costruiamo un grafo in un solo passaggio disattivando la pulizia. Vi sono collegati 40 domini, ad esempio, bl0ckchain[.]ug
paypal.co.uk.qlg6[.]pw
cryptoelips[.]com
Stando ai nomi dei domini, sembra che vengano utilizzati in schemi fraudolenti, ma l'algoritmo di pulizia ha capito che non sono correlati a questo attacco e non li ha inclusi nel grafo, semplificando notevolmente il processo di analisi e attribuzione.

Se ricostruiamo il grafo per nationalbank[.]bz, disattivando l'algoritmo di pulizia del grafo, si ottengono oltre 500 elementi, la maggior parte dei quali non ha attinenza né con il gruppo Cobalt né con i loro attacchi. Un esempio di come appare questo grafo è riportato di seguito:

Conclusione
Dopo anni di perfezionamento, test in indagini reali, ricerca sulle minacce e caccia agli attaccanti, siamo riusciti non solo a creare uno strumento unico, ma anche a cambiare l'atteggiamento degli esperti all'interno dell'azienda. Inizialmente, gli esperti tecnici desideravano un controllo totale sul processo di costruzione del grafo. Convincerli che la costruzione automatica del grafo potesse fare questo meglio di una persona con anni di esperienza è stata un'impresa estremamente difficile. Tutto è cambiato col tempo e con numerosi controlli 'manuali' dei risultati forniti dal grafo. Ora i nostri esperti non solo si fidano del sistema, ma utilizzano anche i risultati ottenuti nella loro attività quotidiana. Questa tecnologia è integrata in ciascuno dei nostri sistemi e consente di identificare meglio le minacce di qualsiasi tipo. L'interfaccia per l'analisi manuale del grafo è incorporata in tutti i prodotti di Group-IB e amplia notevolmente le possibilità di caccia al cybercrimine. Questo è confermato dalle recensioni degli analisti da parte dei nostri clienti. E noi, da parte nostra, continuiamo ad arricchire il grafo con dati e a lavorare su nuovi algoritmi che utilizzano intelligenza artificiale, per ottenere un grafo di rete il più preciso possibile.
Fonte: habr.com
