Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Istražujući slučajeve vezane za krađu identiteta, botnetove, lažne transakcije i kriminalne hakerske grupe, stručnjaci Grupe-IB dugi niz godina koriste analizu grafova kako bi identificirali različite vrste veza. Različiti slučajevi imaju svoje skupove podataka, svoje algoritme za identifikaciju veza i interfejse prilagođene specifičnim zadacima. Sve ove alate interno je razvio Group-IB i bili su dostupni samo našim zaposlenima.

Grafička analiza mrežne infrastrukture (mrežni graf) postao je prvi interni alat koji smo ugradili u sve javne proizvode kompanije. Prije kreiranja našeg mrežnog grafikona, analizirali smo mnogo sličnih kretanja na tržištu i nismo pronašli niti jedan proizvod koji bi zadovoljio naše vlastite potrebe. U ovom članku ćemo govoriti o tome kako smo kreirali mrežni graf, kako ga koristimo i na kakve smo poteškoće naišli.

Dmitrij Volkov, CTO Group-IB i šef kibernetičke inteligencije

Šta može učiniti graf mreže Group-IB?

Istrage

Od osnivanja Group-IB 2003. godine do danas, identifikacija, dekanizacija i privođenje cyber kriminalaca pred lice pravde je glavni prioritet u našem radu. Niti jedna istraga cyber napada nije bila potpuna bez analize mrežne infrastrukture napadača. Na samom početku našeg putovanja, bio je to prilično mukotrpan „ručni rad“ traženja odnosa koji bi mogli pomoći u identifikaciji kriminalaca: informacije o nazivima domena, IP adresama, digitalnim otiscima servera itd.

Većina napadača pokušava djelovati što je moguće anonimnije na mreži. Međutim, kao i svi ljudi, griješe. Glavni cilj ovakve analize je pronaći “bijele” ili “sive” historijske projekte napadača koji se ukrštaju sa zlonamjernom infrastrukturom korištenom u trenutnom incidentu koji istražujemo. Ako je moguće otkriti "bijele projekte", onda pronalaženje napadača u pravilu postaje trivijalan zadatak. U slučaju „sivih“ potraga oduzima više vremena i truda, jer njihovi vlasnici pokušavaju anonimizirati ili sakriti podatke o registraciji, ali šanse ostaju prilično velike. U pravilu, na početku kriminalnih radnji napadači manje vode računa o vlastitoj sigurnosti i prave više grešaka, pa što dublje uđemo u priču, veće su šanse za uspješnu istragu. Zato je mrežni graf sa dobrom istorijom izuzetno važan element takvog istraživanja. Jednostavno rečeno, što kompanija ima dublje istorijske podatke, to je bolji njen grafikon. Recimo da historija od 5 godina može pomoći u rješavanju, uslovno, 1-2 od 10 zločina, a historija od 15 godina daje šansu da se riješi svih deset.

Phishing i otkrivanje prijevara

Svaki put kada primimo sumnjivu vezu ka phishing, lažnom ili piratskom resursu, automatski gradimo grafikon povezanih mrežnih resursa i provjeravamo sve pronađene hostove za sličan sadržaj. To vam omogućava da pronađete kako stare phishing stranice koje su bile aktivne, ali nepoznate, tako i potpuno nove koje su pripremljene za buduće napade, ali se još ne koriste. Elementarni primjer koji se često javlja: pronašli smo phishing stranicu na serveru sa samo 5 lokacija. Provjerom svakog od njih nalazimo phishing sadržaj na drugim stranicama, što znači da možemo blokirati 5 umjesto 1.

Potražite pozadine

Ovaj proces je neophodan da bi se utvrdilo gdje se zlonamjerni server zapravo nalazi.
99% prodavaonica kartica, hakerskih foruma, mnogih phishing resursa i drugih zlonamjernih servera skriveno je i iza vlastitih proxy servera i iza proksija legitimnih usluga, na primjer, Cloudflare. Znanje o stvarnom backendu je vrlo važno za istrage: postaje poznat hosting provajder od kojeg se server može zaplijeniti i postaje moguće izgraditi veze sa drugim zlonamjernim projektima.

