PhantomSync: npm Crypto Packages များ ပိုက်ဆံအိတ်ခိုးယူခြင်းကို ဝှက်ပါ

PhantomSync: crypto-developer npm package ရှစ်ခုသည် နှောင့်နှေးပြီး ကိုယ်တိုင်တည်တံ့နေသော dropper ကို ဖုံးကွယ်ထားသည်

TL; DR

npm ထုတ်ဝေသူတစ်ဦးက blockchain နှင့် wallet ဖွံ့ဖြိုးတိုးတက်မှုအတွက် နေ့စဉ်တည်ဆောက်မှုအုတ်မြစ်များကဲ့သို့ အမည်များပါသည့် သေးငယ်သည့် package ရှစ်ခုကို တင်ပို့ခဲ့သည်။ base58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpersနှင့် crypto-validate-lib။ တစ်ခုချင်းစီတွင် အလုပ်လုပ်သော utility တစ်ခုစီ ပါရှိသည်။ သို့သော် ထို utility ပြီးနောက်တွင် module ကို import လုပ်သည်နှင့် လုပ်ဆောင်သော self-invoking code block တစ်ခု ပါရှိသည်။

တင်သွင်းပြီးနောက် ၃၇ စက္ကန့်ခန့်ထို block သည် test fixture အဖြစ် ဟန်ဆောင်ထားသော package အတွင်းရှိ payload ကို decode လုပ်ကာ user ၏ home directory အောက်ရှိ hidden file တစ်ခုသို့ write လုပ်ကာ register လုပ်ကာ restart လုပ်သည်။ login Windows၊ macOS နှင့် Linux တို့တွင် decoded script ကို detached process တစ်ခုအနေဖြင့် launch လုပ်သည်။ ၎င်းနှင့်ပတ်သက်သည့်အရာသည် npm install လုပ်နေစဉ်အတွင်း fire မဖြစ်ပါ။ code ကို import လုပ်ပြီး run ရန်စောင့်ဆိုင်းပြီး ၎င်းသည် install လုပ်ခြင်းထက် ပိုမိုတိတ်ဆိတ်သောအချိန်ဖြစ်သည်။

payload က မှိန်မနေပါဘူး။ ၎င်းကို plain base64 အနေနဲ့ ပို့ဆောင်ပေးတာကြောင့် "test fixture" ကို decode လုပ်ခြင်းအားဖြင့် ဒုတိယအဆင့်ကို အပြည့်အဝ ပြန်လည်ရရှိစေပါတယ်- a crypto-wallet နှင့် လျှို့ဝှက်ချက်များခိုးယူသူ ၎င်းသည် စက်အား အလုပ်မလုပ်ဘဲ ထားရန်စောင့်ဆိုင်းပြီး private key များနှင့် seed phrase များကို စုဆောင်းကာ ရှာဖွေတွေ့ရှိမှုတစ်ခုစီကို hardcoded RSA-4096 key ဖြင့် encrypt လုပ်ကာ public IPFS storage တွင် pin လုပ်ခြင်းဖြင့် exiltrate လုပ်ကာ ၁၂ နာရီတိုင်း ပြန်လည်အချက်ပြသည်။

ကျွန်ုပ်တို့သည် cluster ကို ခြေရာခံသည့်အနေဖြင့် PhantomSyncpackage ရှစ်ခုစလုံးကို ခွဲခြမ်းစိတ်ဖြာချိန်တွင် npm registry တွင် live လွှင့်ထားပြီး အကောင့်တစ်ခုတည်းအောက်တွင် ထုတ်ဝေထားသည်။

ဂေဟစနစ်npm
packagesbase58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, crypto-validate-lib
ပစ်မှတ်ထားသော ပလက်ဖောင်းများWindows၊ macOS၊ Linux
အဓိက အပြုအမူနှောင့်နှေးထားသော၊ import-time dropper ကို test fixture အဖြစ် ဝှက်ထားသည်။ cross-platform persistence ကို install လုပ်သည်
payloadCrypto-wallet နှင့် လျှို့ဝှက်ချက်များကို ခိုးယူသူ၊ RSA-4096 encryption၊ public IPFS pinning မှတစ်ဆင့် exfiltration လုပ်ခြင်း

တိုက်ခိုက်မှုခန္ဓာဗေဒ

အထုပ်တစ်ခုစီကို ပထမဆုံးအကြိမ်ဖတ်ရုံနဲ့ ထူးခြားမှုမရှိပုံပေါ်တယ်။ base58-utils များဥပမာအားဖြင့်၊ ၎င်းသည် zero-dependency Base58 / Bitcoin-WIF helper code ၏ kilobytes အနည်းငယ်ဖြစ်ပြီး အမည်က ကတိပေးထားသည့်အတိုင်းပင်။ သက်ဆိုင်ရာ code သည် ပြီးနောက် မော်ဂျူးရဲ့ module.exportsဖိုင်ရဲ့အပေါ်ဆုံးကို လှန်လှောကြည့်နေတဲ့ စာဖတ်သူက မမြင်နိုင်တဲ့နေရာ- timer နဲ့ သူ့ဟာသူ အချိန်ဇယားဆွဲတဲ့ self-invoking function တစ်ခု။

