Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
p3-loader — P³-Shellcode Loader هو أداة تحميل تنفّذ تقنية حقن كود تستفيد من بنية Process Parameters كموقع للتنفيذ والتخزين المرحلي لحقن الشيل كود في العمليات البعيدة، دون تفعيل آليات الكشف الشائعة. | Kitploit
أدوات/GitHubGitHub/orange-cyberdefense/p3-loader
أدوات دفاعيةتصعيد الامتيازاتالاستغلالشيل كودما بعد الاستغلالاختبار الاختراقالأوراق والأبحاثالتعلم والتعليمالفريق الأحمرتطوير الحمولاتاستغلال الملفات الثنائية
2042314منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
GitHub
orange-cyberdefense/p3-loader

p3-loader

P³-Shellcode Loader هو أداة تحميل تنفّذ تقنية حقن كود تستفيد من بنية Process Parameters كموقع للتنفيذ والتخزين المرحلي لحقن الشيل كود في العمليات البعيدة، دون تفعيل آليات الكشف الشائعة.

عرض المستودع
مشاركة

P³-Shellcode Loader - حقن مُعاملات العملية (Process Parameter Poisoning)

المؤلفان: Max Hirschberger و Ogulcan Ugur


المحتويات

  1. مقدمة
  2. الحقن النموذجي للعمليات وواجهات برمجة تطبيقات النظام المعنية
  3. الأساس التقني لداخلية ويندوز المطلوبة
    • 3.1 واجهة برمجة إنشاء العملية ومعاملات البدء
    • 3.2 كتلة بيئة العملية (PEB)
  4. حقن مُعاملات العملية (P³)
    • 4.1 بدء عملية بمعامل مسموم
    • 4.2 تحديد موقع البيانات المحقونة في العملية الجديدة
    • 4.3 تنفيذ الكود المحقون
    • 4.4 طرق حقن الحمولة المنفَّذة
  5. تمرير كود شل عشوائي داخل سلسلة نصية
    • 5.1 الطرق المساعدة منخفضة المستوى المستخدمة من قِبل مولّد كود الشل
    • 5.2 تنفيذ العمليات عالية المستوى
  6. مزايا تفادي الاكتشاف باستخدام هذه التقنية
  7. نهج الاكتشاف
  8. الخاتمة
  9. المراجع

1. مقدمة

P³-Shellcode Loader هو أداة تحميل تنفّذ تقنية حقن كود تستفيد من بنية معاملات العملية (حقن مُعاملات العملية) كموقع تنفيذ ومرحلة تخزين لحقن كود الشل في العمليات البعيدة، دون تحفيز آليات الكشف الشائعة.

تم وصف مفهوم مشابه من قِبل الباحث الأمني modexp، الذي أظهر أن الوسائط الممرَّرة إلى واجهة CreateProcess-API يمكن استغلالها لهذا الغرض [1].


2. الحقن النموذجي للعمليات وواجهات برمجة تطبيقات النظام المعنية

يريد المهاجمون جعل أنشطتهم تبدو أقل إثارة للشك. من خلال حقن العمليات، يستطيع المهاجمون تنفيذ أنشطتهم من عملية مختلفة تكون أكثر موثوقية أو يُتوقع منها القيام بالنشاط المحدد، مما يقلل الشك.

فيما يلي الخطوات النموذجية المطلوبة لحقن كود في عملية أخرى:

  1. يبحث المهاجم عن عملية مستهدفة ويفتحها أو يبدأ عملية جديدة (عبر OpenProcess / NtOpenProcess أو CreateProcess / NtCreateProcess).
  2. يتم تخصيص ذاكرة للكود الخبيث في العملية المستهدفة (عبر VirtualAllocEx أو NtAllocateVirtualMemory).
  3. يُكتب الكود الخبيث في التخصيص الجديد (عبر WriteProcessMemory / NtWriteVirtualMemory).
  4. يتم تكوين حماية الوصول إلى الذاكرة للسماح بتنفيذ الكود الخبيث (عبر VirtualProtectEx / NtProtectVirtualMemory).
  5. يبدأ خيط جديد في العملية المستهدفة يقوم بتشغيل الكود الخبيث (عبر CreateRemoteThread أو NtCreateThreadEx).

تشمل تقنيات الحقن الإضافية على سبيل المثال لا الحصر ما يلي:

  • خطف الخيوط (Thread Hijacking): بدلاً من إنشاء خيط جديد، يتم إعادة توجيه خيط موجود (عبر NtSetContextThread)
  • حقن APC المبكر (Early-Bird APC-Injection): يستخدم استدعاءات الإجراءات غير المتزامنة (APCs) لإعادة توجيه تنفيذ خيط موجود (عبر NtQueueApcThread)
  • Dirty Vanity: يسيء استخدام واجهة ويندوز RtlCreateProcessReflection، التي تنفّذ تقسيم العمليات (process forking). في اختباراتنا، لاحظنا أن معظم حلول EDR تركز على بيانات تتبع محددة لاكتشاف حقن العمليات. تراقب حلول EDR بشكل أساسي استخدام WriteProcessMemory و VirtualAllocEx، بالإضافة إلى استدعاءات نظام kernel الأساسية الخاصة بها NtWriteVirtualMemory و NtAllocateVirtualMemory و NtAllocateVirtualMemoryEx.

3. الأساس التقني لداخلية ويندوز المطلوبة

3.1 واجهة برمجة إنشاء العملية ومعاملات البدء

توفر ويندوز دالة API CreateProcessW لإنشاء عمليات جديدة، كما هو موضح في Listing 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 حرفًا من أحرف Unicode، بما في ذلك مُنهي النهاية null الخاص بـ Unicode. بالنسبة للنسخة Unicode، من الضروري توفير سلسلة نصية يمكن للدالة الكتابة إليها. إذا تم توفير سلسلة نصية ثابتة، فإن أي محاولات كتابة تقوم بها دالة API تؤدي إلى انتهاك الوصول إلى الذاكرة. إذا كانت القيمة `NULL`، فسيتم أخذ سطر أوامر العملية من المعلمة `lpApplicationName`. إذا كانت `lpApplicationName` هي `NULL`، فيتعين توفيرها في حقل `lpCommandLine` وتكون محدودة بعدد `MAX_PATH` من الأحرف.
 
توفر المعلمة `lpEnvironment` قائمة بمتغيرات البيئة للعملية. إذا كانت القيمة `NULL`، فسيتم استخدام بيئة العملية المُنشِئة. تتكون قائمة متغيرات البيئة من سلاسل نصية متتالية تنتهي بـ null بالتنسيق `NAME=VALUE` مع مُنهي null إضافي في النهاية.
 
المعلمة `lpStartupInfo` هي بنية موضحة في القائمة 2 تحتوي على حقول مثل محطة النوافذ وسطح المكتب ومقابض الإدخال والإخراج القياسية بالإضافة إلى حقول تُهيئ النافذة الرئيسية للعملية الجديدة. وفقًا لتوثيق مايكروسوفت، فإن الحقل `lpReserved` محجوز للاستخدام الداخلي دون مزيد من التوثيق. من خلال التحليل باستخدام مصحح الأخطاء WinDbg، أمكن ربط هذه المعلمة بالمتغير `ShellInfo` من النوع `UNICODE_STRING` في العملية الجديدة.```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;

القائمة 2: تخطيط بنية بيانات STARTUPINFOW

3.2 كتلة بيئة العملية (PEB)

تنزيل الأداة