TL; डॉ
१ एप्रिल ते ३ मे २०२६ दरम्यान, एकच एनपीएम पब्लिशर, 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 आणि 1.0.8, यांना झायजेनीच्या मालवेअर अर्ली वॉर्निंग (MEW) प्रणालीद्वारे 2 मे रोजी घातक म्हणून ध्वजांकित करण्यात आले आणि 3 मे रोजी घातक असल्याची पुष्टी झाली.
हे इम्प्लांट जे नाही, त्यासाठीच ते असामान्य आहे: यात कोणतेही टेलिग्राम बॉट्स नाहीत, कोणतेही OAST कॉलबॅक्स नाहीत, अस्पष्टताआणि इन्स्टॉलच्या वेळी AWS क्रेडेंशियल्स मिळवण्याचा कोणताही प्रयत्न केला नाही. त्याऐवजी, postinstall.js HKCU रन की वापरून विंडोज बूट-पर्सिस्टन्स एन्ट्री स्थापित करते, जी लाँच करते wscript.exe एका VBS स्टबच्या विरुद्ध. त्यानंतर ते एक स्वतंत्र Node.js एजंट सुरू करते, जे मायक्रोफोन कॅप्चर, ब्राउझर-हिस्ट्री चोरी, स्क्रीनशॉट घेणे आणि माउस/कीबोर्ड सिम्युलेशनसाठी मॉड्यूल्स बंडल करते.
आम्ही या क्लस्टरला म्हणत आहोत देवटॅपकिट डेव्हलपरच्या मशीनवर चालू ठेवल्यानंतर.
हे लिहित असताना, सर्व सहा पॅकेजेस npm वर उपलब्ध होते. आम्ही त्यांना रजिस्ट्रीच्या गैरवापर चॅनेलवर सादर केले आहे. बचावकर्त्यांनी प्रकाशकाकडून काढून टाकण्याच्या प्रतीक्षेत असलेले कोणतेही इन्स्टॉलेशन्स काढून टाकावेत.
क्लस्टर: सहा पॅकेजेस, एक प्रकाशक
प्रकाशक खाते user0001 सत्यापित नाही. त्याला नाही SCM सत्यापन, डोमेन-बद्ध ईमेल नाही आणि कोणताही पूर्व इतिहास नाही. जीमेल हँडल tanvisoul9 आम्हाला सापडलेल्या इतर कोणत्याही एनपीएम पब्लिशर रेकॉर्डमध्ये आढळत नाही.
सर्व सहा पॅकेजेसचा देखरेखकर्ता एकच आहे, ती एकाच खात्यावरून प्रकाशित झाली आहेत आणि त्यांचे समान... package.json साचेबद्ध. असे काही नाही repositoryनाही homepage, आणि नाही description एका ओळीपेक्षा लांब.
नामांकन धोरण हा यातील मनोरंजक भाग आहे. नेहमीच्या डिपेंडेंसी-कन्फ्युजन किंवा टायपोस्क्वॅट मोहिमेच्या विपरीत, यापैकी कोणतेही नाव विशिष्ट अपस्ट्रीम लायब्ररीला लक्ष्य करत नाही. त्याऐवजी, ती नावे अशा प्रकारे जुळवून घेतली आहेत की ती खऱ्याखुऱ्या व्यवस्थेमध्ये विलीन होऊन जातील. package.json or npm ls आउटपुट
| पॅकेज | प्रथम प्रकाशित | नवीनतम आवृत्ती | आवृत्त्या | क्लस्टरमधील भूमिका |
|---|---|---|---|---|
| सेंट्रलॉगर | 2026-04-01 12:46 UTC | 1.0.9 | १०, १.०.० ते १.०.९ पर्यंत | क्लस्टरच्या “लॉगिंग युटिलिटी”चे मुखपृष्ठ; सर्वात आधीचे प्रकाशन |
| डोम-यूटिल्स-लाइट | 2026-04-14 07:36 UTC | 1.0.3 | 3 | जेनेरिक डीओएम-हेल्पर कव्हर |
| नोड-फेच-लाइट | 2026-04-19 10:22 UTC | 1.0.2 | 3 | नोड-फेच फॅमिलीचे अनुकरण करते |
| कनेक्टर-एजंट | 2026-04-25 05:12 UTC | 1.0.0 | 1 | सामान्य-नाव “एजंट” |
| नोड-जीवायपी-रनटाइम | 2026-04-25 05:17 UTC | 1.0.0 | 1 | नेटिव्ह-मॉड्यूल बिल्ड टूलिंगची नक्कल करते |
| नोड-एनव्ह-रिझॉल्व्ह | 2026-04-25 05:21 UTC | 1.0.9 | १०, १.०.० ते १.०.९ पर्यंत | सक्रिय ड्रॉपर; पूर्ण इम्प्लांट |
जसे नाव centralogger, node-fetch-liteआणि node-gyp-runtime कोड रिव्ह्यूमध्ये ते बिनविरोध वाटावेत अशा प्रकारे त्यांची रचना केलेली असते. त्या गोष्टी प्रोजेक्टच्या डिपेंडन्सी ट्रीमध्ये आधीपासूनच असतील असे वाटते.
एका नवीन, अपुष्ट प्रकाशकासोबत आणि गहाळ असलेल्या रिपॉझिटरी लिंक्ससोबत मिळून, एक ओळखण्याजोगा नमुना तयार होतो: एक कर्ता नोंदणीमध्ये कमी गुंतागुंतीची नावे समाविष्ट करतो, आणि मग महत्त्वाच्या नावावर वेगाने काम करतो. या प्रकरणात, node-env-resolve आठ दिवसांत दहा आवृत्त्या मिळाल्या.
विंडोज डेव्ह बॉक्सवर काय येते
दुर्भावनापूर्ण साखळीवर node-env-resolve:1.0.8 हे संक्षिप्त, थेट आणि npm RAT साठी असामान्यपणे वैशिष्ट्यपूर्ण आहे.
पोस्टइन्स्टॉल: सातत्य आणि विलग एजंट
package.json एकच इन्स्टॉल हुक घोषित करतो:
{ "scripts": { "postinstall": "node postinstall.js" } }postinstall.js क्रमाने तीन गोष्टी करतो.
सर्वप्रथम, ते npm ट्रीच्या बाहेर एक इन्स्टॉलेशन डिरेक्टरी तयार करते. स्क्रिप्टमध्ये रनटाइमवर या पाथची गणना केली जाते. INSTALL_DIRमग ते एक अंतर्गत चालवते execSync('npm install --production --silent ...') इम्प्लांटच्या रनटाइम डिपेंडेंसीज खेचण्यासाठी त्याच्या आत. हे एजंटला डिस्कवर कुठेतरी मॅन्युअली ठेवते. node_modules ऑडिटमध्ये सापडणार नाही.
दुसरे म्हणजे, ते एक VBS लाँचर लिहिते आणि बूट पर्सिस्टन्ससाठी त्याची नोंदणी करते:
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run \ /v ${AGENT_NAME} \ /t REG_SZ \ /d "wscript.exe \"${vbsPath}\"" /fwscript.exe विंडोज स्क्रिप्ट होस्ट हा एक स्वाक्षरी केलेला मायक्रोसॉफ्ट बायनरी आहे जो चालतो. .vbs कन्सोल विंडो नसलेल्या फाइल्स. ते पूर्व आहेcisऑटोरन स्टब्ससाठी ते का पसंत केले जाते याचे कारण.
जुळणारे देखील आहे reg delete आतला मार्ग src/index.jsयावरून असे सूचित होते की, ऑपरेटरच्या आदेशानुसार हे इम्प्लांट स्वच्छपणे काढता येईल अशा प्रकारे डिझाइन केलेले आहे.
तिसरे, ते एक स्वतंत्र चाइल्ड प्रोसेस तयार करते:
spawn(node, [path.join(INSTALL_DIR, 'src/index.js')], { detached: true, env: { ...process.env, SERVER_URL } })येथे दोन तपशील महत्त्वाचे आहेत.
SERVER_URL वातावरणातून वाचले जाते. परिणामी, C2 एंडपॉइंट प्रत्येक डिप्लॉयमेंटनुसार कॉन्फिगर करण्यायोग्य असतो आणि तो पॅकेजमध्येच समाविष्ट नसतो. ही छोटी पण हेतुपुरस्सर केलेली निवड बहुतेक स्टॅटिक-आयओसी स्वीप्सना निष्प्रभ करते.
तसेच, जन्माला आलेले अपत्य पालकाचे संपूर्ण वातावरण वारसा म्हणून घेते. त्यामुळे, कोणतेही NPM_TOKEN, AWS_*, GITHUB_TOKENकिंवा इन्स्टॉलच्या वेळी डेव्हलपर शेलमध्ये असलेले SSH-एजंट सॉकेट दीर्घकाळ टिकणाऱ्या एजंटच्या मेमरीमध्ये जाते.
एजंट सोबत काय पाठवतो
बंडल केलेले src/ ट्रीमध्ये तीन मॉड्यूल समाविष्ट आहेत, ज्यांची नावेच सर्व काही सांगून जातात: audioCapture.js, browserHistory.jsआणि systemInfo.js.
स्टेज्ड दरम्यान निराकरण केलेली रनटाइम डिपेंडेंसी सूची npm installत्यांना दुजोरा देतो.
या दृष्टिकोनामुळे गोंधळलेल्या घटनेचे नियंत्रित प्रतिसादात रूपांतर होते.
अंधपणे प्रतिक्रिया देण्याऐवजी, संघ यानुसार कार्य करतात स्पष्ट प्राधान्यक्रम आणि जलद उपाययोजना.
| अवलंबित्व | या संदर्भात ते कशासाठी आहे |
|---|---|
| स्क्रीनशॉट-डेस्कटॉप | ठराविक कालावधीने स्क्रीन कॅप्चर करणे |
| @नट-ट्री-फोर्क/नट-जेएस | माउस आणि कीबोर्ड ऑटोमेशन / इनपुट सिम्युलेशन |
| उत्तम-एसक्यूलाइट३ | क्रोम, एज आणि फायरफॉक्सच्या हिस्ट्री SQLite डेटाबेसचे थेट वाचन |
| प्रशासक-झिप | गोळा केलेल्या वस्तू बाहेर काढण्यापूर्वी त्यांची जुडी बांधणे |
| तीक्ष्ण | स्क्रीनशॉट आणि इमेज आर्टिफॅक्ट्सचा आकार बदलणे / संकुचित करणे |
| सॉकेट.आयओ-क्लायंट | सतत द्विदिश C2 चॅनेल |
| नोड-मशीन-आयडी | पीडितांचा मागोवा घेण्यासाठी प्रत्येक होस्टचे स्थिर फिंगरप्रिंट |
systemInfo.js कॉल os.networkInterfaces() पहिल्या बीकनच्या आधी अतिरिक्त बोटांचे ठसे घेण्यासाठी.
ऑडिओ कॅप्चर हा सर्वात प्रभावी सिग्नल का आहे
MEW मध्ये आम्ही तपासत असलेले बहुतेक npm RATs इन्स्टॉल-वेळच्या गुप्त माहितीच्या चोरीवर थांबतात. ते वाचतात. ~/.npmrc, वाचा ~/.aws/credentialsखरवडणे process.envवेबहुकला POST पाठवा आणि बाहेर पडा. हे 'स्मॅश-अँड-ग्रॅब' प्रकारच्या आर्थिक मॉडेलमध्ये बसते. क्रेडेन्शियल्सचे आयुष्य कमी असते आणि हल्लेखोराला त्वरीत पैसे कमवायचे असतात.
node-env-resolve आकाराने वेगळे आहे.
रीबूटनंतरही टिकून राहण्यासाठी सातत्य सेट केले आहे. एजंट स्वतंत्रपणे आणि दीर्घकाळ टिकणाऱ्या स्वरूपात चालतो. wscript.exeत्यामध्ये असलेले किट डेव्हलपरच्या मशीनवर ठेवण्यासाठी आहे, उचलून घेऊन जाण्यासाठी नाही: एक मायक्रोफोन रेकॉर्डर, एक कीबोर्ड/माउस ड्रायव्हर, संपूर्ण ब्राउझर-हिस्ट्री इनजेस्ट, स्क्रीन कॅप्चर, आणि कॉन्फिगर करण्यायोग्य C2 कडे परत जाणारा एक इंटरॅक्टिव्ह Socket.IO चॅनल.
विशेषतः मायक्रोफोन कॅप्चर करण्याची जी मर्यादा ही मोहीम ओलांडते, ती बहुतेक एनपीएम मालवेअर ओलांडत नाहीत.
डेव्हलपर वर्कस्टेशन हे, वाढत्या प्रमाणात, असे वर्कस्टेशन बनले आहे जिथे डेव्हलपर्स स्टँड-अप मीटिंग्ज, कस्टमर कॉल्स, डिझाइन चर्चा आणि ऑन-कॉल ब्रिजेस घेतात. मायक्रोफोन रेकॉर्ड करणारा इम्प्लांट खऱ्या अर्थाने डेव्हलपरच्या एनपीएम टोकनच्या मागे नसतो. तो डेव्हलपर लॅपटॉपसमोर काय बोलतो, याच्या मागे असतो.
क्षमतांचा तो संच, तसेच अस्पष्टतेचा अभाव आणि इन्स्टॉलच्या वेळी माहिती बाहेर काढण्याच्या कोणत्याही आकर्षक पद्धतीचा अभाव, यावरून असे दिसते की ही संधीसाधू क्रेडेन्शियल चोरी नसून, लक्ष्यित प्रवेशासाठी केलेली पूर्वतयारी आहे.
आम्ही केवळ यावरूनच श्रेय देण्याचा दावा करत नाही. आम्ही कार्यप्रणालीच्या स्वरूपाची नोंद घेत आहोत.