package source မှ ပြန်လည်တည်ဆောက်ထားသော လုပ်ဆောင်ချက်ကွင်းဆက်သည် ဤကဲ့သို့ လည်ပတ်ပါသည်-

1. Package is required() by the host project
2. A self-invoking function schedules a callback ~37,000 ms later (setTimeout)
3. On fire, the callback reads test/fixtures/keypairs.dat (a base64 blob)
4. It base64-decodes that blob into a Node.js script
5. It writes the script to ~/.cache-db/.node-sync/syncd.js (mode 0o700)
6. It installs login-persistence for that script (see below)
7. It spawns "node syncd.js" as a detached process

ဒီဇိုင်းရွေးချယ်မှုနှစ်ခု ထင်ရှားပါတယ်။

ဝန်တင်ပစ္စည်းသည် စမ်းသပ်ကိရိယာတစ်ခုအဖြစ် ရွေ့လျားသည်။ ဒုတိယအဆင့်ကို ထင်ရှားသော ကုဒ်အဖြစ် ရေးသားထားခြင်း မဟုတ်ပါ။ ၎င်းသည် တွင် နေထိုင်သည်။ စမ်းသပ်/တပ်ဆင်မှုများ/keypairs.dat၊ key pair တွေကို ကိုင်တွယ်နိုင်တယ်လို့ ဆိုထားတဲ့ package တစ်ခုနဲ့ ရောနှောနေတဲ့ base64 ဖိုင်တစ်ခုပါ။ tarball ကို skimp လုပ်နေတဲ့ လူသားတစ်ယောက်အတွက်ကတော့ sample data နဲ့ တူပါတယ်။ appended code မှာတော့ decode လုပ်ပြီး run ရမယ့် script တစ်ခုပါပဲ။ dropper မှာ network address မပါဝင်ပါဘူး - အဲဒါတွေက ဒုတိယအဆင့်မှာ ရှိနေပါတယ် - ဒါပေမယ့် နောက်ထပ် obfuscation မရှိပါဘူး- fixture က base64 ရဲ့ single layer ဖြစ်တာကြောင့် decode လုပ်တဲ့အခါ (base64 -d) အပြည့်အဝ ပြန်လည်ရရှိစေပါသည် syncd.js နှင့် ၎င်း၏ ကွန်ရက်အပြုအမူ။ နောက်အပိုင်းတွင် ထိုပြန်လည်ကောင်းမွန်လာသောအဆင့်သည် အဘယ်အရာလုပ်ဆောင်သည်ကို လမ်းညွှန်ပေးပါမည်။

ဖောက်ခွဲမှုသည် နှောင့်နှေးပြီး တပ်ဆင်ခြင်းနှင့် မဟုတ်ဘဲ တင်သွင်းခြင်းနှင့် ဆက်စပ်နေသည်။ အဘယ်ကြောင့်ဆိုသော် ခလုတ်သည် လိုအပ်သည်() ထို့အပြင် install hook အစား ~၃၇ စက္ကန့် timer တစ်ခုပါရှိသောကြောင့်၊ အပြုအမူသည် ကြည့်ရှုသည့် စစ်ဆေးမှုများကို ရှောင်ကွင်းသွားသည် npm install အဆင့်တစ်ခုဖြစ်ပြီး နှောင့်နှေးမှုသည် သက်တမ်းတိုသော sandbox နှင့် CI လည်ပတ်မှုများစွာထက် ကျော်လွန်ပါသည်။ တစ်စုံတစ်ရာ လုပ်ဆောင်ချိန်တွင် package ကို ဆွဲယူသည့် install သည် ကြာမြင့်စွာ ပြီးဆုံးသွားပါပြီ။

ဒီကုဒ်လုပ်ထားတဲ့ script ကို disk ပေါ်မှာတင်ပြီးတာနဲ့ ~/.cache-db/.node-sync/syncd.js — ပုံမှန် cache directory ကဲ့သို့ ဖတ်ရှုရန် ရွေးချယ်ထားသော လမ်းကြောင်း — dropper သည် အဓိက platform သုံးခုလုံးတွင် reboot များ ရပ်တန့်သွားစေရန် ပြုလုပ်ပေးသည်-

  • Linux ကို: script ကို ပြန်လည်စတင်သည့် cron entry တစ်ခုဖြစ်သည်။ ရှိပြီးသား crontab ကို filter လုပ်ခြင်းဖြင့် entry ကို install လုပ်သည်- grep -v syncd၊ ၎င်းတွင် အမည်တူအတွက် greps လုပ်သည့် plain listing မှ entry အသစ်ကို ချန်ထားခဲ့သည့် ဘေးထွက်ဆိုးကျိုးရှိသည်။
  • Windows ကို: အမည်ပေးထားတဲ့ စီစဉ်ထားတဲ့ အလုပ်တစ်ခု WinNodeSyncမိနစ် ၁၂ ခြားတစ်ကြိမ် ပြန်လည်လည်ပတ်ရန် သတ်မှတ်ထားသည်။
  • macOS- တံဆိပ်ကပ်ထားသော launchd အလုပ် com.apple.syncd၊ ပက်ကေ့ဂျ်အတော်များများတွင် ပါရှိသည် - ၎င်းသည် တရားဝင် Apple စနစ်ဝန်ဆောင်မှုကို တုပသည့် တံဆိပ်တစ်ခုဖြစ်သည်။