Na primjer, imate phishing stranicu za prikupljanje podataka o bankovnim karticama koji se rješavaju na IP adresu 11.11.11.11 i cardshop adresu koja se rješava na IP adresu 22.22.22.22. Tokom analize može se ispostaviti da i phishing stranica i cardshop imaju zajedničku pozadinsku IP adresu, na primjer, 33.33.33.33. Ovo znanje nam omogućava da izgradimo vezu između phishing napada i prodavnice kartica u kojoj se mogu prodati podaci o bankovnim karticama.

Korelacija događaja

Kada imate dva različita okidača (recimo na IDS-u) s različitim zlonamjernim softverom i različitim serverima za kontrolu napada, tretirat ćete ih kao dva nezavisna događaja. Ali ako postoji dobra veza između zlonamjernih infrastruktura, onda postaje očito da se ne radi o različitim napadima, već o fazama jednog, složenijeg višefaznog napada. A ako je jedan od događaja već pripisan bilo kojoj grupi napadača, onda se i drugi može pripisati istoj grupi. Naravno, proces atribucije je mnogo složeniji, pa ovo tretirajte kao jednostavan primjer.

Obogaćivanje indikatora

Nećemo obraćati puno pažnje na ovo, jer je ovo najčešći scenario za korištenje grafova u sajber sigurnosti: dajete jedan indikator kao ulaz, a kao izlaz dobijate niz povezanih indikatora.

Prepoznavanje obrazaca

Prepoznavanje obrazaca je neophodno za efikasan lov. Grafovi vam omogućavaju ne samo da pronađete povezane elemente, već i da identifikujete zajednička svojstva koja su karakteristična za određenu grupu hakera. Poznavanje takvih jedinstvenih karakteristika omogućava vam da prepoznate infrastrukturu napadača čak i u fazi pripreme i bez dokaza koji potvrđuju napad, kao što su phishing emailovi ili malver.

Zašto smo kreirali vlastiti mrežni graf?

Opet, pogledali smo rješenja različitih dobavljača prije nego što smo došli do zaključka da moramo razviti vlastiti alat koji može učiniti nešto što nijedan postojeći proizvod ne može. Za njegovu izradu bilo je potrebno nekoliko godina, tokom kojih smo ga nekoliko puta potpuno mijenjali. Ali, uprkos dugom periodu razvoja, još nismo pronašli niti jedan analog koji bi zadovoljio naše zahtjeve. Koristeći vlastiti proizvod, na kraju smo uspjeli riješiti gotovo sve probleme koje smo otkrili u postojećim mrežnim grafovima. U nastavku ćemo detaljno razmotriti ove probleme:

problem
odluka

Nedostatak provajdera sa različitim zbirkama podataka: domeni, pasivni DNS, pasivni SSL, DNS zapisi, otvoreni portovi, pokretanje servisa na portovima, fajlovi u interakciji sa imenima domena i IP adresama. Objašnjenje. Provajderi obično pružaju odvojene vrste podataka, a da biste dobili potpunu sliku, morate kupiti pretplatu od svih. Čak i tako, nije uvijek moguće dobiti sve podatke: neki pasivni SSL provajderi pružaju podatke samo o certifikatima koje su izdali pouzdani CA-ovi, a njihova pokrivenost samopotpisanih certifikata je izuzetno slaba. Drugi također pružaju podatke koristeći samopotpisane certifikate, ali ih prikupljaju samo sa standardnih portova.
Sve navedene kolekcije smo sami prikupili. Na primjer, da bismo prikupili podatke o SSL certifikatima, napisali smo vlastiti servis koji ih prikuplja i od pouzdanih CA-a i skeniranjem cijelog IPv4 prostora. Certifikati su prikupljeni ne samo sa IP-a, već i sa svih domena i poddomena iz naše baze podataka: ako imate domen example.com i njegovu poddomenu www.example.com i svi se rešavaju na IP 1.1.1.1, onda kada pokušate da dobijete SSL sertifikat sa porta 443 na IP, domenu i njegovoj poddomeni, možete dobiti tri različita rezultata. Da bismo prikupili podatke o otvorenim portovima i pokrenutim servisima, morali smo kreirati vlastiti distribuirani sistem za skeniranje, jer su druge usluge često imale IP adrese svojih servera za skeniranje na „crnim listama“. Naši serveri za skeniranje također završavaju na crnim listama, ali rezultat otkrivanja usluga koje su nam potrebne je veći od rezultata onih koji jednostavno skeniraju što više portova i prodaju pristup tim podacima.