आठ दिवसांच्या पुनरावृत्तीच्या गतीवर node-env-resolve टाइमलाइनमधील सर्वात कार्यान्वयनदृष्ट्या महत्त्वाचा तपशील आहे.
हा एकदा वापरून विसरून जाण्यासारखा ड्रॉप नाही. प्रकाशक ड्रॉपरची सक्रियपणे देखभाल करत आहे, ज्याचा सामान्यतः दोनपैकी एक अर्थ होतो. एकतर ते व्यापक उपयोजनापूर्वी चाचणी वातावरणांवर ते जुळवून घेत आहेत, किंवा त्यांच्याकडे आधीपासूनच इन्स्टॉलची माहिती येत आहे आणि ते त्यावर प्रतिसाद देत आहेत.
इतर पाच पॅकेजेस त्यांच्या सुरुवातीच्या प्रकाशनानंतर प्रभावीपणे कोणत्याही बदलाशिवाय राहिली. हे सहाय्यक क्लस्टरसाठी "एकदा स्टेज करा, नाव दिलेले पॅकेज तसेच ठेवा" या पद्धतीशी जुळते, तर अभियांत्रिकी प्रयत्न प्रत्यक्ष काम करणाऱ्या पॅकेजवर केंद्रित होतात.
श्रेय: किरकोळ पुरावे, कोणताही ठोस निर्णय नाही
सार्वजनिक OSINT संकेत क्षीण आहेत, आणि आम्ही त्यांना ताणणार नाही. जे निरीक्षण करण्यायोग्य आहे:
जीमेल हँडल tanvisoul9 हे नाव अंशतः दक्षिण आशियाई नाव “तनवी” शी मिळतेजुळते आहे. हा एक कमकुवत संकेत आहे. जीमेल हँडल ही ओळख नसते, आणि शेवटी येणारे soul9 हे सामान्य आहे. केवळ ईमेलच्या लोकल-पार्टवरून भौगोलिक स्थानाचा अंदाज लावणे सुरक्षित नाही.
कोडची शैली सामान्य Node.js आहे: standard लायब्ररी कॉल जसे की os, child_process, spawnआणि reg addयात कोणतीही अस्पष्टता, स्ट्रिंग रोटेशन किंवा अँटी-डीबग लॉजिक नाही. लेखकाला विंडोज रजिस्ट्री प्रिमिटिव्ह्ज आणि डिटॅच्ड-चाइल्ड-प्रोसेस ऑर्केस्ट्रेशनची चांगली माहिती आहे, परंतु ते वापरत असलेल्या अधिक गुप्त कार्यपद्धतींचा ते शोध घेत असल्याचे दिसत नाही.
आवश्यक गोष्टी पूर्णपणे तयार आणि सुप्रसिद्ध आहेत: screenshot-desktop, nut-js, better-sqlite3आणि socket.io-clientयेथे कोणताही विशेष प्रोटोकॉल नाही, नव्याने तयार केलेला C2 स्टॅक नाही, आणि पाठ्यपुस्तकातील माहितीपलीकडे डेटा टिकवून ठेवण्याची कोणतीही नवीन युक्ती नाही. एचकेसीयू रन कीही व्यक्ती एक सक्षम इंटिग्रेटर आहे, टूल निर्माता नाही.
प्रकाशित केलेल्या कलाकृतींमध्ये आम्हाला इंग्रजी व्यतिरिक्त इतर भाषेतील शब्द, अंतर्भूत टिप्पण्या, स्थान डेटा किंवा कंपाइलर-आउटपुट टाइमझोन फिंगरप्रिंट्स आढळले नाहीत.
आम्ही आधीपासूनच ट्रॅक करत असलेल्या मागील मोहिमांसोबत कोड ओव्हरलॅप होत आहे का हे तपासले, ज्यामध्ये खालील गोष्टींचा समावेश आहे: शाई हुलुद, ओलिव्हियन, बिल्डकाईट, आणि अलीकडील हेबाई / claude-code-best अँथ्रोपिक-सीएलआय क्लोन फॅमिली. आम्हाला एकही आढळली नाही: कोणतेही सामायिक C2 पॅटर्न्स, कोणतेही सामायिक फाइल लेआउट्स आणि कोणतेही सामायिक वाक्प्रचार नाहीत.
आम्ही हे म्हणणार नाही की, ही एक शासकीय संस्था आहे, एक ज्ञात गट आहे, किंवा भौगोलिकदृष्ट्या कोणत्याही विशिष्ट देशाशी संबंधित आहे.
कार्यप्रणालीचे स्वरूप हे डेव्हलपर-वर्कस्टेशनवर पाळत ठेवणाऱ्या एका लहान, मध्यम कुशल टीमशी सुसंगत आहे. यामागे मिळालेल्या ॲक्सेसच्या पुढील वापरामुळे आर्थिक हेतू असण्याची शक्यता आहे, पण शक्यतो एका वेगळ्या खरेदीदारासाठी 'रेकनिसन्स-ॲज-अ-सर्व्हिस' (सेवा म्हणून टेहळणी) हा देखील हेतू असू शकतो.
दोन अप्रत्यक्ष मुद्दे त्यास समर्थन देतात: टेलिग्राम बॉट्ससारख्या, क्लस्टरला वेगाने नष्ट करू शकणाऱ्या आणि लक्ष वेधून घेणाऱ्या माहिती बाहेर काढण्याच्या पद्धती टाळणे. oastify.comकिंवा कॅनरीटोकन्स, आणि मुद्दामहून ठेवलेली साधी पॅकेज नावे, जी क्षणिक मोठ्या प्रमाणात होणाऱ्या वाढीऐवजी शांतपणे दीर्घकाळ चालणाऱ्या इन्स्टॉल्सना प्राधान्य देतात.
तडजोड आणि शोधाचे निर्देशक
| पॅकेजेस आणि प्रकाशक | |
|---|---|
| फील्ड | मूल्य |
| एनपीएम प्रकाशक | user0001 |
| प्रकाशकाचा ईमेल | tanvisoul9@gmail.com, अप्रमाणित |
| पॅकेजेस | centrallogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, node-env-resolve |
| घातक असल्याचे सिद्ध झाले | नोड-एनव्ह-रिझॉल्व्ह@1.0.7, नोड-एनव्ह-रिझॉल्व्ह@1.0.8 |
| होस्ट आर्टिफॅक्ट्स | |
|---|---|
| प्रकार | मूल्य |
| सातत्य की | HKCU\सॉफ्टवेअर\मायक्रोसॉफ्ट\विंडोज\करंटव्हर्शन\रन |
| सातत्य मूल्य | व्हेरिएबलचे नाव; 'wscript.exe' या स्वरूपातील डेटा \ .vbs" |
| हुक स्थापित करा | postinstall: पॅकेज मॅनिफेस्टमधील node postinstall.js |
| इम्प्लांट मॉड्यूल | src/audioCapture.js, src/browserHistory.js, src/systemInfo.js |
| स्टेजिंग डिरेक्टरी | INSTALL_DIR प्रोजेक्टच्या node_modules च्या बाहेर निश्चित केले आहे; स्थान इन्स्टॉलच्या वेळी postinstall.js द्वारे सेट केले जाते. |
| नेटवर्क | |
|---|---|
| प्रकार | मूल्य |
| C2 वाहतूक | सॉकेट.आयओ-क्लायंट, कायमस्वरूपी द्विदिशात्मक चॅनल |
| C2 एंडपॉइंट | SERVER_URL एन्व्हायर्नमेंट व्हेरिएबलद्वारे एजंटला पुरवले जाते; प्रकाशित आर्टिफॅक्ट्समध्ये हार्ड-कोड केलेले नाही. |
शोध नोंदी
दोन नियम C2 एंडपॉइंटची गरज न भासता या फॅमिलीला पकडतात.
सर्वप्रथम, अंतर्गत प्रक्रिया पार पाडणाऱ्या पोस्टइन्स्टॉल स्क्रिप्ट्सना फ्लॅग करा. npm install पॅकेजच्या स्वतःच्या डिरेक्टरीच्या बाहेरील मार्गावर. कोणताही वैध प्रीबिल्ड डाउनलोडर, जसे की node-gyp पुनर्बांधणी किंवा पूर्वनिर्मित-बायनरी डाउनलोडर्स, पॅकेजच्या आत किंवा प्लॅटफॉर्ममध्ये लिहितात-standard सत्यापित हॅशसह कॅशे पाथ. ते नव्याने तयार केलेल्यामध्ये लिहित नाही. INSTALL_DIR डिस्कवर इतरत्र.
दुसरे म्हणजे, पोस्टइन्स्टॉल स्क्रिप्ट्सना फ्लॅग करा जे जारी करतात reg add HKCU\…\Run सह wscript.exe लाँचर म्हणून. मुळात, npm पॅकेजमधून आलेले हे कधीही वैध नसते. याला फ्लॅग करा आणि क्वारंटाईन करा.
पुढील सिबलिंग पॅकेजची पुष्टी होण्यापूर्वीच ते ओळखण्यासाठी तिसरी युक्ती उपयुक्त आहे: एक नवीन npm पब्लिशर ज्याला काहीही नाही SCM पडताळणी, एक जीमेल ईमेल, नाही repository क्षेत्र, आणि काही दिवसांच्या अंतराने प्रकाशित झालेली अनेक लहान, सामान्य, पायाभूत सुविधांशी संबंधित वाटणारी पॅकेज नावे, हीच बाब मॅन्युअल पुनरावलोकनाची हमी देण्यासाठी पुरेशी आहे.
एनपीएम रजिस्ट्रीला कळवण्यात आले आहे. पब्लिशरचे खाते काढून टाकल्यावर आम्ही ही पोस्ट अपडेट करू.