ထို့နောက် script ကို သီးခြားလုပ်ငန်းစဉ်တစ်ခုအဖြစ် ချက်ချင်းစတင်သောကြောင့် importing program ထွက်သွားပြီးနောက် ဆက်လက်လုပ်ဆောင်နေပါသည်။

ဒုတိယအဆင့်က ဘာလုပ်လဲ

fixture သည် single base64 layer ဖြစ်သောကြောင့် ဒုတိယအဆင့်သည် သန့်ရှင်းစွာ decode လုပ်နိုင်ပြီး အပြည့်အစုံဖတ်ရှုနိုင်ပါသည်။ package ရှစ်ခုစလုံးတွင် header comment တွင် ၎င်းကိုယ်တိုင်ကို အောက်ပါအတိုင်း ဖော်ပြထားသည်- script တူညီသော မျိုးကွဲသုံးခုအနက် တစ်ခုခုကို ပါရှိသည်။ phantom syncd v3 — topo durmiente (“အိပ်ပျော်နေသော မှဲ့”)။ ၎င်း၏အလုပ်မှာ cryptocurrency-wallet ပစ္စည်းများနှင့် developer လျှို့ဝှက်ချက်များကို ခိုးယူပြီး စက်မှ ပေးပို့ရန်ဖြစ်သည်။ ၎င်းသည် အောက်ပါအဆင့်များဖြင့် လုပ်ဆောင်သည်-

  • 1. စက်က ငြိမ်သွားတဲ့အထိ စောင့်ပါ။ ဘာမှမလုပ်ခင်၊ syncd.js အသုံးပြုသူ မည်မျှကြာအောင် အသုံးမပြုဘဲ နေခဲ့သည်ကို စစ်ဆေးပြီး ကန့်သတ်ချက်ထက် ကျော်လွန်သွားသည် (မိနစ် ၁၅ ခန့်) — xprintidle Linux မှာ၊ အိုင်အိုရက်ဂ် macOS မှာ HIDIdleTime နဲ့ Windows မှာ PowerShell idle-time query တစ်ခုပါ။ ဒါကြောင့် ဘယ်သူမှ keyboard မှာမရှိတဲ့အခါ Harvesting ဖြစ်လေ့ရှိပါတယ်။
  • ၂။ အဝေးထိန်းစနစ်ဖြင့် ထိန်းချုပ်ထားသော အသက်သွင်းခလုတ်ကို ရယူပါ။ script သည် အလုပ်မလုပ်မီ dead-drop မှ config ငယ်တစ်ခုကို ဆွဲယူသည်။ အဓိကရင်းမြစ်မှာ GitHub gist raw URL ဖြစ်သည် (gist.githubusercontent.com/juang55/…/cfg.txt); အဲဒီ config က ဖတ်မှသာ script က အသက်ဝင်ပါတယ် တက်ကြွ = ၁gist မရရှိနိုင်ပါက၊ ၎င်းသည် public gateways များမှတစ်ဆင့် ရယူထားသော hardcoded IPFS content identifiers သုံးခုဆီသို့ ပြန်လည်ရောက်ရှိသွားပါသည်။ gateway.pinata.cloud, ipfs.ioနှင့် cloudflare-ipfs.com။ ၎င်းသည် အော်ပရေတာအား အချက်အလက်အပြီးတွင် လက်/လက်နက်ဖြုတ်ခြင်း ထိန်းချုပ်မှု နှင့် ဖြုတ်ချခြင်းကို ခံနိုင်ရည်ရှိသော fallback ကို ပေးသည်။ (အသေးဆုံး မျိုးကွဲ၊ တင်ပို့သည့်ခုနှစ် crypto-validate-lib, eth-wallet-helpers များနှင့် solana-key-utils, သည် gist layer ကို ဖယ်ရှားပြီး IPFS identifiers များကိုသာ အားကိုးသည်။)
  • ၃။ ပိုက်ဆံအိတ်ပစ္စည်းနှင့် လျှို့ဝှက်ချက်များကို ရိတ်သိမ်းပါ။ script သည် user ၏ home directory ကို လျှောက်သွားသည် — ~/.config/solana, ~/.ethereum/keystore, ~/.foundry, ~/.hardhat, ~ / .sshနှင့် desktop ကို/စာရွက်စာတမ်းများ/downloads ရယူရန္ (စပိန်ဘာသာ ဖိုဒါအမည်များ အပါအဝင်)၊ အပေါင်း ~/.env နှင့် shell rc ဖိုင်များ၊ နှင့် ညီမျှသော AppData Windows မှာ နေရာတွေပါ။ ဒါက Ethereum private keys၊ Bitcoin WIF keys၊ BIP-39 seed phrases၊ Solana keypairs၊ Ethereum keystore JSON၊ SSH keys နဲ့ secret-bearing environment variables တွေကို ပစ်မှတ်ထားပါတယ်။ ပိုကြီးတဲ့ variant (in abi-encode, base58-utils များ, eth-dev) စကားလုံး ၂၀၄၈ လုံးပါ BIP-39 အဘိဓာန်အပြည့်အစုံကို သယ်ဆောင်ထားပြီး regular expression များကို အသုံးပြုသည် ထုတ်ယူ ၎င်းဖတ်သည့် မည်သည့်စာသားမှမဆို တစ်ဦးချင်းသော့များနှင့် အတည်ပြုထားသော seed phrases များ၊ ယင်းအစား သေးငယ်သော မျိုးကွဲနှစ်ခုသည် ဖိုင်များကို keyword ဖြင့် တွဲဖက်ပေးသည် (အစေ့, ကျော်ကြားမှု, ပိုက်ဆံအိတ်, metamask, Phantom, လယ်ဂျာ, trezor, …) ပြီး ဖိုင်တစ်ခုလုံးကို အပ်လုဒ်လုပ်ပါ။
  • ၄။ အများသုံး pinning ဝန်ဆောင်မှုမှတစ်ဆင့် encrypt လုပ်ပြီး exiltrate လုပ်ပါ။ တွေ့ရှိချက်တစ်ခုစီကို အိမ်ရှင်လက်ဗွေရာတစ်ခုနှင့် ပေါင်းစပ်ထားသည် (အသုံးပြုသူအမည်@hostname, platform, timestamp) ပြီး script ထဲမှာ embed လုပ်ထားတဲ့ hardcoded RSA-4096 public key နဲ့ encrypt လုပ်ထားပါတယ်။ ပြီးရင် encrypted record ကို IPFS မှာ pin လုပ်ခြင်းအားဖြင့် upload လုပ်ပါတယ်။ api.pinata.cloud/pinning/pinJSONToIPFShardcoded Pinata API အထောက်အထားများဖြင့် စစ်မှန်ကြောင်း အတည်ပြုထားသည်။ သိမ်းဆည်းရန် bespoke C2 server မရှိပါ။ ခိုးယူခံရသောဒေတာကို public decentralized storage တွင် ရပ်နားထားပြီး operator မှ ရရှိလာသော content hash များကို အသုံးပြု၍ ပြန်လည်ရယူနိုင်သည်။ အပ်လုဒ်များကို random jitter ၏ စက္ကန့်အနည်းငယ်ခြားထားပြီး local log တစ်ခုဖြစ်သည်။ အချိန်တံဆိပ် | သော့အမျိုးအစား | ပြန်ပေးသော hash မှာ ထားရှိထားပါတယ် ~/.cache-db/.node-sync/.sl.
  • ၅။ ၁၂ နာရီကြာ စက်ဝန်းဖြင့် ဆက်လက်လုပ်ဆောင်ပြီး အချက်ပြပါ။ ဒုတိယအဆင့်သည် ၎င်း၏ကိုယ်ပိုင် တည်တံ့ခိုင်မြဲမှုကို ပြန်လည်တည်ဆောက်သည် - Linux ပေါ်ရှိ cron entry တစ်ခု၊ com.apple.syncd macOS မှာ launched job နဲ့ scheduled task လို့ အမည်ပေးထားတဲ့ task တစ်ခုကို WindowsNodeSync Windows တွင် — ၁၂ နာရီတိုင်း ပြန်လည်လည်ပတ်ရန် သတ်မှတ်ထားသည်။ သတိပြုရန်မှာ ၎င်းသည် ကွဲပြားခြားနားတဲ့ dropper က install လုပ်တဲ့ Windows task name ကနေ ပေါ်လာတဲ့ Windows task name (WinNodeSync); နှစ်ခုစလုံးကို ရှာဖွေသင့်ပါတယ်။

