Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Nell'indagare casi legati al phishing, botnet, transazioni fraudolente e gruppi di hacker criminali, gli esperti di Group-IB utilizzano da molti anni l'analisi grafica per identificare vari tipi di collegamenti. In diversi casi esistono i propri dataset, i propri algoritmi per la rilevazione delle connessioni e interfacce progettate per compiti specifici. Tutti questi strumenti sono stati sviluppati internamente da Group-IB e sono stati disponibili solo per i 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 sviluppi simili sul mercato e non abbiamo trovato alcun prodotto che soddisfasse le nostre esigenze specifiche. In questo articolo parleremo di come abbiamo creato il grafico di rete, come lo utilizziamo e quali difficoltà abbiamo incontrato.

Dmitrij Volkov, CTO di Group-IB e capo del settore cyber intelligence

Cosa può fare il grafico di rete di Group-IB?

Indagini

Sin dalla fondazione di Group-IB nel 2003 fino ad oggi, l'identificazione, la de-anonimizzazione e la responsabilizzazione dei criminali informatici sono la nostra principale priorità. Nessuna indagine su un attacco informatico è stata effettuata senza l'analisi dell'infrastruttura di rete degli aggressori. All'inizio del nostro percorso, si trattava di un lavoro piuttosto meticoloso e "manuale" per trovare le connessioni in grado di aiutare a identificare i criminali: informazioni sui nomi di dominio, indirizzi IP, impronte digitali dei server, ecc.

La maggior parte degli attaccanti cerca di agire in modo il più anonimo possibile online. Tuttavia, come tutti gli esseri umani, commettono errori. L'obiettivo principale di tale analisi è trovare progetti storici "bianchi" o "grigi" dei criminali informatici, che presentano intersezioni con l'infrastruttura dannosa utilizzata nell'incidente attuale che stiamo indagando. Se riusciamo a scoprire progetti "bianchi", trovare l'attaccante diventa generalmente un compito banale. Nel caso dei progetti "grigi", la ricerca richiede più tempo ed effort, poiché i loro proprietari cercano di anonimizzare o nascondere i dati di registrazione, ma le possibilità rimangono piuttosto alte. Di solito, all'inizio della propria attività criminale, gli attaccanti prestano meno attenzione alla propria sicurezza e fanno più errori, quindi più in profondità riusciamo a immergerci nella storia, maggiori saranno le possibilità di un'indagine di successo. Proprio per questo motivo, un grafo di rete con una buona storia è un elemento estremamente importante per tale indagine. In termini semplici, più dati storici approfonditi possiede un'azienda, migliore sarà il suo grafo. Supponiamo che una storia di 5 anni possa aiutare a risolvere, in linea di massima, 1-2 reati 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, siti fraudolenti o piratati, costruiamo automaticamente un grafo di risorse di rete correlate e controlliamo tutti gli host trovati per contenuti simili. Questo ci consente di trovare sia vecchi siti phishing che erano attivi ma sconosciuti, sia siti completamente nuovi che sono stati preparati per attacchi futuri ma non sono ancora stati utilizzati. Un esempio semplice, che si incontra abbastanza spesso: abbiamo trovato un sito phishing su un server che ospita solo 5 siti. Controllando ognuno di essi, troviamo contenuti di phishing anche sugli altri siti, il che significa che possiamo bloccare 5 siti invece di 1.

Ricerca di backend

Questo processo è necessario per stabilire dove si trova realmente il server maligno.
Il 99% dei card shop, dei forum hacker, molti siti di phishing e altri server dannosi si nascondono sia dietro i propri server proxy sia dietro i proxy di servizi legittimi, come Cloudflare. La conoscenza del back-end reale è molto importante per le indagini: si scopre il fornitore di hosting da cui è possibile sequestrare il server e si ha la possibilità di stabilire collegamenti con altri progetti dannosi.

