PhantomSync: npm dulritunarpakkar fela veskisþjóf

PhantomSync: átta dulritunarforritara npm pakkar fela seinkaðan, sjálfstætt viðvarandi dropateljara

TL; DR

Einn npm útgefandi sendi átta litla pakka sem nöfnin voru eins og hversdagslegar byggingareiningar fyrir blockchain og veskisþróun. base58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpersog crypto-validate-libHvert og eitt þeirra inniheldur virkt tól. Á eftir því tóli er hins vegar sjálfvirkur kóðabút sem keyrir um leið og einingin er flutt inn.

Um það bil 37 sekúndum eftir innflutning, sá blokk afkóðar gagnamagn sem er sent inni í pakkanum dulbúið sem prófunarbúnaður, skrifar það í falda skrá undir heimamöppu notandans, skráir sig til að endurræsa á hverjum login í Windows, macOS og Linux og ræsir afkóðaða handritið sem aðskilið ferli. Ekkert við þetta ræsist við uppsetningu npm; það bíður eftir að kóðinn verði fluttur inn og keyrður, sem er rólegri stund en uppsetningin.

Notkunin er ekki ógegnsæ. Hún er send sem venjuleg base64, þannig að afkóðun „prófunarbúnaðarins“ endurheimtir annað stigið að fullu: a dulritunarveski og leyndarmálaþjófur sem bíður eftir að vélin sé aðgerðalaus, safnar einkalyklum og fræsetningum, dulkóðar hverja fund með harðkóðuðum RSA-4096 lykli og fjarlægir hann með því að festa hann við opinbera IPFS geymslu, og sendir bakvökva á 12 tíma fresti.

Við fylgjumst með klasanum sem PhantomSyncAllir átta pakkarnir voru virkir í npm skrásetningunni þegar greiningin fór fram, birtir undir einum aðgangi.

Vistkerfinpm
Pakkarbase58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, crypto-validate-lib
MarkmiðspallarWindows, macOS, Linux
KjarnahegðunSeinkuð innflutningstími, falin sem prófunarbúnaður; setur upp varanleika á öllum kerfum
EndurgreiðslaDulritunarveski og leyndarmálsþjófur, RSA-4096 dulkóðun, útrýming með opinberri IPFS-festingu

Líffærafræði árása

Hver pakki lítur ómerkilegur út við fyrstu lestur. base58-utils, til dæmis, er nokkur kílóbæt af núllháðum Base58 / Bitcoin-WIF hjálparkóða — nákvæmlega það sem nafnið lofar. Viðeigandi kóði er staðsettur eftir einingarinnar mát.útflutningur, þar sem lesandi sem rennir yfir efsta hluta skráarinnar er ólíklegur til að leita: sjálfkölluð aðgerð sem tímasetur sig með tímastilli.

Keðjan af aðgerðum, endurbyggð úr pakkakóðanum, virkar svona:

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 process

Tveir hönnunarvalkostir skera sig úr.

Farmurinn ferðast sem prófunarbúnaður. Annað stigið er ekki skrifað sem augljós kóði. Það býr í próf/innréttingar/lykilpör.dat, base64 skrá sem nafnið blandast við pakka sem segist meðhöndla lykilpör. Fyrir mann sem les tar-skrána lítur það út eins og sýnishornsgögn; fyrir viðbætta kóðann er það forskrift til að afkóða og keyra. Droperinn sjálfur inniheldur engin netföng — þau sem eru í öðru stigi — en það er engin frekari ruglingur: festingin er eitt lag af base64, svo að afkóða hana (base64 -d) endurheimtir allt syncd.js og hegðun netsins. Í næsta kafla er farið yfir hvað endurheimtarstigið gerir.

Sprengingunni er seinkað og tengd innflutningi, ekki uppsetningu. Vegna þess að kveikjan er krefjast() auk ~37 sekúndna tímamælis í stað uppsetningarkróks, þá sniðgengur hegðunin athuganir sem aðeins horfa á npm setja í embætti skrefið, og töfin varir lengur en margar skammvinnar sandkassa- og CI-keyrslur. Þegar eitthvað keyrir er uppsetningunni sem sótti pakkann löngu lokið.