timeline ကို

ပက်ကေ့ဂျ် ရှစ်ခုကို ၂၀၂၆-၀၇-၁၃ နှင့် ၂၀၂၆-၀၇-၁၄ ရက်တွင် တစ်ပြိုင်နက်တည်း ထုတ်ဝေခဲ့သည်။ အများအပြားတွင် ဗားရှင်းတစ်ခုထက်ပို၍ ပါရှိသည်။ dropper သည် ဗားရှင်းအားလုံးတွင် အတူတူပင်ဖြစ်ပြီး၊ ၎င်းအထက်ရှိ ကောင်းမွန်သော utility code ၏ အရွယ်အစားပြောင်းလဲသွားသည်နှင့်အမျှ line offsets များသာ ပြောင်းလဲသွားသည်။

နေ့စှဲအဖြစ်အပျက်
2026-07-13cluster ရှိ ပထမဆုံး package များသည် publisher တစ်ဦးအောက်တွင် ပေါ်လာသည် (solana-key-utils, eth-wallet-helpers, crypto-validate-lib နှင့် ကျန်ရှိသော ဗားရှင်းများ၏ အစောပိုင်းဗားရှင်းများ)
2026-07-13 → 07-14ကျန်ရှိနေသော အမည်များနှင့် နောက်ဆက်တွဲဗားရှင်းများကို ထုတ်ပြန်ပြီးဖြစ်သည်။ ပူးတွဲပါ dropper တစ်ခုတည်းကို တစ်ခုချင်းစီတွင် ပို့ဆောင်ပေးပါသည်။
2026-07-14ရှစ်ခုလုံးကို အလံပြပြီး ခွဲခြမ်းစိတ်ဖြာပြီးပါပြီ။ package တိုင်းကို registry မှ ထည့်သွင်းနိုင်ဆဲဖြစ်သည်။

