गुप्त कोड निष्पादन
Hunt & Hackett विंडोज़ पर कोड निष्पादन को छिपाने वाली आक्रमण तकनीकों का वर्णन करने वाले टूल और तकनीकी लेखों का एक सेट प्रस्तुत करता है। यहाँ आपको इन तकनीकों के काम करने के तरीके, पहचान के लिए सुझाव, और अपने डिटेक्शन कवरेज के परीक्षण के लिए नमूना स्रोत कोड मिलेगा।
सामग्री
यह रिपॉजिटरी आक्रमण तकनीकों के दो वर्गों को कवर करती है जो विंडोज़ आंतरिक तंत्र का व्यापक उपयोग करती हैं, साथ ही उनका पता लगाने के लिए सुझाव और उपकरण प्रदान करती है:
- प्रक्रिया छेड़छाड़ - ऐसी तकनीकों का समूह जो संपूर्ण प्रक्रिया के पैमाने पर कोड को छिपाती हैं।
- कोड इंजेक्शन - ऐसी तरकीबों का संग्रह जो अन्य प्रक्रियाओं के भाग के रूप में कोड निष्पादित करने की अनुमति देती हैं बिना उनकी कार्यक्षमता में हस्तक्षेप किए।
- पता लगाना - कोड निष्पादन को छिपाने की विभिन्न तकनीकों से बचाव के लिए सिफारिशों का संकलन।
परियोजना के मूल मूल्य:
- व्यवस्थित दृष्टिकोण। इस रिपॉजिटरी में केवल टूल या बाहरी संसाधनों के लिंक का संग्रह नहीं है। प्रत्येक विषय को अंतर्निहित अवधारणाओं की विस्तृत व्याख्या मिलती है; प्रत्येक विशिष्ट मामले को सामान्य श्रेणियों में वर्गीकृत किया जाता है।
- प्रूफ-ऑफ-कॉन्सेप्ट टूलिंग। लेखों के साथ C में उदाहरण परियोजनाएँ हैं जो व्यवहार में वर्णित सुविधाओं के उपयोग को प्रदर्शित करती हैं।
- शुरुआती से पेशेवर तक। हमारे द्वारा वर्णित अवधारणाओं को समझने के लिए आपको साइबर सुरक्षा विशेषज्ञ होने की आवश्यकता नहीं है। फिर भी, संबंधित डोमेन के पेशेवरों को भी विवरण और नुकसानों पर ध्यान देने के कारण सामग्री मूल्यवान और शिक्षाप्रद लगनी चाहिए।
कार्यान्वयन
इस परियोजना की एक अंतिम विशिष्ट विशेषता नमूनों में Native API का व्यापक उपयोग है। यहाँ इस विकल्प के पीछे प्रेरणा है:
- कार्यक्षमता। सबसे उन्नत तकनीकों (जैसे प्रक्रिया छेड़छाड़) के लिए आवश्यक कुछ संचालन अन्य API के माध्यम से उजागर नहीं होते हैं।
- नियंत्रण। ऑपरेटिंग सिस्टम के साथ इंटरैक्शन का सबसे निचला स्तर होने के नाते, यह इसके व्यवहार पर सबसे अधिक नियंत्रण प्रदान करता है। Win32 API Native API के शीर्ष पर लागू किया गया है, इसलिए पूर्व के साथ जो कुछ भी संभव है वह बाद के साथ भी संभव है।
- उपलब्धता। ntdll.dll द्वारा उजागर किया गया, Native API सभी प्रक्रियाओं में उपलब्ध है, जिसमें सिस्टम प्रक्रियाएँ भी शामिल हैं।
- संगति। इस API द्वारा उजागर किए गए इंटरफ़ेस उल्लेखनीय रूप से सुसंगत हैं। मूल डिज़ाइन विकल्पों को सीखने के बाद, केवल API के नाम से अधिकांश फ़ंक्शन प्रोटोटाइप की सही भविष्यवाणी करना संभव हो जाता है।
- हुकिंग के प्रति प्रतिरोध। Native API का उपयोग करते समय उपयोगकर्ता-मोड हुक को हटाना या बायपास करना काफी आसान है, जिससे सुरक्षा सॉफ़्टवेयर आंशिक रूप से अंधा हो जाता है। कोई निचले-स्तरीय लाइब्रेरी नहीं हैं जिन्हें पैच किया जा सकता है, इसलिए अनहुकिंग ntdll.dll का दूसरा इंस्टेंस लोड करने और वहाँ कॉल को रीडायरेक्ट करने जितना सरल हो जाता है।
संकलन टिप्पणियाँ
नमूना कोड PHNT परियोजना द्वारा प्रदान किए गए Native API हेडर का उपयोग करता है। इस निर्भरता को प्राप्त करने के लिए git clone --recurse-submodules कमांड का उपयोग करके रिपॉजिटरी को क्लोन करना सुनिश्चित करें। वैकल्पिक रूप से, आप रिपॉजिटरी को क्लोन करने के बाद git submodule update --init का उपयोग कर सकते हैं।
रिपॉजिटरी में शामिल परियोजनाओं को बनाने के लिए, आपको Windows SDK का हालिया संस्करण चाहिए। यदि आप Visual Studio का उपयोग करते हैं, तो कृपया बिल्ट-इन SDK इंस्टॉलेशन देखें। वैकल्पिक रूप से, आप EWDK के स्टैंडअलोन बिल्ड वातावरण का भी उपयोग कर सकते हैं। सभी टूल को एक साथ संकलित करने के लिए, MSBuild AllTools.sln /t:build /p:configuration=Release /p:platform=x64 का उपयोग करें।