Þegar afkóðaða handritið er komið á diskinn kl. ~/.cache-db/.node-sync/syncd.js — slóð sem valin er til að lesa eins og venjuleg skyndiminni — dropateljarinn lætur það lifa af endurræsingar á öllum þremur helstu kerfum:

  • Linux: cron-færsla sem endurræsir handritið. Færslunni er komið fyrir með því að sía núverandi crontab í gegnum grep -v samstillt, sem hefur þá aukaverkun að nýja færslan verður ekki hluti af venjulegum lista sem notar grep fyrir sama nafn.
  • Windows: áætlað verkefni sem heitir WinNodeSync, stillt á að endurtaka með 12 mínútna millibili.
  • macOS: launchd starf merkt com.apple.syncd, sem er að finna í nokkrum af pakkningunum — merki sem líkir eftir lögmætri Apple kerfisþjónustu.

Handritið er síðan ræst strax sem aðskilið ferli, þannig að það heldur áfram að keyra eftir að innflutningsforritið hættir.

Hvað annað stigið gerir

Þar sem búnaðurinn er eitt base64 lag, afkóðar annað stigið hreint og hægt er að lesa það í heild sinni. Allir átta pakkarnir innihalda eina af þremur afbrigðum af sama handriti, sem skilgreinir sig í hausathugasemd sem Phantom syncd v3 — topo durmiente („sofandi moldvarpa“). Hlutverk hennar er að stela efni úr dulritunargjaldmiðilsveskjum og leyndarmálum forritara og senda þau af vélinni. Það keyrir í þessum skrefum:

  • 1. Bíddu þar til vélin er óvirk. Áður en nokkuð er gert, syncd.js athugar hversu lengi notandinn hefur verið óvirkur og fer aðeins yfir þröskuld (um 15 mínútur) — xprintidle á Linux, Íoreg HIDIdleTime á macOS og PowerShell fyrirspurn um biðtíma á Windows. Þess vegna á sér stað uppsöfnun þegar enginn er við lyklaborðið.
  • 2. Sæktu fjarstýrðan virkjunarrofaHandritið sækir litla stillingu úr dauðum reit áður en það framkvæmir aðgerð. Aðalheimildin er hrá vefslóð á GitHub gist (gist.githubusercontent.com/juang55/…/cfg.txt); handritið virkjast aðeins ef sú stilling les virkt=1Ef meginatriðið er ekki tiltækt, þá fellur það aftur til þriggja fastkóðaðra IPFS innihaldsauðkenna, sóttra í gegnum opinberar gáttir. gateway.pinata.cloud, ipfs.ioog cloudflare-ipfs.comÞetta gefur notandanum stjórn á virkjun/afvopnun eftir á og varaafl gegn niðurrifsvörn. (Minnsta útgáfan, send í dulritunar-staðfestingar-bókasafn, eth-veskisaðstoðarmennog solana-lykill-hjálpartæki, hefur gist-lagið fjarlægt og treystir eingöngu á IPFS-auðkennin.)
  • 3. Safnaðu veskisefni og leyndarmálum. Handritið gengur um heimaskrá notandans — ~/.stillingar/solana, ~/.ethereum/lykilgeymsla, ~/.steypa, ~/.hjálmur, ~ / .sshog Desktop/skjöl/Niðurhal (þar á meðal nöfn á möppum á spænsku), auk ~/.umslag og skel rc skrár, og samsvarandi AppData staðsetningar á Windows. Það miðar á einkalykla Ethereum, WIF-lykla Bitcoin, BIP-39 fræsetningar, Solana lyklapör, JSON lyklageymslu Ethereum, SSH-lykla og umhverfisbreytur sem bera leyndarmál. Stærri útgáfan (í abi-kóðun, base58-utils, eth-þróun) inniheldur alla 2048 orða BIP-39 orðabókina og notar reglulegar segðir til að þykkni einstakir lyklar og staðfestar fræsetningar úr hvaða texta sem er lesinn; tvær minni útgáfurnar finna í staðinn skrár eftir leitarorði (fræ, minnisvarða, veski, metamask, Phantom, höfuðbók, trezor, …) og hlaða inn heilum skrám.
  • 4. Dulkóðaðu og fjarlægtu í gegnum opinbera festingarþjónustu. Hver niðurstaða fylgir fingrafar hýsilsins (notandanafn@hýsingarheiti, vettvangur, tímastimpill) og dulkóðað með harðkóðuðum RSA-4096 opinberum lykli sem er innbyggður í handritið. Dulkóðaða færslan er síðan hlaðið upp með því að festa hana við IPFS með api.pinata.cloud/pinning/pinJSONToIPFS, staðfest með harðkóðuðum Pinata API innskráningarupplýsingum. Það er enginn sérsniðinn C2 netþjónn til að gera upptækt: stolnu gögnin eru geymd í opinberri, dreifðri geymslu, sem rekstraraðilinn getur sótt með því að nota efnishraðann sem myndast. Upphleðslur eru með nokkrum sekúndum af handahófskenndri titringi og staðbundinni skráningu af tímastimpill | lykilgerð | skilað-kjöltás er haldið á ~/.cache-db/.node-sync/.sl.
  • 5. Haltu áfram og láttu senda merki í 12 tíma hringrás. Annað stigið endurheimtir eigin varanleika — cron færsla á Linux, a com.apple.syncd launchd verkefni á macOS og áætlað verkefni sem heitir WindowsNodeSync á Windows — stillt á að keyra aftur á 12 tíma fresti. Athugið að þetta er mismunandi Nafn Windows verkefnis frá því sem dropateljarinn setur upp (WinNodeSync); báðir eru þess virði að leita að.