ပေါက်ကွဲမှုတစ်လျှောက်တွင်၊ ထုတ်ဝေသူ၏ မှတ်ပုံတင်ဂုဏ်သတင်းသည် cluster အစတွင် ကြားနေအဆင့်မှ ထောက်လှမ်းမှုများ စုပုံလာသည်နှင့်အမျှ အလွန်အနုတ်လက္ခဏာအဆင့်သို့ ရွေ့လျားသွားခဲ့သည် - ဒီဇိုင်းထုတ်ထားသော အင်္ဂါရပ်မဟုတ်ဘဲ package များကို flag လုပ်ခြင်း၏ မြင်သာထင်ရှားသော ဘေးထွက်ဆိုးကျိုးတစ်ခုဖြစ်သည်။

ညှိနှိုင်းမှု၏ ညွှန်ပြချက်များ

အောက်ဖော်ပြပါ အညွှန်းကိန်းအားလုံးကို ခွဲခြမ်းစိတ်ဖြာချိန်တွင် ရှိနေကြောင်း အတည်ပြုခဲ့ပြီး “ဒုတိယအဆင့်” ဇယားများတွင် ပါဝင်သော အညွှန်းကိန်းများကို ဒီကုဒ်လုပ်ခြင်းဖြင့် အတည်ပြုခဲ့ပါသည်။ စမ်းသပ်/တပ်ဆင်မှုများ/keypairs.dat ပြန်လည်ရရှိသောစာများကို ဖတ်ရှုခြင်းနှင့် syncd.js.

ဖိုင်များနှင့်လမ်းကြောင်းများ

အညွှန်းကိန်းအခန်းက္ပ
~/.cache-db/.node-sync/syncd.jsဒုတိယအဆင့်ကို ကုဒ်လုပ်ထားပြီး၊ မုဒ် 0o700 ဖြင့် ရေးသားထားသည်
~/.cache-db/.node-sync/.slဒေသတွင်း စိမ့်ဝင်မှုမှတ်တမ်း (အချိန်တံဆိပ် | သော့အမျိုးအစား | IPFS ဟက်ရှ်)
test/fixtures/keypairs.datBase64-encoded payload ကို tarball အတွင်းမှာ "test fixture" အဖြစ် အဆင့်သတ်မှတ်ထားပါတယ်

ဒုတိယအဆင့် ကွန်ရက် အခြေခံအဆောက်အအုံ (syncd.js မှ ပြန်လည်ရယူထားသည်)

အညွှန်းကိန်းအခန်းက္ပ
gist.githubusercontent.com/juang55/b298754cb72942b1cdcf02ccd45cde2f/raw/cfg.txtActivation dead-drop; script သည် config ဖတ်မှသာ အလုပ်လုပ်သည် active=1
Qmcqz3w8j4qFQXDAXAxnrdc2oSX3nzBT4NqtpTqL8mr1gaIPFS config fallback (CID)
QmdTXoqVmTHY1i4ZWLdLkoQ9YChp5TXPh5cWXwnAYZt5iFIPFS config fallback (CID)
QmfJkLU5gdCpqbbqEjWYC2anXW9FmuEeSLLeLiHVJKYUjpIPFS config fallback (CID)
gateway.pinata.cloud, ipfs.io, cloudflare-ipfs.comconfig fallback ကိုရယူရန်အသုံးပြုသော IPFS gateways များ
api.pinata.cloud/pinning/pinJSONToIPFSExfiltration endpoint၊ ခိုးယူထားသောဒေတာကို public IPFS တွင် pin လုပ်ထားသည်
Pinata API သော့13c766575b9270a9825d, hardcoded exfiltration အထောက်အထား

ဒုတိယအဆင့် စုဆောင်းမှုပစ်မှတ်များ (syncd.js မှ ပြန်လည်ရယူထားသည်)

