
एक Linux eBPF रूटकिट जिसमें बैकडोर, C2, लाइब्रेरी इंजेक्शन, एक्ज़ीक्यूशन हाईजैकिंग, पर्सिस्टेंस और स्टील्थ क्षमताएं हैं।
TripleCross एक Linux eBPF रूटकिट है जो eBPF तकनीक की आक्रामक क्षमताओं को प्रदर्शित करता है।
TripleCross इस क्षेत्र में पिछले इम्प्लांट डिज़ाइनों से प्रेरित है, विशेष रूप से DEFCON 271 में Jeff Dileo, DEFCON 292 में Pat Hogan, DEFCON 29 में Guillaume Fournier और Sylvain Afchain3, और Kris Nóva के Boopkit4 के कार्यों से। हम eBPF तकनीक की आक्रामक क्षमताओं की इन पिछली खोजों द्वारा अग्रणी की गई कुछ तकनीकों का पुन: उपयोग और विस्तार करते हैं।
यह रूटकिट UC3M में मेरे स्नातक थीसिस के लिए बनाया गया था। इसके डिज़ाइन के बारे में अधिक विवरण थीसिस दस्तावेज़ में दिए गए हैं।
यह रूटकिट पूरी तरह से शैक्षिक और अकादमिक उद्देश्यों के लिए है। सॉफ्टवेयर "जैसा है" प्रदान किया गया है और लेखक इसके उपयोग के दौरान होने वाली किसी भी क्षति या दुर्घटना के लिए जिम्मेदार नहीं हैं।
कानून का उल्लंघन करने के लिए TripleCross का उपयोग करने का प्रयास न करें। प्रदान किए गए सॉफ़्टवेयर और जानकारी का दुरुपयोग आपराधिक आरोपों का कारण बन सकता है।
निम्नलिखित चित्र TripleCross और इसके मॉड्यूल की वास्तुकला दिखाता है।
रूटकिट ट्रांसमिशन के लिए उपयोग की जाने वाली रॉ सॉकेट लाइब्रेरी RawTCP_Lib मेरी लेखनी है और इसका अपना रिपॉजिटरी है।
निम्नलिखित तालिका नेविगेशन को आसान बनाने के लिए मुख्य स्रोत कोड फ़ाइलों और निर्देशिकाओं का वर्णन करती है:
| निर्देशिका | कमांड |
|---|---|
| docs | मूल थीसिस दस्तावेज़ |
| src/client | रूटकिट क्लाइंट का स्रोत कोड |
| src/client/lib | RawTCP_Lib साझा लाइब्रेरी |
| src/common | रूटकिट के लिए स्थिरांक और कॉन्फ़िगरेशन। इसमें रूटकिट के eBPF और उपयोगकर्ता स्पेस पक्ष के लिए सामान्य तत्वों का कार्यान्वयन भी शामिल है, जैसे रिंग बफर |
| src/ebpf | रूटकिट द्वारा उपयोग किए जाने वाले eBPF प्रोग्राम का स्रोत कोड |
| src/helpers | रूटकिट के कई मॉड्यूल की कार्यक्षमता का परीक्षण करने के लिए प्रोग्राम शामिल हैं, और क्रमशः निष्पादन अपहरण और लाइब्रेरी इंजेक्शन मॉड्यूल में उपयोग किए जाने वाले दुर्भावनापूर्ण प्रोग्राम और लाइब्रेरी भी शामिल हैं |
| src/libbpf | रूटकिट के साथ एकीकृत libbpf लाइब्रेरी शामिल है |
| src/user | रूटकिट द्वारा उपयोग किए जाने वाले उपयोगकर्ता स्पेस प्रोग्राम का स्रोत कोड |
| src/vmlinux | कर्नेल डेटा संरचनाओं की परिभाषा वाले हेडर (libbpf का उपयोग करते समय यह अनुशंसित विधि है) |
यह शोध परियोजना निम्नलिखित वातावरणों में परीक्षण की गई है:
| वितरण | कर्नेल | GCC | CLANG | GLIBC | |
|---|---|---|---|---|---|
| संस्करण | Ubuntu 21.04 | 5.11.0 | 10.3.0 | 12.0.0 | 2.33 |
हम Ubuntu 21.04 का उपयोग करने की सलाह देते हैं, जो डिफ़ॉल्ट रूप से यहाँ दिखाए गए सॉफ़्टवेयर संस्करणों को शामिल करेगा। अन्यथा, आपको जिन समस्याओं का सामना करना पड़ सकता है, उनमें से कुछ का वर्णन यहाँ किया गया है।
रूटकिट स्रोत कोड दो Makefiles का उपयोग करके संकलित किया जाता है।```
cd src make all
cd client make
निम्नलिखित तालिका प्रत्येक Makefile के उद्देश्य का विस्तार से वर्णन करती है:
| MAKEFILE | COMMAND | DESCRIPTION | RESULTING FILES |
| ------------- | ------------- | ------------- | ------------- |
| src/client/Makefile | make | रूटकिट क्लाइंट का संकलन | src/client/injector |
| src/Makefile | make help | रूटकिट क्षमताओं के परीक्षण के लिए प्रोग्रामों का संकलन, और क्रमशः निष्पादन अपहरण और लाइब्रेरी इंजेक्शन मॉड्यूल के दुर्भावनापूर्ण प्रोग्राम और लाइब्रेरी | src/helpers/simple_timer, src/helpers/simple_open, src/helpers/simple_execve, src/helpers/lib_injection.so, src/helpers/execve_hijack |
| src/Makefile | make kit | libbpf लाइब्रेरी का उपयोग करके रूटकिट का संकलन | src/bin/kit |
| src/Makefile | make tckit | रूटकिट TC एग्रेस प्रोग्राम का संकलन | src/bin/tc.o |
### स्थापना
एक बार रूटकिट फ़ाइलें src/bin/ के अंतर्गत उत्पन्न हो जाने पर, *tc.o* और *kit* प्रोग्रामों को क्रम में लोड किया जाना चाहिए। निम्नलिखित उदाहरण में, रूटकिट बैकडोर नेटवर्क इंटरफ़ेस *enp0s3* पर संचालित होगा:```
// TC egress program
sudo tc qdisc add dev enp0s3 clsact
sudo tc filter add dev enp0s3 egress bpf direct-action obj bin/tc.o sec classifier/egress
// Libbpf-powered rootkit
sudo ./bin/kit -t enp0s3
दो स्क्रिप्ट हैं, packager.sh और deployer.sh, जो रूटकिट को स्वचालित रूप से संकलित और इंस्टॉल करती हैं, जैसा कि कोई हमलावर वास्तविक आक्रमण परिदृश्य में करेगा।
packager.sh को निष्पादित करने पर apps/ निर्देशिका के अंतर्गत सभी रूटकिट फ़ाइलें उत्पन्न होंगी।
deployer.sh को निष्पादित करने पर रूटकिट इंस्टॉल होगा और पर्सिस्टेंस फ़ाइलें बनेंगी।
पर्सिस्टेंस मॉड्यूल के उचित कामकाज के लिए इन स्क्रिप्ट्स को पहले निम्नलिखित पैरामीटर से कॉन्फ़िगर किया जाना चाहिए:
| स्क्रिप्ट | कॉन्स्टेंट | विवरण |
|---|---|---|
| src/helpers/deployer.sh | CRON_PERSIST | रीबूट के बाद निष्पादित करने के लिए क्रोन जॉब |
| src/helpers/deployer.sh | SUDO_PERSIST | पासवर्ड-रहित विशेषाधिकार प्रदान करने के लिए sudo एंट्री |
J. Dileo. Evil eBPF: एक इन-कर्नेल बाइटकोड रनटाइम का व्यावहारिक दुरुपयोग। DEFCON 27. स्लाइड्स ↩
P. Hogan. वास्तविकता को विकृत करना: eBPF का उपयोग करके Linux रूटकिट्स की अगली पीढ़ी का निर्माण और प्रतिकार करना। DEFCON 27. प्रस्तुति ↩
G. Fournier and S. Afchain. eBPF, मुझे लगा हम दोस्त थे! DEFCON 29. स्लाइड्स ↩