TL; DR
၂၀၂၆ ခုနှစ်၊ ဧပြီလ ၁ ရက်မှ မေလ ၃ ရက်အထိ၊ npm ထုတ်ဝေသူတစ်ခုတည်းသည် user0001၊ အတည်မပြုရသေးသော Gmail လိပ်စာဖြင့် မှတ်ပုံတင်ထားသည် tanvisoul9@gmail.com၊ ရည်ရွယ်ချက်ရှိရှိ ပေါ့ပေါ့တန်တန်၊ အခြေခံအဆောက်အအုံလို့ ထင်ရတဲ့ နာမည်တွေနဲ့ package ခြောက်ခုကို တိတ်တဆိတ် တွန်းအားပေးခဲ့တယ်- centralogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtimeနှင့် node-env-resolve.
နောက်ဆုံးထွက်ဗားရှင်းနှစ်ခုဖြစ်တဲ့ node-env-resolve1.0.7 နှင့် 1.0.8 တို့ကို Xygeni ၏ Malware Early Warning (MEW) စနစ်မှ မေလ ၂ ရက်နေ့တွင် အလံပြခဲ့ပြီး မေလ ၃ ရက်နေ့တွင် အန္တရာယ်ရှိသော ဆော့ဖ်ဝဲဖြစ်ကြောင်း အတည်ပြုခဲ့သည်။
ဒီ implant က ပုံမှန်မဟုတ်တဲ့အတွက် ထူးခြားပါတယ်- Telegram bot တွေ၊ OAST callback တွေ မရှိသလို ရှုပ်ထွေးပွေလီအောင်လုပ်နှင့် install လုပ်ချိန်တွင် AWS အထောက်အထားများကို ရယူရန် ကြိုးပမ်းမှု မရှိပါ။ ယင်းအစား၊ postinstall.js HKCU Run key ကို အသုံးပြု၍ Windows boot-persistence entry တစ်ခုကို စတင်သည်။ wscript.exe VBS stub တစ်ခုကို ဆန့်ကျင်သည်။ ထို့နောက် ၎င်းသည် မိုက်ခရိုဖုန်းဖမ်းယူခြင်း၊ browser-history ခိုးယူခြင်း၊ screenshotting နှင့် mouse/keyboard simulation တို့အတွက် မော်ဂျူးများကို စုစည်းထားသည့် detach လုပ်ထားသော Node.js agent တစ်ခုကို ဖန်တီးသည်။
ကျွန်တော်တို့က ဒီ cluster ကို ခေါ်ပါတယ် DevTapကိရိယာအစုံပြီးနောက် ၎င်းသည် ဆော့ဖ်ဝဲရေးသားသူ၏ စက်ပေါ်တွင် လည်ပတ်နေခဲ့သည်။
ဒီစာရေးနေချိန်မှာ package ခြောက်ခုစလုံးကို npm မှာ live လုပ်ထားပါတယ်။ ကျွန်တော်တို့ registry ရဲ့ abuse channel ကို submit လုပ်ထားပါတယ်။ Defenders တွေက ဖယ်ရှားမှုကို စောင့်ဆိုင်းနေချိန်မှာ publisher ကနေ install လုပ်ထားတဲ့ install တွေကို pull လုပ်သင့်ပါတယ်။
Cluster: ပက်ကေ့ဂျ်ခြောက်ခု၊ ထုတ်ဝေသူတစ်ဦးတည်း
ထုတ်ဝေသူအကောင့် user0001 အတည်မပြုရသေးပါ။ ၎င်းတွင် မရှိပါ။ SCM အတည်ပြုခြင်း၊ ဒိုမိန်းနှင့်ချိတ်ဆက်ထားသော အီးမေးလ်မရှိခြင်းနှင့် ယခင်မှတ်တမ်းမရှိပါ။ Gmail လက်ကိုင် tanvisoul9 ကျွန်ုပ်တို့ရှာတွေ့နိုင်သော အခြား npm publisher မှတ်တမ်းတွင် မပေါ်ပါ။
package ခြောက်ခုစလုံးသည် တူညီသော maintainer ကို စာရင်းသွင်းထားပြီး၊ တူညီသော account မှ ထုတ်ဝေထားပြီး၊ တူညီသော share လုပ်ထားသည်။ package.json boilerplate။ မရှိပါ။ repositoryမရှိ homepageမရှိ, description တစ်ကြောင်းထက် ပိုရှည်သည်။
နာမည်ပေးနည်းဗျူဟာက စိတ်ဝင်စားစရာကောင်းတယ်။ ဂန္ထဝင် dependency-confusion ဒါမှမဟုတ် typosquat campaign နဲ့မတူဘဲ၊ ဒီနာမည်တွေထဲက ဘယ်နာမည်မှ upstream library တစ်ခုကို ပစ်မှတ်မထားဘူး။ အဲဒီအစား၊ သူတို့ကို တကယ့် library ထဲကို ပျောက်ကွယ်သွားအောင် ချိန်ညှိထားတယ်။ package.json or npm ls output ကို။
| အထုပ် | ပထမဦးစွာ Published | နောက်ဆုံးရဗားရှင်း | ဗားရှင်း | Cluster မှာ အခန်းကဏ္ဍ |
|---|---|---|---|---|
| ဗဟိုလော့ဂါ | 2026-04-01 12:46 UTC | 1.0.9 | ၁၀၊ ၁.၀.၀ မှ ၁.၀.၉ အထိ | Cluster ရဲ့ “logging utility” အဖုံး၊ အစောဆုံးထုတ်ဝေမှု |
| dom-utils-lite | 2026-04-14 07:36 UTC | 1.0.3 | 3 | အထွေထွေ DOM-helper အဖုံး |
| node-fetch-lite | 2026-04-19 10:22 UTC | 1.0.2 | 3 | node-fetch မိသားစုကို တုပထားသည် |
| ချိတ်ဆက်ကိရိယာ-အေးဂျင့် | 2026-04-25 05:12 UTC | 1.0.0 | 1 | ယေဘုယျအမည် "အေးဂျင့်" |
| node-gyp-runtime | 2026-04-25 05:17 UTC | 1.0.0 | 1 | native-module build tooling ကိုတုပခြင်း |
| node-env-resolve | 2026-04-25 05:21 UTC | 1.0.9 | ၁၀၊ ၁.၀.၀ မှ ၁.၀.၉ အထိ | တက်ကြွသော အစက်ချကိရိယာ၊ အပြည့်အဝ ထည့်သွင်းခြင်း |
နာမည်များ centralogger, node-fetch-liteနှင့် node-gyp-runtime code review မှာ အငြင်းပွားဖွယ်ရာမရှိအောင် ဒီဇိုင်းထုတ်ထားပါတယ်။ ပရောဂျက်ရဲ့ dependency tree မှာ ရှိပြီးသားအရာတွေနဲ့ တူပါတယ်။
အသစ်၊ အတည်မပြုရသေးသော publisher နှင့် ပျောက်ဆုံးနေသော repository link များနှင့် ပေါင်းစပ်လိုက်သောအခါ၊ ၎င်းတို့သည် မှတ်မိနိုင်သော ပုံစံတစ်ခုကို ဖွဲ့စည်းသည်- registry ထဲသို့ low-friction အမည်များကို ထည့်သွင်းပြီးနောက် အရေးကြီးသော တစ်ခုကို လျင်မြန်စွာ ပြန်လည်လုပ်ဆောင်သည့် သရုပ်ဆောင်တစ်ဦး။ ဤကိစ္စတွင်၊ node-env-resolve ရှစ်ရက်အတွင်း ဗားရှင်းဆယ်ခု ရရှိခဲ့သည်။
Windows Dev Box မှာ ဘာတွေရောက်လဲ။
အန္တရာယ်ရှိတဲ့ ကွင်းဆက်ပေါ်မှာ node-env-resolve:1.0.8 npm RAT အတွက် တိုတိုတုတ်တုတ်၊ တိုက်ရိုက်ဖြစ်ပြီး ထူးခြားစွာ အင်္ဂါရပ်များစွာပါရှိသည်။
တပ်ဆင်ပြီးနောက်- တည်တံ့မှုနှင့် ခွဲထုတ်ထားသော အေးဂျင့်
package.json တစ်ခုတည်းသော install hook ကိုကြေငြာသည်-
{ "scripts": { "postinstall": "node postinstall.js" } }postinstall.js အရာသုံးခုကို အစီအစဉ်အတိုင်း လုပ်ဆောင်သည်။
ပထမဦးစွာ၊ ၎င်းသည် npm tree အပြင်ဘက်တွင် installation directory တစ်ခုကို အဆင့်သတ်မှတ်သည်။ script ၏ runtime တွင် path ကို အောက်ပါအတိုင်း တွက်ချက်သည်။ INSTALL_DIRထို့နောက် ၎င်းသည် အတွင်းပိုင်းတစ်ခုကို လုပ်ဆောင်သည် execSync('npm install --production --silent ...') ၎င်းအတွင်း၌ implant ၏ runtime dependencies များကို ဆွဲထုတ်ရန်။ ၎င်းသည် agent ကို manual တစ်နေရာရာတွင် disk ပေါ်တွင် ထားရှိသည် node_modules audit မှာ ရှာမတွေ့ပါဘူး။
ဒုတိယအချက်အနေနဲ့ VBS launcher တစ်ခုကို ရေးသားပြီး boot persistence အတွက် မှတ်ပုံတင်ပေးပါတယ်။
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run \ /v ${AGENT_NAME} \ /t REG_SZ \ /d "wscript.exe \"${vbsPath}\"" /fwscript.exe Windows Script Host သည် လည်ပတ်သော လက်မှတ်ထိုးထားသော Microsoft binary တစ်ခုဖြစ်ပြီး .vbs console window မပါတဲ့ files တွေပါ။ အဲဒါက pre ပါ။cisautorun stubs တွေအတွက် ဘာကြောင့် အသုံးများရလဲဆိုတာ ကြည့်ပါ။
တိုက်ဆိုင်မှုလည်းရှိပါတယ် reg delete အတွင်းလမ်းကြောင်း src/index.js၊ ၎င်းသည် implant ကို အော်ပရေတာ၏ အမိန့်ပေးချက်အရ သန့်ရှင်းစွာ ဖယ်ရှားနိုင်ရန် ဒီဇိုင်းထုတ်ထားကြောင်း အကြံပြုထားသည်။
တတိယအချက်အနေနဲ့၊ ၎င်းသည် သီးခြား child process တစ်ခုကို ဖန်တီးပေးသည်-
spawn(node, [path.join(INSTALL_DIR, 'src/index.js')], { detached: true, env: { ...process.env, SERVER_URL } })အသေးစိတ်အချက်အလက်နှစ်ခုက ဒီမှာ အရေးကြီးပါတယ်။
SERVER_URL ပတ်ဝန်းကျင်မှ ဖတ်သည်။ ရလဒ်အနေဖြင့် C2 endpoint ကို ဖြန့်ကျက်မှုတစ်ခုချင်းစီအလိုက် ပြင်ဆင်သတ်မှတ်နိုင်ပြီး package ထဲသို့ ထည့်သွင်းထားခြင်းမရှိပါ။ ထိုသေးငယ်သော်လည်း ရည်ရွယ်ချက်ရှိရှိ ရွေးချယ်မှုသည် static-IOC sweeps အများစုကို အနိုင်ယူသည်။
ထို့အပြင်၊ မွေးဖွားလာသောကလေးသည် မိဘပတ်ဝန်းကျင်အပြည့်အဝကို အမွေဆက်ခံသည်။ ထို့ကြောင့် မည်သည့် NPM_TOKEN, AWS_*, GITHUB_TOKENသို့မဟုတ် install လုပ်ချိန်တွင် developer shell တွင်ရှိသော SSH-agent socket သည် အချိန်ကြာလာသည်နှင့်အမျှ agent ၏ memory ထဲသို့ ဝင်ရောက်သွားသည်။
ကိုယ်စားလှယ်က ဘာတွေပို့ပေးလဲ
ထုပ်ပိုးထားသော src/ သစ်ပင်တွင် မော်ဂျူးသုံးခုပါဝင်ပြီး အမည်များကသာ ဇာတ်လမ်းကို ပြောပြသည်- audioCapture.js, browserHistory.jsနှင့် systemInfo.js.
အဆင့်သတ်မှတ်ထားသည့်ကာလအတွင်း ဖြေရှင်းထားသော runtime dependency list npm install, ၎င်းတို့ကို အတည်ပြုသည်။
ဤချဉ်းကပ်မှုသည် ဖရိုဖရဲဖြစ်ရပ်တစ်ခုကို ထိန်းချုပ်ထားသော တုံ့ပြန်မှုအဖြစ်သို့ ပြောင်းလဲပေးသည်။
မျက်စိစုံမှိတ် တုံ့ပြန်မည့်အစား အဖွဲ့များသည် လုပ်ဆောင်ချက်များဖြင့် လုပ်ဆောင်ကြသည် ရှင်းလင်းသော ဦးစားပေးမှုနှင့် မြန်ဆန်သော ပြုပြင်မှု.
| မှီခို | ဒီအခြေအနေမှာ ဘာအတွက်လဲ |
|---|---|
| ဖန်သားပြင်ဓာတ်ပုံ-ဒက်စ်တော့ | ပုံမှန် မျက်နှာပြင် ရိုက်ကူးခြင်း |
| @nut-tree-fork/nut-js | မောက်စ်နှင့် ကီးဘုတ် အလိုအလျောက်လုပ်ဆောင်ခြင်း / ထည့်သွင်းမှု သရုပ်ဖော်ခြင်း |
| better-sqlite3 | Chrome၊ Edge နှင့် Firefox History SQLite ဒေတာဘေ့စ်များကို တိုက်ရိုက်ဖတ်ရှုခြင်း |
| adm-zip | စစ်ထုတ်ခြင်းမပြုမီ စုဆောင်းထားသော ရှေးဟောင်းပစ္စည်းများကို စုစည်းခြင်း |
| ထက်သော | ဖန်သားပြင်ဓာတ်ပုံများနှင့် ရုပ်ပုံများ၏ အရွယ်အစားပြောင်းခြင်း/ချုံ့ခြင်း |
| socket.io-client | အမြဲတမ်း နှစ်လမ်းသွား C2 ချန်နယ် |
| node-machine-id | သားကောင်ခြေရာခံရန်အတွက် host တစ်ခုစီအတွက် တည်ငြိမ်သော လက်ဗွေရာ |
systemInfo.js ဖုန်းခေါ်ဆိုမှု os.networkInterfaces() ပထမဆုံး beacon မတိုင်မီ နောက်ထပ် လက်ဗွေရာစစ်ဆေးရန်အတွက်။
အသံဖမ်းယူခြင်းသည် အဘယ်ကြောင့် ထင်ရှားသော အချက်ပြမှုဖြစ်သနည်း
MEW မှာ ကျွန်တော်တို့ triage လုပ်တဲ့ npm RATs အများစုဟာ install လုပ်တဲ့အချိန်မှာ လျှို့ဝှက်ခိုးယူမှု ရပ်တန့်သွားပါတယ်။ သူတို့က ဖတ်ပါတယ် ~/.npmrcဖတ် ~/.aws/credentials, ခြစ်ပါ process.env၊ webhook သို့ POST လုပ်ပြီး ထွက်ပါ။ ၎င်းသည် smash-and-grab စီးပွားရေးပုံစံနှင့် ကိုက်ညီပါသည်။ အထောက်အထားများသည် သက်တမ်းတိုတောင်းပြီး တိုက်ခိုက်သူသည် မြန်မြန်ငွေရှာရန် လိုအပ်ပါသည်။
node-env-resolve ပုံသဏ္ဍာန်အားဖြင့် ကွဲပြားသည်။
persistence ကို reboot လုပ်ပြီး အသက်ရှင်နိုင်အောင် ပြင်ဆင်ထားပါတယ်။ agent ဟာ detach လုပ်ထားပြီး ကြာရှည်ခံပါတယ်။ wscript.exe၎င်းတွင်ပါရှိသော ကိရိယာတန်ဆာပလာများသည် developer ၏စက်ပေါ်တွင် ရှိနေရန်ဖြစ်ပြီး ကိုင်ဆောင်ထွက်ခွာရန် မဟုတ်ပါ- မိုက်ခရိုဖုန်းမှတ်တမ်းတင်စက်၊ ကီးဘုတ်/မောက်စ်ဒရိုက်ဗာ၊ browser-history အပြည့်အစုံထည့်သွင်းခြင်း၊ screen capture နှင့် configure လုပ်နိုင်သော C2 သို့ interactive Socket.IO channel တို့ဖြစ်သည်။
အထူးသဖြင့် မိုက်ခရိုဖုန်းဖမ်းယူခြင်းသည် ဤကမ်ပိန်းတွင် npm malware အများစု မဖြတ်ကျော်သော မျဉ်းကြောင်းဖြစ်သည်။
developer workstation ဆိုတာ developer တွေ stand-up တွေ၊ customer call တွေ၊ design discussion တွေနဲ့ on-call bridge တွေ လုပ်တဲ့ workstation တစ်ခုလည်း ဖြစ်လာပါတယ်။ မိုက်ခရိုဖုန်းကို မှတ်တမ်းတင်တဲ့ implant ဆိုတာ တကယ်တော့ developer ရဲ့ npm token ကို မဟုတ်ဘဲ developer က laptop ရှေ့မှာ ပြောတာကို လိုက်လုပ်တာပါ။
ထိုစွမ်းရည်အစုံအလင်အပြင် မှုန်ဝါးစေခြင်းမရှိခြင်းနှင့် စွဲမက်ဖွယ်ကောင်းသော install-time exfiltration မရှိခြင်းတို့သည် အခွင့်အရေးယူ၍ အထောက်အထားခိုးယူခြင်းထက် ပစ်မှတ်ထားဝင်ရောက်မှုအတွက် ကြိုတင်နေရာချထားခြင်းအဖြစ် ဖတ်ရှုနိုင်သည်။
ကျွန်ုပ်တို့သည် ဤတစ်ခုတည်းမှ အထောက်အထားပြနေခြင်းမဟုတ်ပါ။ ကျွန်ုပ်တို့သည် လုပ်ငန်းလည်ပတ်မှုပရိုဖိုင်ကို မှတ်သားထားပါသည်။

