
शेलकोड इंजेक्शन तकनीक। C++ हेडर, स्टैंडअलोन रस्ट प्रोग्राम या लाइब्रेरी के रूप में दिया गया है।
यह शेलकोड इंजेक्शन के लिए एक बिल्कुल नई तकनीक है जो AV और EDR को चकमा देने के लिए है। यह तकनीक Module Stomping से प्रेरित है और इसमें कुछ समानताएँ हैं। इस तिथि (23-01-2022) तक hollows-hunter भी इसे नहीं ढूँढ पाता।
इस तकनीक का सबसे बड़ा लाभ यह है कि यह पूरे मॉड्यूल या PE को अधिलेखित नहीं करता, केवल एक फ़ंक्शन को, और लक्ष्य प्रक्रिया अभी भी लक्ष्य मॉड्यूल के किसी भी अन्य फ़ंक्शन का उपयोग कर सकती है।
नुकसान यह है कि यह जंगल में हर फ़ंक्शन के लिए काम नहीं करेगा (लेकिन अधिकांश के लिए काम करेगा), इसका सटीक स्पष्टीकरण मेरे ब्लॉग में है: द गुड, द बैड एंड द स्टॉम्प्ड फंक्शन।
नोट: यह संभव है कि AV इसे फ़्लैग करेगा, यदि हस्ताक्षर msfvenom/metasploit का हस्ताक्षर है तो यह ठीक है! आपको बस शेलकोड बदलने या इसे एन्क्रिप्ट करने की आवश्यकता है।
अपडेट: जाहिरा तौर पर यह पहला उपलब्ध PoC नहीं है और RastaMouse ने C# में एक समान चीज़ पर एक ब्लॉग पोस्ट लिखा है।
आप या तो अपने प्रोग्राम में हेडर को इस तरह शामिल करें:
#include "functionstomping.hpp"
int main() {
// Just get the pid in any way and pass it to the function.
DWORD pid = 3110;
FunctionStomping(pid);
return 0;
}
या रस्ट प्रोग्राम का उपयोग करें:
cd functionstomping
cargo b
functionstomping.exe <pid>
इस प्रोग्राम को चलाने के बाद आपको अनिवार्य रूप से रिमोट प्रोसेस से फ़ंक्शन को कॉल करना होगा! (यदि आपने डिफ़ॉल्ट फ़ंक्शन CreateFile का उपयोग किया है तो आपको इसे रिमोट प्रोसेस से कॉल करना होगा!)।
वर्तमान में, चलाने के लिए शेलकोड सिर्फ कैलकुलेटर खोलने के लिए है, लेकिन आपको बस इतना करना है कि unsigned char shellcode[] को अपने शेलकोड से बदलें। मैंने C++ 17 और VS2019 का उपयोग करके C++ हेडर के साथ प्रोग्राम को संकलित किया, और रस्ट संस्करण 2021 का उपयोग करके रस्ट प्रोग्राम को संकलित किया (आप Cargo.toml में निर्भरताएँ देख सकते हैं)।
मैं किसी भी प्रकार की क्षति के लिए किसी भी तरह से जिम्मेदार नहीं हूँ जो इस परियोजना के कारण आपके कंप्यूटर/प्रोग्राम को होती है। मैं खुशी-खुशी योगदान स्वीकार करता हूँ, एक पुल अनुरोध करें और मैं इसकी समीक्षा करूँगा!