TL; DR
Weşanxaneyek npm heşt pakêtên piçûk şandin ku navên wan wekî blokên avahiyê yên rojane ji bo pêşkeftina zincîra blokê û berîka têne xwendin, base58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, û crypto-validate-libHer yek ji wan amûrek dixebite dihewîne. Lêbelê, piştî wê amûrê, blokek kodê ya xwe-gazkirî heye ku di gava ku modul tê hinartin de dixebite.
Nêzîkî 37 saniye piştî importkirinê, ew blok barkêşek ku di nav pakêtê de wekî amûrek ceribandinê tê veşartin deşîfre dike, wê li pelê veşartî di bin navnîşana malê ya bikarhêner de dinivîse, xwe qeyd dike da ku di her carê de ji nû ve dest pê bike. login li ser Windows, macOS, û Linux-ê dixebite û skrîptê deşîfrekirî wekî pêvajoyek cuda dest pê dike. Di dema sazkirina npm-ê de tiştek di vê derbarê de natemire; ew li benda hinartin û xebitandina kodê ye, ku ev kêliyek bêdengtir e ji sazkirinê.
Barkêş ne şefaf e. Ew wekî base64-a sade tê şandin, ji ber vê yekê deşîfrekirina "amûra ceribandinê" qonaxa duyemîn bi tevahî vedigerîne: a berîka krîpto û diziya razên ew li benda makîneyê ye ku bêkar bimîne, mifteyên taybet û hevokên tov berhev dike, her dîtinê bi mifteyek RSA-4096 ya kodkirî şîfre dike, û bi pinkirina wê li depoya IPFS-a giştî wê derdixe, her 12 saetan carekê bi beacon vedigere.
Em klusterê wekî dişopînin PhantomSyncHer heşt pakêt di dema analîzê de di qeyda npm de zindî bûn, di bin yek hesabê de hatin weşandin.
| Ecosystem | npm |
| pakêtên | base58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, crypto-validate-lib |
| Platformên hedefgirtî | Windows, macOS, Linux |
| Reftarên bingehîn | Dakêşana derengmayî, dema importkirinê wekî amûrek ceribandinê veşartî ye; domdariya platformên cûda saz dike |
| payload | Dizîna berîka krîpto û razên, şîfrekirina RSA-4096, derxistin bi rêya pinkirina IPFS-ya giştî |
Anatomiya êrîşê
Di xwendina yekem de her pakêt bêhempa xuya dike. bingeh-58-bikaranîn, bo nimûne, çend kîlobayt koda alîkar a Base58 / Bitcoin-WIF ya bê girêdayî ye - tam ew e ku nav soz dide. Koda têkildar piştî modulê module.exports, cihê ku xwendevanek ku li jorê pelê dinihêre îhtîmaleke mezin nabîne: fonksiyoneke xwe-gazkirinê ku xwe bi demjimêrekê bername dike.
Zincîra operasyonan, ku ji çavkaniya pakêtê ve ji nû ve hatiye çêkirin, wiha dimeşe:
1. Package is required() by the host project
2. A self-invoking function schedules a callback ~37,000 ms later (setTimeout)
3. On fire, the callback reads test/fixtures/keypairs.dat (a base64 blob)
4. It base64-decodes that blob into a Node.js script
5. It writes the script to ~/.cache-db/.node-sync/syncd.js (mode 0o700)
6. It installs login-persistence for that script (see below)
7. It spawns "node syncd.js" as a detached processDu hilbijartinên sêwiranê derdikevin pêş.
Barkêş wekî amûrek ceribandinê rêwîtiyê dike. Qonaxa duyem wekî kodek eşkere nehatiye nivîsandin. Ew di nav de dijî. test/fixtures/keypairs.dat, pelê base64 ku navê wî di pakêtek de tevlihev dibe ku îdîa dike ku cotên mifteyan birêve dibe. Ji bo mirovekî ku tarballê dixwîne, ew wekî daneyên nimûne xuya dike; ji bo koda pêvekirî, ew skrîptek e ku were deşîfrekirin û xebitandin. Dilopker bi xwe navnîşana torê nagire nav xwe - yên ku di qonaxa duyemîn de ne - lê ti tevliheviyek zêde tune: amûr tebeqeyek yekane ya base64 e, ji ber vê yekê deşîfrekirina wê (bingeh64 -d) tevahî vedigerîne syncd.js û tevgera wê ya torê. Beşa din rave dike ka ew qonaxa vegerandinê çi dike.
Teqandin dereng dikeve û bi hawirdekirinê ve girêdayî ye, ne bi sazkirinê. Ji ber ku tetikê ye xwestin() plus demjimêrek ~37-çirkeyî li şûna çengelek sazkirinê, kontrolên tevgerê yên ku tenê temaşe dikin ji holê radikin npm saz kirin gavek, û derengmayîn ji gelek xebitandinên sandbox û CI yên demkurt dirêjtir dom dike. Heta ku tiştek were bicîhanîn, sazkirina ku pakêtê kişandiye hundir demek dirêj qediyaye.
Dema ku skrîptê deşîfrekirî li ser dîskê be li ~/.cache-db/.node-sync/syncd.js - rêyek ku wekî peldanka cache ya rûtîn tê xwendin hatî hilbijartin - dropper dihêle ku ew li ser her sê platformên sereke ji nû ve destpêkirinê sax bimîne:
- Linux: têketinek cron ku skrîptê ji nû ve dest pê dike. Têketin bi fîlterkirina crontaba heyî bi rêya grep -v senkronîzekirin, ku bandora aliyî ew e ku têketina nû ji navnîşek sade ya ku ji bo heman navî greps dike, derdikeve.
- Windows: karekî plansazkirî bi navê WinNodeSync, ji bo ji nû ve xebitandinê li gorî navbera 12 hûrdeman hat sazkirin.
- macOS: karekî destpêkirî yê bi nîşankirî com.apple.syncd, ku di gelek pakêtan de heye - etîketek ku karûbarek pergala Apple ya rewa dişibihe.
Dûv re skrîpt tavilê wekî pêvajoyeke cuda tê destpêkirin, ji ber vê yekê piştî ku bernameya importkirinê bi dawî dibe jî berdewam dike.
Qonaxa duyemîn çi dike
Ji ber ku amûr ji qatek base64 ya yekane ye, qonaxa duyemîn bi awayekî paqij deşîfre dibe û bi tevahî dikare were xwendin. Her heşt pakêt yek ji sê guhertoyên heman skrîptê hildigirin, ku xwe di şîroveyek sernavê de wekî phantom syncd v3 - topo durmiente ("xaliyê razayî"). Karê wê ew e ku materyalên berîka krîptopereyan û sirên pêşdebiran bidize û wan ji makîneyê bişîne. Ew bi van gavan dixebite:
- 1. Li bendê bin heta ku makîne bêkar bimîne. Berî her tiştî, syncd.js kontrol dike ku bikarhêner çiqas dem bêçalak bûye û tenê ji sînorekê derbas dibe (nêzîkî 15 hûrdeman) — xprintidle li ser Linuxê, ioreg HIDdleTime li ser macOS, û lêpirsînek dema bêkar a PowerShell li ser Windows. Ji ber vê yekê berhevkirin bi gelemperî dema ku kes li ber klavyeyê nebe çêdibe.
- 2. Guhestgehek çalakkirinê ya ji dûr ve kontrolkirî bistîninSkrîpt berî ku dest pê bike, ji dead-dropekê mîhengkirinek piçûk dikişîne. Çavkaniya sereke URL-ya xav a gist a GitHub e (gist.githubusercontent.com/juang55/…/cfg.txt); skrîpt tenê çalak dibe ger ew mîheng bixwîne çalak=1Ger gist peyda nebe, ew vedigere sê nasnameyên naveroka IPFS-ê yên kodkirî yên hişk, ku bi rêya dergehên giştî têne wergirtin. gateway.pinata.cloud, ipfs.io, û cloudflare-ipfs.comEv yek kontrola çekkirin/çekkirinê ya piştî-rastiyê û demildestek li hember rakirinê dide operator. (Guhertoya herî biçûk, di sala ... de tê şandin) crypto-validate-lib, alîkarên-berîkê-eth, û solana-key-utils, qata gist hatiye rakirin û tenê bi nasnameyên IPFS-ê ve girêdayî ye.)
- 3. Materyal û sirên berîka berhev bikin. Skrîpt di navnîşana malê ya bikarhêner de dimeşe — ~/.config/solana, ~/.ethereum/kilîtfiroş, ~/.foundry, ~/.hardhat, ~ / .ssh, û Desktop/belgeyên/downloads (tevî navên peldankên bi zimanê spanî), û her wiha ~/.env û pelên shell rc, û hevwateya wan AppData cihên li ser Windows-ê. Ew mifteyên taybet ên Ethereum, mifteyên Bitcoin WIF, hevokên tovê BIP-39, cotên mifteyên Solana, JSON-a depoya mifteyên Ethereum, mifteyên SSH, û guherbarên hawîrdora hilgirê veşartî hedef digire. Guhertoya mezintir (di abi-encode, bingeh-58-bikaranîn, eth-dev) ferhenga tevahî ya BIP-39 a 2048 peyvan hildigire û îfadeyên rêkûpêk bikar tîne da ku xaneya mifteyên takekesî û hevokên tovê yên pejirandî ji her nivîsa ku ew dixwîne; li şûna wê, du guhertoyên piçûktir pelan li gorî peyvên sereke li hev dikin (toxim, mînemonîk, tûrikê diravan, metamask, keçek, ledger, safî, ...) û pelên tevahî bar bike.
- 4. Bi rêya karûbarek pinkirina giştî şîfrekirin û derxistin. Her dîtin bi şopa tiliya mêvandar ve tê pak kirin (navê bikarhêner@navê mêvandar, platform, demjimêr) û bi mifteyek giştî ya RSA-4096-ê ya kodkirî ya hişk a ku di skrîptê de cih digire tê şîfrekirin. Dûv re tomarê şîfrekirî bi rêya pinkirina wê li IPFS-ê tê barkirin. api.pinata.cloud/pinning/pinJSONToIPFS, bi nasnameyên Pinata API yên kodkirî ve hatî rastkirin. Serwerek C2 ya taybetî tune ku were desteserkirin: daneyên dizî di depoya nenavendî ya giştî de têne parkkirin, ku ji hêla operator ve bi karanîna haşeyên naveroka encam têne wergirtin. Barkirin bi çend saniyeyan ji lerizîna bêserûber, û qeydek herêmî ya nîşana demê | cureyê-kilît | vegerandin-hash li tê parastin ~/.cache-db/.node-sync/.sl.
- 5. Li ser çerxek 12-saetî berdewam bike û nîşan bide. Qonaxa duyemîn mayîndetiya xwe ji nû ve saz dike - têketinek cron li ser Linux-ê, a com.apple.syncd karekî li ser macOSê dest pê kir, û karekî plansazkirî bi navê WindowsNodeSync li ser Windows-ê — ji bo ji nû ve xebitandinê her 12 saetan carekê hatiye sazkirin. Bala xwe bidinê ku ev wekîdin Navê peywirê yê Windows-ê ji ya ku dropper saz dike (WinNodeSync); her du jî hêjayî lêgerînê ne.
Timeline
Ev heşt pakêt di 2026-07-13 û 2026-07-14 de bi hev re hatin weşandin. Çend ji wan ji yekê zêdetir guhertoyan hildigirin; dakêşker li seranserê guhertoyan yek e, tenê cudahiyên xêzan diguherin dema ku mezinahiya koda karûbarê ya nebaş a li jor diguhere.
| Date | Bûyer |
|---|---|
| 2026-07-13 | Pakêtên pêşîn di klusterê de di bin yek weşanger de xuya dibin (solana-key-utils, eth-wallet-helpers, crypto-validate-lib û guhertoyên destpêkê yên yên mayî) |
| 2026-07-13 → 07-14 | Navên mayî û guhertoyên şopandinê hatine weşandin; heman dakêşana pêvekirî di her yekê de tê şandin |
| 2026-07-14 | Her heşt pakêt hatin nîşankirin û analîzkirin; her pakêtek hîn jî dikare ji qeydê were sazkirin. |
Di seranserê teqînê de, navûdengê qeyda weşanxaneyê ji destpêka komê bi qasî bêalî ber bi zêdekirina tesbîtan ve çû - bandorek alî ya berbiçav a pakêtan ku hatine nîşankirin, ne taybetmendiyek sêwirandî.
Nîşaneyên Lihevhatinê
Hemû nîşaneyên li jêr di dema analîzê de hebûna wan hat piştrastkirin - yên di tabloyên "Qonaxa Duyemîn" de bi rêya deşîfrekirinê. test/fixtures/keypairs.dat û xwendina vegotinê syncd.js.
Pel û rê
| indicator | Role |
|---|---|
~/.cache-db/.node-sync/syncd.js | Qonaxa duyem a deşîfrekirî, bi moda 0o700 hatiye nivîsandin |
~/.cache-db/.node-sync/.sl | Têketina derxistina herêmî (demjimêr | cureyê mifteyê | haşa IPFS) |
test/fixtures/keypairs.dat | Barkêşiya bi kodkirina Base64 di hundirê tarballê de wekî "amûrek ceribandinê" tê amadekirin. |
Binesaziya torê ya qonaxa duyemîn (ji syncd.js hatîye vegerandin)
| indicator | Role |
|---|---|
gist.githubusercontent.com/juang55/b298754cb72942b1cdcf02ccd45cde2f/raw/cfg.txt | Çalakkirin dead-drop; skrîpt tenê heke mîheng bixwîne dixebite active=1 |
Qmcqz3w8j4qFQXDAXAxnrdc2oSX3nzBT4NqtpTqL8mr1ga | Vegera mîhengkirina IPFS (CID) |
QmdTXoqVmTHY1i4ZWLdLkoQ9YChp5TXPh5cWXwnAYZt5iF | Vegera mîhengkirina IPFS (CID) |
QmfJkLU5gdCpqbbqEjWYC2anXW9FmuEeSLLeLiHVJKYUjp | Vegera mîhengkirina IPFS (CID) |
gateway.pinata.cloud, ipfs.io, cloudflare-ipfs.com | Dergehên IPFS-ê yên ku ji bo anîna paşvegera mîhengê têne bikar anîn |
api.pinata.cloud/pinning/pinJSONToIPFS | Xala dawî ya derxistinê, daneyên dizî li IPFS-ya giştî hatine zeliqandin |
| Mifteya API-ya Pinata | 13c766575b9270a9825d, belgeya derxistina bi kodkirina hişk |
Armancên berhevkirina qonaxa duyemîn (ji syncd.js hatine vegerandin)
| indicator | Role |
|---|---|
~/.config/solana, ~/.ethereum/keystore, ~/.foundry, ~/.hardhat, ~/.ssh, ~/.env, pelên shell rc | Peldank/pelên ku ji bo mifte û razên hatine lêgerîn |
AppData\Roaming\Solana, AppData\Local\ethereum\keystore | Li hevwateyên Windows-ê lêgerîn |
| Cureyên berhemên çandî yên hatine berhevkirin | Mifteyên taybet ên ETH, Bitcoin WIF, hevokên tovê BIP-39, cotên mifteyên Solana, JSON depoya mifteyên Ethereum, mifteyên SSH, guherbarên jîngeha veşartî |
Berhemên berdewamiyê
| Platform | indicator |
|---|---|
| Linux | destpêkirina têketina cron syncd.js; bi rêya crontabê hate sazkirin û bi rêya fîltrekirinê hate fîltrekirin grep -v syncd |
| Windows | peywireke bernamekirî WinNodeSync (dilopker) û WindowsNodeSync (qonaxa duyemîn) |
| MacOS | etîketa destpêkirinê com.apple.syncd |
| Gişt | Qonaxa duyemîn xwe di çerxek 12-saetî de ji nû ve berdewam dike |
Behavioral
- Fonksiyona xwe-gazkirinê piştî lê zêde kir module.exports, plansazkirin a setTimeout ji ~37,000 ms li ser importê.
- zarok_pêvajo spawn("girêk", ) bi seta vebijarkên veqetandî.
- Çalakkirina bêçalak a deriyê vala di qonaxa duyemîn de (xprintidle / ioreg Dema bêçalakiyê ya HIDdleTime / PowerShell; ~15-deqîqe).
- Şîfrekirina RSA-4096 ya per-dîtinê, paşê HTTPS KOZ bo API-ya pinningê ya IPFS-ya giştî.
Pakêt û guhertoyên (npm, weşanger solbuilder_io)
| Pakêt | guhertoyên |
|---|---|
base58-utils | 1.0.0, 1.0.1, 1.0.3 |
abi-encode | 1.0.0, 1.0.1, 1.0.2 |
eth-dev | 1.0.0, 1.0.1, 1.0.2 |
arb-kit | 1.0.0, 1.0.1 |
layer2-sdk | 1.0.0, 1.0.1 |
solana-key-utils | 1.0.0 |
eth-wallet-helpers | 1.0.0 |
crypto-validate-lib | 1.0.0 |
Çapemend
- solbuilder_io - angel_lopez89[@]proton[.]me, e-name nehatiye verastkirin, hesabê kontrola çavkaniyê nehatiye verastkirin, depoya girêdayî tune.
Wesfkirin û Reftarên Çavdêrîkirî
Heşt pakêt hesabê weşanger û bargiraniyek parve dikin. Her yek ji wan pakêtek hêsan e - çend kîlobayt koda bikêrhatî ya rastîn bi heman dropper-ê lê zêdekirî - bêyî depoyek girêdayî û di bin e-nameyek bi şêwaza yekcar bikarhatî ya neverastkirî de tê weşandin. Ew yekrengî, rêya avêtina hevpar, etîketên mayînde yên hevpar, û parvekirina keypairs.dat pelên stagingê ew in ku klusterê bi hev ve girêdidin.
Pakêt di derbarê tevgerên xwe de bi awayekî neasayî eşkere ne. solana-key-utils şîroveyên hundirîn hildigire ku bloka pêvekirî bi gotinên sade vedibêjin - yek wê bi nav dike PHANTOM: berdewamiya nedîtî, yekî din (bi spanî) dixwîne Li ser paşxaneyê topê biavêje, "mole di paşperdeyê de bixebitîne." Ev şîroveyên kodê ne ku ew çi dike; navê kampanyayê di vê postê de ji wê etîketa yekem digel girêka sexte "daemonê hevdengkirinê" hatiye kişandin (senkronîzekirin) ku makîneya berdewamiyê teqlîd dike.
Em tenê rave dikin ka kod bi awayekî berbiçav çi dike. Navê pakêtan - hemî şertên krîpto, berîka, û amûrên zincîra blokê - nîşan dide ku temaşevanên pêşdebiran bi îhtîmaleke mezin wan bi navê wan dikişînin; ew bi xwe destnîşan nake ku weşanger kî ye. Qonaxa duyemîn bi deşîfrekirina amûra base64 bi tevahî hate vegerandin, û tevgera wê li jor hatî ravekirin: ew mifteyên berîka, hevokên tov, û razên berhev dike û wan, bi şîfrekirina RSA, bi rêya Pinata vediguhezîne depoya IPFS ya giştî. Hilbijartinek sêwirana berbiçav nebûna serverek C2 ya taybet e - mîheng ji gistek GitHub û IPFS tê, û daneyên dizî di depoya nemerkezî ya giştî de têne parkkirin ku ji hêla haşa naverokê ve têne mifte kirin, ku her du jî ji mêvandarek kontrolkirî ya êrîşkar dijwartir têne desteser kirin. Di dema nivîsandinê de tu raporek giştî ya berê ya ku bi vê komê re têkildar e nehat dîtin.
Bandor, Trend û Rêbername ji bo Parêzvanan
Kî eşkere bûye. Her kesê ku yek ji van pakêtan li projeyek Node zêde kir û dûv re kodê ku wê îtxal dike xebitand. Ji ber ku detonasyon dema îtxalkirinê ye ne dema sazkirinê, tenê hebûna pakêtê têrê nake - lê her karanîna normal a ku modulê bar dike digihîje barkêşiyê. Navên xapandinê pêşdebirên ku li ser Ethereum, Solana, Arbitrum, Layer-2, û amûrên kodkirina berîka giştî ava dikin hedef digirin - nifûsa ku bi îhtîmaleke mezin tam ew hebûnên ku qonaxa duyemîn lê digere hene. Her kesê ku yek ji van modulan li ser makîneyek ku mifteyên berîka, hevokên tov, depoyên mifteyan, mifteyên SSH, an jî digire xebitand. .a V divê raz wan belgeyan wekî tawanbar bihesibînin û wan bizivirînin.
Du qalibên ku hêjayî hundurînkirinê ne. Yekem, barkêş-wek-çarçove: qonaxa duyemîn wekî base64 di nav pelê daneyê ya bi navekî maqûl de tê şandin (test/fixtures/keypairs.dat) çavkaniya xuya ya pakêtê paqij dihêle û naveroka xerabkar dixe nav pelê ku amûrên nirxandinê û skimên mirovan pir caran wekî daneyên bêbandor bi kar tînin. Ya duyemîn, darvekirina derengmayî ya dema importkirinê bi domdariya platformên cûdaJiholêrakirina tetikê ji çengela sazkirinê, zêdekirina demjimêrekê, û dûv re berdewamkirina li seranserê cron, karên bernamekirî, û launchd gaveke bi zanebûn dûrî teknîkên skrîptên sazkirinê yên dengdar e ku skankirina qeydê ya otomatîk ji nêz ve dişopîne.
Rêbername ji bo parêzvan û parêzvanan:
- Koda lêzêdekirî piştî dermankirinê bike module.exports wekî pêşîniyek ji bo nirxandinê - mantiqa dropper bi gelemperî di bin rûyê modulê "rastîn" de vedişêre.
- Nefikirin ku pelên daneyan bêbandor in. Blobek base64 di bin de ceribandin/çend amûr/ ku di dema xebitandinê de tê xwendin û deşîfrekirin cîranê-cîbicîkirinê ye; flag di dema xebitandinê de pelên sazkirî dixwîne ku tê de hene Karî/eval/nivîsandin-paşê-spawn merbend.
- Li rêya daketinê bigere ~/.cache-db/.node-sync/ û ji bo yekîneyên domdariyê WinNodeSync (karekî bernamekirî) û com.apple.syncd (destpêkirin) li ser makîneyên pêşdebiran ên ku van navan kişandin.
- Hişyarî li ser pêvajoyên Node-ê yên ku têketinên cron, peywirên bernamekirî, an karên launchd diafirînin - pirtûkxaneyên rewa kêm kêm vê yekê di dema importkirinê de dikin.
- Pelên kilîtkirî û guhertoyên pinkirî tercîh bikin, û cûdahiya her girêdayîbûna "bikêrhatî" ya piçûk a nû binirxînin, nemaze pakêtên bê girêdayî hatin weşandin ji hêla hesabên neverastkirî yên bêyî depoyek girêdayî.
Ji bo parêzvanên qeydê, xala sereke ew e ku çavdêriya çengela sazkirinê pêwîst e lê têrê nake: dakêşekek bi derengketina demjimêrê ya dema importkirinê ku di hundurê pelê daneyê de hatî danîn dê kontrolek tenê-dema sazkirinê derbas bike, û gava domdariyê pir caran sînyala herî bilind a çavdêrîkirî ye ku ji bo girtinê maye.