အညွှန်းကိန်းအခန်းက္ပ
~/.config/solana, ~/.ethereum/keystore, ~/.foundry, ~/.hardhat, ~/.ssh, ~/.env, shell rc ဖိုင်များသော့များနှင့် လျှို့ဝှက်ချက်များကို ရှာဖွေထားသော လမ်းညွှန်များ/ဖိုင်များ
AppData\Roaming\Solana, AppData\Local\ethereum\keystoreWindows နှင့် ညီမျှသော Windows များကို ရှာဖွေခဲ့သည်
ရိတ်သိမ်းရရှိသော ရှေးဟောင်းပစ္စည်းအမျိုးအစားများETH သီးသန့်သော့များ၊ Bitcoin WIF၊ BIP-39 seed phrases များ၊ Solana သော့တွဲများ၊ Ethereum သော့စတိုး JSON၊ SSH သော့များ၊ secret env vars များ

တည်တံ့ခိုင်မြဲမှုဆိုင်ရာ အရာဝတ္ထုများ

ပလက်ဖောင်းအညွှန်းကိန်း
Linux ကိုcron entry စတင်ခြင်း syncd.jscrontab မှတစ်ဆင့် ထည့်သွင်းပြီး filter လုပ်ထားသည် grep -v syncd
Windows ကိုစီစဉ်ထားသောအလုပ် WinNodeSync (ရေစက်) နှင့် WindowsNodeSync (ဒုတိယအဆင့်)
MacOSlaunchd တံဆိပ် com.apple.syncd
အားလုံးဒုတိယအဆင့်သည် ၁၂ နာရီကြာ စက်ဝန်းတွင် ပြန်လည်တည်ရှိနေသည်

အမူအကျင့်

  • အလိုအလျောက်ခေါ်ဆောင်သည့် လုပ်ဆောင်ချက်ကို ထည့်သွင်းပြီးနောက်တွင် ထည့်သွင်းထားသည် module.exportsအချိန်ဇယားဆွဲခြင်း၊ အချိန်ကုန်ချိန် သတ်မှတ်ခြင်း တင်သွင်းသည့်အခါ ~၃၇,၀၀၀ မီလီစက္ကန့်။
  • ကလေး_လုပ်ငန်းစဉ် spawn(“နုတ်”၊ ) သီးခြားရွေးချယ်မှုအစုံနှင့်အတူ။
  • ဒုတိယအဆင့်တွင် အသုံးမပြုတော့သော လှုပ်ရှားမှု (xprintidle / အိုင်အိုရက်ဂ် HIDIdleTime / PowerShell အားလပ်ချိန်; ~၁၅ မိနစ် ကန့်သတ်ချက်)။
  • တစ်ခုချင်းစီသော RSA-4096 ကုဒ်ဝှက်ခြင်းပြီးနောက် HTTPS POST အများသုံး IPFS pinning API သို့။

ပက်ကေ့ဂျ်များနှင့် ဗားရှင်းများ (npm၊ publisher solbuilder_io)

အထုပ်ဗားရှင်း
base58-utils1.0.0, 1.0.1, 1.0.3
abi-encode1.0.0, 1.0.1, 1.0.2
eth-dev1.0.0, 1.0.1, 1.0.2
arb-kit1.0.0, 1.0.1
layer2-sdk1.0.0, 1.0.1
solana-key-utils1.0.0
eth-wallet-helpers1.0.0
crypto-validate-lib1.0.0

ပုံနှိပ်ထုတ်ဝေသူ

  • solbuilder_io - angel_lopez89[@]proton[.]me၊ အီးမေးလ်ကို အတည်မပြုရသေးပါ၊ အတည်မပြုရသေးသော source-control အကောင့်မရှိပါ၊ ချိတ်ဆက်ထားသော repository မရှိပါ။

ရည်ညွှန်းချက်နှင့် လေ့လာတွေ့ရှိထားသော အပြုအမူ

package ရှစ်ခုဟာ publisher account တစ်ခုနဲ့ payload တစ်ခုကို မျှဝေအသုံးပြုကြပါတယ်။ တစ်ခုချင်းစီဟာ utility code kilobytes အနည်းငယ်ပါဝင်တဲ့ ရိုးရှင်းတဲ့ package တစ်ခုဖြစ်ပြီး dropper တစ်ခုတည်းကို တွဲဖက်အသုံးပြုထားပါတယ်။ ချိတ်ဆက်ထားတဲ့ repository မပါဘဲနဲ့ အတည်မပြုရသေးတဲ့ တစ်ခါသုံးပုံစံ email တစ်ခုအောက်မှာ ထုတ်ဝေထားပါတယ်။ အဲဒီ uniformity၊ shared drop path၊ shared persistence label တွေနဲ့ shared keypairs.dat staging file တွေက cluster ကို ချည်နှောင်ပေးတဲ့ အရာတွေပါ။