Ad esempio, supponiamo che tu abbia un sito di phishing per raccogliere i dati delle carte di credito, che si risolve nell'indirizzo IP 11.11.11.11, e un indirizzo del card shop, che si risolve nell'indirizzo IP 22.22.22.22. Durante l'analisi, potrebbe emergere che sia il sito di phishing che il card shop condividono lo stesso indirizzo IP back-end, ad esempio 33.33.33.33. Queste informazioni consentono di stabilire un collegamento tra gli attacchi di phishing e il card shop, dove potrebbero essere venduti i dati delle carte di credito.

Correlazione degli eventi

Quando hai due diversi eventi scatenati (ad esempio, su IDS) con malware diverso e server diversi per gestire l'attacco, li considererai come due eventi indipendenti. Ma se c'è una buona connessione tra le infrastrutture dannose, diventa chiaro che non si tratta di attacchi diversi, ma di fasi di un attacco più complesso e multilivello. E se uno degli eventi è già attributo a un certo gruppo di aggressori, anche il secondo può essere attribuito a quel stesso gruppo. Naturalmente, il processo di attribuzione è notevolmente più complesso, quindi considera quanto scritto come un semplice esempio.

Arricchimento degli indicatori

Non ci soffermeremo troppo su questo, poiché è il caso d'uso più comune dei grafo nella cybersicurezza: si fornisce un indicatore come input e si ottiene un array di indicatori correlati come output.

Rilevamento dei modelli

Il rilevamento dei modelli è necessario per una caccia efficace. I grafi non solo consentono di trovare elementi correlati, ma anche di identificare proprietà comuni che caratterizzano un certo gruppo di hacker. Conoscere tali segni unici consente di riconoscere l'infrastruttura degli aggressori già nella fase di preparazione e senza prove che confermino l'attacco, come email di phishing o software dannoso.

Perché abbiamo creato il nostro grafo di rete?

Ripeto che abbiamo esaminato le soluzioni di diversi fornitori prima di concludere che era necessario sviluppare uno strumento interno in grado di fare ciò che nessun prodotto esistente può offrire. La sua creazione ha richiesto diversi anni, durante i quali l'abbiamo modificato più volte. Tuttavia, nonostante il lungo periodo di sviluppo, non abbiamo ancora trovato un analogo che soddisfi le nostre esigenze. Grazie al nostro prodotto, siamo riusciti a risolvere praticamente tutti i problemi riscontrati nei grafi di rete esistenti. Esamineremo ora questi problemi in dettaglio:

Problema
Soluzione

Mancanza di fornitori con diverse collezioni di dati: domini, passive DNS, passive SSL, record DNS, porte aperte, servizi in esecuzione sulle porte, file che interagiscono con nomi di dominio e indirizzi IP. Chiarimento. Di solito i fornitori offrono tipi di dati separati e, per ottenere un quadro completo, è necessario acquistare abbonamenti da tutti. Ma anche in questo caso non sempre si riesce a ottenere tutti i dati: alcuni fornitori di passive SSL forniscono solo dati sui certificati emessi da CA affidabili, mentre la copertura dei certificati autofirmati è estremamente scarsa. Altri forniscono dati anche sui certificati autofirmati, ma li raccolgono solo da porte standard.
Abbiamo raccolto tutte le collezioni sopra menzionate noi stessi. Ad esempio, per la raccolta di dati sui certificati SSL, abbiamo sviluppato un servizio interno che raccoglie certificati sia da CA affidabili che tramite la scansione dell'intero spazio IPv4. I certificati sono stati raccolti non solo dagli indirizzi IP, ma anche da tutti i domini e sottodomini presenti nel nostro database: se hai un dominio example.com e il suo sottodominio www.example.com e tutti risolvono in IP 1.1.1.1, allora cercando di ottenere un certificato SSL dalla porta 443 tramite IP, dominio e sottodominio puoi ricevere tre risultati differenti. Per raccogliere dati su porte aperte e servizi in esecuzione, abbiamo dovuto creare un nostro sistema di scansione distribuito, perché gli indirizzi IP dei server di scansione di altri servizi spesso si trovano in 'liste nere'. Anche i nostri server di scansione possono finire in 'liste nere', ma il tasso di rilevamento dei servizi necessari è superiore a quello di chi scansiona semplicemente il maggior numero possibile di porte e vende accesso a questi dati.

