{
	"id": "fa10afd3-4b0b-4051-b4fc-83763f653ffe",
	"created_at": "2026-04-06T00:20:13.142321Z",
	"updated_at": "2026-04-10T03:37:08.631408Z",
	"deleted_at": null,
	"sha1_hash": "0fdaf06b055d9a0c7fd3b76f9da0010d95bfe538",
	"title": "SI-CERT TZ016 / BeaverTail \u0026 InvisibleFerret - SI CERT",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 955921,
	"plain_text": "SI-CERT TZ016 / BeaverTail \u0026 InvisibleFerret - SI CERT\r\nBy SI-CERT\r\nPublished: 2025-02-07 · Archived: 2026-04-05 21:38:15 UTC\r\nUvod\r\nObravnavali smo zanimiv primer napada, pri katerem se napadalci lažno predstavljajo kot iskalci zaposlitve ali pa\r\nželijo kakšno drugo sodelovanje z neko organizacijo. Prvi kontakt praviloma vzpostavijo preko omrežja LinkedIn,\r\nnato pa poskušajo zavesti žrtev v zagon zlonamerne kode.\r\nNjihov cilj so predvsem podjetja in posamezniki, ki se ukvarjajo z Web3 tehnologijo (pametne\r\npogodbe, kriptovalute, tehnologija veriženja blokov…).\r\nTekom komunikacije napadalec pošlje povezavo do nekega predstavitvenega projekta, ki na prvi pogled zgleda\r\npovsem običajen in neškodljiv, vendar pa ob zagonu izvrši tudi zlonamerno kodo, ki ukrade podatke in vzpostavi\r\nstranska vrata do okuženega sistema.\r\nhttps://www.cert.si/tz016/\r\nPage 1 of 23\n\nSama zlonamerna koda je razdeljena na dva glavna dela, ki sta znana po imenih BeaverTail in InvisibleFerret.\r\nRazlikujeta se po namenu in programskem jeziku, v katerem sta modula spisana: BeaverTail – Node.js,\r\nInvisibleFerret – Python.\r\nTa tehnični zapis se ne ukvarja z atribucijo napadalcev, raziskave in poročila nekaterih drugih varnostnih\r\nstrokovnjakov pa povezujejo tovrstno prakso in zlonamerno kodo z aktivnostmi državno sponzoriranih hekerjev\r\niz Severne Koreje.\r\nAnaliza projekta\r\nAnaliza deljenega projekta je pokazala, da gre za Node.js Package Manager (NPM) paket. Projekt vsebuje tudi\r\nnavodila za gradnjo in zagon programa, katera izvedejo tudi zlonamerno kodo.\r\nhttps://www.cert.si/tz016/\r\nPage 2 of 23\n\nKonfiguracijska datoteka package.json vsebuje podatke o NPM paketu in definira tudi glavno (main) datoteko, v\r\nkateri se začne izvajanje Node.js kode.\r\nDatoteka server.js sama ne vsebuje zlonamerne kode, vendar pa s funkcijo require naloži dodatne module. Večina\r\nteh modulov je standardnih in legitimnih, modul app je pa lokalen in se nahaja v datoteki app.js.\r\nDatoteka app.js tudi direktno ne vsebuje zlonamerne kode, naloži pa dodatne lokalne module. Večina teh modulov\r\nvsebuje le odvečno kodo, ki ni preveč zanimiva, v modulu userRoutes se pa skriva začetek zlonamerne kode.\r\nuserRoutes.js\r\nhttps://www.cert.si/tz016/\r\nPage 3 of 23\n\nDatoteka userRoutes.js na koncu vsebuje prikrito kodo. Vsa prikrita koda je v eni sami vrstici in ima pred njo\r\nveliko presledkov. Na ta način se skrije v tekstovnih urejevalnikih brez možnosti preloma besed (word wrap).\r\nKoda pa je bila verjetno zamaskirana oz. obfuskirana z uporabo odprto-kodnega obfuskatorja javascript-obfuscator.\r\nhttps://www.cert.si/tz016/\r\nPage 4 of 23\n\nS pomočjo orodja synchrony in nekaj ročnega dela smo pridobili bolj berljivo oz. deobfuskirano obliko kode.\r\nAnaliza kode je pokazala, da najprej poskusi poslati nekaj osnovnih informacij o sistemu na t.i. C2 strežnik, ki je\r\npod nadzorom napadalcev, zatem pa z njega prenese in izvrši nadaljnji tovor. Ta postopek skripta izvrši 3x, in sicer\r\nob zagonu in nato še dvakrat z zamikom 10 minut, nato pa zaključi izvajanje.\r\nhttps://www.cert.si/tz016/\r\nPage 5 of 23\n\nV zgornjem izseku kode vidimo funkcijo, ki pošlje podatke na C2 strežnik. To naredi s HTTP POST zahtevo na\r\nsledeč naslov:\r\nhxxp://23[.]106.253.221:1244/keys\r\nOpomba: vsi C2 strežniki iz tega zapisa v času objave niso bili več dosegljivi\r\nMed podatki, ki jih pošlje v zahtevi, so timestamp, type/fingerprint, host ID (hostname), data type, in data.\r\nPrenos in zagon tovora\r\nhttps://www.cert.si/tz016/\r\nPage 6 of 23\n\nDrugi del skripte je namenjen prenosu in izvršitvi tovora. Vidimo, da funkcija poskusi kreirati novo mapo z\r\nimenom .vscode v domači mapi trenutnega uporabnika (Windows – %USERPROFILE%, Linux/Darwin –\r\n $HOME, ~/) in nato vanjo prenese datoteki test.js (hxxp://23[.]106.253.221:1244/j/ZU1RINz7)\r\nin package.json (hxxp://23[.]106.253.221:1244/p). Zatem v isti mapi požene ukaz npm install, ki prenese\r\npotrebne knjižnice (dependencies), nato pa še node test.js, ki izvrši prenešen tovor.\r\nhttps://www.cert.si/tz016/\r\nPage 7 of 23\n\nPreprečevanje izvedbe\r\nSkripta vsebuje tudi zanimiv način preprečevanja izvedbe deobfuskirane kode, ki lahko oteži izvajanje dinamične\r\nanalize:\r\nNotranja funkcija v spremenljivki H pridobi niz, ki vsebuje kodo zunanje funkcije (rezultat funkcije F), in nad\r\nnjim požene regex (((.+)+)+)+$. V primerih, kjer niz vsebuje novo vrstico, čas izvajanja tega regularnega izraza\r\neksponentno narašča glede na število znakov v vrstici. Tovrstno izvajanje ima tudi ime catastrophic backtrace ali\r\nrunaway regular expression. To pomeni, da se bo za deobfuskirano kodo, ki vsebuje presledke, ta izraz predolgo\r\nizvajal in vrnil neko napako. Ker pa je obfuskirana koda v eni sami vrstici, se izraz hitro zaključi in nato se lahko\r\nizvede še nadaljnja zlonamerna koda.\r\nGlavni Node.js modul – BeaverTail\r\nČe se vrnemo malo nazaj in se osredotočimo na prenešen tovor, ugotovimo, da gre tudi tu za NPM paket.\r\nKonfiguracijska datoteka (package.json) je zelo preprosta in vsebuje le nekaj knjižnic, ki se prenesejo z npm\r\ninstall ukazom.\r\nhttps://www.cert.si/tz016/\r\nPage 8 of 23\n\nNadaljnja koda se pa nahaja v datoteki test.js. Tako kot prejšnji del je tudi ta koda obfuskirana in vsebuje enak\r\nnačin preprečevanja izvedbe z uporabo regularnih izrazov. Kodo smo deobfuskirali na podoben način kot v\r\nprejšnjem delu in dodatno smiselno preimenovali funkcije ter nekatere spremenljivke. Pridobljena koda je malo\r\nbolj kompleksna in vsebuje dva dela, s katerima najprej ukrade podatke in nato prenese ter izvede kodo nadaljnje\r\nstopnje.\r\nKraja podatkov\r\nhttps://www.cert.si/tz016/\r\nPage 9 of 23\n\nZgoraj je vidna glavna funkcija, ki pridobi in pošlje podatke iz različnih spletnih brskalnikov. Najprej poskusi\r\npridobiti podatke iz razširitev/dodatkov brskalnikov, na Linux in Darwin sistemih pa nato še druge\r\npodatke, shranjenih v brskalnikih (gesla, seje, zgodovina, itd.). Pridobljene podatke pošlje nadzornemu\r\nstrežniku preko HTTP POST zahtev na naslov:\r\nhxxp://23[.]106.253.221:1244/uploads\r\nhttps://www.cert.si/tz016/\r\nPage 10 of 23\n\nSpodaj je naveden seznam razširitev iz katerih program krade podatke:\r\nID razširitve Ime Vir\r\nnkbihfbeogaeaoehlefnkodbefgpgknn Metamask Chrome store\r\nejbalbakoplchlghecdalmeeeajnimhm Metamask Microsoft store\r\nibnejdfjmmkpcnlpebklmnkoeoihofec TronLink Chrome store\r\nfhbohimaelbohpjbbldcngcnapndodjp BNB Chain Wallet Chrome store\r\nhnfanknocfeofbddgcijnmhnfnkdnaad Coinbase Wallet Chrome store\r\nbfnaelmomeimhlpmgjnjophhpkkoljpa Phantom Chrome store\r\naeachknmefphepccionboohckonoeemg Coin98 Wallet Chrome store\r\negjidjbpglichdcondbcbdnbeeppgdph Trust Wallet Chrome store\r\nhifafgmccdpekplomjjkcfgodnhcellj Crypto.com | Wallet Extension Chrome store\r\naholpfdialjgjfhomihkjbmgjidlcdno Exodus Web3 Wallet Chrome store\r\nmcohilncbfahbmgdjkbpemcciiolgcge OKX Wallet Chrome store\r\npdliaogehgdbhbnmkklieghmmjkpigpa Bybit Wallet Chrome store\r\nbhghoamapcdpbohphigoooaddinpkbai Authenticator Chrome store\r\nPrenos in izvršitev naslednje stopnje\r\nhttps://www.cert.si/tz016/\r\nPage 11 of 23\n\nDrugi del kode na Windows sistemih najprej namesti Python 3.11 okolje. To naredi tako, da z orodjem curl\r\nprenese ZIP arhiv iz naslova hxxp://23[.]106.253.221:1244/pdown, ki vsebuje celotno Python okolje za Windows\r\nOS in ga shrani pod imenom p2.zip v mapi z začasnimi datotekami. Ta arhiv nato z orodjem tar razširi v domačo\r\nmapo uporabnika. Zanimivost pri tem je uporaba orodji curl in tar (bsdtar – omogoča razširitev ZIP datotek), ki sta\r\nbolj značilni za operacijske sisteme podobne Unixu, vendar sta orodji vsebovani tudi v Windows OS-ih novejših\r\nod verzije 1803 (build 17063). Za ostale operacijske sisteme program predvideva, da je Python okolje že\r\nnameščeno.\r\nZatem program s HTTP GET zahtevo pridobi kodo iz naslova:\r\nhxxp://23[.]106.253.221:1244/client/ZU1RINz7\r\nOdgovor shrani v datoteko .npl v domači mapi uporabnika in jo nato izvrši s Python interpretorjem. Zatem se\r\nzlonamerna koda nadaljuje v različnih Python skriptah. Node.js koda v tej sekciji je znana po imenu BeaverTail in\r\nse jo lahko prepozna po formatu URL-jev, s katerimi komunicira, imenu prenešenih datotek (.npl) in po sami\r\nfunkciji prenosa Python okolja in zagonu tovora.\r\nPython – InvisibleFerret\r\nhttps://www.cert.si/tz016/\r\nPage 12 of 23\n\nKoda v datoteki .npl je šifrirana po zelo preprostem postopku. Spremenljivka qt vsebuje ključ (prvih 8 znakov ) in\r\nzašifrirane podatke (preostali znaki). Podatke najprej dekodira (base64) in dešifrira (XOR), nato pa dobljeno kodo\r\nizvrši s pomočjo funkcije exec.\r\nPoleg enostavnega šifriranja koda ne vsebuje drugih metod obfuskacije, kar močno olajša analizo. Namen kode je\r\nprenos in izvršitev dveh dodatnih Python skript oz. modulov:\r\nIme modula URL Mesto prenosa\r\nPayload hxxp://23[.]106.253.221:1244/payload/ZU1RINz7 $HOME/.n2/pay\r\nhttps://www.cert.si/tz016/\r\nPage 13 of 23\n\nBrowser hxxp://23[.]106.253.221:1244/brow/ZU1RINz7 $HOME/.n2/bow\r\nProgram na Darwin sistemih izvrši samo prvi modul (Payload) in zatem, s klicem funkcije sys.exit, zaključi\r\nizvajanje. Začetek programa vsebuje tudi zanimiv način, s katerim dinamično namesti vse potrebne knjižnice\r\n(dependencies).\r\nPayload modul\r\nPodobno kot prejšnji del je tudi tu koda prekrita, vendar po nekoliko drugačnem postopku. V tem primeru je koda\r\nstisnjena (zlib), kodirana (base64) in na koncu je rezultat kodiranja še obrnjen. Razširjena koda je nato izvedena s\r\nfunkcijo exec. Vendar po le eni iteraciji tega postopka še ne dobimo povrnjene kode, saj je v tem primeru koda\r\nvečkrat stisnjena. Pridobljena koda po prvi iteraciji:\r\nZa popolno povrnitev kode smo spisali preprosto Python skripto:\r\nPo 50 iteracijah dobimo dokončno razširjeno kodo. Tudi ta ne vsebuje kakšnih drugih metod obfuskacije. Njen\r\nglavni namen je izvajanje prejetih ukazov iz C2 strežnika.\r\nhttps://www.cert.si/tz016/\r\nPage 14 of 23\n\nZgornji izsek kode vsebuje razred Client, ki izvede povezavo na C2 strežnik in začne komunikacijo, ki poteka\r\npreko TCP protokola. V tem primeru je naslov C2 strežnika sledeč:\r\n173[.]211.106.101:1244\r\nPo povezavi na C2 strežnik začne program izvajati prejete ukaze. Struktura paketa, ki vsebuje ukaz, je zelo\r\npreprosta:\r\n4 bajti – big endian …\r\nVelikost podatkov Podatki\r\nSam ukaz (podatki) je v JSON formatu in je sestavljen iz ID ukaza (število) in argumentov. Razred, ki bere in\r\nizvrši ukaze, je Shell:\r\nhttps://www.cert.si/tz016/\r\nPage 15 of 23\n\nTabela možnih ukazov:\r\nID\r\nukaza\r\nIme\r\nfunkcije\r\nOpis\r\n1 ssh_obj Izvrši ukaz v ukazni lupini in vrne izhod.\r\n2 ssh_cmd\r\nIzvrši posebne ukaze. V tem primeru je implementiran samo en \r\nukaz, ki zapre celotno povezavo.\r\n3 ssh_clip\r\nVrne zabeležene vnose (keylogger). Keylogger je aktiven samo na\r\nWindows OS.\r\n4 ssh_run Prenese in izvrši »Browser« modul (opisan v nadaljevanju).\r\n5 ssh_upload\r\nOmogoča iskanje datotek po sistemu in odlaganje datotek na nek FTP\r\nstrežnik (podatki FTP strežnika so podani v argumentih ukaza).\r\n6 ssh_kill Ubije procese brsklanikov Chrome in Brave\r\n7 ssh_any\r\nPrenese in izvrši dodatno skripto, ki namesti in konfigurira program\r\nza oddaljen dostop AnyDesk\r\n8 ssh_env\r\nPridobi datoteke iz zunanjih diskov in map za dokumente ter prenose\r\nin jih odloži na FTP strežnik\r\n9 ssh_zcp Ukrade podatke brskalnikov, razširitev, upravljalcev gesel, kripto\r\ndenarnic in nekaterih drugih aplikacij ter jih shrani v zašifriran arhiv.\r\nhttps://www.cert.si/tz016/\r\nPage 16 of 23\n\nArhiv nato odloži na FTP strežnik ali pa jih pošlje v Telegram kanal\r\n(preko API-ja)\r\nUkaz ssh_zcp krade podatke iz aplikacij Chrome, Chromium, Opera, Brave, Edge, Vivaldi, 1Password, Exodus,\r\nAtomic, Electrum, WinAuth, Proxifier v4, Dashlane, ter iz razširitev iz spodnjega seznama:\r\nID razširitve Ime\r\naeachknmefphepccionboohckonoeemg Coin98\r\naholpfdialjgjfhomihkjbmgjidlcdno Exodus\r\nbfnaelmomeimhlpmgjnjophhpkkoljpa Phantom\r\nejbalbakoplchlghecdalmeeeajnimhm MetaMask\r\nejjladinnckdgjemekebdpeokbikhfci PetraAptos\r\negjidjbpglichdcondbcbdnbeeppgdph Trust\r\nfhbohimaelbohpjbbldcngcnapndodjp Binance\r\ngjdfdfnbillbflbkmldbclkihgajchbg Termux\r\nhifafgmccdpekplomjjkcfgodnhcellj Crypto\r\nhnfanknocfeofbddgcijnmhnfnkdnaad CoinBase\r\nibnejdfjmmkpcnlpebklmnkoeoihofec TronLink\r\nlgmpcpglpngdoalbgeoldeajfclnhafa Safepal\r\nmcohilncbfahbmgdjkbpemcciiolgcge OKX\r\nnkbihfbeogaeaoehlefnkodbefgpgknn MetaMask\r\nnphplpgoakhhjchkkhmiggakijnkhfnd Ton\r\npdliaogehgdbhbnmkklieghmmjkpigpa ByBit\r\nphkbamefinggmakgklpkljjmgibohnba Pontem\r\nkkpllkodjeloidieedojogacfhpaihoh Enkrypt\r\nagoakfejjabomempkjlepdflaleeobhb Core\r\njiidiaalihmmhddjgbnbgdfflelocpak Bitget\r\nkgdijkcfiglijhaglibaidbipiejjfdp Cirus\r\nkkpehldckknjffeakihjajcjccmcjflh HBAR\r\nhttps://www.cert.si/tz016/\r\nPage 17 of 23\n\nidnnbdplmphpflfnlkomgpfbpcgelopg Xverse\r\nfccgmnglbhajioalokbcidhcaikhlcpm Zapit\r\nfijngjgcjhjmmpcmkeiomlglpeiijkld Talisman\r\nenabgbdfcbaehmbigakijjabdpdnimlg Manta\r\nonhogfjeacnfoofkfgppdlbmlmnplgbn Sub\r\namkmjjmmflddogmhpjloimipbofnfjih Wombat\r\nglmhbknppefdmpemdmjnjlinpbclokhn Orange\r\nhmeobnfnfcmdkdcmlblgagmfpfboieaf XDEFI\r\nacmacodkjbdgmoleebolmdjonilkdbch Rabby\r\nfcfcfllfndlomdhbehjjcoimbgofdncg LeapCosmos\r\nanokgmphncpekkhclmingpimjmcooifb Compass\r\nepapihdplajcdnnkdeiahlgigofloibg Sender\r\nefbglgofoippbgcjepnhiblaibcnclgk Martian\r\nldinpeekobnhjjdofggfgjlcehhmanlj Leather\r\nlccbohhgfkdikahanoclbdmaolidjdfl Wigwam\r\nabkahkcbhngaebpcgfmhkoioedceoigp Casper\r\nbhhhlbepdkbapadjdnnojkbgioiodbic Solflare\r\nklghhnkeealcohjjanjjdaeeggmfmlpl Zerion\r\nlnnnmfcpbkafcpgdilckhmhbkkbpkmid Koala\r\nibljocddagjghmlpgihahamcghfggcjc Virgo\r\nppbibelpcjmhbdihakflkdcoccbgbkpo UniSat\r\nafbcbjpbpfadlkmhmclhkeeodmamcflc Math\r\nebfidpplhabeedpnhjnobghokpiioolj Fewcha\r\nfopmedgnkfpebgllppeddmmochcookhc Suku\r\ngjagmgiddbbciopjhllkdnddhcglnemk Hashpack\r\njnlgamecbpmbajjfhmmmlhejkemejdma Braavos\r\npgiaagfkgcbnmiiolekcfmljdagdhlcm Stargazer\r\nhttps://www.cert.si/tz016/\r\nPage 18 of 23\n\nkhpkpbbcccdmmclmpigdgddabeilkdpd Suiet\r\nkilnpioakcdndlodeeceffgjdpojajlo Aurox\r\nbopcbmipnjdcdfflfgjdgdjejmgpoaab Block\r\nkmhcihpebfmpgmihbkipmjlmmioameka Eternl\r\naflkmfhebedbjioipglgcbcmnbpgliof Backpack\r\najkifnllfhikkjbjopkhmjoieikeihjb Moso\r\npfccjkejcgoppjnllalolplgogenfojk Tomo\r\njaooiolkmfcmloonphpiiogkfckgciom Twetch\r\nkmphdnilpmdejikjdnlbcnmnabepfgkh OsmWallet\r\nhbbgbephgojikajhfbomhlmmollphcad Rise\r\nnbdhibgjnjpnkajaghbffjbkcgljfgdi Ramper\r\nfldfpgipfncgndfolcbkdeeknbbbnhcc MyTon\r\njnmbobjmhlngoefaiojfljckilhhlhcj OneKey\r\nfcckkdbjnoikooededlapcalpionmalo MOBOX\r\ngadbifgblmedliakbceidegloehmffic Paragon\r\nebaeifdbcjklcmoigppnpkcghndhpbbm SenSui\r\nopfgelmcmbiajamepnmloijbpoleiama Rainbow\r\njfflgdhkeohhkelibbefdcgjijppkdeb OrdPay\r\nkfecffoibanimcnjeajlcnbablfeafho Libonomy\r\nopcgpfmipidbgpenhmajoajpbobppdil Sui\r\npenjlddjkjgpnkllboccdgccekpkcbin OpenMask\r\nkbdcddcmgoplfockflacnnefaehaiocb Shell\r\nabogmiocnneedmmepnohnhlijcjpcifd Blade\r\nomaabbefbmiijedngplfjmnooppbclkk Tonkeeper\r\ncnncmdhjacpkmjmkcafchppbnpnhdmon HAVAH\r\neokbbaidfgdndnljmffldfgjklpjkdoi Fluent\r\nfnjhmkhhmkbjkkabndcnnogagogbneec Ronin\r\nhttps://www.cert.si/tz016/\r\nPage 19 of 23\n\ndmkamcknogkgcdfhhbddcghachkejeap Keplr\r\ndlcobpjiigpikoobohmabehhmhfoodbb ArgentX\r\naiifbnbfobpmeekipheeijimdpnlpgpp Station\r\neajafomhmkipbjmfmhebemolkcicgfmd Taho\r\nmkpegjkblkkefacfnmkajcjmabijhclg MagicEden\r\nffbceckpkpbcmgiaehlloocglmijnpmp Initia\r\nlpfcbjknijpeeillifnkikgncikgfhdo Nami\r\nfpkhgmpbidmiogeglndfbkegfdlnajnf Cosmostation\r\nkppfdiipphfccemcignhifpjkapfbihd Frontier\r\nfdjamakpfbbddfjaooikfcpapjohcfmg Dashalane\r\nhdokiejnpimakedhajhdlcegeplioahd LastPass\r\nbhghoamapcdpbohphigoooaddinpkbai GoogleAuth\r\nBrowser modul\r\nTudi ta modul je kodiran in stisnjen po enakem postopku kot prejšnji. Njegov namen je kraja gesel in kreditnih\r\nkartic shranjenih v spletnih brskalnikih. Gre za bolj specializirano različico ssh _zcp ukaza iz prejšnjega modula\r\nin kradljivca v BeaverTail kodi.\r\nRazlika je v tem, da ostala dva kradljivca preneseta celotne mape s shranjenimi podatki spletnih\r\nbrskalnikov, ta se pa osredotoči samo na shranjena gesla in kreditne kartice.\r\nhttps://www.cert.si/tz016/\r\nPage 20 of 23\n\nZgornja funkcija pridobi podatke kreditnih kartic, shranjenih v nekem brskalniku. Najprej iz SQLite\r\nbaze webdata.db pridobi zašifrirane podatke in jih zatem še dešifrira.\r\nPridobitev ključa in dešifriranje se razlikuje glede na operacijski sistem, saj se tudi sama implementacija v\r\nbrskalnikih nekoliko razlikuje. V Windows OS-u program za dešifriranje podatkov uporabi\r\nfunkcijo dec_win_pwd, na ostalih OS-ih pa dec_unx_pwd. Na Windows OS-u je ključ dodatno zašifriran in\r\nhttps://www.cert.si/tz016/\r\nPage 21 of 23\n\nshranjen v JSON datoteki Local State, za dešifriranje tega ključa se uporablja Windows API\r\nfunkcija CyptUnprotectData, ki s posebnim ključem trenutnega uporabnika dešifrira podatke. Ostali operacijski\r\nsistemi pa imajo ključ shranjen v t.i. keychain/keyring sistemskih shrambah.\r\nV zgornjem izseku kode vidimo, da podatke krade samo iz spletnih brskalnikov Chrome, Opera, Brave, Yandex in\r\nEdge (baziranih na Chromium), kar je najverjetneje posledica višje specializiranosti. Pridobljene podatke pošlje z\r\nmetodo save, kjer se tudi vidi, da uporabi HTTP POST zahtevo na fiksni\r\nnaslov hxxp://23[.]106.253.221:1244/keys.\r\nPovzetek\r\nV tem delu smo pogledali delovanje dveh zlonamernih Python skript, ki sta prenešeni in izvedeni preko t.i.\r\nloaderja ali dropperja (.npl) z imenom InvisibleFerret. Podobno kot za BeaverTail lahko tudi tega prepoznamo po\r\nobliki URL-jev s katerimi komunicira, imenih modulov (pay, bow, adc) ali pa imenu skripte .npl.\r\nSeznam indikatorjev zlorabe (IoC)\r\nIme SHA256\r\nuserRoutes.js 4f632429fedb39fa2addaeff3ba900679ebff99e45353d523776831e2558df80\r\ntest.js 354e7014103783c2096b9f29e4eed11f79d19b13bda112b6fed4ffbf3ad438b9\r\np2.zip 6a104f07ab6c5711b6bc8bf6ff956ab8cd597a388002a966e980c5ec9678b5b0\r\n.npl f46b47e859f321b6676289f3637538b60e1d7d97ee8d79b8ba9d12248858a75a\r\npay 95e3cbaac2749928598928c3b8ca80358c136e01bc429d2c2da77cc788566e1e\r\nbow 6b331ab212a839ad1b1b673ca74a3c50c6dae383c19661e0ae71853f615aa891\r\nhttps://www.cert.si/tz016/\r\nPage 22 of 23\n\nadc 335ad22f143ff050bb405cd48d0011a9eb9f4c7501b18781a42d3956718827c8\r\nURL\r\nhxxps://github[.]com/0xcestlaview/addingtoken\r\nhxxp://23[.]106.253.221:1244/j/ZU1RINz7\r\nhxxp://23[.]106.253.221:1244/p\r\nhxxp://23[.]106.253.221:1244/keys\r\nhxxp://23[.]106.253.221:1244/pdown\r\nhxxp://23[.]106.253.221:1244/uploads\r\nhxxp://23[.]106.253.221:1244/client/ZU1RINz7\r\nhxxp://23[.]106.253.221:1244/payload/ZU1RINz7\r\nhxxp://23[.]106.253.221:1244/brow/ZU1RINz7\r\nhxxp://23[.]106.253.221:1244/adc/ZU1RINz7\r\nhxxp://23[.]106.253.221:1244/any\r\nIP Vrata\r\n173[.]211.106.101 1244\r\nSource: https://www.cert.si/tz016/\r\nhttps://www.cert.si/tz016/\r\nPage 23 of 23",
	"extraction_quality": 1,
	"language": "CS",
	"sources": [
		"Malpedia"
	],
	"references": [
		"https://www.cert.si/tz016/"
	],
	"report_names": [
		"tz016"
	],
	"threat_actors": [
		{
			"id": "d90307b6-14a9-4d0b-9156-89e453d6eb13",
			"created_at": "2022-10-25T16:07:23.773944Z",
			"updated_at": "2026-04-10T02:00:04.746188Z",
			"deleted_at": null,
			"main_name": "Lead",
			"aliases": [
				"Casper",
				"TG-3279"
			],
			"source_name": "ETDA:Lead",
			"tools": [
				"Agentemis",
				"BleDoor",
				"Cobalt Strike",
				"CobaltStrike",
				"RbDoor",
				"RibDoor",
				"Winnti",
				"cobeacon"
			],
			"source_id": "ETDA",
			"reports": null
		},
		{
			"id": "9f101d9c-05ea-48b9-b6f1-168cd6d06d12",
			"created_at": "2023-01-06T13:46:39.396409Z",
			"updated_at": "2026-04-10T02:00:03.312816Z",
			"deleted_at": null,
			"main_name": "Earth Lusca",
			"aliases": [
				"CHROMIUM",
				"ControlX",
				"TAG-22",
				"BRONZE UNIVERSITY",
				"AQUATIC PANDA",
				"RedHotel",
				"Charcoal Typhoon",
				"Red Scylla",
				"Red Dev 10",
				"BountyGlad"
			],
			"source_name": "MISPGALAXY:Earth Lusca",
			"tools": [
				"RouterGod",
				"SprySOCKS",
				"ShadowPad",
				"POISONPLUG",
				"Barlaiy",
				"Spyder",
				"FunnySwitch"
			],
			"source_id": "MISPGALAXY",
			"reports": null
		},
		{
			"id": "8941e146-3e7f-4b4e-9b66-c2da052ee6df",
			"created_at": "2023-01-06T13:46:38.402513Z",
			"updated_at": "2026-04-10T02:00:02.959797Z",
			"deleted_at": null,
			"main_name": "Sandworm",
			"aliases": [
				"IRIDIUM",
				"Blue Echidna",
				"VOODOO BEAR",
				"FROZENBARENTS",
				"UAC-0113",
				"Seashell Blizzard",
				"UAC-0082",
				"APT44",
				"Quedagh",
				"TEMP.Noble",
				"IRON VIKING",
				"G0034",
				"ELECTRUM",
				"TeleBots"
			],
			"source_name": "MISPGALAXY:Sandworm",
			"tools": [],
			"source_id": "MISPGALAXY",
			"reports": null
		},
		{
			"id": "3a0be4ff-9074-4efd-98e4-47c6a62b14ad",
			"created_at": "2022-10-25T16:07:23.590051Z",
			"updated_at": "2026-04-10T02:00:04.679488Z",
			"deleted_at": null,
			"main_name": "Energetic Bear",
			"aliases": [
				"ATK 6",
				"Blue Kraken",
				"Crouching Yeti",
				"Dragonfly",
				"Electrum",
				"Energetic Bear",
				"G0035",
				"Ghost Blizzard",
				"Group 24",
				"ITG15",
				"Iron Liberty",
				"Koala Team",
				"TG-4192"
			],
			"source_name": "ETDA:Energetic Bear",
			"tools": [
				"Backdoor.Oldrea",
				"CRASHOVERRIDE",
				"Commix",
				"CrackMapExec",
				"CrashOverride",
				"Dirsearch",
				"Dorshel",
				"Fertger",
				"Fuerboos",
				"Goodor",
				"Havex",
				"Havex RAT",
				"Hello EK",
				"Heriplor",
				"Impacket",
				"Industroyer",
				"Karagany",
				"Karagny",
				"LightsOut 2.0",
				"LightsOut EK",
				"Listrix",
				"Oldrea",
				"PEACEPIPE",
				"PHPMailer",
				"PsExec",
				"SMBTrap",
				"Subbrute",
				"Sublist3r",
				"Sysmain",
				"Trojan.Karagany",
				"WSO",
				"Webshell by Orb",
				"Win32/Industroyer",
				"Wpscan",
				"nmap",
				"sqlmap",
				"xFrost"
			],
			"source_id": "ETDA",
			"reports": null
		},
		{
			"id": "a66438a8-ebf6-4397-9ad5-ed07f93330aa",
			"created_at": "2022-10-25T16:47:55.919702Z",
			"updated_at": "2026-04-10T02:00:03.618194Z",
			"deleted_at": null,
			"main_name": "IRON VIKING",
			"aliases": [
				"APT44 ",
				"ATK14 ",
				"BlackEnergy Group",
				"Blue Echidna ",
				"CTG-7263 ",
				"ELECTRUM ",
				"FROZENBARENTS ",
				"Hades/OlympicDestroyer ",
				"IRIDIUM ",
				"Qudedagh ",
				"Sandworm Team ",
				"Seashell Blizzard ",
				"TEMP.Noble ",
				"Telebots ",
				"Voodoo Bear "
			],
			"source_name": "Secureworks:IRON VIKING",
			"tools": [
				"BadRabbit",
				"BlackEnergy",
				"GCat",
				"NotPetya",
				"PSCrypt",
				"TeleBot",
				"TeleDoor",
				"xData"
			],
			"source_id": "Secureworks",
			"reports": null
		},
		{
			"id": "18a7b52d-a1cd-43a3-8982-7324e3e676b7",
			"created_at": "2025-08-07T02:03:24.688416Z",
			"updated_at": "2026-04-10T02:00:03.734754Z",
			"deleted_at": null,
			"main_name": "BRONZE UNIVERSITY",
			"aliases": [
				"Aquatic Panda",
				"Aquatic Panda ",
				"CHROMIUM",
				"CHROMIUM ",
				"Charcoal Typhoon",
				"Charcoal Typhoon ",
				"Earth Lusca",
				"Earth Lusca ",
				"FISHMONGER ",
				"Red Dev 10",
				"Red Dev 10 ",
				"Red Scylla",
				"Red Scylla ",
				"RedHotel",
				"RedHotel ",
				"Tag-22",
				"Tag-22 "
			],
			"source_name": "Secureworks:BRONZE UNIVERSITY",
			"tools": [
				"Cobalt Strike",
				"Fishmaster",
				"FunnySwitch",
				"Spyder",
				"njRAT"
			],
			"source_id": "Secureworks",
			"reports": null
		},
		{
			"id": "6abcc917-035c-4e9b-a53f-eaee636749c3",
			"created_at": "2022-10-25T16:07:23.565337Z",
			"updated_at": "2026-04-10T02:00:04.668393Z",
			"deleted_at": null,
			"main_name": "Earth Lusca",
			"aliases": [
				"Bronze University",
				"Charcoal Typhoon",
				"Chromium",
				"G1006",
				"Red Dev 10",
				"Red Scylla"
			],
			"source_name": "ETDA:Earth Lusca",
			"tools": [
				"Agentemis",
				"AntSword",
				"BIOPASS",
				"BIOPASS RAT",
				"BadPotato",
				"Behinder",
				"BleDoor",
				"Cobalt Strike",
				"CobaltStrike",
				"Doraemon",
				"FRP",
				"Fast Reverse Proxy",
				"FunnySwitch",
				"HUC Port Banner Scanner",
				"KTLVdoor",
				"Mimikatz",
				"NBTscan",
				"POISONPLUG.SHADOW",
				"PipeMon",
				"RbDoor",
				"RibDoor",
				"RouterGod",
				"SAMRID",
				"ShadowPad Winnti",
				"SprySOCKS",
				"WinRAR",
				"Winnti",
				"XShellGhost",
				"cobeacon",
				"fscan",
				"lcx",
				"nbtscan"
			],
			"source_id": "ETDA",
			"reports": null
		},
		{
			"id": "d53593c3-2819-4af3-bf16-0c39edc64920",
			"created_at": "2022-10-27T08:27:13.212301Z",
			"updated_at": "2026-04-10T02:00:05.272802Z",
			"deleted_at": null,
			"main_name": "Earth Lusca",
			"aliases": [
				"Earth Lusca",
				"TAG-22",
				"Charcoal Typhoon",
				"CHROMIUM",
				"ControlX"
			],
			"source_name": "MITRE:Earth Lusca",
			"tools": [
				"Mimikatz",
				"PowerSploit",
				"Tasklist",
				"certutil",
				"Cobalt Strike",
				"Winnti for Linux",
				"Nltest",
				"NBTscan",
				"ShadowPad"
			],
			"source_id": "MITRE",
			"reports": null
		},
		{
			"id": "b3e954e8-8bbb-46f3-84de-d6f12dc7e1a6",
			"created_at": "2022-10-25T15:50:23.339976Z",
			"updated_at": "2026-04-10T02:00:05.27483Z",
			"deleted_at": null,
			"main_name": "Sandworm Team",
			"aliases": [
				"Sandworm Team",
				"ELECTRUM",
				"Telebots",
				"IRON VIKING",
				"BlackEnergy (Group)",
				"Quedagh",
				"Voodoo Bear",
				"IRIDIUM",
				"Seashell Blizzard",
				"FROZENBARENTS",
				"APT44"
			],
			"source_name": "MITRE:Sandworm Team",
			"tools": [
				"Bad Rabbit",
				"Mimikatz",
				"Exaramel for Linux",
				"Exaramel for Windows",
				"GreyEnergy",
				"PsExec",
				"Prestige",
				"P.A.S. Webshell",
				"AcidPour",
				"VPNFilter",
				"Neo-reGeorg",
				"Cyclops Blink",
				"SDelete",
				"Kapeka",
				"AcidRain",
				"Industroyer",
				"Industroyer2",
				"BlackEnergy",
				"Cobalt Strike",
				"NotPetya",
				"KillDisk",
				"PoshC2",
				"Impacket",
				"Invoke-PSImage",
				"Olympic Destroyer"
			],
			"source_id": "MITRE",
			"reports": null
		}
	],
	"ts_created_at": 1775434813,
	"ts_updated_at": 1775792228,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/0fdaf06b055d9a0c7fd3b76f9da0010d95bfe538.pdf",
		"text": "https://archive.orkl.eu/0fdaf06b055d9a0c7fd3b76f9da0010d95bfe538.txt",
		"img": "https://archive.orkl.eu/0fdaf06b055d9a0c7fd3b76f9da0010d95bfe538.jpg"
	}
}