အထုပ်တွေက သူတို့ရဲ့ကိုယ်ပိုင်အပြုအမူအကြောင်း ထူးထူးခြားခြား ရိုးသားကြတယ်။ solana-key-utils ပူးတွဲပါ ဘလောက်ကို ရိုးရှင်းသော အသုံးအနှုန်းများဖြင့် ဖော်ပြသည့် inline မှတ်ချက်များကို သယ်ဆောင်ထားသည် - တစ်ခုက ၎င်းကို အညွှန်းတပ်သည် PHANTOM: မမြင်ရသော တည်မြဲမှုနောက်တစ်ယောက် (စပိန်ဘာသာဖြင့်) ဖတ်ရသည်မှာ Ejecutar topo en background, “နောက်ခံမှာ mole ကို run ပါ။” ဒါတွေက ကုဒ်ရဲ့လုပ်ဆောင်ချက်တွေရဲ့ ကိုယ်ပိုင်မှတ်ချက်တွေပါ။ ဒီပို့စ်ထဲက campaign နာမည်ကို ပထမဆုံး label ကနေ fake node “sync daemon” နဲ့အတူ ရယူထားပါတယ်။ထပ်တူပြုထားသည်) တည်တံ့ခိုင်မြဲမှုယန္တရားက တုပသည်။

ကျွန်ုပ်တို့သည် ကုဒ်၏လုပ်ဆောင်ချက်ကိုသာ ထင်ရှားစွာဖော်ပြထားပါသည်။ package များ၏အမည်ပေးခြင်း — crypto၊ wallet နှင့် blockchain-tooling term အားလုံး — သည် developer audience များကို အမည်ဖြင့် အများဆုံးရယူရန် အလားအလာအရှိဆုံးဖြစ်ကြောင်း ညွှန်ပြသည်။ ၎င်းသည် publisher မည်သူ့ကိုမျှ မဆုံးဖြတ်ပါ။ ဒုတိယအဆင့်ကို base64 fixture ကို decode လုပ်ခြင်းဖြင့် အပြည့်အဝပြန်လည်ရယူနိုင်ပြီး ၎င်း၏အပြုအမူကို အထက်တွင်ဖော်ပြထားသည်- ၎င်းသည် wallet key များ၊ seed phrase များနှင့် လျှို့ဝှက်ချက်များကို စုဆောင်းပြီး RSA-encrypted ဖြင့် Pinata မှတစ်ဆင့် public IPFS storage သို့ ထုတ်ယူသည်။ ထင်ရှားသော ဒီဇိုင်းရွေးချယ်မှုတစ်ခုမှာ private C2 server မရှိခြင်း — configuration သည် GitHub gist နှင့် IPFS မှ ရောက်ရှိလာပြီး ခိုးယူခံရသောဒေတာများကို content hash ဖြင့် key လုပ်ထားသော public decentralized storage တွင် ရပ်နားထားပြီး နှစ်ခုစလုံးသည် attacker-controlled host တစ်ခုတည်းထက် ဖမ်းယူရန် ပိုမိုခက်ခဲသည်။ ရေးသားချိန်တွင် ဤ cluster နှင့် ကိုက်ညီသော public reporting များကို ယခင်က မတွေ့ရှိခဲ့ပါ။

ကာကွယ်သူများအတွက် သက်ရောက်မှု၊ လမ်းကြောင်းများနှင့် လမ်းညွှန်ချက်များ

ဘယ်သူတွေ ပေါ်လွင်နေလဲ။ ဒီ package တွေထဲက တစ်ခုကို Node project တစ်ခုမှာထည့်ပြီး import လုပ်တဲ့ code ကို run လုပ်သူတိုင်း။ detonation က install-time မဟုတ်ဘဲ import-time ဖြစ်တဲ့အတွက် package ရှိနေရုံနဲ့ မလုံလောက်ပါဘူး — ဒါပေမယ့် module ကို load လုပ်တဲ့ ပုံမှန်အသုံးပြုမှုတိုင်းက payload ကို ရောက်ပါတယ်။ lure name တွေက Ethereum၊ Solana၊ Arbitrum၊ Layer-2 နဲ့ general wallet/encoding tooling တွေကို အခြေခံထားတဲ့ developer တွေကို ပစ်မှတ်ထားပါတယ် — ဒုတိယအဆင့်မှာ ရှာဖွေနေတဲ့ asset အတိအကျကို ပိုင်ဆိုင်ဖို့ အလားအလာအရှိဆုံး လူဦးရေပါ။ wallet keys၊ seed phrases၊ keystores၊ SSH keys ဒါမှမဟုတ် ပါတဲ့ စက်ပေါ်မှာ ဒီ module တွေထဲက တစ်ခုကို run လုပ်သူတိုင်း .env လျှို့ဝှက်ချက်များသည် ထိုအထောက်အထားများကို အန္တရာယ်ရှိသည်ဟု သတ်မှတ်ပြီး လှည့်ပတ်သတ်မှတ်သင့်သည်။

