TL; កុង
អ្នកបោះពុម្ពផ្សាយ npm តែមួយ deadcode09284814បានធ្វើយុទ្ធនាការ typosquat ប្រឆាំងនឹងអ្នកស្របច្បាប់ axios និង chalk-template កញ្ចប់ចាប់តាំងពីពាក់កណ្តាលខែឧសភា ឆ្នាំ២០២៦។
យុទ្ធនាការនេះបានចាប់ផ្តើមជាចោរលួចអត្តសញ្ញាណប័ណ្ណ និងកាបូបលុយធម្មតា ដោយលួចយកទិន្នន័យទៅជា... ផ្លូវរូងក្រោមដី Serveo HTTPS.
On 2026-05-17ជាមួយនឹង axois-utils:1.0.9ប្រតិបត្តិករបានប្តូរ payload ទាំងស្រុង៖ រនាំងដំឡើងបីជាន់ដូចគ្នា អ្នកបោះពុម្ពផ្សាយដូចគ្នា ឈ្មោះកញ្ចប់ដូចគ្នា។
ប៉ុន្តែស្គ្រីបដំឡើងឥឡូវនេះគឺជាការជ្រើសរើស botnet DDoS ឆ្លងវេទិកា។
បន្ទុកនិយាយទៅកាន់ localhost.run រូងក្រោមដី និងទទួលយកពាក្យបញ្ជាទឹកជំនន់ ដោយប្រែក្លាយបរិស្ថានដែលឆ្លងមេរោគទៅជាផ្នែកមួយនៃ botnet ដែលមានសមត្ថភាព DDoS។
ប្រតិបត្តិករថែមទាំងបានដឹកជញ្ជូន ប្រព័ន្ធគោលពីររបស់ម៉ាស៊ីនបម្រើ C2 នៅខាងក្នុង tarball ដែលបង្ហាញពីការកើនឡើងយ៉ាងច្បាស់ពីការលួចព័ត៌មានសម្ងាត់ទៅជាហេដ្ឋារចនាសម្ព័ន្ធ botnet សកម្ម។
កញ្ចប់ពីរ កំណែបួននៅតែសកម្មនៅលើបញ្ជីឈ្មោះ និងប្រតិបត្តិករមួយឥឡូវនេះកំពុងដំណើរការម៉ូឌុលទាំងពីរស្របគ្នា។
ភាពធ្ងន់ធ្ងរ៖ ខ្ពស់។
ការវាយប្រហារ៖ របៀបដែលវាដំណើរការ
យុទ្ធនាការនេះត្រូវបានបង្កើតឡើងនៅលើរនាំងចែកចាយដែលគួរឱ្យធុញដោយចេតនា៖ ឈ្មោះកញ្ចប់ typosquat ពីរ អក្សរមួយខុសពីកញ្ចប់ដែលមានការទាញយករាប់រយលានដងជារៀងរាល់សប្តាហ៍ (axios, គំរូដីស) និងការដំឡើងបីដង hooks ដែលធានាការប្រតិបត្តិ។ អ្វីដែលគួរឱ្យចាប់អារម្មណ៍នោះគឺអ្វីដែលជារនាំង ដឹក — និងការពិតដែលថាប្រតិបត្តិករបានផ្លាស់ប្តូរទំនិញដោយមិនបានផ្លាស់ប្តូរអ្វីផ្សេងទៀត។
រនាំងដែលបានចែករំលែក
កំណែដែលបានបោះពុម្ពផ្សាយនីមួយៗនៃកញ្ចប់ទាំងពីរប្រកាសពីវដ្តជីវិតទាំងបីដូចគ្នា។ hooks in កញ្ចប់:
រាយបញ្ជីបន្ទុកនៅក្រោមទាំងបី hooks គឺហួសហេតុពេក - ក្រោយការដំឡើង តែម្នាក់ឯងនឹងដំណើរការតាមលំនាំដើម ល្ងាចដំឡើងជម្រើសគឺសំខាន់ណាស់៖ npm ដំឡើង - មិនអើពើស្គ្រីប រំលងស្គ្រីប ប៉ុន្តែលំហូរការងារទូទៅមួយចំនួន (ឃ្លាំងសម្ងាត់ CI ស្ដារវដ្តជីវិតដែលដំណើរការឡើងវិញ) hooks ជាជម្រើស ឬអ្នកអភិវឌ្ឍន៍ដែលធ្វើសវនកម្មតែប៉ុណ្ណោះ ក្រោយការដំឡើង) ធ្វើសេចក្តីប្រកាសបីដងដែលមានន័យថា ជាការភ្នាល់ដែលមានសុវត្ថិភាពបំផុតសម្រាប់អ្នកវាយប្រហារ។
គំរូដីស បន្ថែមយន្តការទីពីរ៖ វាប្រកាស axois-utils:^1.0.7 ជាពេលដំណើរការ ភាពអាស្រ័យការដំឡើង typosquatted គំរូដីស ដូច្នេះទាញ typosquat ដែលជាបងប្អូនចូលមកដែរ ហើយបន្ទុកផ្ទុកទាំងពីរដំណើរការ។ កញ្ចប់ទាំងពីរគឺជាគូដែលសម្របសម្រួលគ្នា មិនមែនជាបញ្ជីឯករាជ្យទេ។
ដំណាក់កាល A — អត្តសញ្ញាណប័ណ្ណ / អ្នកលួចកាបូប (2026-05-15 → បច្ចុប្បន្ន)
ដំណាក់កាល A គឺជាបន្ទុកដើម។ ឧបករណ៍ផ្ទុកគឺជាឧបករណ៍ខ្លីមួយ ក្រោយការដំឡើង.js ដែលចង្អុលទៅផ្លូវរូងបញ្ច្រាស Serveo HTTPS៖
ដែនរង Serveo អ៊ិនកូដ IP គោលដៅ (80.200.28.28) ដោយផ្ទាល់នៅក្នុងឈ្មោះម៉ាស៊ីន — អនុសញ្ញាដែលអាចស្គាល់បានសម្រាប់សេវាកម្មនោះ។ ប្រតិបត្តិករបង្វិលបុព្វបទដែនរងចៃដន្យរវាងកំណែនានា ដើម្បីគេចពីបញ្ជីរារាំងដែនដែលមិនទាន់បានកំណត់ ប៉ុន្តែ IP មូលដ្ឋានមិនដែលផ្លាស់ប្តូរទេ។chalk-tempalte: ១.០.១៤ ដែលប្រើ 8a3e818ea8f11186-80-200-28-28…ការប្រើប្រាស់ 1.0.16 / 1.0.19 / 1.0.20 f04a273bd84c0622-….)
ក្រោយការដំឡើង.js ដៃចេញទៅ phantom.jsម៉ូឌុល “អ្នកប្រមូល” ដែលមានកញ្ចប់ចំនួន 7,667 ខ្សែ។ phantom.js ដើរជាមួយម្ចាស់ផ្ទះសម្រាប់៖
កូនសោឯកជន SSH (~/.ssh/*) |
.npmrc មាតិកា និងណាមួយ npm_* ថូខឹន env |
| ឯកសារបញ្ជាក់អត្តសញ្ញាណ AWS, GCP និង Azure |
GitHub regex ថូខឹនចូលប្រើផ្ទាល់ខ្លួន (ghp_*, gho_*, ghu_*, ghs_*) |
| វត្ថុបុរាណកាបូបលុយឌីជីថលសម្រាប់ Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash |
ការហៅឡើងវិញ .env* ដើរឆ្លងកាត់ ~/projects, ~/dev, ~/code, ~/workspaceនិង cwd ដំឡើង |
ប្រវត្តិសែល និងពេញលេញ process.env |
បាច់ត្រូវបានបង្ហោះទៅកាន់ផ្លូវរូងក្រោមដី Serveo នៅ / ប្រមូលមិនមានការបិទបាំង គ្មានតក្កវិជ្ជាប្រឆាំងនឹង VM គ្មានការរៀបចំ — ការភ្នាល់របស់ប្រតិបត្តិករគឺទៅលើបរិមាណ និងល្បឿន។
ដំណាក់កាល B — ការជ្រើសរើស PhantomBot DDoS (2026-05-17, axois-utils:1.0.9 តែប៉ុណ្ណោះ)
ដំណាក់កាល B ជំនួស phantom.js + postinstall.js ជាមួយឯកសារតែមួយដែលមានឈ្មោះថា distrube.js (កំហុសវាយអក្សរគឺជាប្រតិបត្តិករ)។ រចនាសម្ព័ន្ធ triple-hook នៅក្នុង package.json មិនមានការផ្លាស់ប្តូរទេ។ កញ្ចប់នៅតែរក្សាឈ្មោះ វិសាលភាព និងលំនាំ version-bump ដដែល។ ពីខាងក្រៅ axois-utils:1.0.9 មើលទៅដូចជាការបន្តបន្ទាប់តិចតួចទៅនឹង 1.0.6។ នៅខាងក្នុង វាគឺជាក្រុមគ្រួសារមេរោគខុសគ្នា។
distrube.js បើកជាមួយប្លុកកំណត់រចនាសម្ព័ន្ធដែលដាក់ឈ្មោះម៉ាកយីហោផ្ទាល់ខ្លួនរបស់ប្រតិបត្តិករ៖
// axois-utils-1.0.9/distrube.js:11-15 |
// Use your localhost.run HTTPS URL (the tunnel handles HTTP internally) |
const C2_HOST = 'b94b6bcfa27554.lhr.life'; // Your localhost.run tunnel |
const C2_PORT = 443; // HTTPS port - tunnel handles SSL |
const BOT_ID = `${os.hostname()}_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`; |
មតិយោបល់ទាំងនេះត្រូវបានផ្ញើទៅកាន់ប្រតិបត្តិករនាពេលអនាគតដែលកំពុងដំណើរការឧបករណ៍នេះ (“ប្រើ localhost.run HTTPS URL របស់អ្នក”)។ នោះ បូករួមទាំងអ្វីដែលភ្ជាប់មកជាមួយ bot client គឺជាការប្រាប់ថានេះមិនមែនគ្រាន់តែជា payload របស់ជនរងគ្រោះនោះទេ — វាគឺជាឧបករណ៍នេះ។
លំហូរ៖
- ការតស៊ូ ដំណើរការមុន។ ស្គ្រីបដំឡើងខ្លួនវាតាមវិធីបីយ៉ាងផ្សេងគ្នាក្នុងមួយប្រព័ន្ធប្រតិបត្តិការ (បញ្ជីឈ្មោះ Run + ថតឯកសារចាប់ផ្តើម + កិច្ចការ នៅលើវីនដូ; crontab + សេវាកម្ម phantom-bot ឯកតាប្រព័ន្ធ + .bashrc/.zshrc បន្ថែម + /etc/rc.local នៅលើលីនុច; LaunchAgent com.phantom.bot.plist នៅលើ macOS)។ ឈ្មោះសេវាកម្ម persistence និងស្លាក LaunchAgent គឺទាំងពីរ។ ខ្មោច-បូត / com.phantom.botដែលក៏ជាប្រភពនៃឈ្មោះយុទ្ធនាការនេះផងដែរ។
- បញ្ជីព័ត៌មានប្រព័ន្ធ ដំណើរការម្តង — ការផ្ញើស្នាមម្រាមដៃម្តង POST ទៅកាន់ b94b6bcfa27554.lhr.life:443/collect ដែលមានឈ្មោះម៉ាស៊ីន, វេទិកា, arch, ឈ្មោះអ្នកប្រើប្រាស់, CPU/RAM, ចំណុចប្រទាក់បណ្តាញ, process.env, cwd, homedir, កំណែ node និង IP សាធារណៈ។ នេះមិនសូវឈ្លានពានជាងដំណាក់កាល A ទេ៖ គ្មាន SSH គ្មានកាបូប គ្មានការបញ្ជូនបន្ត .env។ ការងាររបស់ bot គឺចុះឈ្មោះ មិនមែនលួចទេ។
- ចង្វាក់បេះដូង បើក HTTPS POST រៀងរាល់ 30 វិនាទីម្តងទៅកាន់ b94b6bcfa27554.lhr.life:443/។ User-Agent គឺ PhantomBot/1.0។ ការផ្ទៀងផ្ទាត់ TLS ត្រូវបានបិទយ៉ាងច្បាស់លាស់ (rejectUnauthorized: false)។ ការឆ្លើយតប C2 ត្រូវបានវិភាគជា JSON នៃទម្រង់ {type, target, port, duration, threads, method} ហើយត្រូវបានបញ្ជូន។
- ឃ្លាំងអាវុធទឹកជំនន់ ត្រូវបានភ្ជាប់ទៅនឹងពាក្យបញ្ជាចំនួនប្រាំមួយ៖
| ប្រភេទពាក្យបញ្ជា | ម៉ូឌុល | ភក្ដិកំណត់ត្រាកំណត់ |
|---|---|---|
| ping | ការឆ្លើយតបអំពីភាពរស់រវើក | បូតកំណត់អត្តសញ្ញាណខ្លួនឯង |
| http | ទឹកជំនន់ HTTP | សំណើកម្រិត 7 លិចលង់ |
| HTTPS | ទឹកជំនន់ HTTPS | ដូចគ្នានឹង http ដែលរុំដោយ TLS |
| tcp | ទឹកជំនន់ TCP | សារឥតបានការផ្ទុកទិន្នន័យចៃដន្យទំហំ 65 KB |
| pud | ទឹកជំនន់ UDP | កញ្ចប់ UDP ទំហំ ៦៥,៥០៧ បៃ |
| យ៉ាងឆាប់រហ័ស | ការកំណត់ឡើងវិញរហ័ស HTTP/2 DoS | បច្ចេកទេស CVE-2023-44487 ឆ្នាំ 2023 |
ម៉ូឌុលទឹកជំនន់ទាំងប្រាំយក គោលដៅ, កំពង់ផែ, រយៈពេល។និង ខ្សែស្រឡាយ អាគុយម៉ង់ — បូតនេះគឺជាកម្មវិធីសម្រាប់ជួលទូទៅ មិនមែនសំដៅលើជនរងគ្រោះជាក់លាក់ណាមួយឡើយ។ បញ្ជីជនរងគ្រោះរបស់ប្រតិបត្តិករស្ថិតនៅលើ C2 មិនមែននៅក្នុងកញ្ចប់ទេ។
អ្វីដែលថ្មីនៅទីនេះ — ប្រព័ន្ធគោលពីរ C2 ដែលបានដឹកជញ្ជូន
ដំណាក់កាល A គឺជារូបរាងដែលធ្លាប់ស្គាល់៖ ការលួចអត្តសញ្ញាណប័ណ្ណ ការដំឡើងទំពក់ អ្នកលក់-ផ្លូវរូងក្រោមដី C2។ ដំណាក់កាល B គឺ ផងដែរ រូបរាងដែលធ្លាប់ស្គាល់ — បណ្តាញ DDoS គឺជាឧបករណ៍ផ្ទុកកញ្ចប់ npm ដែលមានគំនិតអាក្រក់អស់រយៈពេលជាច្រើនឆ្នាំមកហើយ។ អ្វីដែលមិនធម្មតានោះគឺថា ប្រតិបត្តិករបានដឹកជញ្ជូន ផ្នែកខាងម៉ាស៊ីនមេ នៃឧបករណ៍នៅខាងក្នុង npm tarball៖
- c2 — ប្រព័ន្ធគោលពីរ Go ELF ទំហំ ៤ មេហ្គាបៃ ដែលបានចងក្រង
- c2.go — ប្រភព Go ៤២៦ ខ្សែសម្រាប់ប្រព័ន្ធគោលពីរនោះ
ឯកសារទាំងពីរមិនត្រូវបានហៅដោយទំពក់ដំឡើងណាមួយឡើយ។ ពួកវាមិនមែនជាផ្នែកមួយនៃបន្ទុករបស់ជនរងគ្រោះទេ។ ពួកវាស្ថិតនៅក្នុងថតឯកសារកញ្ចប់ដូចគ្នានឹងឯកសារឯកសារដែរ។ ការអានដែលសមហេតុផលបំផុតគឺថា ប្រតិបត្តិករបានរុញដើមឈើការងារអភិវឌ្ឍន៍របស់ពួកគេទៅ npm ដោយមិនបានថែរក្សាបញ្ជីឯកសារ - ស្លាយ OpSec ពិតប្រាកដ - ហើយអ្វីដែលបានបញ្ជូនគឺជាឧបករណ៍ទ្វេភាគីពេញលេញ៖ អតិថិជនដែលជនរងគ្រោះដំណើរការ និងម៉ាស៊ីនមេដែលប្រតិបត្តិករដំណើរការ។
នេះគឺជាផ្នែកមួយនៃរឿងដែលបង្ហាញពីភាពត្រឹមត្រូវនៃការកំណត់រចនាសម្ព័ន្ធ "ឧបករណ៍ botnet ដែលអាចដំណើរការបានពេញលេញ"។ អ្នកដែលបានទាញយក axois-utils:1.0.9 មុនពេលការវាយកម្ទេចមិនត្រឹមតែមានគំរូជនរងគ្រោះប៉ុណ្ណោះទេ — ពួកគេមានម៉ាស៊ីនមេ C2 ដែលដំណើរការ។
ចំណុចស្នូល ក្នុងប្រយោគមួយ
អ្នកបោះពុម្ពផ្សាយដូចគ្នា ឈ្មោះកញ្ចប់ដូចគ្នា រនាំងបីជាន់ដូចគ្នា ការផ្សព្វផ្សាយម៉ាក "ខ្មោច" ដូចគ្នា — ប៉ុន្តែ បន្ទុកបានផ្លាស់ប្តូរគំរូរកប្រាក់ពេញមួយយប់: ពី "អាថ៌កំបាំងនៃការប្រមូលផលដែលខ្ញុំអាចលក់បន្ត" ទៅ "ជួលសមត្ថភាពទឹកជំនន់ដែលខ្ញុំអាចជួល"។ TTP ពេលវេលាដំឡើងដែលអ្នកការពារគួរតែមើលគឺស្ទើរតែដូចគ្នានៅទូទាំងដំណាក់កាលទាំងពីរ។ ការការពារដែលមានមូលដ្ឋានលើហត្ថលេខាត្រូវបានចាក់សោទៅនឹងខ្សែអក្សរផ្លូវកាបូបរបស់ដំណាក់កាល A ឬទៅ phantom.jsឧបករណ៍ប្រមូលខ្សែ 7,667 របស់អ្នកនឹងខកខានដំណាក់កាល B ទាំងស្រុង។
| កាលបរិច្ឆេទ (UTC) | ព្រឹត្តការណ៍ |
|---|---|
| 2026-05-15 | ការបោះពុម្ពផ្សាយលើកដំបូង៖ axois-utils:1.0.4 (ការបង្កើតសាកល្បង LAN ឧបករណ៍អភិវឌ្ឍន៍នៅ 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 បានបោះពុម្ពផ្សាយ — ដំណាក់កាល A C2 បានប្តូរទៅ 80.200.28.28 តាមរយៈផ្លូវរូងក្រោមដី Serveo; មតិយោបល់ប្រភព // Change to '80.200.28.28' for public បញ្ជាក់ការផ្លាស់ប្ដូរ dev→prod |
| 2026-05-16 | chalk-tempalte:1.0.14 និង 1.0.16 បានបោះពុម្ពផ្សាយ — ការប្រកាសអំពីឧបករណ៍ផ្ទុកខ្សែសង្វាក់ axois-utils:^1.0.7 ជាការពឹងផ្អែកពេលដំណើរការ; ដែនរង Serveo ត្រូវបានបង្វិល |
| 2026-05-16 | យុទ្ធនាការដំណាក់កាល A ត្រូវបានរកឃើញក្នុងអំឡុងពេលស្កេន npm ជាប្រចាំ; សាលក្រមព្យាបាទដែលបានបញ្ជាក់ត្រូវបានអនុវត្ត |
| 2026-05-17 | axois-utils:1.0.9 បានបោះពុម្ពផ្សាយ — payload pivot៖ PhantomBot DDoS recruit តាមរយៈ localhost.run tunnel; ផ្នែកប្រតិបត្តិករ c2 គោលពីរ និង c2.go ប្រភពដែលបានដឹកជញ្ជូននៅក្នុង tarball |
| 2026-05-17 | chalk-tempalte:1.0.19 និង 1.0.20 បានបោះពុម្ពផ្សាយ — នៅតែជាដំណាក់កាល A (លួច); ប្រតិបត្តិករឥឡូវនេះកំពុងដំណើរការម៉ូឌុលទាំងពីរស្របគ្នា |
| 2026-05-17 | ការរកឃើញដំណាក់កាល B អំឡុងពេលស្កេនជាប្រចាំ; សាលក្រមត្រូវបានអនុវត្តនៅទូទាំង 2026-05-17 កំណែ |
| (កំពុងបន្ត) | របាយការណ៍លុបវីដេអូកំពុងរង់ចាំការសម្រេចចិត្ត; កញ្ចប់ទាំងបួនដែលបានបោះពុម្ពផ្សាយនៅតែអាចរកបាននៅលើបញ្ជីឈ្មោះនៅពេលសរសេរនេះ |
សូចនាករនៃការសម្របសម្រួល
កញ្ចប់
| ប្រព័ន្ធអេកូ | កញ្ចប់សមាជិក | កំណែ |
|---|---|---|
| ម៉ោងងង | axois-utils (typosquat នៃ axios) | 1.0.4, 1.0.6, 1.0.9 |
| ម៉ោងងង | chalk-tempalte (typosquat នៃគំរូដីស) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
អត្តសញ្ញាណអ្នកនិពន្ធ
| វាល | តម្លៃ |
|---|---|
| អ្នកបោះពុម្ពផ្សាយ npm | deadcode09284814 |
| អ៊ីមែលរបស់អ្នកបោះពុម្ពផ្សាយ | phantomdeadcode@tutamail.com |
| SCM ការផ្ទៀងផ្ទាត់ | គ្មាន |
ពាក្យបញ្ជា និងការគ្រប់គ្រង
| ជំហាន | ចំណុចបញ្ចប់ | ការដឹកជញ្ជូន |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | ផ្លូវរូងក្រោមដី Serveo HTTPS |
| A | 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect | ផ្លូវរូងក្រោមដី Serveo HTTPS (កំណែមុន) |
| A | 80.200.28.28:443/collect | ចំណុចបញ្ចប់ VPS មូលដ្ឋាន |
| B | b94b6bcfa27554.lhr.life:443/ | localhost.run HTTPS reverse-tunnel |
សេចក្តីសង្ខេបឯកសារ (SHA-256)
| ឯកសារ | SHA-256 | ភក្ដិកំណត់ត្រាកំណត់ |
|---|---|---|
c2 (ទៅ ELF, ៤មេកាបៃ) | 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 | ម៉ាស៊ីនមេ C2 ខាងប្រតិបត្តិករ ដឹកជញ្ជូននៅខាងក្នុង axois-utils:1.0.9 |
c2.go (៤២៦ បន្ទាត់) | 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 | ចូលទៅកាន់ប្រភពសម្រាប់ប្រព័ន្ធគោលពីរ C2 |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | កម្មវិធីបូតដំណាក់កាល B |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | អ្នកប្រមូលប័ណ្ណសម្គាល់/កាបូបដំណាក់កាល A |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | ឧបករណ៍ប្រមូលដំណាក់កាល A (វ៉ារ្យ៉ង់ 1.0.20) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | ឧបករណ៍ផ្ទុកដំណាក់កាល A បៃដូចគ្នានៅទូទាំងកំណែទាំងពីរ |
ការបញ្ជាក់ និងការលើកទឹកចិត្ត
យើងតាមដានយុទ្ធនាការនេះដូចជា PhantomBotដោយយកម៉ាកយីហោផ្ទាល់ខ្លួនរបស់ប្រតិបត្តិករពី ភ្នាក់ងារអ្នកប្រើប្រាស់៖ PhantomBot/1.0 ចំណងជើងចង្វាក់បេះដូង, នេះ សេវាកម្ម phantom-bot ឯកតាប្រព័ន្ធ, នេះ com.phantom.bot ស្លាក LaunchAgent និង លេខកូដស្លាប់ខ្មោច@ អាសយដ្ឋានអ៊ីមែល។ ប្រតិបត្តិករមានភាពស៊ីសង្វាក់គ្នាអំពីឈ្មោះនេះនៅទូទាំងយ៉ាងហោចណាស់វត្ថុបុរាណចំនួនបួន។
កាតាឡុកសញ្ញា
- បោះពុម្ពផ្សាយ - លេខកូដស្លាប់០៩២៨៤៨១៤ នៅលើ npm។ គណនីគ្រប់គ្រងតែមួយ, អ៊ីមែលដែលអាចចោលបាន Tutamail, ទេ SCM ការផ្ទៀងផ្ទាត់។ គ្មានប្រវត្តិបោះពុម្ពផ្សាយពីមុនមកក្រៅពីយុទ្ធនាការនេះទេ។
- ការប្រើប្រាស់ម៉ាកយីហោឡើងវិញ — “phantom” លេចឡើងនៅក្នុងអ៊ីមែលរបស់អ្នកបោះពុម្ពផ្សាយ នៅក្នុងឈ្មោះឯកសារប្រមូល Phase A (phantom.js), នៅក្នុងឈ្មោះសេវាកម្មរក្សាភាពស្ថិតស្ថេរដំណាក់កាល B (សេវាកម្ម phantom-bot), នៅក្នុងស្លាក LaunchAgent (com.phantom.bot) និងនៅក្នុង bot User-Agent (ផាន់ថាមបូត/១.០).
- ហេដ្ឋារចនាសម្ព័ន្ធ — VPS តែមួយនៅ 80.200.28.28 ផ្នែកខាងមុខ ដំណាក់កាល A តាមរយៈការបង្វិលដែនរង Serveo; ដំណាក់កាល B ផ្លាស់ទីទៅ a localhost.run ផ្លូវរូងក្រោមដីបញ្ច្រាស (b94b6bcfa27554.lhr.ជីវិត)។ សេវាកម្មទាំងពីររបស់អ្នកលក់គឺឥតគិតថ្លៃ ហើយតម្រូវឱ្យមាន SSH ចេញតែនៅខាងប្រតិបត្តិករប៉ុណ្ណោះ ស្របតាមការដំឡើង OpSec ដែលមានថវិកាទាប។
- រចនាប័ទ្មកូដ — JavaScript ធម្មតាពេញមួយប្រព័ន្ធ; គ្មានការបិទបាំង គ្មានការអ៊ិនកូដខ្សែអក្សរ គ្មានការត្រួតពិនិត្យ anti-VM។ ឈ្មោះអថេរអាចពិពណ៌នាបាន (លួចព័ត៌មានប្រព័ន្ធ, ប្រតិបត្តិពាក្យបញ្ជា, httpFlood)។ មតិយោបល់នៅក្នុង distrube.js ផ្ញើទៅកាន់ប្រតិបត្តិករនាពេលអនាគតដោយផ្ទាល់ (“ប្រើ URL HTTPS របស់ localhost.run របស់អ្នក”) ដោយបង្ហាញថាឯកសារនេះត្រូវបានបម្រុងទុកដើម្បីចែកចាយឡើងវិញជាឧបករណ៍ មិនមែនប្រើប្រាស់ដោយអ្នកវាយប្រហារតែមួយនោះទេ។
- ស្លីប OpSec — tarball ដំណាក់កាល B ដឹកជញ្ជូនទាំង bot client និងម៉ាស៊ីនមេ C2 ខាងប្រតិបត្តិករ (c2 អេលហ្វ + c2.go (ប្រភព)។ នេះស្របនឹងប្រតិបត្តិករដែលបានរុញដើមឈើការងាររបស់ពួកគេទៅ npm ដោយមិនបានធ្វើសវនកម្មបញ្ជីឯកសារ។ ទាំងប្រតិបត្តិករគ្មានបទពិសោធន៍ ឬឧបករណ៍គឺ... មានន័យ ត្រូវចែកចាយជាសាធារណៈ ហើយប្រព័ន្ធគោលពីរ C2 គឺជាផ្នែកមួយនៃផលិតផល។
- ការបញ្ជាក់ខ្លួនឯង - axois-utils:1.0.4 មានមតិប្រភព // ប្តូរទៅ '80.200.28.28' សម្រាប់សាធារណៈ នៅលើបន្ទាត់ទី 12 ដោយបញ្ជាក់ពីវឌ្ឍនភាព dev / staging / production ដែលប្រតិបត្តិករជាធម្មតាបដិសេធ។
ការលើកទឹកចិត្ត
បន្ទុកដំណាក់កាល A គឺជាការលួចហិរញ្ញវត្ថុដោយផ្ទាល់៖ លិខិតសម្គាល់ កូនសោពពក ថូខឹន GitHub និងកាបូបលុយគ្រីបតូទាំងអស់មានទីផ្សារលក់បន្តសាច់ប្រាក់។ ដំណាក់កាល B ក៏ជាហិរញ្ញវត្ថុផងដែរ ប៉ុន្តែដោយប្រយោល៖ សេវាកម្ម DDoS-for-hire (“booter”) ជួលសមត្ថភាពទឹកជំនន់តាមនាទី ហើយបូតដូចជាបូតដែលបានដឹកជញ្ជូននៅទីនេះគឺជាសារពើភ័ណ្ឌដែលសេវាកម្មទាំងនោះដំណើរការ។ ចង្វាក់បេះដូង 30 វិនាទី ទូទៅ គោលដៅ/កំពង់ផែ/រយៈពេល។ គ្រោងការណ៍ពាក្យបញ្ជា និងឃ្លាំងអាវុធទឹកជំនន់ពិធីការប្រាំគឺ standard ផលិតផលរបស់ប្រតិបត្តិករ booter ។
ការដំណើរការម៉ូឌុលទាំងពីរស្របគ្នា — chalk-tempalte: ១.០.១៤ និង 1.0.20 បន្តដឹកជញ្ជូនអ្នកលួចខណៈពេលដែល axois-utils:1.0.9 ដឹកជញ្ជូន bot — បង្ហាញថាប្រតិបត្តិករកំពុងការពារប្រាក់ចំណូលជាជាងបោះបង់ចោលដំណាក់កាល A។ pivot គឺជា ការបន្ថែមមិនមែនជាការជំនួសទេ។
អ្វីដែលយើងមិនអះអាង
យើងមិនទាន់អាចបញ្ជាក់ពីអត្តសញ្ញាណពិតនៅពីក្រោយរឿងនេះនៅឡើយទេ។ លេខកូដស្លាប់០៩២៨៤៨១៤ ចំណុចទាញ ហើយយើងមិនសន្មតយុទ្ធនាការនេះទៅឱ្យអ្នកគំរាមកំហែង ក្រុម ឬប្រទេសណាមួយដែលបានដាក់ឈ្មោះនោះទេ។ ការដាក់ស្លាកសញ្ញា "phantom" គឺស្របគ្នាគ្រប់គ្រាន់នៅទូទាំង artifacts ដើម្បីណែនាំប្រតិបត្តិករតែមួយ ប៉ុន្តែការដឹកជញ្ជូនបែប kit នៃប្រព័ន្ធគោលពីរ C2 ទុកលទ្ធភាពដែលកញ្ចប់នាពេលអនាគតពីចំណុចទាញដែលមិនទាក់ទងគ្នានឹងប្រើកូដដូចគ្នាឡើងវិញ។
ផលប៉ះពាល់ និន្នាការ និងអ្វីដែលអ្នកការពារគួរធ្វើ
ផលប៉ះពាល់
គោលដៅអង្គុយចោងហោងស្របច្បាប់ axios និង គំរូដីស ត្រូវបានពឹងផ្អែកយ៉ាងទូលំទូលាយនៅក្នុងប្រព័ន្ធអេកូឡូស៊ី JavaScript; axios តែម្នាក់ឯងស្ថិតក្នុងចំណោមកញ្ចប់ npm ចំនួនសាមសិបដែលទាញយកច្រើនជាងគេ។ ឈ្មោះ typosquat គឺនៅឆ្ងាយពីឈ្មោះពិតមួយដង (អាកសូយស៍ ↔ axios, tempalte ↔ ពុម្ព) ហើយទាំងពីរសុទ្ធតែជាកំហុសអក្ខរាវិរុទ្ធដែលអាចទុកចិត្តបានខាងភាសា។
យើងមិនអាចទទួលបានស្ថិតិទាញយកដែលអាចទុកចិត្តបានសម្រាប់កំណែព្យាបាទមុនពេលដកចេញទេ — npm មិនរក្សាទុកចំនួនទាញយកក្នុងមួយកំណែទេ បន្ទាប់ពីកញ្ចប់មួយមិនត្រូវបានបោះពុម្ពផ្សាយ ហើយ npms.ioប្រូកស៊ីបែប -style មានសំឡេងរំខានក្នុងកម្រិតនេះ។ អង្គការណាដែលឯកសារចាក់សោរបស់វាត្រូវបានដោះស្រាយទៅជាកញ្ចប់ដែលមានឈ្មោះ axois-utils or គំរូដីស ពីអ្នកបោះពុម្ពផ្សាយ លេខកូដស្លាប់០៩២៨៤៨១៤ គួរតែត្រូវបានចាត់ទុកថាជាការគំរាមកំហែង៖ បង្វិលរាល់ព័ត៌មានបញ្ជាក់អត្តសញ្ញាណដែលមាននៅក្នុង process.env នៅលើម៉ាស៊ីនដែលរងផលប៉ះពាល់ សូមត្រួតពិនិត្យវ៉ិចទ័រឋិតថេរក្នុងមួយប្រព័ន្ធប្រតិបត្តិការ (សូមមើល “អ្វីដែលអ្នកការពារគួរធ្វើ” ខាងក្រោម) ហើយលុបការពឹងផ្អែកចេញ។
លំនាំដែលកំពុងលេចឡើង
យុទ្ធនាការនេះបង្ហាញពីការផ្លាស់ប្តូរដែលយើងបានឃើញនៅក្នុងឧប្បត្តិហេតុ npm ថ្មីៗជាច្រើន៖ រន្ទាដែលតោងជាប់នឹងទំពក់ដំឡើងគឺជាទ្រព្យសកម្មប្រើប្រាស់បានយូរអង្វែង; បន្ទុកអាចផ្លាស់ប្តូរបានអ្នកបោះពុម្ពផ្សាយដូចគ្នា កញ្ចប់ដូចគ្នា ដូចគ្នា ដំឡើងជាមុន / ដំឡើង / ក្រោយការដំឡើង បីដង និងសូម្បីតែចង្វាក់លោតដូចគ្នា — រឿងតែមួយគត់ដែលបានផ្លាស់ប្តូររវាង axois-utils:1.0.6 និង axois-utils:1.0.9 តើឯកសារនោះជា hooks ដំណើរការ។ ការរកឃើញដែលមានមូលដ្ឋានលើហត្ថលេខាត្រូវបានចាក់សោទៅ payload ដំណាក់កាល A (ខ្សែអក្សរផ្លូវកាបូប phantom.jsឧបករណ៍ប្រមូលខ្សែ 7,667 របស់ Serveo C2) នឹងបានសម្គាល់កំណែបីដំបូង ហើយខកខានដំណាក់កាល B ទាំងស្រុង។
គំរូដូចគ្នានេះអាចមើលឃើញនៅទូទាំងយុទ្ធនាការឆ្នាំ 2026 ផ្សេងទៀតដែលយើងបានតាមដាន៖ ប្រតិបត្តិករតែមួយដែលមានរនាំងដែលមានស្ថេរភាព ការប្តូររវាងការលួចអត្តសញ្ញាណ អតិថិជនបន្លំប្រឡង ការលួចចូលប្រព័ន្ធ Telegram-bot exfil និងឥឡូវនេះការជ្រើសរើស DDoS។ អ្នកការពារដែលពឹងផ្អែកលើហត្ថលេខា payload នឹងបន្តចាញ់ជុំទីពីរនៃយុទ្ធនាការនីមួយៗ។
ផលបូកគឺថា TTP ពេលវេលាដំឡើងគឺជាសញ្ញាល្អជាងសេចក្តីប្រកាស triple install-hook ដំឡើងស្គ្រីបដែលនាំចូល HTTPS or ដំណើរការកុមារដំឡើងស្គ្រីបដែលសរសេរទៅកាន់ថតឯកសារចាប់ផ្តើមអ្នកប្រើប្រាស់ និងដំឡើងស្គ្រីបដែលដោះស្រាយឈ្មោះម៉ាស៊ីននៅលើសេវាកម្ម reverse-tunnel ឥតគិតថ្លៃ (Serveo, localhost.run, ngrok, cloudflared) សុទ្ធតែកម្រមាននៅក្នុងកញ្ចប់ស្របច្បាប់ និងជារឿងធម្មតានៅទូទាំងកញ្ចប់ដែលមានមេរោគ។
អ្វីដែលអ្នកការពារគួរធ្វើ
- ការត្រួតពិនិត្យឯកសារចាក់សោ. ស្វែងរករាល់ កញ្ចប់-lock.json / សោរអំបោះ / pnpm-lock.yaml នៅក្នុងអង្គការរបស់អ្នកសម្រាប់ខ្សែអក្សរពិតប្រាកដ axois-utils និង គំរូដីសចាត់ទុកការប្រកួតណាមួយជាការសម្របសម្រួល។
- បង្វិលអាថ៌កំបាំង លើម៉ាស៊ីនដែលរងផលប៉ះពាល់។ ដំណាក់កាល A ទិន្នន័យសម្ងាត់ SSH, cloud, GitHub, npm និង wallet ដែលប្រមូលបានជាបាច់។ សន្មតថាទិន្នន័យសម្ងាត់ទាំងអស់ដែលធ្លាប់មាននៅក្នុង process.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~/.config, ឬណាមួយ .env* ឯកសារនៅលើម៉ាស៊ីនដែលរងផលប៉ះពាល់ត្រូវបានបង្ហាញ។
- លុបបំបាត់ភាពជាប់លាប់ (ដំណាក់កាល B)។ នៅលើវីនដូ សូមលុប HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, យកចេញ %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.batនិង schtasks / លុប / tn ការអាប់ដេតប្រព័ន្ធ / fនៅលើលីនុច crontab -e និងយកចេញ @ចាប់ផ្ដើមណូតឡើងវិញ …, systemctl –user បិទ –now phantom-bot.service បន្ទាប់មកលុប ~/.config/systemd/user/phantom-bot.service, ដុសខាត់ .bashrc / .zshrc / /etc/rc.localនៅលើ macOS, launchctl unload ~/Library/LaunchAgents/com.phantom.bot.plist បន្ទាប់មកលុប plist ចេញ។
- រារាំងម៉ាស៊ីនមេ C2 ។ បន្ថែមចំណុចបញ្ចប់ C2 ចំនួនបួននៅក្នុងតារាង IOC ទៅក្នុងបញ្ជីរារាំងការចាកចេញរបស់អ្នក។ *.serveousercontent.com និង *.lhr.life អាចត្រូវបានរារាំងការលក់ដុំ ប្រសិនបើបរិស្ថានរបស់អ្នកមិនមានការប្រើប្រាស់ស្របច្បាប់សម្រាប់សេវាកម្មផ្លូវរូងក្រោមដីបញ្ច្រាស។
- ស្វែងរកតាមពេលវេលាដំឡើង TTPមិនមែនបន្ទុកទេ។ ធាតុឯកសារចាក់សោសារពើភ័ណ្ឌដែលមាន កញ្ចប់ ប្រកាស ដំឡើងជាមុន, ដំឡើងនិង ក្រោយការដំឡើង ទាំងអស់ចង្អុលទៅស្គ្រីបដូចគ្នា។ ពិនិត្យឡើងវិញប្រឆាំងនឹងអាយុកញ្ចប់ និងស្ថានភាពផ្ទៀងផ្ទាត់អ្នកបោះពុម្ពផ្សាយ។ គំរូនេះកម្រមាននៅក្នុងកញ្ចប់ស្របច្បាប់ ហើយវាជាសញ្ញាដែលអាចទុកចិត្តបំផុតតែមួយគត់ដែល PhantomBot ប្រើប្រាស់ឡើងវិញ។
- ការត្រួតពិនិត្យសម្រាប់ប្រព័ន្ធគោលពីរ C2។ អ្នកណាដែលបានទាញយក axois-utils:1.0.9 មានម៉ាស៊ីនមេ C2 របស់ប្រតិបត្តិករ (c2 អែលហ្វ, sha256 ១៦៥fa៩២d…) នៅលើថាស។ ស្កេនឃ្លាំងសម្ងាត់ និងកន្លែងផ្ទុកវត្ថុបុរាណ CI។ ប្រព័ន្ធគោលពីរនេះអសកម្មដោយខ្លួនវាផ្ទាល់ ប៉ុន្តែវត្តមានរបស់វានៅលើស្ថានីយការងារគឺជាភស្តុតាងច្បាស់លាស់ដែលថាកញ្ចប់ត្រូវបានដំឡើង។
បន្ទាត់បិទ
ប្រតិបត្តិករដូចគ្នា កញ្ចប់ដូចគ្នា និងទំពក់ដំឡើងដូចគ្នា អាចបង្កការគំរាមកំហែងខុសគ្នាទាំងស្រុងក្នុងរយៈពេល 48 ម៉ោង។ សូមប្រយ័ត្នចំពោះរនាំង មិនមែនបន្ទុកនោះទេ។