ရှစ်ရက်ကြာ ထပ်ခါတလဲလဲ လုပ်ဆောင်မှု အရှိန်အဟုန် node-env-resolve အချိန်ဇယားမှာ လုပ်ငန်းလည်ပတ်မှုအရ အသိသာဆုံး အသေးစိတ်အချက်အလက်ပါ။
ဒါက မီးနဲ့မေ့ပစ်လို့ရတဲ့ drop မဟုတ်ပါဘူး။ ထုတ်ဝေသူက dropper ကို တက်ကြွစွာ ထိန်းသိမ်းနေပါတယ်၊ အဲဒါက များသောအားဖြင့် အချက်နှစ်ချက်ထဲက တစ်ခုခုကို ဆိုလိုပါတယ်။ ပိုကျယ်ပြန့်တဲ့ ဖြန့်ကျက်မှုမတိုင်ခင် စမ်းသပ်ပတ်ဝန်းကျင်တွေနဲ့ ကိုက်ညီအောင် ချိန်ညှိနေတာလား၊ ဒါမှမဟုတ် install telemetry ပြန်လာဖို့ ရှိနေပြီး တုံ့ပြန်နေတာလား။
ကျန် package ငါးခုမှာ ၎င်းတို့၏ ပထမဆုံးထုတ်ဝေပြီးနောက် churn မလုပ်ရသေးကြောင်း ထင်ရှားစွာ တွေ့ရှိရပါသည်။ ၎င်းသည် supporting cluster အတွက် “stage once, leave named” ပုံစံနှင့် ကိုက်ညီပြီး အင်ဂျင်နီယာအားထုတ်မှုမှာ အလုပ်လုပ်သော package ကို အာရုံစိုက်ပါသည်။
အထောက်အထား- သဲလွန်စငယ်များ၊ ခိုင်မာသောဆုံးဖြတ်ချက်မရှိပါ
ပြည်သူ့ OSINT အချက်ပြမှုများသည် ပါးလွှာသောကြောင့် ကျွန်ုပ်တို့သည် ၎င်းတို့ကို ဆန့်ထုတ်မည်မဟုတ်ပါ။ မြင်သာနိုင်သည်မှာ-
Gmail လက်ကိုင် tanvisoul9 တစ်စိတ်တစ်ပိုင်းအားဖြင့် တောင်အာရှအမည် "Tanvi" နှင့် ဆင်တူသည်။ ၎င်းသည် အားနည်းသော အချက်ပြမှုတစ်ခုဖြစ်သည်။ Gmail လက်ကိုင်များသည် အထောက်အထားမဟုတ်ဘဲ နောက်ကွယ်မှ စာလုံးများသည် soul9 သည် ယေဘုယျအားဖြင့်ဖြစ်သည်။ local-part အီးမေးလ်တစ်ခုတည်းမှ ပထဝီဝင်အနေအထားကို ကောက်ချက်ချခြင်းသည် ဘေးကင်းသောကိစ္စမဟုတ်ပါ။
ကုဒ်စတိုင်က ထူးခြားမှုမရှိပါဘူး။ Node.js: standard စာကြည့်တိုက်ခေါ်ဆိုမှုများကဲ့သို့သော os, child_process, spawnနှင့် reg add။ ရှုပ်ထွေးစေခြင်း၊ string rotation နှင့် anti-debug logic မရှိပါ။ စာရေးသူသည် Windows registry primitives များနှင့် detached-child-process orchestration တို့နှင့် အဆင်ပြေသော်လည်း ၎င်းတို့အသုံးပြုနိုင်သည့် stealth craft ကို လက်လှမ်းမမီပုံရသည်။
မှီခိုမှုများသည် လုံးဝရှားပါးပြီး လူသိများပါသည်။ screenshot-desktop, nut-js, better-sqlite3နှင့် socket.io-clientစိတ်ကြိုက်ပရိုတိုကော၊ အစကနေ လှိမ့်ထုတ်လို့ရတဲ့ C2 stack နဲ့ စာအုပ်ထဲက လွဲပြီး ထူးခြားတဲ့ persistence trick မရှိပါဘူး။ HKCU Run keyဒါက ကိရိယာရေးသားသူမဟုတ်ဘဲ အရည်အချင်းရှိတဲ့ ပေါင်းစပ်သူပါ။
ထုတ်ဝေထားသော ရှေးဟောင်းပစ္စည်းများအတွင်းတွင် အင်္ဂလိပ်မဟုတ်သော စာကြောင်းများ၊ ထည့်သွင်းထားသော မှတ်ချက်များ၊ ဒေသဆိုင်ရာဒေတာ သို့မဟုတ် compiler-output အချိန်ဇုန် လက်ဗွေရာများကို ကျွန်ုပ်တို့ မတွေ့ရှိခဲ့ပါ။
ကျွန်ုပ်တို့ ခြေရာခံပြီးသား ယခင် ကမ်ပိန်းများနှင့် ကုဒ်ထပ်နေခြင်း ရှိမရှိ စစ်ဆေးခဲ့ပြီးဖြစ်သည်၊ အပါအဝင် Shai Hulud, ဇီးကွက်၊ Buildkite နှင့် မကြာသေးမီက heibai / claude-code-best Anthropic-CLI clone မိသားစု။ ကျွန်ုပ်တို့ ဘာမှမတွေ့ပါ- မျှဝေထားသော C2 ပုံစံများ၊ မျှဝေထားသော ဖိုင်အပြင်အဆင်များနှင့် မျှဝေထားသော စကားစုများ မရှိပါ။
ကျွန်ုပ်တို့ မပြောမှာက ဒါဟာ နိုင်ငံတော်ရဲ့ ဇာတ်လိုက်၊ လူသိများတဲ့ အဖွဲ့တစ်ဖွဲ့ ဒါမှမဟုတ် ပထဝီဝင်အနေအထားအရ နိုင်ငံတစ်ခုခုနဲ့ ဆက်နွယ်မှုရှိတယ်လို့ ဆိုပါတယ်။
လုပ်ငန်းလည်ပတ်မှုပရိုဖိုင်သည် developer-workstation စောင့်ကြည့်ခြင်းကို လုပ်ဆောင်နေသော အရည်အချင်းအသင့်အတင့်ရှိသော အဖွဲ့ငယ်တစ်ခုနှင့် ကိုက်ညီပါသည်။ ၎င်းသည် access ကို downstream အသုံးပြုခြင်းကြောင့် ငွေကြေးအရ လှုံ့ဆော်မှုဖြစ်နိုင်သော်လည်း သီးခြားဝယ်သူအတွက် reconnaissance-as-a-service လည်းဖြစ်နိုင်သည်။
သွယ်ဝိုက်သောအချက်နှစ်ချက်က ထောက်ခံသည်- Telegram bot များကဲ့သို့ cluster ကို မြန်မြန်လောင်ကျွမ်းစေမည့် အာရုံဖမ်းစားနိုင်သော exfiltration ယန္တရားများကို ရှောင်ရှားခြင်း၊ oastify.comသို့မဟုတ် canarytokens များနှင့် တမင်သက်သက် ရိုးရှင်းသော package အမည်များသည် တိုတောင်းသော ပမာဏမြင့်မားသော spike ထက် တိတ်ဆိတ်သော long-tail install များကို ဦးစားပေးသည်။
ချိုးဖောက်မှုနှင့် ထောက်လှမ်းမှု၏ ညွှန်ပြချက်များ
| ပက်ကေ့ဂျ်များနှင့် ထုတ်ဝေသူ | |
|---|---|
| လယ်ယာ | အဘိုး |
| npm ထုတ်ဝေသူ | user0001 |
| ထုတ်ဝေသူ အီးမေးလ် | tanvisoul9@gmail.com၊ အတည်မပြုရသေးပါ |
| packages | centralogger၊ 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\Software\Microsoft\Windows\CurrentVersion\Run မှာ ရိုက်ထည့်ပါ။ |
| တည်တံ့မှုတန်ဖိုး | Variable အမည်; wscript.exe ပုံစံ၏ဒေတာ \\ .vbs" |
| ချိတ်တပ်ဆင်ခြင်း | postinstall: package manifest တွင် node postinstall.js ရှိသည် |
| အစားထိုး မော်ဂျူးများ | src/audioCapture.js, src/browserHistory.js, src/systemInfo.js |
| စင်မြင့်လမ်းညွှန် | INSTALL_DIR ကို ပရောဂျက်၏ node_modules အပြင်ဘက်တွင် ဖြေရှင်းထားသည်။ postinstall.js မှ install လုပ်ချိန်တွင် တည်နေရာကို သတ်မှတ်သည်။ |
| Network | |
|---|---|
| ပုံစံ | အဘိုး |
| C2 သယ်ယူပို့ဆောင်ရေး | socket.io-client၊ အမြဲတမ်း နှစ်လမ်းသွား ချန်နယ် |
| C2 အဆုံးမှတ် | SERVER_URL ပတ်ဝန်းကျင် variable မှတစ်ဆင့် agent သို့ ပေးပို့သည်။ ထုတ်ဝေထားသော artefacts များထဲသို့ hard-coded မလုပ်ထားပါ။ |
ထောက်လှမ်းမှတ်စုများ
C2 endpoint မလိုအပ်ဘဲ ဒီမိသားစုကို စည်းမျဉ်းနှစ်ခုနဲ့ ဖမ်းယူထားပါတယ်။
ပထမဦးစွာ၊ အတွင်းပိုင်းလုပ်ဆောင်သော postinstall script များကို flag လုပ်ပါ npm install package ရဲ့ directory အပြင်ဘက်က path ထဲကိုထည့်ပါ။ ဥပမာ- prebuild downloader တစ်ခုခု node-gyp ပြန်လည်တည်ဆောက်သည် သို့မဟုတ် ကြိုတင်တည်ဆောက်ထားသော binary downloader များ၊ package အတွင်း သို့မဟုတ် platform ထဲသို့ ရေးသားသည်-standard အတည်ပြုထားသော hash များပါသည့် cache path များ။ ၎င်းသည် အသစ်ဖန်တီးထားသော folder ထဲသို့ မရေးပါ။ INSTALL_DIR disk ရဲ့ တခြားနေရာတစ်ခုမှာ။
ဒုတိယအချက်အနေနဲ့ ပြဿနာရှိတဲ့ postinstall script တွေကို flag လုပ်ပါ reg add HKCU\…\Run နှင့် wscript.exe launcher အနေနဲ့ပါ။ ဒါက npm package ကနေ တရားဝင်တာမဟုတ်ပါဘူး။ flag လုပ်ပြီး quarantine လုပ်ပါ။
တတိယမြောက် heuristic သည် နောက် sibling package တစ်ခုကို အတည်ပြုခြင်းမပြုမီ ရှာဖွေရန်အတွက် အသုံးဝင်သည်- ၎င်းတွင် မပါရှိသော npm publisher အသစ်တစ်ခု SCM အတည်ပြုချက်၊ Gmail အီးမေးလ်၊ မဟုတ်ပါ repository လယ်ကွင်းနှင့် ရက်အနည်းငယ်အတွင်း တစ်ခုနှင့်တစ်ခု ထုတ်ဝေသော တိုတောင်းပြီး ယေဘုယျကျသော၊ အခြေခံအဆောက်အအုံဆိုင်ရာ ပက်ကေ့ဂျ်အမည်များစွာသည် ကိုယ်တိုင်ကိုယ်ကျ ပြန်လည်သုံးသပ်ရန် လုံလောက်ပါသည်။
npm မှတ်ပုံတင်ဌာနသို့ အစီရင်ခံပြီးပါပြီ။ ထုတ်ဝေသူအကောင့်ကို ဖယ်ရှားလိုက်သောအခါ ဤပို့စ်ကို ကျွန်ုပ်တို့ အပ်ဒိတ်လုပ်ပါမည်။