အတွင်းပိုင်းတွင် ထည့်သွင်းစဉ်းစားထိုက်သော ပုံစံနှစ်ခု။ ပထမဦးစွာ တပ်ဆင်မှုအဖြစ် ဝန်တင်ခြင်း: ဒုတိယအဆင့်ကို ဖြစ်နိုင်ခြေရှိသော အမည်ပေးထားသော ဒေတာဖိုင်တစ်ခုအတွင်း base64 အဖြစ် ပို့ဆောင်ခြင်း (စမ်းသပ်/တပ်ဆင်မှုများ/keypairs.dat) package ရဲ့ မြင်သာတဲ့ရင်းမြစ်ကို သန့်ရှင်းသပ်ရပ်စွာထားရှိပေးပြီး review tool တွေနဲ့ human skims တွေက inert data အဖြစ် မကြာခဏသတ်မှတ်လေ့ရှိတဲ့ ဖိုင်တစ်ခုထဲကို malicious content ကို တွန်းပို့ပါတယ်။ ဒုတိယအနေနဲ့၊ ပလက်ဖောင်းများစွာတွင် တည်တံ့ခိုင်မြဲမှုဖြင့် import-time နှောင့်နှေးသော လုပ်ဆောင်မှုinstall hook မှ trigger ကို ရွှေ့ခြင်း၊ timer ထည့်ခြင်းနှင့် cron၊ အချိန်ဇယားဆွဲထားသော task များနှင့် launchd တို့တွင် ဆက်လက်လုပ်ဆောင်ခြင်းသည် automated registry scanning မှ အနီးကပ်စောင့်ကြည့်သည့် ပိုမိုဆူညံသော install-script နည်းပညာများမှ တမင်တကာ ခြေလှမ်းတစ်ခုဖြစ်သည်။

ကာကွယ်သူများနှင့် ထိန်းသိမ်းသူများအတွက် လမ်းညွှန်ချက်-

  • နောက်ဆက်တွဲကုဒ်ကို ကိုင်တွယ်ဖြေရှင်းပါ module.exports ပြန်လည်သုံးသပ်ခြင်း ဦးစားပေးအနေဖြင့် — dropper logic သည် “အစစ်အမှန်” မော်ဂျူးမျက်နှာပြင်အောက်တွင် မကြာခဏ ဝှက်ထားလေ့ရှိသည်။
  • ဒေတာဖိုင်များသည် အစွမ်းမဲ့သည်ဟု မယူဆပါနှင့်။ အောက်တွင် base64 blob တစ်ခု စမ်းသပ်/ပွဲစဉ်များ/ runtime မှာဖတ်ပြီး decode လုပ်ထားတဲ့ဖိုင်ဟာ executable-adjacent ဖြစ်ပါတယ်။ feed လုပ်တဲ့ fixture files တွေရဲ့ flag runtime reads တွေဖြစ်ပါတယ်။ လုပ်ဆောင်ချက်/အကဲဖြတ်/ရေးပြီးရင်-spawn ကွင်းဆက်။
  • ကျဆင်းမှုလမ်းကြောင်းကို ရှာဖွေပါ ~/.cache-db/.node-sync/ နှင့် persistence units များအတွက် WinNodeSync (စီစဉ်ထားသော အလုပ်) နှင့် com.apple.syncd ဤအမည်များကို ရယူခဲ့သော ဆော့ဖ်ဝဲရေးသားသူ စက်များတွင် (launchd)။
  • cron entries များ၊ အချိန်ဇယားဆွဲထားသော tasks များ သို့မဟုတ် launchd jobs များကို ဖန်တီးသည့် Node လုပ်ငန်းစဉ်များအပေါ် သတိပေးချက် - တရားဝင် libraries များသည် import လုပ်သည့်အခါ ဤသို့ ရှားရှားပါးပါးသာ ပြုလုပ်ကြသည်။
  • lockfiles များနှင့် pinned versions များကို ဦးစားပေးပြီး အထူးသဖြင့် "utility" dependency အသစ်များ၏ ကွာခြားချက်ကို ပြန်လည်သုံးသပ်ပါ။ zero-dependency package များကို ထုတ်ဝေခဲ့သည် ချိတ်ဆက်ထားသော repository မရှိသော အတည်မပြုရသေးသော အကောင့်များမှ။

registry defenders များအတွက်၊ install-hook monitoring သည် လိုအပ်သော်လည်း မလုံလောက်ပါ။ data file အတွင်းတွင် staged လုပ်ထားသော import-time၊ timer-delayed dropper သည် install-time-only check ကို အောင်မြင်မည်ဖြစ်ပြီး၊ persistence step သည် ဖမ်းယူရန် ကျန်ရှိနေသော အကျယ်ဆုံး observable signal ဖြစ်သည်။

sca-tools-software-composition-analysis-tools
သင့်ဆော့ဖ်ဝဲလ်အန္တရာယ်များကို ဦးစားပေး၊ ပြုပြင်ပြီး လုံခြုံအောင်ပြုလုပ်ပါ။
သင့်ရဲ့ အခမဲ့အကောင့်ကို ရယူလိုက်ပါ။
အကြွေးဝယ်ကဒ်မရှိပါ။

သင့်ရဲ့ Software Development နဲ့ Delivery ကို လုံခြုံအောင်ထားပါ

Xygeni ထုတ်ကုန်အစုံနှင့်အတူ