TL; DR
npm ထုတ်ဝေသူတစ်ခုတည်း၊ deadcode09284814တရားဝင်သူများကို ဆန့်ကျင်သည့် typosquat လှုပ်ရှားမှုတစ်ခုကို လုပ်ဆောင်ခဲ့သည် axios နှင့် chalk-template ၂၀၂၆ ခုနှစ် မေလလယ်မှစ၍ ပက်ကေ့ဂျ်များ။
ဒီလှုပ်ရှားမှုဟာ သမားရိုးကျ အထောက်အထားနဲ့ ပိုက်ဆံအိတ်ခိုးယူမှုတစ်ခုအဖြစ် စတင်ခဲ့ပြီး ဒေတာတွေကို ခိုးယူခဲ့ပါတယ်။ Serveo HTTPS tunnel.
On 2026-05-17အတူ axois-utils:1.0.9၊ အော်ပရေတာသည် payload ကို လုံးဝပြောင်းလဲခဲ့သည်- တူညီသော triple install-hook scaffold၊ တူညီသော publisher၊ တူညီသော package name။
ဒါပေမယ့် install script က အခုဆိုရင် cross-platform DDoS botnet recruit တစ်ခုပါ။
ဝန်တင်ပစ္စည်းက စကားပြောတယ် localhost.run tunnel လုပ်ပြီး flood command များကို လက်ခံကာ ကူးစက်ခံရသည့် ပတ်ဝန်းကျင်များကို DDoS-capable botnet ၏ အစိတ်အပိုင်းတစ်ခုအဖြစ် ပြောင်းလဲပေးသည်။
အော်ပရေတာတောင် ပို့ပေးတယ် C2 ဆာဗာ ဘိုင်နရီ tarball အတွင်းမှာ၊ အထောက်အထားခိုးယူမှုမှ တက်ကြွသော botnet အခြေခံအဆောက်အအုံသို့ ရှင်းလင်းစွာ မြင့်တက်လာမှုကို ပြသထားသည်။
package နှစ်ခု၊ ဗားရှင်းလေးခုသည် registry တွင် အသက်ဝင်နေဆဲဖြစ်ပြီး၊ operator တစ်ခုက module နှစ်ခုလုံးကို parallel လည်ပတ်နေပါသည်။
ပြင်းထန်မှု: မြင့်မားသည်။
တိုက်ခိုက်မှု- ၎င်းမည်သို့အလုပ်လုပ်သည်
ဒီကမ်ပိန်းကို တမင်တကာပျင်းစရာကောင်းတဲ့ ပို့ဆောင်ရေးစင်ပေါ်မှာ တည်ဆောက်ထားပါတယ်- typosquat package အမည်နှစ်ခု၊ အပတ်စဉ် download သန်းရာပေါင်းများစွာရှိတဲ့ package တွေနဲ့ စာလုံးတစ်လုံးကွာတယ် (ကချင်, ခဲ-ပုံစံ) နှင့် သုံးဆတပ်ဆင်ခြင်း hooks အကောင်အထည်ဖော်မှုကို အာမခံပါတယ်။ စိတ်ဝင်စားစရာကောင်းတာက စင်မြင့်က ဘာလဲ။ သယ်ဆောင်သည် — ထို့အပြင် အော်ပရေတာသည် အခြားမည်သည့်အရာကိုမျှ မပြောင်းလဲဘဲ ကုန်ပစ္စည်းကို ပြောင်းလဲခဲ့ခြင်းလည်း ဖြစ်သည်။
မျှဝေထားသော စင်မြင့်
ပက်ကေ့ဂျ်နှစ်ခုလုံးရဲ့ ထုတ်ဝေထားတဲ့ ဗားရှင်းတိုင်းဟာ တူညီတဲ့ သက်တမ်းသုံးဆင့်ကို ကြေငြာပါတယ်။ hooks in မြတ်စွာဘုရား:
payload ကို သုံးခုလုံးအောက်တွင် စာရင်းပြုစုခြင်း hooks အလွန်အကျွံဖြစ်သည် - တပ်ဆင်ပါ။ တစ်ခုတည်း default မှာ run ပါလိမ့်မယ် npm installရွေးချယ်မှုက အရေးကြီးပါတယ်- npm install – လျစ်လျူရှုထားသော script များ script များကို ကျော်သွားသော်လည်း၊ အသုံးများသော workflow အများအပြား (CI cache သည် ပြန်လည်လည်ပတ်သော lifecycle ကို ပြန်လည်ရယူသည်) hooks ရွေးချယ်ထားသော သို့မဟုတ် စာရင်းစစ်သာပြုလုပ်သော ဆော့ဖ်ဝဲရေးသားသူများ တပ်ဆင်ပါ။) တိုက်ခိုက်သူအတွက် အလုံခြုံဆုံး အလောင်းအစားမှာ triple-redundant declaration လုပ်ပါ။
ခဲ-tempalte ဒုတိယယန္တရားတစ်ခုကို ထည့်သွင်းသည်- ၎င်းက ကြေငြာသည် axois-utils:^၁.၀.၇ လည်ပတ်ချိန်အဖြစ် မှီခိုtyposquatted ကို install လုပ်ခြင်း ခဲ-ပုံစံ ထို့ကြောင့် sibling typosquat ကိုပါ ဆွဲယူကာ payload နှစ်ခုစလုံး လည်ပတ်ပါသည်။ package နှစ်ခုသည် သီးခြားစာရင်းများ မဟုတ်ဘဲ ညှိနှိုင်းထားသော အတွဲတစ်ခုဖြစ်သည်။
အဆင့် A — အထောက်အထား/ပိုက်ဆံအိတ်ခိုးယူသူ (၂၀၂၆-၀၅-၁၅ → လက်ရှိ)
Phase A သည် မူရင်း payload ဖြစ်သည်။ loader သည် တိုတောင်းသော postinstall.js Serveo HTTPS reverse-tunnel ကို ညွှန်ပြနေသည်-
Serveo subdomain သည် ဦးတည်ရာ IP ကို encode လုပ်သည် (80.200.28.28) ကို hostname မှာ တိုက်ရိုက်ထည့်ပါ — အဲဒီ service အတွက် မှတ်မိလွယ်တဲ့ convention တစ်ခုပါ။ operator က naïve domain blocklist တွေကို ရှောင်လွှဲဖို့ ဗားရှင်းတွေကြားမှာ random subdomain prefix ကို လှည့်ပတ်အသုံးပြုပေမယ့် underlying IP ကတော့ ဘယ်တော့မှ မရွေ့ပါဘူး။ချော့-tempalte: ၁.၀.၁၉ အသုံးပြုခံ့ 8a3e818ea8f11186-80-200-28-28…; ၁.၀.၁၆ / ၁.၀.၁၉ / ၁.၀.၂၀ အသုံးပြုပါ f04a273bd84c0622-….)
postinstall.js လက်လျှော့လိုက်သည် phantom.js၊ ၇,၆၆၇-လိုင်း အစုအဝေးပါ “collector” မော်ဂျူး။ phantom.js အိမ်ရှင်က အောက်ပါအတွက် လမ်းလျှောက်ပေးသည်-
SSH သီးသန့်သော့များ (~/.ssh/*) |
.npmrc အကြောင်းအရာများနှင့် မည်သည့်အရာမဆို npm_* env တိုကင်များ |
| AWS၊ GCP နှင့် Azure အထောက်အထားဖိုင်များ |
GitHub ကိုယ်ရေးကိုယ်တာ-ဝင်ရောက်ခွင့်-တိုကင် regex (ghp_*, gho_*, ghu_*, ghs_*) |
| Bitcoin၊ Exodus၊ Electrum၊ Monero၊ Litecoin၊ Dogecoin၊ Zcash၊ Dash အတွက် Crypto-wallet ရှေးဟောင်းပစ္စည်းများ |
ထပ်ခါတလဲလဲလုပ်ဆောင်ခြင်း .env* လမ်းလျှောက် ~/projects, ~/dev, ~/code, ~/workspaceနှင့် cwd ထည့်သွင်းခြင်း |
Shell သမိုင်းကြောင်းများနှင့် အပြည့်အစုံ process.env |
အစုအဝေးကို Serveo tunnel သို့ POST လုပ်သည် /စုဆောင်းပါရှုပ်ထွေးစေခြင်း၊ anti-VM ယုတ္တိဗေဒ၊ staging စသည်တို့ မရှိပါ။ အော်ပရေတာ၏ အလောင်းအစားမှာ အသံအတိုးအကျယ်နှင့် အမြန်နှုန်းပေါ်တွင်သာ ဖြစ်သည်။
အဆင့် B — PhantomBot DDoS စုဆောင်းမှု (၂၀၂၆-၀၅-၁၇၊ axois-utils:၁.၀.၉ သာ)
အဆင့် B သည် phantom.js + postinstall.js ကို distrube.js အမည်ရှိ ဖိုင်တစ်ခုတည်းဖြင့် အစားထိုးသည် (စာလုံးပေါင်းအမှားမှာ operator ၏ အမှားဖြစ်သည်)။ package.json ရှိ triple-hook scaffold သည် မပြောင်းလဲပါ။ package သည် အမည်၊ scope နှင့် version-bump ပုံစံကို အတူတူပင် ထိန်းသိမ်းထားသည်။ အပြင်ပန်းမှကြည့်လျှင် axois-utils:1.0.9 သည် 1.0.6 ၏ နောက်ဆက်တွဲ အနည်းငယ်ကဲ့သို့ ထင်ရသည်။ အတွင်းပိုင်းတွင် ၎င်းသည် မတူညီသော malware မိသားစုတစ်ခုဖြစ်သည်။
distrube.js operator ရဲ့ ကိုယ်ပိုင် branding ကို ဖော်ပြတဲ့ configuration block နဲ့ ပွင့်ပါတယ်-
// 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')}`; |
မှတ်ချက်များသည် kit ကို run မည့် အနာဂတ် operator ထံသို့ ပေးပို့ခြင်းဖြစ်ပြီး (“သင့် localhost.run HTTPS URL” ကိုသုံးပါ)။ ထိုအချက်အပြင် bot client နှင့်အတူ ပါလာသည့်အရာမှာ ၎င်းသည် victim payload သက်သက်မဟုတ်ဘဲ kit ဖြစ်ကြောင်း ပြသခြင်းဖြစ်သည်။
စီးဆင်းမှု:
- ဇှဲကောငျးခွငျး အရင်အလုပ်လုပ်ပါတယ်။ script ကို OS (registry) တစ်ခုချင်းစီအလိုက် နည်းလမ်းသုံးမျိုးနဲ့ ထည့်သွင်းပါတယ်။ ပွေးသှား + စတင်အသုံးပြုသည့် ဖိုဒါ + schtasks များ Windows မှာ; crontab + phantom-bot.service စနစ်ယူနစ် + .bashrc/.zshrc ပေါင်းထည့် + /etc/rc.local Linux မှာ; LaunchAgent com.phantom.bot.plist macOS မှာ)။ persistence service name နဲ့ LaunchAgent label နှစ်ခုစလုံးက စိတ်ကူးယဉ် bot / com.phantom.bot၎င်းသည်လည်း ကမ်ပိန်းအမည် ဆင်းသက်လာရာနေရာဖြစ်သည်။
- စနစ်အချက်အလက် exfil တစ်ကြိမ်သာအလုပ်လုပ်သည် — hostname၊ platform၊ arch၊ username၊ CPU/RAM၊ network interfaces၊ process.env၊ cwd၊ homedir၊ node version နှင့် public IP တို့ကိုသယ်ဆောင်သည့် one-shot fingerprint ဖြင့် b94b6bcfa27554.lhr.life:443/collect သို့ POST လုပ်သည်။ ၎င်းသည် Phase A ထက် များစွာပိုမိုထိရောက်မှုနည်းသည်- SSH၊ wallets၊ .env recursion မရှိပါ။ bot ၏အလုပ်မှာ ခိုးယူရန်မဟုတ်ဘဲ စာရင်းသွင်းရန်ဖြစ်သည်။
- နှလုံးခုန်သံ ကွင်းဆက် b94b6bcfa27554.lhr.life:443/ သို့ HTTPS POST တစ်ခုကို စက္ကန့် ၃၀ တိုင်း ဖွင့်သည်။ User-Agent မှာ PhantomBot/1.0 ဖြစ်သည်။ TLS အတည်ပြုခြင်းကို ရှင်းလင်းစွာ ပိတ်ထားသည် (rejectUnauthorized: false)။ C2 တုံ့ပြန်မှုကို {type, target, port, duration, threads, method} ပုံစံ၏ JSON အဖြစ် parse လုပ်၍ dispatched လုပ်သည်။
- ရေကြီးရေလျှံမှု လက်နက်တိုက် command ခြောက်ခုနဲ့ ချိတ်ဆက်ထားပါတယ်-
| Command အမျိုးအစား | module | မှတ်စုများ |
|---|---|---|
| ping ရဲ့ | သက်ဝင်လှုပ်ရှားမှု အကြောင်းပြန်ချက် | ဘော့တ်က သူ့ကိုယ်သူ ဖော်ထုတ်ပါတယ် |
| http | HTTP ရေလွှမ်းမိုးမှု | Layer-7 တောင်းဆိုမှု ရေလွှမ်းမိုးမှု |
| https | HTTPS ရေလွှမ်းမိုးမှု | http နဲ့ အတူတူပါပဲ၊ TLS-wrapped |
| tcp | TCP ရေလွှမ်းမိုးမှု | ၆၅ KB ကျပန်း-ပေးဆောင်ရမည့် စပမ်း |
| ပူတင်း | UDP ရေလွှမ်းမိုးမှု | ၆၅,၅၀၇-ဘိုက် UDP ပက်ကေ့ခ်များ |
| အလွန်လျင်မြန်သော | HTTP/2 DoS ကို လျင်မြန်စွာ ပြန်လည်သတ်မှတ်ခြင်း | ၂၀၂၃ CVE-၂၀၂၃-၄၄၄၈၇ နည်းစနစ် |
ရေလွှမ်းမိုးမှု မော်ဂျူး ငါးခုစလုံးသည် ယူသည် ပစ်မှတ်, ဆိပ်ကမ်း, ရှည်ကြာခြင်းနှင့် ချည် အငြင်းအခုံ — bot သည် ငှားရမ်းရန်အသုံးပြုသည့် generic flooder တစ်ခုဖြစ်ပြီး မည်သည့်သားကောင်ကိုမျှ ရည်ရွယ်ခြင်းမဟုတ်ပါ။ operator ၏ သားကောင်စာရင်းသည် package တွင်မဟုတ်ဘဲ C2 တွင်ရှိသည်။
ဤနေရာတွင် အသစ်အဆန်းများ — ပို့ဆောင်ထားသော C2 binary
အဆင့် A သည် ရင်းနှီးသောပုံစံတစ်ခုဖြစ်သည်- အထောက်အထားခိုးယူမှု၊ တပ်ဆင်ချိတ်၊ ရောင်းချသူ-tunneled C2။ အဆင့် B သည် လည်း ရင်းနှီးပြီးသားပုံစံတစ်ခု — DDoS botnet များသည် နှစ်ပေါင်းများစွာ အန္တရာယ်ရှိသော npm package များ၏ အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ထူးခြားသည်မှာ အော်ပရေတာသည် ဆာဗာဘက်ခြမ်း npm tarball အတွင်းရှိ kit ၏
- c2 — ၄ မီဂါဘိုက် စုစည်းထားသော Go ELF binary တစ်ခု
- c2.go — ထို binary အတွက် 426-line Go source
ဘယ်ဖိုင်မှ install hook နဲ့မှ invoke မလုပ်ပါဘူး။ သူတို့ဟာ victim payload ရဲ့ အစိတ်အပိုင်းတစ်ခု မဟုတ်ပါဘူး။ documentation file လိုပဲ package directory မှာ ရှိနေတာပါ။ အဖြစ်နိုင်ဆုံး ဖတ်ရတာကတော့ operator ဟာ file list ကို curate မလုပ်ဘဲ သူတို့ရဲ့ development working tree ကို npm ကို တွန်းပို့လိုက်တာပါပဲ - တကယ့် OpSec slip ပါပဲ - ပြီးတော့ ပို့ပေးလိုက်တာကတော့ နှစ်ဖက်စလုံးက kit တွေပါပဲ- victim run တဲ့ client နဲ့ operator run တဲ့ server တို့ပါပဲ။
ဒါက “turnkey botnet kit” ဘောင်ခတ်မှုကို တရားမျှတစေတဲ့ ဇာတ်လမ်းရဲ့ အစိတ်အပိုင်းပါ။ ဒေါင်းလုဒ်လုပ်သူတိုင်း axois-utils: ၁.၀.၉ takedown မတိုင်ခင်မှာ သားကောင်နမူနာတစ်ခုတင်မကဘူး — သူတို့မှာ အလုပ်လုပ်နေတဲ့ C2 server တစ်ခုရှိပါတယ်။
စာကြောင်းတစ်ကြောင်းတည်းနဲ့ pivot က
ထုတ်ဝေသူ တူညီ၊ ပက်ကေ့ဂျ်အမည် တူညီ၊ သုံးဆင့်ချိတ် စင်မြင့် တူညီ၊ “ပုံတူ” အမှတ်တံဆိပ် တူညီ — ဒါပေမယ့် payload သည် monetization model ကို တစ်ညတည်းနှင့် ပြောင်းလဲစေခဲ့သည်"ပြန်လည်ရောင်းချနိုင်သော ရိတ်သိမ်းမှုလျှို့ဝှက်ချက်များ" မှ "ငှားရမ်းနိုင်သော ရေလွှမ်းမိုးမှုစွမ်းရည်" အထိ။ ကာကွယ်သူများ စောင့်ကြည့်သင့်သော install-time TTP များသည် အဆင့်နှစ်ခုလုံးတွင် နီးပါးတူညီသည်။ Phase A ၏ wallet-path string များနှင့် key လုပ်ထားသော signature-based ကာကွယ်ရေးများ phantom.jsရဲ့ ၇,၆၆၇ လိုင်း စုဆောင်းကိရိယာဟာ Phase B ကို လုံးဝလွဲချော်သွားပါလိမ့်မယ်။
| ရက်စွဲ (UTC) | အဖြစ်အပျက် |
|---|---|
| 2026-05-15 | ပထမဆုံးထုတ်ဝေမှု- axois-utils:1.0.4 (LAN စမ်းသပ်တည်ဆောက်မှု၊ dev rig မှာ 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 ထုတ်ဝေခဲ့သည် — အဆင့် A C2 ကို လဲလှယ်ခဲ့သည် 80.200.28.28 Serveo tunnel မှတစ်ဆင့်; အရင်းအမြစ် မှတ်ချက် // Change to '80.200.28.28' for public dev→prod swap ကို အတည်ပြုသည် |
| 2026-05-16 | chalk-tempalte:1.0.14 နှင့် 1.0.16 ထုတ်ဝေပြီး — ကွင်းဆက် loader ကြေငြာခြင်း axois-utils:^1.0.7 runtime dependency အနေနဲ့; Serveo subdomain ကို လှည့်ပတ်ထားပါတယ် |
| 2026-05-16 | ပုံမှန် npm စကင်ဖတ်စစ်ဆေးနေစဉ် Phase A campaign ကို ရှာဖွေတွေ့ရှိခဲ့ပြီး၊ အတည်ပြုထားသော-အန္တရာယ်ရှိသော ဆုံးဖြတ်ချက်များကို ကျင့်သုံးခဲ့သည် |
| 2026-05-17 | axois-utils:1.0.9 ထုတ်ဝေခဲ့သည် — payload pivot: PhantomBot DDoS recruit သည် localhost.run tunnel မှတစ်ဆင့်; operator-side c2 ဒွိစုံနှင့် c2.go tarball မှာ ပေးပို့တဲ့ အရင်းအမြစ် |
| 2026-05-17 | chalk-tempalte:1.0.19 နှင့် 1.0.20 ထုတ်ဝေပြီး — Phase A (stealer) သာရှိသေးသည်။ operator သည် module နှစ်ခုလုံးကို parallel ဖြင့် လည်ပတ်နေသည်။ |
| 2026-05-17 | ပုံမှန်စကင်ဖတ်စစ်ဆေးမှုအတွင်း အဆင့် B ကို ရှာဖွေတွေ့ရှိခြင်း၊ ဆုံးဖြတ်ချက်များအားလုံးတွင် အကျုံးဝင်သည် 2026-05-17 ဗားရှင်း |
| (ဆက်လက်) | ဖယ်ရှားခြင်းအစီရင်ခံစာများကို ဆိုင်းငံ့ထားဆဲဖြစ်သည်။ ထုတ်ဝေထားသော ပက်ကေ့ဂျ်လေးခုစလုံးကို ရေးသားချိန်တွင် မှတ်ပုံတင်တွင် ရရှိနိုင်သေးသည် |
ညှိနှိုင်းမှု၏ ညွှန်ပြချက်များ
packages
| ဂေဟစနစ် | အထုပ် | ဗားရှင်း |
|---|---|---|
| npm | axois-utils (axios ၏ typosquat) | 1.0.4, 1.0.6, 1.0.9 |
| npm | chalk-tempalte (ချော့-တင်းပလိတ်၏ typosquat) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
စာရေးသူ၏ အထောက်အထား
| လယ်ယာ | အဘိုး |
|---|---|
| npm ထုတ်ဝေသူ | deadcode09284814 |
| ထုတ်ဝေသူ အီးမေးလ် | phantomdeadcode@tutamail.com |
| SCM စိစစ်အတည်ပြု | အဘယ်သူမျှမ |
Command-and-control
| အဆင့် | အဆုံးမှတ် | ခရီးသြားဝန္ေဆာင္မႈလုုပ္ငန္းမ်ား |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | Serveo HTTPS tunnel |
| A | 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect | Serveo HTTPS tunnel (ယခင်ဗားရှင်း) |
| 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 binary အတွက် source ကိုသွားပါ |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | အဆင့် B bot client |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | အဆင့် A အထောက်အထား/ပိုက်ဆံအိတ်စုဆောင်းသူ |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | အဆင့် A စုဆောင်းသူ (၁.၀.၂၀ မျိုးကွဲ) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | Phase A loader၊ ဗားရှင်းနှစ်ခုလုံးတွင် byte-တူညီသည် |
အရင်းအမြစ်နှင့် လှုံ့ဆော်မှု
ကျွန်ုပ်တို့သည် ဤကမ်ပိန်းကို အောက်ပါအတိုင်း ခြေရာခံပါသည် PhantomBotအော်ပရေတာရဲ့ ကိုယ်ပိုင်အမှတ်တံဆိပ်ကို ရယူခြင်း အသုံးပြုသူ-အေးဂျင့်- PhantomBot/1.0 နှလုံးခုန်သံ ခေါင်းစဉ်၊ phantom-bot.service စနစ်ယူနစ်၊ com.phantom.bot LaunchAgent အညွှန်းနှင့် phantomdeadcode@ အီးမေးလ် လက်ကိုင်။ အော်ပရေတာသည် အနည်းဆုံး ရှေးဟောင်းပစ္စည်းလေးခုတွင် ဤအမည်နှင့်ပတ်သက်၍ တသမတ်တည်းရှိသည်။
အချက်ပြမှုများ ကတ်တလောက်
- ပုံနှိပ်ထုတ်ဝေသူ - deadcode09284814 npm မှာ။ တစ်ယောက်တည်းကိုင်တွယ်ရတဲ့အကောင့်၊ Tutamail တစ်ခါသုံးအီးမေးလ်၊ မရှိပါဘူး။ SCM အတည်ပြုခြင်း။ ဤကမ်ပိန်းမှလွဲ၍ ယခင်ကထုတ်ဝေမှုမှတ်တမ်းမရှိပါ။
- အမှတ်တံဆိပ်ပြန်လည်အသုံးပြုခြင်း — “phantom” သည် ထုတ်ဝေသူအီးမေးလ်တွင်၊ Phase A collector ဖိုင်အမည်တွင် ပေါ်လာသည် (phantom.js), Phase B persistence service name မှာ (phantom-bot.service), LaunchAgent အညွှန်းတွင် (com.phantom.bot) နှင့် bot User-Agent တွင် (ဖန်တမ်ဘော့တ်/၁.၀).
- အခြေခံအဆောက်အဦများ — VPS တစ်ခုတည်း 80.200.28.28 Serveo ဒိုမိန်းခွဲလည်ပတ်မှုမှတစ်ဆင့် ရှေ့တန်းအဆင့် A၊ အဆင့် B သည် a သို့ ရွေ့လျားသည် localhost.run ပြောင်းပြန်ဥမင်လိုဏ်ခေါင်း (b94b6bcfa27554.lhr.ဘဝ). ရောင်းချသူဝန်ဆောင်မှုနှစ်ခုစလုံးသည် အခမဲ့ဖြစ်ပြီး အော်ပရေတာဘက်မှ outbound SSH ကိုသာ လိုအပ်ပြီး ဘတ်ဂျက်နည်းပြီး OpSec စနစ်ထည့်သွင်းမှုနည်းသော စနစ်များနှင့် ကိုက်ညီပါသည်။
- ကုဒ်စတိုင် — တစ်လျှောက်လုံးတွင် JavaScript ရိုးရှင်းသည်။ ရှုပ်ထွေးမှုမရှိ၊ string encoding မရှိ၊ anti-VM စစ်ဆေးမှုများ မရှိပါ။ variable အမည်များသည် ဖော်ပြနိုင်သည် (ခိုးယူစနစ်အချက်အလက်, executeCommand, httpFlood). မှတ်ချက်များတွင် distrube.js အနာဂတ်အော်ပရေတာ (“သင့် localhost.run HTTPS URL ကိုသုံးပါ”) ကို တိုက်ရိုက်ကိုင်တွယ်ဖြေရှင်းပြီး ဖိုင်ကို တိုက်ခိုက်သူတစ်ဦးတည်းက အသုံးမပြုဘဲ ကိရိယာတစ်ခုအဖြစ် ပြန်လည်ဖြန့်ဝေရန် ရည်ရွယ်ထားကြောင်း ညွှန်ပြသည်။
- OpSec စလစ် — Phase B tarball သည် bot client နှင့် operator-side C2 server နှစ်ခုလုံးကို ပို့ဆောင်ပေးသည် (c2 ELF + c2.go source)။ ၎င်းသည် ဖိုင်စာရင်းကို audit မလုပ်ဘဲ ၎င်းတို့၏ working tree ကို npm သို့ တွန်းပို့သည့် operator နှင့် ကိုက်ညီပါသည်။ operator သည် အတွေ့အကြုံမရှိ သို့မဟုတ် kit သည် အဓိပ်ပာယျ အများပြည်သူထံ ဖြန့်ဝေရန်နှင့် C2 binary သည် ထုတ်ကုန်၏ အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။
- ကိုယ်တိုင်အတည်ပြုခြင်း - axois-utils: ၁.၀.၉ မူရင်းမှတ်ချက်ပါဝင်သည် // အများသုံးအတွက် '80.200.28.28' သို့ပြောင်းပါ လိုင်း ၁၂ မှာ၊ အော်ပရေတာတွေက ပုံမှန်ငြင်းဆိုလေ့ရှိတဲ့ dev / staging / production progression ကို အတည်ပြုပါတယ်။
အကွောငျးရငျး
Phase A payload သည် ရိုးရှင်းသော ငွေကြေးခိုးယူမှုဖြစ်သည်- အထောက်အထားများ၊ cloud key များ၊ GitHub တိုကင်များနှင့် crypto wallets အားလုံးတွင် liquid resale market များရှိသည်။ Phase B သည်လည်း ငွေကြေးဆိုင်ရာဖြစ်သော်လည်း သွယ်ဝိုက်သည်- DDoS-for-hire (“booter”) ဝန်ဆောင်မှုများသည် မိနစ်အလိုက် flood capacity ကို ငှားရမ်းပြီး ဤနေရာတွင် ပို့ဆောင်ပေးသည့် bot ကဲ့သို့သော bot များသည် ထိုဝန်ဆောင်မှုများတွင် လည်ပတ်နေသော inventory များဖြစ်သည်။ စက္ကန့် ၃၀ နှလုံးခုန်သံ၊ generic ပစ်မှတ်/ဆိပ်ကမ်း/ရှည်ကြာခြင်း command schema နှင့် five-protocol flood arsenal တို့သည် standard booter operator တစ်ခု၏ ထုတ်ကုန်။
မော်ဂျူးနှစ်ခုလုံးကို တစ်ပြိုင်နက်တည်း လည်ပတ်ခြင်း — ချော့-tempalte: ၁.၀.၁၉ နှင့် 1.0.20 ခိုးသူကို ဆက်လက်ပို့ဆောင်နေစဉ် axois-utils: ၁.၀.၉ bot ကို ပို့ဆောင်ပေးသည် — အော်ပရေတာသည် Phase A ကို စွန့်လွှတ်မည့်အစား ဝင်ငွေစီးဆင်းမှုများကို ကာကွယ်နေကြောင်း အကြံပြုထားသည်။ pivot သည် ထို့အပွငျအစားထိုးခြင်းမဟုတ်ပါ။
ကျွန်ုပ်တို့ မတောင်းဆိုသောအရာ
နောက်ကွယ်က တကယ့်ကမ္ဘာက အထောက်အထားကို ကျွန်ုပ်တို့ အတည်ပြုနိုင်ခြင်း မရှိသေးပါ။ deadcode09284814 handle ဖြစ်ပြီး၊ ကျွန်ုပ်တို့သည် ဤ campaign ကို မည်သည့် threat actor၊ group သို့မဟုတ် country ကိုမျှ ရည်ညွှန်းခြင်းမပြုပါ။ “phantom” branding သည် single operator တစ်ခုကို အကြံပြုရန် artifacts များတွင် လုံလောက်သော တသမတ်တည်းရှိသော်လည်း C2 binary ၏ kit-style shipping သည် ဆက်စပ်မှုမရှိသော handles များမှ အနာဂတ် package များသည် တူညီသော code ကို ပြန်လည်အသုံးပြုနိုင်ခြေကို ဖြစ်ပေါ်စေပါသည်။
သက်ရောက်မှု၊ ခေတ်ရေစီးကြောင်းများနှင့် ကာကွယ်သူများ လုပ်ဆောင်သင့်သည်များ
သက်ရောက်မှု
တရားဝင် squat ပစ်မှတ်များ ကချင် နှင့် ခဲ-ပုံစံ JavaScript ဂေဟစနစ်တွင် ကျယ်ကျယ်ပြန့်ပြန့် မှီခိုအားထားနေရသည်။ ကချင် တစ်ခုတည်းသာ ဒေါင်းလုဒ်အများဆုံး npm package သုံးခုထဲမှာ ပါဝင်ပါတယ်။ typosquat အမည်တွေက တကယ့်အမည်တွေနဲ့ တစ်ချက်ပဲ ကွာပါတယ် (အက်ဆွာစ် ↔ ကချင်, tempalte ↔ template ကို) နှင့် နှစ်ခုစလုံးသည် ဘာသာစကားအရ ဖြစ်နိုင်ခြေရှိသော စာလုံးပေါင်းအမှားများ ဖြစ်သည်။
ဖယ်ရှားခြင်းမပြုမီ အန္တရာယ်ရှိသော ဗားရှင်းများအတွက် ယုံကြည်စိတ်ချရသော ဒေါင်းလုဒ်စာရင်းအင်းများကို ကျွန်ုပ်တို့ မရယူနိုင်ခဲ့ပါ — ပက်ကေ့ဂျ်တစ်ခုကို ထုတ်ဝေခြင်းမပြုမီ npm သည် ဗားရှင်းတစ်ခုချင်းစီ၏ ဒေါင်းလုဒ်အရေအတွက်ကို မသိမ်းဆည်းထားပါ။ ထို့အပြင် npms.io-style proxy များသည် ဤအတိုင်းအတာတွင် ဆူညံပါသည်။ ၎င်းတို့၏ lockfile သည် package တစ်ခုသို့ ခွဲခြမ်းစိတ်ဖြာသည့် မည်သည့်အဖွဲ့အစည်းမဆို axois-utils များ or ခဲ-tempalte ထုတ်ဝေသူထံမှ deadcode09284814 အန္တရာယ်ရှိသည်ဟု ယူဆသင့်သည်- ရှိပြီးသား အထောက်အထားတိုင်းကို လှည့်ပတ်ကြည့်ရှုပါ process.env ထိခိုက်ခံရသော host တွင်၊ OS တစ်ခုချင်းစီ၏ persistence vector များကို audit လုပ်ပါ (အောက်ပါ “defenders များ လုပ်ဆောင်သင့်သည်များ” ကိုကြည့်ပါ)၊ ထို့နောက် dependency ကို ဖယ်ရှားပါ။
ပေါ်ပေါက်လာသောပုံစံများ
ဤကမ်ပိန်းသည် မကြာသေးမီက npm ဖြစ်ရပ်များစွာတွင် ကျွန်ုပ်တို့မြင်တွေ့ခဲ့ရသော အပြောင်းအလဲတစ်ခုကို ပုံဖော်ပြသသည်- တပ်ဆင်ချိတ် စင်သည် တာရှည်ခံပစ္စည်းဖြစ်သည်payload ကို လဲလှယ်နိုင်သည်။ ထုတ်ဝေသူ တူညီ၊ ပက်ကေ့ဂျ် တူညီ၊ တူညီ ကြိုတင်ထည့်သွင်းပါ။ / install / တပ်ဆင်ပါ။ သုံးဆ၊ ပြီးတော့ ဗားရှင်းတူတောင်မှ bump cadence — အဲဒီကြားက ပြောင်းလဲသွားတဲ့အရာက axois-utils: ၁.၀.၉ နှင့် axois-utils: ၁.၀.၉ ဖိုင်က ဘာလဲ hooks လည်ပတ်ပါ။ Phase A payload (wallet-path strings) နှင့် သော့ခတ်ထားသော Signature-based detection phantom.js၏ ၇,၆၆၇-လိုင်း စုဆောင်းသူ၊ Serveo C2 host) သည် ပထမ ဗားရှင်း သုံးခုကို အလံတင်ပြီး Phase B ကို လုံးဝ လွတ်သွားလိမ့်မည်။
ကျွန်ုပ်တို့ ခြေရာခံခဲ့သော အခြား ၂၀၂၆ ခုနှစ် campaign များတွင်လည်း အလားတူပုံစံကို မြင်တွေ့နိုင်သည်- တည်ငြိမ်သော scaffold တစ်ခုရှိသည့် operator တစ်ဦးတည်း၊ အထောက်အထားခိုးယူမှု၊ စာမေးပွဲလိမ်လည်မှု client များ၊ Telegram-bot exfil နှင့် ယခု DDoS recruitment တို့အကြား လဲလှယ်နေပါသည်။ payload signatures များကို အားကိုးသော defenders များသည် campaign တိုင်း၏ ဒုတိယအကျော့တွင် ရှုံးနိမ့်နေဦးမည်ဖြစ်သည်။
နောက်ဆက်တွဲကတော့ အဲဒါပါပဲ install-time TTP များသည် ပိုကောင်းသော signal ဖြစ်သည်. Triple install-hook ကြေငြာချက်များ၊ import လုပ်သော script များကို install လုပ်ပါ https or ကလေး_လုပ်ငန်းစဉ်user-startup folder များသို့ ရေးသားသော script များကို ထည့်သွင်းပါ၊ နှင့် အခမဲ့ reverse-tunnel ဝန်ဆောင်မှုများ (Serveo) တွင် hostname များကို ဖြေရှင်းပေးသော script များကို ထည့်သွင်းပါ။ localhost.run, ngrok, cloudflared) အားလုံးသည် တရားဝင် package များတွင် ရှားပါးပြီး အန္တရာယ်ရှိသော package များတွင် အဖြစ်များသည်။
ကာကွယ်သူတွေ ဘာလုပ်သင့်လဲ
- လော့ခ်ဖိုင် စစ်ဆေးခြင်း. တိုင်းရှာဖွေပါ package-lock.json / ချည်မျှင်သော့ / pnpm-lock.yaml သင့်အဖွဲ့အစည်းတွင် တိကျသော စာကြောင်းများအတွက် axois-utils များ နှင့် ခဲ-tempalte။ မည်သည့်ပွဲစဉ်ကိုမဆို အပေးအယူတစ်ခုအဖြစ် သဘောထားပါ။
- လျှို့ဝှက်ချက်များကို လှည့်ပတ်ပါ ထိခိုက်ခံရသော အိမ်ရှင်များပေါ်တွင်။ အဆင့် A bulk-harvested SSH၊ cloud၊ GitHub၊ npm နှင့် wallet အထောက်အထားများ။ တွင် အမြဲရှိနေသော အထောက်အထားတိုင်းကို ယူဆပါ process.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~/.config, သို့မဟုတ်မဆို .env* ထိခိုက်ခံရသော host ရှိဖိုင်ကို ဖော်ထုတ်ခဲ့သည်။
- တည်တံ့မှုကို ဖယ်ရှားပါ (အဆင့် B)။ Windows မှာ ဖျက်လိုက်ပါ HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate မှာ ရိုက်ထည့်ပါ။ဖယ်ရှားလိုက်ပါ %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.bat (ကုဒ်နံပါတ်ကို ရိုက်ထည့်ပါ)နှင့် schtasks /delete /tn SystemUpdate /fLinux မှာ၊ crontab -e ဖယ်ရှားလိုက်ပါ @reboot node …, systemctl –user ကို disable လုပ်ပါ –now phantom-bot.service ထို့နောက်ပယ်ဖျက်ပါ ~/.config/systemd/user/phantom-bot.service, ပွတ်တိုက်ပါ .bashrc / .zshrc / /etc/rc.localmacOS မှာ၊ launchctl unload ~/Library/LaunchAgents/com.phantom.bot.plist ကိုနှိပ်ပါ။ ပြီးရင် plist ကို ဖျက်လိုက်ပါ။
- C2 host တွေကို block လုပ်ပါ။ IOC ဇယားရှိ C2 endpoint လေးခုကို သင်၏ egress blocklist ထဲသို့ ထည့်ပါ။ *.serveousercontent.com နှင့် *.lhr.life သင့်ပတ်ဝန်းကျင်တွင် reverse-tunnel ဝန်ဆောင်မှုများအတွက် တရားဝင်အသုံးပြုမှုမရှိပါက လက်ကားပိတ်ဆို့ထားနိုင်သည်။
- ထည့်သွင်းချိန် TTP အလိုက် ရှာဖွေပါဝန်တင်ဆောင်မှု မဟုတ်ပါ။ စာရင်းသော့ခတ်ဖိုင်မှတ်တမ်းများ မြတ်စွာဘုရား ကြေငြာ ကြိုတင်ထည့်သွင်းပါ။, installနှင့် တပ်ဆင်ပါ။ အားလုံးသည် တူညီသော script ကို ညွှန်ပြနေသည်။ package အသက်အရွယ်နှင့် publisher အတည်ပြုချက် status ကို အပြန်အလှန်စစ်ဆေးပါ။ ဤပုံစံသည် တရားဝင် package များတွင် ရှားပါးပြီး PhantomBot မှ ပြန်လည်အသုံးပြုသည့် တစ်ခုတည်းသော အားအကိုးရဆုံး အချက်ပြမှုဖြစ်သည်။
- C2 binary အတွက် စစ်ဆေးမှု။ ဒေါင်းလုဒ်လုပ်ထားသူတိုင်း axois-utils: ၁.၀.၉ အော်ပရေတာရဲ့ C2 server ရှိပါတယ် (c2 ELF၊ sha256 ၁၆၅fa၉၂d…) disk ပေါ်မှာ။ scan cache တွေနဲ့ CI artifact store တွေကို သိမ်းဆည်းပါ။ binary ဟာ သူ့အလိုလို ငြိမ်နေပေမယ့် workstation မှာ ရှိနေတာက package ကို install လုပ်ထားတယ်ဆိုတဲ့ ရှင်းလင်းတဲ့ သက်သေပါပဲ။
ပိတ်ပွဲလိုင်း
တူညီတဲ့ operator၊ တူညီတဲ့ package နဲ့ တူညီတဲ့ install hook က ၄၈ နာရီအတွင်း လုံးဝကွဲပြားတဲ့ threat တွေကို ပေးစွမ်းနိုင်ပါတယ်။ payload ကိုမဟုတ်ဘဲ scaffold ကို သတိထားပါ။




