Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
p3-loader — P³-Shellcode Loader एक लोडर है जो एक कोड इंजेक्शन तकनीक को लागू करता है जो प्रोसेस पैरामीटर्स संरचना का उपयोग शेलकोड इंजेक्शन के लिए निष्पादन और स्टेजिंग स्थान के रूप में करता है, बिना सामान्य डिटेक्शन तंत्र को ट्रिगर किए। | Kitploit
उपकरण/GitHubGitHub/orange-cyberdefense/p3-loader
रक्षात्मक उपकरणविशेषाधिकार वृद्धिशोषणशेलकोडपोस्ट-शोषणपेनिट्रेशन टेस्टिंगपेपर और शोधलर्निंग और शिक्षारेड टीमिंग

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
पेलोड डेवलपमेंट
बाइनरी शोषण
GitHuborange-cyberdefense/p3-loader

p3-loader

P³-Shellcode Loader एक लोडर है जो एक कोड इंजेक्शन तकनीक को लागू करता है जो प्रोसेस पैरामीटर्स संरचना का उपयोग शेलकोड इंजेक्शन के लिए निष्पादन और स्टेजिंग स्थान के रूप में करता है, बिना सामान्य डिटेक्शन तंत्र को ट्रिगर किए।

रिपॉजिटरी देखें
20423142 महीने पहलेKitploit द्वारा समीक्षित
साझा करें

P³-शेलकोड लोडर - प्रक्रिया पैरामीटर पॉइज़निंग

लेखक: मैक्स हिर्शबर्गर और ओगुलकैन उगुर


सामग्री

  1. परिचय
  2. विशिष्ट प्रक्रिया इंजेक्शन और इसमें शामिल सिस्टम APIs
  3. आवश्यक विंडोज इंटरनल्स की तकनीकी नींव
    • 3.1 प्रक्रिया निर्माण API और स्टार्टअप पैरामीटर
    • 3.2 प्रक्रिया एनवायरनमेंट ब्लॉक (PEB)
  4. प्रक्रिया पैरामीटर पॉइज़निंग (P³)
    • 4.1 पॉइज़न्ड पैरामीटर के साथ प्रक्रिया शुरू करना
    • 4.2 नई प्रक्रिया में इंजेक्टेड डेटा का पता लगाना
    • 4.3 इंजेक्टेड कोड को निष्पादित करना
    • 4.4 लागू किए गए पेलोड इंजेक्शन
  5. एक स्ट्रिंग में मनमाना शेलकोड पास करना
    • 5.1 शेलकोड जनरेटर द्वारा उपयोग की जाने वाली निचले स्तर की सहायक विधियाँ
    • 5.2 उच्च स्तरीय संचालन का कार्यान्वयन
  6. इस तकनीक द्वारा पहचान से बचने के लाभ
  7. पहचान का दृष्टिकोण
  8. निष्कर्ष
  9. संदर्भ

1. परिचय

P³-शेलकोड लोडर एक लोडर है जो कोड इंजेक्शन तकनीक को लागू करता है जो प्रक्रिया मापदंडों की संरचना (प्रक्रिया पैरामीटर पॉइज़निंग) का उपयोग रिमोट प्रक्रियाओं में शेलकोड इंजेक्शन के लिए निष्पादन और स्टेजिंग स्थान के रूप में करता है, बिना सामान्य पहचान तंत्र को ट्रिगर किए।

एक समान अवधारणा सुरक्षा शोधकर्ता modexp द्वारा वर्णित की गई थी, जिन्होंने प्रदर्शित किया कि CreateProcess-API को पारित किए गए तर्कों का उपयोग इस उद्देश्य के लिए किया जा सकता है [1]।


2. विशिष्ट प्रक्रिया इंजेक्शन और इसमें शामिल सिस्टम APIs

हमलावर अपनी गतिविधियों को कम संदिग्ध दिखाना चाहते हैं। प्रक्रिया इंजेक्शन के साथ, हमलावर एक अलग प्रक्रिया से अपनी गतिविधियाँ करने में सक्षम होते हैं जो अधिक भरोसेमंद या विशिष्ट गतिविधि करने की अपेक्षा होती है, जिससे संदेह कम होता है।

किसी अन्य प्रक्रिया में कोड इंजेक्ट करने के लिए आवश्यक विशिष्ट चरण निम्नलिखित हैं:

  1. हमलावर एक लक्ष्य प्रक्रिया खोजता है और खोलता है या एक नई प्रक्रिया शुरू करता है (OpenProcess / NtOpenProcess या CreateProcess / NtCreateProcess के माध्यम से)।
  2. दुर्भावनापूर्ण कोड के लिए मेमोरी लक्ष्य प्रक्रिया में आवंटित की जाती है (VirtualAllocEx या NtAllocateVirtualMemory के माध्यम से)।
  3. दुर्भावनापूर्ण कोड नए आवंटन में लिखा जाता है (WriteProcessMemory / NtWriteVirtualMemory के माध्यम से)।
  4. मेमोरी एक्सेस सुरक्षा को दुर्भावनापूर्ण कोड को निष्पादित करने की अनुमति देने के लिए कॉन्फ़िगर किया जाता है (VirtualProtectEx / NtProtectVirtualMemory के माध्यम से)।
  5. लक्ष्य प्रक्रिया में एक नया थ्रेड शुरू किया जाता है जो दुर्भावनापूर्ण कोड चलाता है (CreateRemoteThread अथवा NtCreateThreadEx के माध्यम से)।