Timeline

Átta pakkarnir voru gefnir út í hröðum hraði 2026-07-13 og 2026-07-14. Nokkrir eru með fleiri en eina útgáfu; dropateljarinn er eins á milli útgáfa, aðeins línufrávik breytast eftir því sem stærð góðkynja gagnkóðans fyrir ofan hann breytist.

Dagsetning atburður
2026-07-13 Fyrstu pakkarnir í klasanum birtast undir einum útgefanda (solana-key-utils, eth-wallet-helpers, crypto-validate-lib og fyrri útgáfur af hinum)
2026-07-13 → 07-14 Eftirstandandi nöfn og útgáfur af eftirfarandi útgáfum birtar; sömu viðbættu dropateljararnir eru sendir í hverju
2026-07-14 Öll átta merkt og greint; allir pakkarnir eru enn hægt að setja upp úr skrásetningunni

Í gegnum allt uppsveifluna breyttist orðspor útgefanda í skrásetningunni úr nokkurn veginn hlutlausu í upphafi klasans í mjög neikvætt þegar greiningar söfnuðust upp — sem er greinanleg aukaverkun af því að pakkarnir voru flaggaðir, ekki hönnuð aðgerð.

Vísbendingar um málamiðlun

Allir vísbendingar hér að neðan voru staðfestir til staðar við greiningu — þeir sem voru í töflunum „annars stigs“ með afkóðun. próf/innréttingar/lykilpör.dat og lesa endurheimta syncd.js.

Skrár og slóðir

Vísir Hlutverk
~/.cache-db/.node-sync/syncd.js Afkóðað annað stig, skrifað með stillingu 0o700
~/.cache-db/.node-sync/.sl Staðbundin útrásarskrá (tímastimpill | lykilgerð | IPFS-kjöllu)
test/fixtures/keypairs.dat Base64-kóðað gagnasafn sett inn í tar-skrána sem „prófunarbúnaður“

Netkerfisinnviðir á öðru stigi (endurheimt úr syncd.js)

