
प्रोसेस इंजेक्शन से संबंधित नमूनों और सामग्री का संग्रह
लिनक्स के लिए प्रोसेस इंजेक्शन तकनीकों का एक व्यापक संग्रह, जो चल रहे प्रोसेस में कोड इंजेक्ट करने के विभिन्न तरीकों को प्रदर्शित करता है। ये उदाहरण शैक्षिक उद्देश्यों, सुरक्षा अनुसंधान और निम्न-स्तरीय लिनक्स प्रोसेस हेरफेर को समझने के लिए हैं।
प्रोसेस इंजेक्शन एक तकनीक है जिसका उपयोग किसी अन्य प्रोसेस के संदर्भ में कोड चलाने के लिए किया जाता है। हालाँकि यह अक्सर मैलवेयर से जुड़ी होती है, ये तकनीकें निम्नलिखित के लिए भी मूल्यवान हैं:
निर्देशिका: ptrace/
ptrace() सिस्टम कॉल का उपयोग करके प्रोसेस की मेमोरी में सीधे शेलकोड लिखने और निष्पादन को पुनर्निर्देशित करने की क्लासिक प्रोसेस इंजेक्शन विधि।
मुख्य विशेषताएं:
उपयोग का मामला: निम्न-स्तरीय प्रोसेस नियंत्रण और प्रत्यक्ष कोड इंजेक्शन को समझना
निर्देशिका: ld_preload/
किसी भी अन्य लाइब्रेरी से पहले एक दुर्भावनापूर्ण लाइब्रेरी लोड करने के लिए LD_PRELOAD पर्यावरण चर का उपयोग करके फ़ंक्शन इंटरपोज़िशन।
मुख्य विशेषताएं:
उपयोग का मामला: फ़ंक्शन हुकिंग, API निगरानी, व्यवहार संशोधन
निर्देशिका: proc_mem/
प्रोसेस नियंत्रण के लिए ptrace के साथ संयुक्त /proc/<pid>/mem फाइलसिस्टम इंटरफ़ेस के माध्यम से प्रत्यक्ष मेमोरी लेखन।
मुख्य विशेषताएं:
उपयोग का मामला: तेज़ बल्क मेमोरी इंजेक्शन, पारंपरिक ptrace सीमाओं को दरकिनार करना
निर्देशिका: dlopen_inject/
परिष्कृत तकनीक जो dlopen() को कॉल करने के लिए निष्पादन का अपहरण करके चल रहे प्रोसेस को एक साझा लाइब्रेरी लोड करने के लिए बाध्य करती है।
मुख्य विशेषताएं:
उपयोग का मामला: उन्नत स्थायी इंजेक्शन, रनटाइम लाइब्रेरी हेरफेर
# Build ptrace injection
cd ptrace && make all
# Build LD_PRELOAD injection
cd ../ld_preload && make all
# Build /proc/mem injection
cd ../proc_mem && make all
# Build dlopen injection
cd ../dlopen_inject && make all
प्रत्येक तकनीक एक समान पैटर्न का पालन करती है:
पीड़ित प्रक्रिया प्रारंभ करें:
cd <technique>/victim-process
./sample
प्रदर्शित PID नोट करें
इंजेक्शन करें:
cd <technique>
sudo ./<injector> <PID> [additional args]
परिणाम देखें: इंजेक्टेड कोड निष्पादन के लिए पीड़ित प्रक्रिया आउटपुट की जाँच करें
तकनीक-विशिष्ट निर्देशों के लिए अलग-अलग README फ़ाइलें देखें।
Yama ptrace_scope: ptrace को विशेषाधिकार प्राप्त उपयोगकर्ताओं तक सीमित करें
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor: अनिवार्य एक्सेस नियंत्रण
निगरानी: ptrace और प्रोसेस इंजेक्शन प्रयासों को लॉग करने के लिए auditd का उपयोग करें
auditctl -a exit,always -F arch=b64 -S ptrace
रनटाइम अखंडता जाँच: समय-समय पर प्रोसेस मेमोरी सत्यापित करें
कोड साइनिंग: लाइब्रेरी हस्ताक्षर सत्यापित करें
/proc/<pid>/maps की निगरानी करेंlsof, pmap और प्रोसेस मॉनिटरिंग उपयोगिताओं जैसे टूल का उपयोग करेंमहत्वपूर्ण: इन तकनीकों का उपयोग केवल अधिकृत संदर्भों में किया जाना चाहिए:
यह रिपॉजिटरी केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए है। लेखक इन तकनीकों के दुरुपयोग के लिए ज़िम्मेदार नहीं हैं। किसी भी सिस्टम पर परीक्षण करने से पहले हमेशा उचित प्राधिकरण प्राप्त करें।
अनुमति अस्वीकृत त्रुटियाँ:
sudo के साथ चलाएं/proc/sys/kernel/yama/ptrace_scope जाँचेंइंजेक्शन चुपचाप विफल होता है:
सेगमेंटेशन फॉल्ट:
विशिष्ट समस्या निवारण मार्गदर्शन के लिए अलग-अलग तकनीक README देखें।
योगदान का स्वागत है! संभावित परिवर्धन:
man 2 ptrace - प्रोसेस ट्रेसिंग सिस्टम कॉलman 5 proc - /proc फाइलसिस्टम दस्तावेज़ीकरणman 3 dlopen - डायनेमिक लाइब्रेरी लोडिंगविवरण के लिए LICENSE.txt देखें।
यह सॉफ़्टवेयर शैक्षिक उद्देश्यों के लिए "जैसा है" प्रदान किया गया है। जिम्मेदारी और नैतिक रूप से उपयोग करें। किसी भी ऐसे सिस्टम पर सुरक्षा तकनीकों का परीक्षण करने से पहले हमेशा उचित प्राधिकरण प्राप्त करें जिसके आप स्वामी नहीं हैं।
| तकनीक | जटिलता | गुप्तता | स्थायित्व | गति | चल रहे प्रोसेस पर काम करता है |
|---|
| ptrace | मध्यम | निम्न | नहीं | मध्यम | हाँ |
| LD_PRELOAD | निम्न | अत्यंत निम्न | नहीं | तेज़ | नहीं |
| /proc/mem | मध्यम | निम्न | नहीं | तेज़ | हाँ |
| dlopen | उच्च | मध्यम | हाँ | मध्यम | हाँ |