अतिरिक्त इंजेक्शन तकनीकों में निम्नलिखित शामिल हैं लेकिन इन्हीं तक सीमित नहीं हैं:

  • थ्रेड हाइजैकिंग: नया थ्रेड बनाने के बजाय, मौजूदा थ्रेड को पुनर्निर्देशित किया जाता है (NtSetContextThread के माध्यम से)
  • अर्ली-बर्ड APC-इंजेक्शन: मौजूदा थ्रेड के निष्पादन को पुनर्निर्देशित करने के लिए अतुल्यकालिक प्रक्रिया कॉल (APCs) का उपयोग करता है (NtQueueApcThread के माध्यम से)
  • डर्टी वैनिटी: विंडोज API RtlCreateProcessReflection का दुरुपयोग करता है, जो प्रक्रिया फोर्किंग को लागू करता है।

हमारे परीक्षण में, हमने देखा कि अधिकांश EDR प्रक्रिया इंजेक्शन का पता लगाने के लिए विशिष्ट टेलीमेट्री पर ध्यान केंद्रित करते हैं। EDR मुख्य रूप से WriteProcessMemory और VirtualAllocEx, साथ ही उनके अंतर्निहित कर्नेल सिस्टम कॉल NtWriteVirtualMemory, NtAllocateVirtualMemory और NtAllocateVirtualMemoryEx के उपयोग की निगरानी करते हैं।


3. आवश्यक विंडोज इंटरनल्स की तकनीकी नींव

3.1 प्रक्रिया निर्माण API और स्टार्टअप पैरामीटर

विंडोज नई प्रक्रियाएँ बनाने के लिए API फ़ंक्शन CreateProcessW प्रदान करता है, जैसा कि लिस्टिंग 1 में दिखाया गया है। इसके पहले तीन पैरामीटर lpCommandLine, lpEnvironment और lpStartupInfo वर्णित इंजेक्शन तकनीक के लिए प्रासंगिक हैं, क्योंकि इनका उपयोग नई प्रक्रिया में डेटा स्थानांतरित करने के लिए किया जाता है।```c BOOL CreateProcessW( [in, optional] LPCWSTR lpApplicationName, [in, out, optional] LPWSTR lpCommandLine, [in, optional] LPSECURITY_ATTRIBUTES lpProcessAttributes, [in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes, [in] BOOL bInheritHandles, [in] DWORD dwCreationFlags, [in, optional] LPVOID lpEnvironment, [in, optional] LPCWSTR lpCurrentDirectory, [in] LPSTARTUPINFOW lpStartupInfo, [out] LPPROCESS_INFORMATION lpProcessInformation );

*सूची 1: CreateProcessW Windows API फ़ंक्शन की परिभाषा*
 
`lpCommandLine` पैरामीटर नई प्रक्रिया के लिए कमांड लाइन निर्दिष्ट करता है। यह यूनिकोड नल-टर्मिनेटर सहित अधिकतम 32,767 यूनिकोड वर्णों तक सीमित है। यूनिकोड वेरिएंट के लिए, एक स्ट्रिंग प्रदान करना आवश्यक है जिसमें फ़ंक्शन लिख सके। यदि एक स्थिर स्ट्रिंग प्रदान की जाती है, तो API फ़ंक्शन द्वारा किए गए किसी भी लिखने के प्रयास के परिणामस्वरूप मेमोरी एक्सेस उल्लंघन होता है। यदि मान `NULL` है, तो प्रक्रिया की कमांड लाइन `lpApplicationName` पैरामीटर से ली जाएगी। यदि `lpApplicationName` `NULL` है, तो इसे `lpCommandLine` फ़ील्ड में प्रदान किया जाना चाहिए और यह `MAX_PATH` वर्णों तक सीमित है।
 
`lpEnvironment` पैरामीटर प्रक्रिया को पर्यावरण चरों की एक सूची प्रदान करता है। यदि मान `NULL` है, तो बनाने वाली प्रक्रिया का पर्यावरण उपयोग किया जाएगा। पर्यावरण चरों की सूची `NAME=VALUE` प्रारूप के क्रमिक नल-टर्मिनेटेड स्ट्रिंग्स से बनी होती है, जिसके अंत में एक और नल-टर्मिनेटर होता है।
 
`lpStartupInfo` पैरामीटर एक संरचना है जो सूची 2 में दिखाई गई है, जिसमें विंडो स्टेशन, डेस्कटॉप, मानक इनपुट और आउटपुट हैंडल जैसे फ़ील्ड हैं, साथ ही ऐसे फ़ील्ड भी हैं जो नई प्रक्रिया की मुख्य विंडो को कॉन्फ़िगर करते हैं। माइक्रोसॉफ्ट दस्तावेज़ीकरण के अनुसार, फ़ील्ड `lpReserved` आंतरिक उपयोग के लिए आरक्षित है और इसका कोई आगे का दस्तावेज़ीकरण नहीं है। WinDbg डीबगर के साथ विश्लेषण के माध्यम से, इस पैरामीटर को नई प्रक्रिया में `UNICODE_STRING` प्रकार के `ShellInfo` चर से जोड़ना संभव था।```c
typedef struct _STARTUPINFOW {
    DWORD  cb;
    LPWSTR lpReserved;   // Copied to ShellInfo (UNICODE_STRING)
    LPWSTR lpDesktop;
    LPWSTR lpTitle;
    DWORD  dwX;
    DWORD  dwY;
    DWORD  dwXSize;
    // (...) additional fields
    WORD   wShowWindow;
    WORD   cbReserved2;
    LPBYTE lpReserved2;
    HANDLE hStdInput;
    // (...) additional fields
} STARTUPINFOW, *LPSTARTUPINFOW;

Listing 2: STARTUPINFOW डेटा संरचना का लेआउट

3.2 प्रोसेस एन्वायरनमेंट ब्लॉक (PEB)

टूल डाउनलोड करें