Vísir Hlutverk
gist.githubusercontent.com/juang55/b298754cb72942b1cdcf02ccd45cde2f/raw/cfg.txt Virkjun án virkjunar; handritið keyrir aðeins ef stillingar lesa active=1
Qmcqz3w8j4qFQXDAXAxnrdc2oSX3nzBT4NqtpTqL8mr1ga IPFS stillingar varaauðkenni (CID)
QmdTXoqVmTHY1i4ZWLdLkoQ9YChp5TXPh5cWXwnAYZt5iF IPFS stillingar varaauðkenni (CID)
QmfJkLU5gdCpqbbqEjWYC2anXW9FmuEeSLLeLiHVJKYUjp IPFS stillingar varaauðkenni (CID)
gateway.pinata.cloud, ipfs.io, cloudflare-ipfs.com IPFS-gáttir notaðar til að sækja varastillingarviðbótina
api.pinata.cloud/pinning/pinJSONToIPFS Endapunktur útrýmingar, stolin gögn fest við opinbert IPFS
Lykill fyrir forritaskil Pinata 13c766575b9270a9825d, harðkóðað útrýmingarleyfi

Safnmarkmið annars stigs (endurheimt úr syncd.js)

Vísir Hlutverk
~/.config/solana, ~/.ethereum/keystore, ~/.foundry, ~/.hardhat, ~/.ssh, ~/.env, skel rc skrár Möppur/skrár leitaðar að lyklum og leyndarmálum
AppData\Roaming\Solana, AppData\Local\ethereum\keystore Leitað var að sambærilegum Windows-tækjum
Tegundir gripa sem safnað var Einkalyklar ETH, Bitcoin WIF, BIP-39 fræsetningar, Solana lyklapör, JSON lyklageymslu Ethereum, SSH lyklar, leynileg umgjörðarbreytur

Varanleikagripir

Platform Vísir
Linux cron færsla ræst syncd.js; sett upp í gegnum crontab síað í gegnum grep -v syncd
Windows áætlað verkefni WinNodeSync (dropateljari) og WindowsNodeSync (annað stig)
MacOS útgáfumerki com.apple.syncd
Allt Annað stig endurtekur sig í 12 tíma hringrás

Hegðun

  • Sjálfvirkt virkni bætt við á eftir mát.útflutningur, tímasetningar a setTimeout um ~37,000 ms við innflutning.
  • barn_ferli spawn(„hnútur“ ) með aðskildum valkostasafni.
  • Virkjun með aðgerðalausu eftirliti í öðru stigi (xprintidle / Íoreg HIDIdleTime / PowerShell biðtími; ~15 mínútna þröskuldur).
  • RSA-4096 dulkóðun fyrir hverja leit, síðan HTTPS SENDA í opinbert IPFS festingar-API.

Pakkar og útgáfur (npm, útgefandi solbuilder_io)

Pakki útgáfur
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

Útgefandi

  • solbuilder_io - angel_lopez89[@]prótón[.]ég, netfang óstaðfest, enginn staðfestur heimildarstýringarreikningur, ekkert tengt geymsla.

Eiginleiki og athuguð hegðun

Átta pakkarnir deila einum útgefandareikningi og einni gagnageymslu. Hver þeirra er einfaldur pakki — nokkur kílóbæt af raunverulegum gagnsemiskóða með sama dropakóðanum viðbættum — gefinn út án tengdrar geymslu og undir óstaðfestu einnota netfangi. Þessi einsleitni, sameiginlega dropaslóðin, sameiginlegu varanleikamerkin og sameiginlega... lyklakippur.dat Stöðvunarskrárnar eru það sem tengir klasa saman.

Pakkarnir eru óvenju opinskáir um eigin hegðun. solana-lykill-hjálpartæki inniheldur innlínu athugasemdir sem lýsa viðbættu blokkinni á skýran hátt - maður merkir hana PHANTOM: ósýnileg þrautseigja, annar (á spænsku) les Skoða út bakgrunnsupplýsingar, „keyra moldvarpið í bakgrunni.“ Þetta eru skýringar kóðans sjálfs um hvað hann gerir; nafn herferðarinnar í þessari færslu er dregið af fyrsta merkinu ásamt falsa hnútnum „sync daemon“ (samstillt) sem þrautseigjuvélin hermir eftir.

