
मॉड्यूल स्टॉम्पिंग और मॉड्यूल ओवरलोडिंग इंजेक्शन तकनीकों का एक अधिक गुप्त रूपांतर जो मेमोरी IoCs को कम करता है। पायथन ctypes में कार्यान्वित।
यह उपकरण 2023 x33fcon वार्ता: "मेमोरी इंजेक्शन तकनीकों की छिपावट में सुधार" [वीडियो] [ब्लॉगपोस्ट] पर प्रस्तुत किया गया है।
ModuleShifting, Module Stomping और Module overloading इंजेक्शन तकनीक का एक अधिक गुप्त रूपांतर है। यह वास्तव में Python ctypes में लागू किया गया है ताकि इसे Python इंटरप्रेटर और Pyramid के माध्यम से पूरी तरह से मेमोरी में निष्पादित किया जा सके, जिससे संकलित लोडरों के उपयोग से बचा जा सके।
यह तकनीक PE या शेलकोड पेलोड के साथ उपयोग की जा सकती है, हालांकि, अधिक गुप्त रूपांतर उन शेलकोड पेलोड के साथ उपयोग किया जाना है जिन्हें अंतिम पेलोड से कार्यात्मक रूप से स्वतंत्र होना आवश्यक है जिसे शेलकोड लोड कर रहा है।
ModuleShifting, जब शेलकोड पेलोड के साथ उपयोग किया जाता है, निम्नलिखित कार्य करता है:

PE पेलोड का उपयोग करते समय, ModuleShifting निम्नलिखित कार्य करेगा:
ModuleShifting का उपयोग गतिशील रूप से मेमोरी आवंटित किए बिना (जैसे VirtualAlloc) पेलोड इंजेक्ट करने के लिए किया जा सकता है और Module Stomping और Module Overloading की तुलना में यह अधिक गुप्त है क्योंकि यह इंजेक्शन तकनीक द्वारा उत्पन्न IoCs की मात्रा को कम करता है।
Module Shifting और Module Stomping के कुछ सार्वजनिक कार्यान्वयनों (एक Bobby Cooke और WithSecure से) के बीच 3 मुख्य अंतर हैं:
Module Shifting और Module Overloading के बीच अंतर निम्नलिखित हैं:
एक कार्यात्मक रूप से स्वतंत्र शेलकोड पेलोड जैसे AceLdr Beacon Stageless शेलकोड पेलोड का उपयोग करके, ModuleShifting गतिशील रूप से मेमोरी आवंटित किए बिना स्थानीय रूप से इंजेक्ट करने में सक्षम है और इस समय Moneta और PE-Sieve स्कैन पर शून्य IoC उत्पन्न करता है। मुझे पता है कि AceLdr स्लीपिंग पेलोड को Hunt-Sleeping-Beacon जैसे अन्य महान उपकरणों से पकड़ा जा सकता है, लेकिन यहाँ ध्यान इंजेक्शन तकनीक पर है, पेलोड पर नहीं। हमारे मामले में इंजेक्शन में अधिक गोपनीयता को सक्षम करने वाली चीज़ शेलकोड की कार्यात्मक स्वतंत्रता है, ताकि लिखे गए दुर्भावनापूर्ण बाइट्स को उनकी मूल सामग्री पर पुनर्स्थापित किया जा सके, प्रभावी रूप से इंजेक्शन के निशान को मिटा दिया जा सके।
सभी जानकारी और सामग्री केवल शैक्षिक उद्देश्यों के लिए प्रदान की गई है। निर्देशों का पालन अपने जोखिम पर करें। न तो लेखक और न ही उसका नियोक्ता किसी व्यक्ति या संगठन से उत्पन्न किसी भी प्रत्यक्ष या परिणामी क्षति या हानि के लिए जिम्मेदार है।
यह काम अविश्वसनीय लोगों जैसे Aleksandra Doniec @hasherezade, Forest Orr और Kyle Avery द्वारा साझा किए गए ज्ञान और उपकरणों के कारण संभव हुआ है। मैंने अपनी पूरी सीखने की प्रक्रिया में Moneta, PeSieve, PE-Bear और AceLdr का भारी उपयोग किया और ये इस विषय की मेरी समझ के लिए महत्वपूर्ण रहे हैं।
ModuleShifting का उपयोग Pyramid और Python इंटरप्रेटर के साथ किया जा सकता है ताकि स्थानीय प्रक्रिया इंजेक्शन को पूरी तरह से मेमोरी में निष्पादित किया जा सके, संकलित लोडरों से बचा जा सके।
git clone https://github.com/naksyn/Pyramid
python3 pyramid.py -u testuser -pass testpass -p 443 -enc chacha20 -passenc superpass -generate -server 192.168.1.2 -setcradle moduleshifting.pyhttps://github.com/naksyn/ModuleShifting/assets/59816245/67fcf888-3385-47da-b828-8a2dafeeb1e2
इस तकनीक को सफलतापूर्वक निष्पादित करने के लिए आपको एक शेलकोड पेलोड का उपयोग करना चाहिए जो मेमोरी के किसी अन्य क्षेत्र में एक अतिरिक्त आत्मनिर्भर पेलोड लोड करने में सक्षम हो। ModuleShifting का परीक्षण AceLdr पेलोड के साथ किया गया है, जो हीप पर Beacon की एक पूरी प्रतिलिपि लोड करने में सक्षम है, जिससे प्रारंभिक शेलकोड के साथ कार्यात्मक निर्भरता टूट जाती है। यह तकनीक किसी भी शेलकोड पेलोड के साथ काम करेगी जिसमें समान क्षमताएं हों। इसलिए प्रारंभिक शेलकोड एक बार निष्पादित होने के बाद बेकार हो जाता है और IoC के रूप में इसे मेमोरी में रखने का कोई कारण नहीं है।
एक होस्टिंग dll जिसमें लक्षित सेक्शन पर शेलकोड के लिए पर्याप्त स्थान हो, उसे भी चुना जाना चाहिए, अन्यथा तकनीक विफल हो जाएगी।
Module Stomping और Module Shifting को एक वैध dll मेमोरी स्पेस पर शेलकोड लिखने की आवश्यकता होती है। ModuleShifting सफाई चरण के बाद इस IoC को समाप्त कर देगा, लेकिन संकेतक वास्तविक समय निरीक्षण क्षमताओं वाले स्कैनर द्वारा पहचाने जा सकते हैं।