Nedostatak pristupa cjelokupnoj bazi historijskih zapisa. Objašnjenje. Svaki normalan dobavljač ima dobru akumuliranu istoriju, ali iz prirodnih razloga mi, kao klijent, nismo mogli da dobijemo pristup svim istorijskim podacima. One. Možete dobiti cijelu historiju za jedan zapis, na primjer, po domeni ili IP adresi, ali ne možete vidjeti historiju svega - a bez toga ne možete vidjeti punu sliku.
Da bismo prikupili što više istorijskih zapisa o domenima, kupili smo razne baze podataka, analizirali mnoge otvorene resurse koji su imali tu istoriju (dobro je da ih je bilo mnogo) i pregovarali sa registratorima imena domena. Sva ažuriranja naših vlastitih kolekcija se naravno čuvaju uz punu historiju revizija.

Sva postojeća rješenja vam omogućavaju da ručno napravite grafikon. Objašnjenje. Recimo da ste kupili mnogo pretplata od svih mogućih dobavljača podataka (koji se obično nazivaju "obogaćivači"). Kada trebate izgraditi graf, „rukama“ dajete naredbu za izgradnju od željenog elementa veze, zatim birate potrebne od elemenata koji se pojavljuju i dajete komandu da se iz njih dovrše veze itd. U ovom slučaju, odgovornost za to koliko će graf biti dobro napravljen leži u potpunosti na osobi.
Napravili smo automatsku konstrukciju grafikona. One. ako treba da napravite graf, onda se veze od prvog elementa grade automatski, a zatim i od svih narednih. Stručnjak samo ukazuje na dubinu na kojoj se graf treba izgraditi. Proces automatskog popunjavanja grafikona je jednostavan, ali ga drugi dobavljači ne implementiraju jer daje ogroman broj nebitnih rezultata, a morali smo uzeti u obzir i ovaj nedostatak (vidi dolje).

Mnogi irelevantni rezultati predstavljaju problem sa svim grafovima mrežnih elemenata. Objašnjenje. Na primjer, "loš domen" (učestvovao u napadu) povezan je sa serverom koji ima 10 drugih domena povezanih s njim u posljednjih 500 godina. Prilikom ručnog dodavanja ili automatske konstrukcije grafa, svih ovih 500 domena bi se također trebalo pojaviti na grafu, iako nisu povezani s napadom. Ili, na primjer, provjerite IP indikator iz sigurnosnog izvještaja dobavljača. Obično se takvi izvještaji objavljuju sa značajnim zakašnjenjem i često traju godinu dana ili više. Najvjerovatnije, u vrijeme kada pročitate izvještaj, server sa ovom IP adresom je već iznajmljen drugim ljudima sa drugim konekcijama, a pravljenje grafa će opet rezultirati nebitnim rezultatima.
Obučili smo sistem da identifikuje nebitne elemente koristeći istu logiku kao što su naši stručnjaci radili ručno. Na primjer, provjeravate loš domen example.com, koji se sada rješava na IP 11.11.11.11, a prije mjesec dana - na IP 22.22.22.22. Pored domene example.com, IP 11.11.11.11 je takođe povezan sa example.ru, a IP 22.22.22.22 povezan je sa 25 hiljada drugih domena. Sistem, kao i osoba, razumije da je 11.11.11.11 najvjerovatnije namjenski server, a budući da je domen example.ru sličan pisanju example.com, onda su, s velikom vjerovatnoćom, povezani i trebali bi biti na graf; ali IP 22.22.22.22 pripada dijeljenom hostingu, tako da svi njegovi domeni ne moraju biti uključeni u grafikon osim ako postoje druge veze koje pokazuju da jedan od ovih 25 hiljada domena također treba biti uključen (na primjer, example.net) . Prije nego što sistem shvati da veze treba prekinuti i neke elemente ne premjestiti na graf, uzima u obzir mnoga svojstva elemenata i klastera u koje se ti elementi kombinuju, kao i jačinu trenutnih veza. Na primjer, ako imamo mali klaster (50 elemenata) na grafu, koji uključuje lošu domenu, i drugi veliki klaster (5 hiljada elemenata) i oba klastera su povezana vezom (linija) vrlo male snage (težine) , tada će se takva veza prekinuti i elementi iz velikog klastera će biti uklonjeni. Ali ako postoji mnogo veza između malih i velikih klastera i njihova snaga se postepeno povećava, tada se veza neće prekinuti i potrebni elementi iz oba klastera će ostati na grafu.

