कैसे अछूता मैलवेयर लिनक्स पर काम करता है?


10

मैं समझता हूं कि फिल्म विहीन मैलवेयर की परिभाषा:

दुर्भावनापूर्ण कोड जो फ़ाइल आधारित नहीं है, लेकिन केवल मेमोरी में मौजूद है ... अधिक विशेष रूप से, निहायत दुर्भावनापूर्ण कोड ... स्वयं को किसी सक्रिय जानकारी में जोड़ता है ...

क्या कोई यह बता सकता है कि यह कैसे स्मृति कार्यों में सक्रिय प्रक्रिया के लिए खुद को जोड़ रहा है?

इसके अलावा, ऐसे हमलों के खिलाफ क्या (कर्नेल) सुरक्षा / सख्त उपलब्ध है?


उदाहरण के लिए, किसी नेटवर्क एप्लिकेशन में बफर अतिप्रवाह का दोहन करके, और फिर एप्लिकेशन के अंदर चलने वाले दुर्भावनापूर्ण कोड को डाउनलोड करने के लिए, और नेटवर्क के माध्यम से फैलता है। कोई फाइल शामिल नहीं है। प्रश्न का दूसरा भाग बहुत व्यापक है, यह अनिवार्य रूप से "मैलवेयर के खिलाफ क्या काउंटरमेसर मौजूद है"?
दिनांक

इस सवाल का बेहतर जवाब https://security.stackexchange.com/ पर दिया जा सकता है ।
रूबल

@rubynorails - मुझे केवल लिनक्स के विशिष्ट उत्तरों में दिलचस्पी है। SecuritySE सामान्य है। अगर मैं वहां पर लिनक्स के विशिष्ट उत्तर का अनुरोध करता हूं, तो वे मुझे यहां भेज देंगे।
मार्टिन वेग्टर

जवाबों:


6

फाइललेस मालवेयर किसी ब्राउजर के फ्लैश प्लगइन में या नेटवर्क प्रोटोकॉल में भेद्यता का फायदा उठाकर लक्ष्य पर हमला करता है।

सिस्टम कॉल का उपयोग करके एक लिनक्स प्रक्रिया को संशोधित किया जा सकता है ptrace()। यह सिस्टम कॉल आमतौर पर डिबगर्स द्वारा लक्ष्य प्रक्रिया की आंतरिक स्थिति का निरीक्षण और प्रबंधन करने के लिए उपयोग किया जाता है, और सॉफ्टवेयर विकास में उपयोगी है।

उदाहरण के लिए, आइए PID 1234 के साथ एक प्रक्रिया पर विचार करें। इस प्रक्रिया का पूरा पता स्थान /procस्थान पर छद्म फाइलसिस्टम में देखा जा सकता है /proc/1234/mem। आप इस pseudofile को खोल सकते हैं, फिर इस प्रक्रिया से जुड़ सकते हैं ptrace(); ऐसा करने के बाद, आप उपयोग कर सकते हैं pread()और pwrite()प्रक्रिया स्थान पर लिख सकते हैं ।

char file[64];
pid = 1234;

sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);

waitpid(pid, NULL, 0);
off_t addr = ...; // target process address

pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);

ptrace(PTRACE_DETACH, pid, 0, 0);
close(fd);

( यहां से लिया गया कोड । ptrace शोषण के बारे में एक और कागज यहां उपलब्ध है ।)

इन हमलों के खिलाफ गिरी-उन्मुख रक्षा के बारे में, कर्नेल विक्रेता पैच स्थापित करने और / या विशेष हमले वेक्टर को अक्षम करने का एकमात्र तरीका है। उदाहरण के लिए, ptrace के मामले में आप एक ptrace-block मॉड्यूल को कर्नेल में लोड कर सकते हैं जो उस विशेष सिस्टम कॉल को निष्क्रिय कर देगा; स्पष्ट रूप से यह आपको डीबगिंग के लिए ptrace का उपयोग करने में असमर्थ बनाता है।


उस अन्य उत्तर की तरह , यह भी पुराना है - जैसा कि यहां बताया गया है कि आपको इसके पढ़ने या लिखने के लिए किसी प्रक्रिया को ptrace की आवश्यकता नहीं है /proc/PID/mem। मुझे आशा है कि आप मिथकों और गलत सूचनाओं को समाप्त करने के बजाय अपने उत्तर को अपडेट करने और सुधारने के लिए दूसरे व्यक्ति से कम दुर्दम्य होंगे।
पिज्डलेक्ट

... जो इस मामले में परिणाम हो सकते हैं, क्योंकि लोग गलत तरीके से मान सकते हैं कि एक प्रक्रिया को रोककर वे अन्य प्रक्रियाओं को इसकी स्मृति को पढ़ने से रोक सकते हैं।
पिज्डलेक्ट

@pizdelect लिंक के लिए धन्यवाद। यदि आप सामग्री को दूसरे उत्तर के रूप में जोड़ते हैं तो अच्छा होगा।
dr_

नहीं, मैं एक और उत्तर जोड़ने वाला नहीं हूं। मैं उम्मीद कर रहा हूँ कि आप अपने को ठीक कर लेंगे।
पिज्डलेक्ट ऑक्ट

याद रखें कि आप अन्य लोगों के उत्तरों को भी संपादित कर सकते हैं। आप इस विशेष विषय के बारे में मुझसे बेहतर ज्ञान रखते हैं, इसलिए ऐसा करने के लिए आपका स्वागत है।
dr_

1

जब आप किसी प्रक्रिया को क्रैश करने का प्रबंधन करते हैं, तो आप इस प्रक्रिया को मेमोरी में डेटा डालने का कारण बना सकते हैं। ऐसा करने का एक बहुत लोकप्रिय तरीका बफर ओवरफ्लो का उपयोग करना है ।

यह कैसे काम करता है ? आप जानते हैं, उदाहरण के लिए, एक प्रक्रिया पोर्ट x पर सुन रही है और इसमें एक निश्चित फ़ंक्शन के लिए बफर है, जो कहते हैं, 15 बाइट्स बड़ा है। आप उस फ़ंक्शन को डेटा के 15 बाइट्स + n बाइट्स के साथ कहते हैं (आपका कोड निष्पादित किया जाएगा)। यदि प्रोग्राम डेटा को ठीक से मान्य नहीं करता है, तो यह आपके कोड के साथ आसन्न मेमोरी को ओवरराइट कर देगा और इस प्रकार, कोड मेमोरी में रहता है। यदि आप इस कोड को निष्पादित कर सकते हैं, तो आप सिस्टम के मालिक हैं। सीमाएँ हैं, उदाहरण के लिए, एक प्रक्रिया अपने आवंटित स्थान के बाहर मेमोरी में नहीं लिख सकती है

सभी ओएस 'पर कमजोरियों की एक लंबी सूची है जहां बफर ओवररन पटाखे को लक्ष्य की स्मृति में डेटा इंजेक्ट करने की अनुमति देते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.