
एक नई “threadless” प्रक्रिया इंजेक्शन तकनीक का POC जो स्थानीय और दूरस्थ प्रक्रियाओं में DLL Notification Callbacks की अवधारणा का उपयोग करके काम करती है।
DllNotificationInjection एक नई "थ्रेडलेस" प्रक्रिया इंजेक्शन तकनीक का POC है जो स्थानीय और दूरस्थ प्रक्रियाओं में DLL नोटिफिकेशन कॉलबैक की अवधारणा का उपयोग करके काम करती है।
अधिक विवरण के साथ एक सहयोगी ब्लॉग पोस्ट यहाँ उपलब्ध है:
https://shorsec.io/blog/dll-notification-injection/
DllNotificationInjection दूरस्थ प्रक्रिया में एक नई LDR_DLL_NOTIFICATION_ENTRY बनाकर काम करता है। यह सूची के शीर्ष के List.Flink और सूची की पहली प्रविष्टि (अब दूसरी) के List.Blink को पैच करके मैन्युअल रूप से इसे दूरस्थ LdrpDllNotificationList में सम्मिलित करता है।
हमारी नई LDR_DLL_NOTIFICATION_ENTRY एक कस्टम ट्रैम्पोलिन शेलकोड (जो @C5pider के ShellcodeTemplate प्रोजेक्ट के साथ बनाया गया है) की ओर इशारा करेगी जो हमारे परिवर्तनों को पुनर्स्थापित करेगा और TpWorkCallback का उपयोग करके एक नए थ्रेड में एक दुर्भावनापूर्ण शेलकोड को निष्पादित करेगा।
दूरस्थ प्रक्रिया में अपनी नई प्रविष्टि को मैन्युअल रूप से पंजीकृत करने के बाद हमें बस दूरस्थ प्रक्रिया द्वारा किसी DLL को लोड या अनलोड करके हमारे DLL नोटिफिकेशन कॉलबैक को ट्रिगर करने की प्रतीक्षा करनी होती है। जाहिर है, यह हर प्रक्रिया में नियमित रूप से नहीं होता है, इसलिए इस इंजेक्शन तकनीक के लिए उपयुक्त उम्मीदवारों को खोजने के लिए पूर्व कार्य आवश्यक है। मेरी संक्षिप्त खोज से ऐसा लगता है कि RuntimeBroker.exe और explorer.exe इसके लिए उपयुक्त उम्मीदवार हैं, हालाँकि मैं आपको अन्य खोजने के लिए प्रोत्साहित करता हूँ।
यह एक POC है। इसे OPSEC सुरक्षित बनाने और AV/EDR उत्पादों से बचने के लिए कुछ संशोधनों की आवश्यकता है। उदाहरण के लिए, मैंने शेलकोड के लिए मेमोरी आवंटित करते समय RWX का उपयोग किया - आलसी मत बनो (मेरी तरह) और उन्हें बदलो। कोई OpenProcess, ReadProcessMemory और WriteProcessMemory को कुछ निम्न-स्तरीय API से बदलना चाह सकता है और इनडायरेक्ट सिस्कॉल या (बेशर्म प्लग) HWSyscalls का उपयोग कर सकता है। शायद शेलकोड को एन्क्रिप्ट करें या अतिरिक्त प्रयास करें और ट्रैम्पोलिन शेलकोड को अपनी आवश्यकताओं के अनुसार संशोधित करें, या कम से कम @C5pider के ShellcodeTemplate प्रोजेक्ट में डिफ़ॉल्ट हैश मान बदलें, जिसका उपयोग ट्रैम्पोलिन शेलकोड बनाने के लिए किया गया था।