Interval vlasništva servera i domena se ne uzima u obzir. Objašnjenje. „Loši domeni“ će prije ili kasnije isteći i ponovo će biti kupljeni u zlonamjerne ili legitimne svrhe. Čak se i neprobojni hosting serveri iznajmljuju različitim hakerima, tako da je važno znati i uzeti u obzir interval kada je određeni domen/server bio pod kontrolom jednog vlasnika. Često se susrećemo sa situacijom da se server sa IP 11.11.11.11 sada koristi kao C&C za bankarski bot, a prije 2 mjeseca ga je kontrolirao Ransomware. Ako uspostavimo vezu bez uzimanja u obzir intervala vlasništva, izgledat će kao da postoji veza između vlasnika bankarskog botneta i ransomwarea, iako je zapravo nema. U našem radu takva greška je kritična.
Naučili smo sistem da određuje intervale vlasništva. Za domene je to relativno jednostavno, jer whois često sadrži datume početka i isteka registracije, a kada postoji potpuna istorija whois promjena, lako je odrediti intervale. Kada registracija domene nije istekla, ali je njeno upravljanje prebačeno na druge vlasnike, može se pratiti i ona. Kod SSL sertifikata nema takvog problema, jer se izdaju jednokratno i ne obnavljaju se niti prenose. Ali sa samopotpisanim certifikatima, ne možete vjerovati datumima navedenim u periodu važenja certifikata, jer možete generirati SSL certifikat danas i navesti datum početka certifikata od 2010. Najteže je odrediti intervale vlasništva za servere, jer samo hosting provajderi imaju datume i periode iznajmljivanja. Da bismo odredili period vlasništva servera, počeli smo koristiti rezultate skeniranja portova i kreiranja otisaka prstiju pokrenutih servisa na portovima. Koristeći ove informacije, možemo prilično precizno reći kada se promijenio vlasnik servera.

Malo veza. Objašnjenje. Danas čak nije problem dobiti besplatnu listu domena čiji whois sadrži određenu e-mail adresu, ili saznati sve domene koje su bile povezane s određenom IP adresom. Ali kada su u pitanju hakeri koji daju sve od sebe da ih je teško pratiti, potrebni su nam dodatni trikovi kako bismo pronašli nova svojstva i izgradili nove veze.
Proveli smo dosta vremena istražujući kako bismo mogli izvući podatke koji nisu bili dostupni na konvencionalan način. Ne možemo ovdje opisati kako to funkcionira iz očiglednih razloga, ali pod određenim okolnostima, hakeri, prilikom registracije domena ili iznajmljivanja i postavljanja servera, prave greške koje im omogućavaju da saznaju adrese e-pošte, pseudonime hakera i pozadinske adrese. Što više veza izdvojite, točnije grafikone možete napraviti.

Kako funkcioniše naš grafikon

Da biste počeli koristiti mrežni grafikon, potrebno je da unesete domenu, IP adresu, e-poštu ili otisak prsta SSL certifikata u traku za pretraživanje. Postoje tri uslova koja analitičar može kontrolisati: vrijeme, dubina koraka i čišćenje.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Время

