
लिनक्स कर्नेल मॉड्यूल जो रूट विशेषाधिकार प्रदान करता है, प्रक्रियाओं/फ़ाइलों को छिपाता है, और स्वयं को अनलोड होने से सुरक्षित रखता है, जो Ubuntu कर्नेल पर शैक्षिक उद्देश्यों के लिए डिज़ाइन किया गया है।
मनोरंजन के लिए लिखा गया एक सरल Linux कर्नेल रूटकिट, बुराई के लिए नहीं।
रूटकिट निम्नलिखित कार्य कर सकता है:
रूटकिट का परीक्षण Linux कर्नेल 2.6.32-38 और 4.4.0-22 पर किया गया है, जैसा कि Ubuntu 10.04.4 LTS और Ubuntu 16.04 LTS में Ubuntu द्वारा प्रदान किया गया है, लेकिन इसे बीच के कर्नेल के साथ-साथ नए कर्नेल पर भी पोर्ट करना बहुत आसान होना चाहिए।
रूटकिट में कुछ आर्किटेक्चर-विशिष्ट कोड है जो केवल x86 और x86-64 आर्किटेक्चर के लिए लागू किया गया है। यह सिस्टम कॉल टेबल खोजने, राइट-प्रोटेक्टेड मेमोरी अक्षम करने और दो फ़ंक्शन हुकिंग विधियों में से एक के लिए कोड है। इसे नए आर्किटेक्चर पर पोर्ट करना बहुत आसान होना चाहिए, और इस कोड का कुछ हिस्सा रूटकिट के कार्य करने के लिए सख्ती से आवश्यक नहीं है, जैसे कि गैर-पोर्टेबल हुकिंग विधि को हटाया जा सकता है, हालाँकि यदि आप फ़ंक्शन हुकिंग के मज़े से चूकना चाहते हैं जो लक्ष्य कर्नेल फ़ंक्शन के मशीन कोड को ओवरराइट करता है ताकि यह हमारे हुक फ़ंक्शन को कॉल करे, तो आपको बहुत उबाऊ व्यक्ति होना चाहिए।
रूटकिट का परीक्षण केवल 1 CPU कोर के साथ किया गया है, इसलिए यह मल्टी-कोर सिस्टम पर सही ढंग से कार्य कर सकता है या नहीं भी कर सकता है। यह संभवतः मल्टी-कोर सिस्टम पर बहुत अच्छी तरह से नहीं चलेगा क्योंकि रूटकिट इस उम्मीद के साथ लिखा गया था कि किसी भी समय केवल 1 थ्रेड ही कुछ निष्पादित कर रहा होगा, इसलिए इसमें लिस्ट डेटा संरचनाओं के आसपास एटॉमिक राइट्स/रीड्स और म्यूटेक्स का अभाव है।
अपनी पसंद का VM तैयार करें।
वांछित Ubuntu इमेज प्राप्त करें और इंस्टॉल करें:
Ubuntu 10.04 के लिए, पैकेज रिपॉज़िटरी पता पैच करें:
sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
रूटकिट बनाने के लिए आवश्यक कंपाइलर, Linux हेडर और अन्य सभी चीज़ें इंस्टॉल करें:
apt-get update
apt-get install build-essential
सुनिश्चित करें कि apt-get upgrade न कहें, क्योंकि यह कर्नेल को अपडेट कर देगा, जबकि रूटकिट का परीक्षण केवल पहले से इंस्टॉल किए गए कर्नेल संस्करण पर किया गया था।
make
रूटकिट लोड करें:
insmod rootkit.ko
रूटकिट का उपयोग करें:
$ ./client --help
Usage: ./client [OPTION]...
Options:
--root-shell Grants you root shell access.
--hide-pid=PID Hides the specified PID.
--unhide-pid=PID Unhides the specified PID.
--hide-file=FILENAME Hides the specified FILENAME globally.
Must be a filename without any path.
--unhide-file=FILENAME Unhides the specified FILENAME.
--hide Hides the rootkit LKM.
--unhide Unhides the rootkit LKM.
--help Print this help message.
--protect Protects the rootkit from rmmod.
--unprotect Disables the rmmod protection.
रूटकिट अनलोड करें:
./client --unhide
./client --unprotect
rmmod rootkit.ko
वास्तव में नहीं, ऑनलाइन Linux रूटकिट लिखने के बारे में कई लेख हैं जिनमें पूरा स्रोत कोड दिया गया है, अनगिनत GitHub रिपॉज़िटरीज़ का उल्लेख नहीं करना चाहिए।
इस रूटकिट को लिखने में निम्नलिखित सामग्रियों का उपयोग किया गया था:
यह प्रोजेक्ट GPLv2 के तहत लाइसेंस प्राप्त है।
| कर्नेल / आर्क | x86 | x86-64 |
|---|
| 2.6.32 | Ubuntu 10.04.4 i386 (694M) [torrent] [iso] | Ubuntu 10.04.4 amd64 (681M) [torrent] [iso] |
| 4.4.0 | Ubuntu 16.04 i386 (647M) [torrent] [iso] | Ubuntu 16.04 amd64 (655M) [torrent] [iso] |