Við lýsum aðeins því sem kóðinn gerir á sýnilegan hátt. Nöfn pakkanna — öll hugtök sem tengjast dulritunarkóða, veski og blockchain-tólum — gefa til kynna hvaða forritarahópur er líklegastur til að sækja þá með nafni; það eitt og sér staðfestir ekki hver útgefandinn er. Annað stigið var að fullu endurheimtanlegt með því að afkóða base64 festinguna og hegðun þess er lýst hér að ofan: það safnar veskislyklum, fræsetningum og leyndarmálum og síar þau, RSA-dulkóðuð, í opinbera IPFS-geymslu í gegnum Pinata. Athyglisverð hönnunarvalkostur er fjarvera einkarekins C2-þjóns — stillingar koma frá GitHub gist og IPFS og stolin gögn eru geymd í opinberri dreifðri geymslu sem er lyklaður með innihalds-klukku, sem eru bæði erfiðari að ná tökum á en einum árásarstýrðum hýsingaraðila. Engar fyrri opinberar skýrslur sem passa við þennan klasa fundust þegar þetta var skrifað.

Hver er berskjaldaður. Allir sem bættu einum af þessum pökkum við Node verkefni og keyrðu síðan kóða sem flytur hann inn. Þar sem sprenging er á innflutningstíma frekar en uppsetningartíma, er ekki nóg að hafa pakkann til staðar - heldur nær öll venjuleg notkun sem hleður einingunni gagnamagninu. Nöfnin á tálbeitunni miða á forritara sem byggja á Ethereum, Solana, Arbitrum, Layer-2 og almennum veskis-/kóðunarverkfærum - þeim hópi sem líklegastur er til að hafa nákvæmlega þær eignir sem annað stigið leitar að. Allir sem keyrðu eina af þessum einingum á vél sem geymir veskislykla, fræsetningar, lyklageymslur, SSH-lykla eða ... .NS Leyndarmál ættu að meðhöndla þessi skilríki sem í hættu og snú þeim við.

Tvö mynstur sem vert er að tileinka sér. First, farmur sem festing: að senda annað stigið sem base64 innan gagnaskrár með sennilega nafni (próf/innréttingar/lykilpör.dat) heldur sýnilegum uppruna pakkans hreinum og færir skaðlega innihaldið inn í skrá sem yfirferðartól og mannlegir skimarar meðhöndla oft sem óvirk gögn. Í öðru lagi, innflutningstímaseinkun á framkvæmd með varanleika yfir kerfiAð færa kveikjuna af uppsetningarkróknum, bæta við tímastilli og halda henni síðan gangandi í cron, áætluðum verkefnum og launchd er vísvitandi skref frá hávaðasamari uppsetningarforskriftaraðferðum sem sjálfvirk skrásetningarskönnun fylgist hvað nánar með.

Leiðbeiningar fyrir varnarmenn og viðhaldsaðila:

  • Meðhöndla viðbættan kóða eftir mát.útflutningur sem forgangsverkefni í endurskoðun - dropateljari felur sig oft undir „raunverulegu“ yfirborði einingarinnar.
  • Ekki gera ráð fyrir að gagnaskrár séu óvirkar. Base64 blob undir próf/leikjadagskrá/ sem er lesið í keyrslutíma og afkóðað er keyrsluhæft-aðliggjandi; merkja keyrslutímalestur á festingarskrám sem fæða a virka/meta/skrifa-þá-hrygna keðja.
  • Leitaðu að fallslóðinni ~/.cache-db/.node-sync/ og fyrir viðvarandi einingarnar WinNodeSync (áætlað verkefni) og com.apple.syncd (launchd) á forritaravélum sem sóttu þessi nöfn.
  • Viðvörun um hnútaferla sem búa til cron-færslur, áætluð verkefni eða launchd-verk — lögmæt bókasöfn gera þetta sjaldan við innflutning.
  • Forgangsraða læstum skrám og festum útgáfum og fara yfir mismunandi eiginleika allra nýrra lítilla „gagnsemi“-tengdra eininga, sérstaklega núll-háð pakkar birtir af óstaðfestum reikningum án tengdrar geymslu.

Fyrir þá sem vernda skrásetninguna er niðurstaðan sú að eftirlit með uppsetningarkrókum er nauðsynlegt en ekki nægjanlegt: innflutningstíma, tímastilltur dropari sem er staðsettur inni í gagnaskrá mun standast athugun eingöngu á uppsetningartíma og viðvarandi skrefið er oft háværasta sjáanlega merkið sem eftir er til að ná.

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