Vrijeme – datum ili interval kada je traženi element korišten u zlonamjerne svrhe. Ako ne navedete ovaj parametar, sam sistem će odrediti posljednji interval vlasništva za ovaj resurs. Na primjer, 11. jula Eset je objavio izvještaj o tome kako Buhtrap koristi 0-day exploit za sajber špijunažu. Na kraju izvještaja nalazi se 6 indikatora. Jedna od njih, secure-telemetry[.]net, ponovo je registrovana 16. jula. Stoga, ako napravite grafikon nakon 16. jula, dobićete nebitne rezultate. Ali ako navedete da je ova domena korištena prije ovog datuma, onda grafikon uključuje 126 novih domena, 69 IP adresa koje nisu navedene u Eset izvještaju:

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

Pored mrežnih indikatora, odmah pronalazimo veze sa zlonamjernim fajlovima koji su imali veze sa ovom infrastrukturom i tagovima koji nam govore da su korišteni Meterpreter i AZORult.

Odlična stvar je što ovaj rezultat dobijete u roku od jedne sekunde i više ne morate trošiti dane analizirajući podatke. Naravno, ovakav pristup ponekad značajno skraćuje vrijeme za istragu, što je često kritično.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Broj koraka ili dubina rekurzije s kojom će se graf izgraditi

Podrazumevano, dubina je 3. To znači da će svi direktno povezani elementi biti pronađeni od željenog elementa, zatim će se izgraditi nove veze od svakog novog elementa do drugih elemenata, a novi elementi će biti kreirani od novih elemenata iz poslednjeg elementa. korak.

Uzmimo primjer koji se ne odnosi na APT i 0-dnevne eksploatacije. Nedavno je na Habréu opisan zanimljiv slučaj prevare u vezi sa kriptovalutama. U izvještaju se pominje domen themcx[.]co, koji prevaranti koriste za hostovanje web stranice koja navodno predstavlja razmjenu kovanica za rudare i traženje telefona[.]xyz za privlačenje prometa.

Iz opisa je jasno da shema zahtijeva prilično veliku infrastrukturu kako bi privukla promet na lažne resurse. Odlučili smo da pogledamo ovu infrastrukturu tako što smo napravili graf u 4 koraka. Izlaz je bio graf sa 230 domena i 39 IP adresa. Zatim dijelimo domene u 2 kategorije: one koje su slične servisima za rad s kriptovalutama i one koje su namijenjene za usmjeravanje prometa putem usluga provjere telefona:

Vezano za kriptovalute
Povezan sa uslugama probijanja telefona

kovanica[.]cc
mjesto za snimanje pozivatelja.

mcxwallet[.]co
telefonske zapise[.]prostor

btcnoise[.]com
fone-uncover[.]xyz

cryptominer[.]sat
number-uncover[.]info

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Čišćenje

Podrazumevano je omogućena opcija „Čišćenje grafikona“ i svi nebitni elementi će biti uklonjeni sa grafikona. Inače, korišteno je u svim prethodnim primjerima. Predviđam prirodno pitanje: kako možemo osigurati da nešto važno ne bude izbrisano? Odgovorit ću: za analitičare koji vole ručno graditi grafikone, automatsko čišćenje se može onemogućiti i broj koraka se može odabrati = 1. Zatim će analitičar moći dovršiti graf od elemenata koji su mu potrebni i ukloniti elemente iz grafikona koji nisu bitni za zadatak.

Već na grafikonu analitičaru postaje dostupna historija promjena u whois-u, DNS-u, kao i otvorenim portovima i servisima koji na njima rade.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Finansijski phishing

Istraživali smo aktivnosti jedne APT grupe koja je nekoliko godina provodila phishing napade na klijente raznih banaka u različitim regijama. Karakteristična karakteristika ove grupe bila je registracija domena veoma sličnih nazivima stvarnih banaka, a većina phishing sajtova je imala isti dizajn, a razlike su bile samo u nazivima banaka i njihovim logotipima.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti
U ovom slučaju nam je puno pomogla automatska analiza grafa. Uzimajući jedan od njihovih domena - lloydsbnk-uk[.]com, za nekoliko sekundi napravili smo graf sa dubinom od 3 koraka, koji je identificirao više od 250 zlonamjernih domena koje ova grupa koristi od 2015. godine i nastavljaju se koristiti . Neke od ovih domena su banke već kupile, ali istorijski zapisi pokazuju da su prethodno bili registrovani na napadače.