Mancanza di accesso all'intero database dei registri storici. Spiegazione. Ogni fornitore degno di nota ha una buona storia accumulata, ma per motivi naturali, come cliente non abbiamo potuto ottenere accesso a tutti i dati storici. Vale a dire, è possibile ottenere la storia completa di un record specifico, ad esempio, di un dominio o di un indirizzo IP, ma non è possibile vedere la storia nel suo complesso — e senza questo si perde l'immagine completa.
Per raccogliere il maggior numero possibile di registri storici sui domini, abbiamo acquistato vari database, analizzato numerose risorse aperte che possedevano questa storia (fortunatamente, ce n'erano molte), e ci siamo accordati con i registrar di nomi di dominio. Aggiornamenti delle nostre collezioni proprie, naturalmente, sono conservati con una storia completa delle modifiche.

Tutte le soluzioni esistenti consentono di costruire un grafo in modalità manuale. Spiegazione. Supponiamo che tu abbia acquistato numerosi abbonamenti da tutti i fornitori di dati possibili (di solito chiamati "arricchitori"). Quando hai bisogno di costruire un grafo, dai il comando manualmente per completare a partire dall'elemento di connessione desiderato, successivamente selezioni gli elementi emersi e dai il comando per completare le connessioni da essi e così via. In questo caso, la responsabilità della qualità della costruzione del grafo ricade completamente sulla persona.
Abbiamo realizzato la costruzione automatica dei grafi. Vale a dire, se hai bisogno di costruire un grafo, le connessioni dal primo elemento vengono costruite automaticamente, e così anche da tutti i successivi. Lo specialista deve solo indicare la profondità da cui costruire il grafo. Il processo stesso di costruzione automatica dei grafi è semplice, ma altri fornitori non lo implementano perché genera un enorme numero di risultati non pertinenti e questo difetto ci ha costretto a tenerne conto (vedi sotto).

Un numero elevato di risultati non rilevanti è un problema comune a tutti i grafi di elementi di rete. Spiegazione. Ad esempio, un "dominio maligno" (coinvolto in un attacco) è collegato a un server che negli ultimi 10 anni è stato collegato ad altri 500 domini. Quando si aggiunge manualmente o si costruisce automaticamente un grafo, tutti questi 500 domini devono apparire nel grafo, anche se non sono pertinenti all'attacco. Oppure, ad esempio, controlli un indicatore IP da un report di un fornitore di sicurezza. Di solito, tali report escono con un notevole ritardo e coprono spesso un anno o più. È probabile che, nel momento in cui leggi il report, il server con questo indirizzo IP sia già stato affittato ad altre persone con altre connessioni, e la costruzione del grafo porterà ancora una volta a risultati non rilevanti.
Abbiamo addestrato il sistema a identificare elementi non rilevanti seguendo la stessa logica utilizzata dai nostri esperti manualmente. Ad esempio, controlli il dominio maligno example.com, che ora risolve in IP 11.11.11.11, e un mese fa 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 mila altri domini. Il sistema, come una persona, comprende che 11.11.11.11 è probabilmente un server dedicato, e poiché il dominio example.ru è simile per scrittura a example.com, è molto probabile che siano collegati e debbano apparire nel grafo; mentre 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 mostrino che uno di questi 25 mila domini debba essere incluso (ad esempio, example.net). Prima che il sistema capisca che è necessario interrompere i collegamenti e non includere alcuni elementi nel grafo, tiene conto di molte proprietà degli elementi e dei cluster in cui questi elementi sono raggruppati, oltre alla robustezza dei collegamenti attuali. Ad esempio, se abbiamo un piccolo cluster nel grafo (50 elementi), che include un dominio maligno, e un altro grande cluster (5 mila elementi) e entrambi i cluster sono collegati da un legame (linea) con una robustezza molto bassa (peso), allora quel legame sarà spezzato e gli elementi del grande cluster saranno rimossi. Ma se ci sono molti legami tra il piccolo e il grande cluster e la loro robustezza aumenta gradualmente, in questo caso il legame non sarà spezzato e resteranno nel grafo gli elementi necessari di entrambi i cluster.

Non viene considerato l'intervallo di possesso del server e del dominio. Spiegazione. La registrazione dei "cattivi domini" scade prima o poi, e vengono nuovamente acquistati per scopi dannosi o legittimi. Anche i provider di hosting bulletproof affittano server a vari hacker, quindi è fondamentale sapere e tenere conto dell'intervallo in cui un determinato dominio/server era sotto la gestione di un singolo proprietario. Ci troviamo spesso di fronte a situazioni in cui il server con IP 11.11.11.11 è attualmente usato come C&C per un bot bancario, mentre solo 2 mesi fa era gestito da un ransomware. Se creiamo un collegamento senza considerare gli intervalli di possesso, sembrerà che ci sia una connessione tra i proprietari della rete bot bancaria e gli estorsori, mentre in realtà non c'è. Un errore del genere è critico nel nostro lavoro.
Abbiamo insegnato al sistema a determinare gli intervalli di possesso. Per i domini è relativamente semplice, poiché in chi è presente spesso sono indicate le date di inizio e scadenza della registrazione e, quando c'è la cronologia completa delle modifiche chi è, è facile determinare gli intervalli. Quando un dominio non ha scadenza, ma la sua gestione è stata trasferita ad altri proprietari, è possibile tracciarlo. Non ci sono problemi con i certificati SSL, poiché vengono rilasciati una sola volta, non vengono rinnovati e non vengono trasferiti. Ma nei certificati autofirmati non si possono fidare delle date indicate nei termini di validità, perché è possibile generare un certificato SSL oggi e impostare la data di inizio di validità del certificato al 2010. È più difficile determinare gli intervalli di possesso per i server, poiché solo i provider di hosting hanno le date e i termini di noleggio. Per determinare il periodo di possesso di un server, abbiamo iniziato a utilizzare i risultati della scansione delle porte e della creazione di impronte digitali dei servizi in esecuzione sulle porte. Da queste informazioni possiamo dire con sufficiente precisione quando il proprietario del server è cambiato.

Poche connessioni. Spiegazione. Oggi non è un problema ottenere gratuitamente un elenco di domini in cui è indicato un determinato indirizzo email, o conoscere tutti i domini associati a un determinato indirizzo IP. Ma quando si tratta di hacker che fanno di tutto per essere difficili da rintracciare, servono ulteriori "trucchi" per trovare nuove caratteristiche e costruire nuovi collegamenti.
Abbiamo trascorso molto tempo a esplorare come estrarre dati che non sono accessibili in modo convenzionale. Non possiamo descrivere qui come funziona, per motivi comprensibili, ma in determinate circostanze, gli hacker commettono errori durante la registrazione dei domini o l'affitto e la configurazione dei server, che consentono di scoprire indirizzi email, alias degli hacker e indirizzi di backend. Più relazioni estrai, più preciso sarà il grafo che puoi costruire.

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 oppure l'impronta di un certificato SSL. Ci sono tre condizioni che l'analista può gestire: tempo, profondità dei passaggi e pulizia.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Tempo

Tempo – la data o l'intervallo in cui l'elemento ricercato è stato utilizzato per scopi malevoli. Se questo parametro non viene specificato, il sistema determinerà automaticamente l'ultimo intervallo in cui è stato posseduto tale risorsa. Ad esempio, l'11 luglio la società Eset ha pubblicato un rapporto su come Buhtrap utilizza un exploit zero-day per la cyber-spionaggio. Alla fine del rapporto, ci sono 6 indicatori. Uno di questi, secure-telemetry[.]net, è stato registrato nuovamente il 16 luglio. Quindi, se costruisci il grafo dopo il 16 luglio, riceverai risultati non pertinenti. Ma se specifichi che questo dominio è stato utilizzato prima di questa data, il grafo includerà 126 nuovi domini e 69 indirizzi IP che non sono menzionati nel rapporto di Eset:

  • ukrfreshnews[.]com
  • unian-search[.]com
  • vesti-world[.]info
  • runewsmeta[.]com
  • foxnewsmeta[.]biz
  • sobesednik-meta[.]info
  • rian-ua[.]net
  • e altri.

Oltre agli indicatori di rete, troviamo immediatamente collegamenti a file malevoli che hanno avuto relazioni con questa infrastruttura e tag che ci indicano che sono stati utilizzati Meterpreter e AZORult.

La cosa più straordinaria è che ottieni questo risultato in meno di un secondo e non devi più spendere giorni ad analizzare i dati. Senza dubbio, questo approccio a volte riduce drasticamente il tempo dedicato alle indagini, il che è spesso critico.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Il numero di passaggi o la profondità della ricorsione con cui verrà costruito il grafo

Per impostazione predefinita, la profondità è 3. Ciò significa che dall'elemento ricercato verranno trovati tutti gli elementi direttamente collegati, poi da ciascun nuovo elemento verranno costruiti nuovi collegamenti verso altri elementi, e già da nuovi elementi dell'ultimo passaggio ci saranno nuovi elementi.

Prendiamo un esempio non legato agli exploit APT e 0-day. Recentemente, su Habr, è stato descritto un caso interessante di frode legato alle criptovalute. Nel rapporto si menziona il dominio — themcx[.]co, utilizzato dai truffatori per l'hosting di un sito che fingeva di essere un exchange chiamato Miner Coin Exchange, e phone-lookup[.]xyz, per attirare traffico.

Dalla descrizione, è chiaro che lo schema richiede una struttura piuttosto ampia per attrarre traffico verso risorse fraudolente. Abbiamo deciso di esaminare questa infrastruttura costruendo un grafo in 4 fasi. Alla fine abbiamo ottenuto un grafo con 230 domini e 39 indirizzi IP. Successivamente, suddividiamo i domini in 2 categorie: quelli simili a servizi legati alle criptovalute e quelli destinati a generare traffico attraverso servizi di verifica telefonica:

Sono legati alle criptovalute
Sono legati 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

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Pulizia

Di default, l'opzione 'Pulisci grafo' è attivata e tutti gli elementi non rilevanti verranno rimossi dal grafo. A proposito, è stata utilizzata anche in tutti gli esempi precedenti. Prevedo la domanda naturale: come possiamo assicurarci di non eliminare qualcosa di importante? Rispondo: per gli analisti che amano costruire grafi manualmente, la pulizia automatizzata può essere disattivata e il numero di passaggi impostato su 1. Successivamente, l'analista potrà completare il grafo con gli elementi di propria scelta e rimuovere gli elementi non rilevanti per l'attività.

Già nel grafo, l'analista ha accesso alla cronologia delle modifiche di whois, DNS, nonché alle porte aperte e ai servizi in esecuzione su di esse.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Phishing finanziario

Abbiamo esaminato le azioni di un gruppo APT che per diversi anni ha effettuato attacchi di phishing contro clienti di diverse banche in varie regioni. Una caratteristica distintiva di questo gruppo era la registrazione di domini molto simili ai nomi di banche reali, e la maggior parte dei siti di phishing aveva lo stesso design, con differenze solo nei nomi delle banche e nei loro loghi.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro
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 con una profondità di 3 passi, che ha rivelato oltre 250 domini malevoli utilizzati da questo gruppo dal 2015 e che continuano a essere utilizzati. Alcuni di questi domini sono già stati acquistati da banche, ma dalle registrazioni storiche risulta che in precedenza erano stati registrati dagli attaccanti.

Per maggiore chiarezza, nella figura è mostrato un grafo con una profondità di 2 passi.

È interessante notare che già nel 2019 gli attaccanti hanno cambiato leggermente tattica e hanno iniziato a registrare non solo domini bancari per l'hosting di phishing web, ma anche domini di diverse società di consulenza per l'invio di email di phishing. Ad esempio, i domini swift-department.com, saudconsultancy.com, vbgrigoryanpartners.com.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Cobalt gang

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

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro
Nelle email c'erano collegamenti a hXXps://nationalbank.bz/Doc/Prikaz.doc. Il documento scaricabile conteneva una macro che avviava PowerShell per tentare di scaricare e eseguire un file da hXXp://wateroilclub.com/file/dwm.exe in %Temp%einmrmdmy.exe. Il file %Temp%einmrmdmy.exe noto anche come dwm.exe è un CobInt stager, progettato per interagire con il server hXXp://admvmsopp.com/rilruietguadvtoefmuy.

Immagina di non avere accesso a queste email di phishing e di non poter condurre un'analisi completa dei file malevoli. Il grafo del dominio malevolo nationalbank[.]bz mostra immediatamente i collegamenti con altri domini malevoli, attribuendo il tutto al gruppo e mostrando quali file sono stati utilizzati nell'attacco.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro
Prendiamo da questo grafo l'indirizzo IP 46.173.219[.]152 e costruiamo un grafo in un solo passaggio disattivando la pulizia. Sono collegati 40 domini, ad esempio, bl0ckchain[.]ug
paypal.co.uk.qlg6[.]pw
cryptoelips[.]com

A giudicare dai nomi dei domini, sembrano essere utilizzati in schemi fraudolenti, ma l'algoritmo di pulizia ha capito che non avevano attinenza con questo attacco e non li ha inclusi nel grafo, semplificando notevolmente il processo di analisi e attribuzione.

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro
Se ricostruiamo il grafo per nationalbank[.]bz, ma disattivando l'algoritmo di pulizia del grafo, più di 500 elementi saranno presenti e gran parte di essi non è correlata né al gruppo Cobalt né ai loro attacchi. Un esempio di come appare tale grafo è fornito di seguito:

Il tuo approdo, grafico: come abbiamo trovato un buon grafo di rete e creato il nostro

Conclusione

Dopo anni di perfezionamenti, test in indagini reali, studi sulle minacce e cacce agli attaccanti, siamo riusciti non solo a creare uno strumento unico, ma anche a cambiare l'atteggiamento degli esperti all'interno dell'azienda nei suoi confronti. Inizialmente, gli esperti tecnici volevano avere un controllo totale sul processo di costruzione del grafo. Convincerli che la costruzione automatica del grafo potesse fare meglio di un umano con anni di esperienza è stato estremamente difficile. Tutto è stato deciso dal tempo e dai numerosi controlli “manuali” dei risultati forniti dal grafo. Ora i nostri esperti non solo si fidano del sistema, ma utilizzano anche i risultati da esso ottenuti nel loro lavoro quotidiano. Questa tecnologia funziona all'interno di ciascuno dei nostri sistemi e consente di identificare meglio le minacce di qualsiasi tipo. L'interfaccia per l'analisi manuale del grafo è integrata in tutti i prodotti Group-IB e amplia notevolmente le possibilità di caccia ai crimini informatici. Questo è confermato dai feedback degli analisti da parte dei nostri clienti. E noi, a nostra volta, continuiamo a 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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster