LinkPro Linux Rootkit
हाल ही में अमेज़न वेब सर्विसेज (AWS) के एक वातावरण में हुए एक समझौते से एक पहले से अज्ञात GNU/Linux रूटकिट का पता चला, जिसे LinkPro के रूप में ट्रैक किया गया था। यह बैकडोर eBPF मॉड्यूल के अपने दोहरे उपयोग के लिए उल्लेखनीय है: एक सेट आर्टिफैक्ट्स को छिपाने के लिए, और दूसरा एक गुप्त ट्रिगर के रूप में कार्य करता है - एक 'दस्तक' जो विशेष रूप से तैयार किए गए TCP पैकेट के दिखाई देने के बाद ही रिमोट कमांड कार्यक्षमता को सक्रिय करता है। हमले की श्रृंखला और रूटकिट के तंत्र एक परिष्कृत ऑपरेटर को दर्शाते हैं जो कंटेनर दुरुपयोग, कर्नेल-स्तरीय छिपाव, और लचीले नेटवर्क सक्रियण को मिलाकर पता लगाने और फोरेंसिक सहसंबंध को विफल करता है।
विषयसूची
संक्रमण वेक्टर और प्रारंभिक तैनाती
घुसपैठ की शुरुआत CVE‑2024‑23897 (CVSS 9.8) के प्रति संवेदनशील एक उजागर जेनकिंस इंस्टेंस के शोषण से हुई। इसी आधार से, हमलावरों ने एक दुर्भावनापूर्ण डॉकर इमेज (kvlnt/vv, जिसे बाद में डॉकर हब से हटा दिया गया) को कई Kubernetes क्लस्टर्स में डाल दिया। यह इमेज Kali Linux बेस का इस्तेमाल करती थी और इसमें एक छोटा सा एप्लिकेशन फ़ोल्डर था जिसका उद्देश्य दृढ़ता, दूरस्थ पहुँच और एक चरणबद्ध बैकडोर डाउनलोड स्थापित करना था।
दुर्भावनापूर्ण Docker छवि के अंदर
छवि के ऐप फ़ोल्डर में अलग-अलग भूमिकाओं वाली तीन प्रमुख फ़ाइलें थीं:
start.sh — एक शेल स्क्रिप्ट जो SSH सेवा लॉन्च करती है और अन्य दो घटकों को निष्पादित करती है।
लिंक — एक ओपन-सोर्स प्रोग्राम (vnt) जिसे VPN/प्रॉक्सी क्लाइंट के रूप में कार्य करने के लिए संकलित/पैकेज किया गया है, जो आउटबाउंड को vnt.wherewego[.]top:29872 से जोड़ता है। इससे हमलावर कहीं से भी संक्रमित होस्ट तक पहुँच सकता है और उसके माध्यम से अन्य लक्ष्यों पर पहुँच सकता है।
ऐप - एक रस्ट-आधारित डाउनलोडर (जिसे vGet कहा जाता है) जो एक S3 बकेट से एन्क्रिप्टेड vShell पेलोड प्राप्त करता है, फिर 56.155.98[.]37 पर अपने कमांड-एंड-कंट्रोल (C2) सर्वर के लिए एक वेबसॉकेट लिंक स्थापित करता है।
Kubernetes नोड्स को अतिरिक्त पेलोड वितरित किए गए
दुर्भावनापूर्ण छवि के साथ, ऑपरेटरों ने नोड्स पर दो अन्य घटक भी डाले: एक ड्रॉपर जो एक और vShell बैकडोर स्थापित करता है, और LinkPro, एक Golang-लिखित रूटकिट। LinkPro को दो मोड में से एक में चलने के लिए डिज़ाइन किया गया है - निष्क्रिय (रिवर्स) या सक्रिय (फॉरवर्ड) - इसके कॉन्फ़िगरेशन के आधार पर। निष्क्रिय मोड में, यह एक विशेष नेटवर्क पैकेट द्वारा सक्रिय होने की प्रतीक्षा करता है; सक्रिय मोड में, यह स्वयं C2 से संपर्क शुरू करता है। फॉरवर्ड मोड पाँच ट्रांसपोर्ट प्रोटोकॉल (HTTP, WebSocket, UDP, TCP, DNS) का समर्थन करता है, जबकि रिवर्स मोड संचार को HTTP तक सीमित रखता है।
लिंकप्रो कैसे कायम रहता है
मैलवेयर का समग्र निष्पादन और दृढ़ता व्यवहार एक स्पष्ट अनुक्रम का पालन करता है:
- Hide eBPF मॉड्यूल इंस्टॉल करें। इस मॉड्यूल में Tracepoint और Kretprobe eBPF प्रोग्राम शामिल हैं जिनका उपयोग LinkPro की प्रक्रियाओं और नेटवर्क गतिविधि को छिपाने के लिए किया जाता है।
- यदि Hide eBPF मॉड्यूल स्थापित करने में विफलता होती है - या यदि इसे अक्षम कर दिया गया है - तो /etc/libld.so पर एक साझा लाइब्रेरी स्थापित करें और उस पथ को /etc/ld.so.preload में फ़ॉलबैक छिपाने की प्रणाली के रूप में जोड़ें।
- रिवर्स (निष्क्रिय) ऑपरेशन के लिए, नॉक eBPF मॉड्यूल स्थापित करें। नॉक में एक XDP प्रोग्राम और एक TC प्रोग्राम होता है, इसलिए C2 चैनल केवल एक विशिष्ट 'मैजिक पैकेट' प्राप्त करने के बाद ही सक्रिय होता है।
- systemd सेवा बनाकर स्थायित्व स्थापित करें।
- C2 से प्राप्त आदेशों को निष्पादित करें.
- शटडाउन पर या जब संकेत दिया जाए (SIGHUP, SIGINT, SIGTERM), eBPF मॉड्यूल को अनइंस्टॉल करें और /etc/libld.so प्रीलोड संशोधन को हटा दें/पुनर्स्थापित करें ताकि सिस्टम अपनी पूर्व स्थिति में वापस आ जाए।
जादुई पैकेट और दस्तक सक्रियण तंत्र
लिंकप्रो का निष्क्रिय सक्रियण एक सटीक टीसीपी पैकेट पर निर्भर करता है: कोई भी टीसीपी पैकेट जिसका विंडो आकार 54321 के बराबर हो, उसे 'मैजिक पैकेट' माना जाता है। जब नॉक उस पैकेट का पता लगाता है, तो वह स्रोत आईपी को संग्रहीत करता है और उसे एक घंटे की समाप्ति के साथ टैग करता है। उस स्रोत से आने वाले बाद के टीसीपी पैकेटों की निगरानी की जाती है और, जब उपयुक्त हो, नॉक हेडर को फिर से लिखता है ताकि ऑपरेटर का ट्रैफ़िक लिंकप्रो के लिसनिंग पोर्ट (2333) पर पुनर्निर्देशित हो जाए। आउटबाउंड पैकेट को मूल पोर्ट को नेटवर्क पर वापस प्रस्तुत करने के लिए समायोजित किया जाता है (स्रोत पोर्ट को 2233 पर पुनर्लेखित किया जाता है)। इसका उद्देश्य सीधा लेकिन प्रभावी है: हमलावर को फ्रंट-एंड फ़ायरवॉल द्वारा अनुमत किसी भी पोर्ट के माध्यम से लिंकप्रो तक पहुँचने की अनुमति देना, जबकि बाहरी फ़ायरवॉल लॉग को होस्ट की आंतरिक नेटवर्क गतिविधि से सहसंबंधित करना मुश्किल बनाना।
लिंकप्रो खुद को कैसे छुपाता है
लिंकप्रो दो-स्तरीय छिपाव रणनीति का उपयोग करता है:
कर्नेल/eBPF छिपाना : Hide eBPF मॉड्यूल ट्रेसपॉइंट और क्रेटप्रोब प्रोग्राम इंस्टॉल करता है जो getdents (फ़ाइलें/निर्देशिकाएँ छिपाने के लिए) और sys_bpf (अपने स्वयं के BPF प्रोग्राम छिपाने के लिए) जैसे सिस्टम कॉल को इंटरसेप्ट करते हैं। इस दृष्टिकोण के लिए CONFIG_BPF_KPROBE_OVERRIDE सक्षम कर्नेल की आवश्यकता होती है।
उपयोगकर्ता-स्थान LD_PRELOAD फ़ॉलबैक : यदि कर्नेल क्षमता मौजूद नहीं है, तो LinkPro एक साझा लाइब्रेरी (libld.so) लिखता है और उसका पथ /etc/ld.so.preload में रखता है। चूँकि /etc/ld.so.preload निर्दिष्ट लाइब्रेरी को प्रत्येक गतिशील रूप से लिंक की गई प्रक्रिया (जो /lib/ld-linux.so और glibc का उपयोग करती हैं) में लोड करता है, इसलिए प्रत्यारोपित libld.so libc फ़ंक्शन को जल्दी (glibc के अपने व्यवहार से पहले) हुक कर लेता है और libc कॉल से प्राप्त रिटर्न को बदलकर उन आर्टफ़ैक्ट्स को छिपा देता है जो अन्यथा इसकी उपस्थिति को उजागर कर सकते थे।
रूटकिट क्षमताएं और कमांड सेट
लिंकप्रो इंटरैक्टिव और स्वचालित, दोनों तरह की दूरस्थ क्रियाओं का समर्थन करता है। इसकी कार्यान्वित विशेषताओं में शामिल हैं:
- /bin/bash छद्म टर्मिनल शुरू करना और इंटरैक्टिव शेल सत्र चलाना।
- मनमाने शेल कमांड का निष्पादन करना.
- फ़ाइलों और निर्देशिकाओं की गणना करना और फ़ाइल संचालन करना।
- फ़ाइलों को डाउनलोड करना और डिस्क पर लिखना.
- पिवोटिंग और लिविंग-ऑफ-द-लैंड प्रॉक्सीइंग के लिए SOCKS5 प्रॉक्सी सुरंग की स्थापना करना।
नेटवर्क प्रोटोकॉल समर्थन और C2 व्यवहार
सक्रिय (फॉरवर्ड) मोड में, लिंकप्रो लचीला होता है: यह HTTP, WebSocket, UDP, TCP, या DNS ट्रांसपोर्ट का उपयोग करके संचार कर सकता है। निष्क्रिय (रिवर्स) मोड में, इसका संचार HTTP तक सीमित होता है, लेकिन स्टील्थ का लाभ उठाता है क्योंकि यह केवल तभी सुनता है जब नॉक मैजिक पैकेट एक घंटे की अस्थायी कमांड विंडो खोल देता है।
सफाई और अनइंस्टॉल व्यवहार
यदि प्रक्रिया को समाप्ति संकेत प्राप्त होते हैं, तो LinkPro का उद्देश्य निशानों को हटाना होता है: यह स्थापित eBPF मॉड्यूल को अनइंस्टॉल कर देता है और /etc/libld को हटा देता है या पुनर्स्थापित कर देता है, उसे उसकी पिछली स्थिति में समूहित कर देता है ताकि सिस्टम अपरिवर्तित दिखाई दे। यह जानबूझकर किया गया क्लीनअप रूटीन एक ऑपरेटर को चोरी से बचने और दीर्घकालिक फोरेंसिक फ़ुटप्रिंट को कम करने के बारे में चिंतित होने का संकेत देता है।
परिचालन संदर्भ और विशेषता
इस अभियान में एक उच्च-तीव्रता वाले जेनकिंस एक्सप्लॉइट, दुर्भावनापूर्ण कंटेनर इमेज, कई बैकडोर वेरिएंट और कर्नेल-स्तरीय स्टील्थ का इस्तेमाल किया गया था—यह संयोजन एक प्रेरित और सक्षम ऑपरेटर की ओर इशारा करता है। कोई निश्चित श्रेय सार्वजनिक नहीं किया गया है; हालाँकि, टूलसेट और प्रॉक्सीइंग और लगातार रिमोट एक्सेस के लिए समझौते का स्पष्ट उपयोग आर्थिक रूप से प्रेरित गतिविधि (पिवोटिंग, अतिरिक्त घुसपैठ के लिए प्रॉक्सीइंग, या एक्सेस की पुनर्विक्रय) का स्पष्ट संकेत देता है।
कर्नेल निर्भरता और फ़ॉलबैक व्यवहार
चूँकि LinkPro अपने गुप्त कर्नेल अवरोधन के लिए BPF kprobe ओवरराइड सुविधाओं पर निर्भर करता है, यह कर्नेल-स्तरीय छिपाने की तकनीक केवल तभी लागू करता है जब होस्ट कर्नेल CONFIG_BPF_KPROBE_OVERRIDE को उजागर करता है। जहाँ यह कर्नेल क्षमता अनुपस्थित होती है, वहाँ LinkPro जानबूझकर LD_PRELOAD साझा-लाइब्रेरी पद्धति का उपयोग करके उपयोगकर्ता स्थान में खुद को छिपा लेता है, जिससे विभिन्न वातावरणों में छिपाव सुनिश्चित होता है।
समापन नोट
लिंकप्रो दर्शाता है कि कैसे आधुनिक घुसपैठें कंटेनर कॉम्प्रोमाइज़, स्टेज्ड लोडर, कर्नेल इंस्ट्रूमेंटेशन (eBPF), और चतुर नेटवर्क ट्रिक्स (मैजिक-पैकेट एक्टिवेशन और पोर्ट-रीराइटिंग) को मिलाकर गोपनीयता और लचीलापन बनाए रख सकती हैं। पता लगाने और उपचार के लिए अनधिकृत eBPF प्रोग्राम, /etc/ld.so.preload में अप्रत्याशित प्रविष्टियाँ, असामान्य systemd सेवाएँ, और निर्दिष्ट बुनियादी ढाँचे से नेटवर्क कनेक्शन (फोरेंसिक संकेतकों में IP 56.155.98[.]37, पोर्ट 29872, 2333, 2233, और हटाए गए Docker इमेज नाम kvlnt/vv शामिल हैं) की सावधानीपूर्वक जाँच आवश्यक है।