Radi jasnoće, na slici je prikazan graf sa dubinom od 2 koraka.

Važno je napomenuti da su napadači već 2019. godine donekle promijenili taktiku i počeli registrirati ne samo domene banaka za hosting web phishinga, već i domene raznih konsultantskih kuća za slanje phishing emailova. Na primjer, domene swift-department.com, saudconsultancy.com, vbgrigoryanpartners.com.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

Cobalt banda

U decembru 2018. godine, hakerska grupa Cobalt, specijalizovana za ciljane napade na banke, poslala je mailing kampanju u ime Narodne banke Kazahstana.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti
Pisma su sadržavala linkove na hXXps://nationalbank.bz/Doc/Prikaz.doc. Preuzeti dokument je sadržavao makro koji je pokrenuo Powershell, koji bi pokušao da učita i izvrši datoteku sa hXXp://wateroilclub.com/file/dwm.exe u %Temp%einmrmdmy.exe. Datoteka %Temp%einmrmdmy.exe aka dwm.exe je CobInt stager konfigurisan za interakciju sa serverom hXXp://admvmsopp.com/rilruietguadvtoefmuy.

Zamislite da ne možete primati ove phishing poruke e-pošte i izvršiti potpunu analizu zlonamjernih datoteka. Grafikon za zlonamjerni domen Nationalbank[.]bz odmah pokazuje veze sa drugim zlonamjernim domenima, pripisuje ga grupi i pokazuje koje su datoteke korištene u napadu.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti
Uzmimo IP adresu 46.173.219[.]152 iz ovog grafa i napravimo graf od njega u jednom prolazu i isključimo čišćenje. Postoji 40 domena povezanih s njim, na primjer, bl0ckchain[.]ug
paypal.co.uk.qlg6[.]pw
cryptoelips[.]com

Sudeći po nazivima domena, čini se da se koriste u lažnim šemama, ali algoritam čišćenja je shvatio da nisu povezani sa ovim napadom i nije ih stavio na grafikon, što uveliko pojednostavljuje proces analize i atribucije.

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti
Ako ponovo izgradite graf koristeći Nationalbank[.]bz, ali onemogućite algoritam za čišćenje grafa, tada će on sadržavati više od 500 elemenata, od kojih većina nema nikakve veze sa grupom Cobalt ili njihovim napadima. Primjer kako izgleda takav grafikon je dat u nastavku:

Vaš izlaz, graf: kako nismo pronašli dobar mrežni graf i napravili svoj vlastiti

zaključak

Nakon nekoliko godina finog podešavanja, testiranja u stvarnim istragama, istraživanja prijetnji i lova na napadače, uspjeli smo ne samo da kreiramo jedinstveni alat, već i da promijenimo stav stručnjaka unutar kompanije prema njemu. U početku, tehnički stručnjaci žele potpunu kontrolu nad procesom izgradnje grafikona. Uvjeriti ih da automatska konstrukcija grafikona to može učiniti bolje od osobe s dugogodišnjim iskustvom bilo je izuzetno teško. O svemu je odlučivalo vrijeme i višestruke “ručne” provjere rezultata onoga što je graf proizveo. Sada naši stručnjaci ne samo da vjeruju sistemu, već i koriste rezultate koje postiže u svom svakodnevnom radu. Ova tehnologija radi unutar svakog od naših sistema i omogućava nam da bolje identificiramo prijetnje bilo koje vrste. Interfejs za ručnu analizu grafova ugrađen je u sve Group-IB proizvode i značajno proširuje mogućnosti za lov na sajber kriminal. To potvrđuju i recenzije analitičara naših klijenata. A mi, zauzvrat, nastavljamo da obogaćujemo graf podacima i radimo na novim algoritmima koristeći umjetnu inteligenciju kako bismo stvorili najprecizniji mrežni graf.

izvor: www.habr.com

Dodajte komentar