Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Shellcode-Injection-Techniques — تطبيقات بلغة C# لتقنيات حقن الشيلكود بما في ذلك الحقن الكلاسيكي، اختطاف الخيوط، تجويف العملية، وقصف الذرة، باستخدام حمولات Meterpreter المشفرة بـ AES لأغراض بحث التهرب من برامج مكافحة الفيروسات. | Kitploit
أدوات/GitHubGitHub/plackyhacker/shellcode-injection-techniques
الاستغلالشيل كودما بعد الاستغلالالفريق الأحمر
GitHubplackyhacker/shellcode-injection-techniques

Shellcode-Injection-Techniques

تطبيقات بلغة C# لتقنيات حقن الشيلكود بما في ذلك الحقن الكلاسيكي، اختطاف الخيوط، تجويف العملية، وقصف الذرة، باستخدام حمولات Meterpreter المشفرة بـ AES لأغراض بحث التهرب من برامج مكافحة الفيروسات.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
46692منذ 4 سنواتتمت المراجعة من قبل Kitploit

تقنيات حقن شيلكود

مجموعة من تقنيات حقن شيلكود بلغة C#. جميع التقنيات تستخدم حمولة متربريتر مشفرة بـ AES.

سأقوم ببناء هذا المشروع تدريجياً مع تعلمي أو اكتشافي أو تطويري لمزيد من التقنيات.

ملاحظة: المشروع ليس مخصصًا للاستخدام كما هو. إذا كنت ستستخدم أيًا من التقنيات، فمن الأفضل تجاوز برامج مكافحة الفيروسات إذا قمت بإنشاء مشروع أصغر ومخصص بالتقنية التي اخترتها.

إذا استخدمت أيًا من الأكواد في هذه المستودعات فليكن ذلك قانونيًا!

حقن التجميع

يمكنك استخدام تقنية حقن التجميع في PowerShell إذا كنت تريد تجنب كتابة ملفات .Net ثنائية على القرص.

مشغل الشيلكود

ShellcodeRunner.cs: هذه التقنية ليست تقنية حقن بالمعنى الدقيق (لأننا ننفذ الشيلكود في نفس العملية) لكنها أبسط جميع التقنيات. نضمن أن الشيلكود يستخدم موقع ذاكرة ثابت في سياق unsafe. نغير الحماية على الصفحة حيث يوجد الشيلكود حتى نتمكن من تنفيذه. ثم نستخدم دالة مفوضة في C# لتنفيذ الشيلكود.

root@kitploit:~
[+] باستخدام التقنية: ShellcodeInjectionTechniques.ShellcodeRunner
[+] VirtualProtect() - تم التعيين إلى PAGE_EXECUTE_READWRITE، عنوان الشيلكود: 0x20D000418E0
[+] جارٍ تنفيذ الشيلكود - عنوان الذاكرة: 0x20D000418E0

الحقن الكلاسيكي

ClassicInjection.cs: تخصص هذه التقنية ذاكرة في العملية الهدف، وتحقق الشيلكود، وتبدأ سلسلة جديدة.

root@kitploit:~
[+] تم العثور على العملية: 24484
[+] باستخدام التقنية: ShellcodeInjectionTechniques.ClassicInjection
[+] VirtualAllocEx()، تم التعيين: 0x23642220000
[+] WriteProcessMemory() - العنوان البعيد: 0x23642220000
[+] CreateRemoteThread() - معالج السلسلة: 0x380

اختطاف السلسلة

ThreadHijack.cs: تختطف هذه التقنية سلسلة عن طريق حقن كود في العملية الهدف، وتعليق السلسلة المختطفة، وتعيين مؤشر التعليمات (RIP) إلى الكود المحقون، ثم استئناف السلسلة.

root@kitploit:~
[+] تم العثور على العملية: 11508
[+] باستخدام التقنية: ShellcodeInjectionTechniques.ThreadHijack
[+] تم العثور على السلسلة: 9344
[+] OpenThread() - معالج السلسلة: 0x378
[+] VirtualAllocEx()، تم التعيين: 0x1D17AB80000
[+] WriteProcessMemory() - العنوان البعيد: 0x1D17AB80000
[+] SuspendThread() - معالج السلسلة: 0x378
[+] GetThreadContext() - معالج السلسلة: 0x378
[+] RIP هو: 0x7FFA77D21104
[+] SetThreadContext()، تم تعيين RIP: 0x1D17AB80000
[+] ResumeThread() - معالج السلسلة: 0x378

اختطاف السلسلة المحلية

LocalThreadHijack.cs: تنشئ هذه التقنية سلسلة محلية جديدة في حالة معلقة، ثم نختطف السلسلة، ونعين مؤشر التعليمات (RIP) إلى الكود المحقون، ثم نستأنف السلسلة.

root@kitploit:~
[+] باستخدام التقنية: ShellcodeInjectionTechniques.LocalThreadHijack
[+] CreateThread() - معالج السلسلة: 0x374
[+] VirtualProtect() - تم التعيين إلى PAGE_EXECUTE_READWRITE، عنوان الشيلكود: 0x270800418E0
[+] GetThreadContext() - معالج السلسلة: 0x374
[+] RIP هو: 0x7FFA79EE2630
[+] SetThreadContext()، تم تعيين RIP: 0x270800418E0
[+] ResumeThread() - معالج السلسلة: 0x374

حقن الاستدعاء غير المتزامن للإجراء (APC)

APCInjection.cs: تشبه هذه التقنية تقنية اختطاف السلسلة. نقوم بحقن الشيلكود في سلسلة بعيدة، ثم نقوم بإدراج كائن APC في السلسلة. عندما تدخل السلسلة حالة قابلة للتنبيه (عند استدعاء SleepEx، SignalObjectAndWait، MsgWaitForMultipleObjectsEx، WaitForMultipleObjectsEx، أو WaitForSingleObjectEx) فإنها تشغل شيلكودنا المشار إليه بواسطة كائن APC المدرج.

root@kitploit:~
[+] تم العثور على العملية: 25320
[+] باستخدام التقنية: ShellcodeInjectionTechniques.APCInjection
[+] تم العثور على السلسلة: 23796
[+] OpenThread() - معالج السلسلة: 0x378
[+] VirtualAllocEx()، تم التعيين: 0x24E064D0000
[+] WriteProcessMemory() - العنوان البعيد: 0x24E064D0000
[+] QueueUserAPC() - معالج السلسلة: 0x378

إفراغ العملية

ProcessHollow.cs: تبدأ هذه التقنية عملية أخرى في حالة معلقة (svchost.exe)، وتجد نقطة الدخول الرئيسية للسلسلة، وتحقن شيلكودنا فيها ثم تستأنف السلسلة.

root@kitploit:~
[+] باستخدام التقنية: ShellcodeInjectionTechniques.ProcessHollow
[+] CreateProcess(): C:\Windows\System32\svchost.exe
[+] المؤشر إلى ImageBase: 0xD31E956010
[+] ReadProcessMemory() - مؤشر قاعدة الصورة: 0xD31E956010
[+] ImageBase: 0x7FF6116C0000
[+] ReadProcessMemory() - قاعدة svchost: 0x7FF6116C0000
[+] EntryPoint: 0xD31E956010
[+] WriteProcessMemory(): 0x7FF6116C4E80
[+] ResumeThread() - معالج السلسلة: 0x454

عرض معين بين العمليات

InterProcessMappedView.cs: تنشئ هذه التقنية قسمًا جديدًا في الذاكرة، وتنشئ عرضًا معينًا محليًا للقسم، وتنسخ شيلكودنا في العرض المعين المحلي، وتنشئ عرضًا معينًا بعيدًا للعرض المعين المحلي في العملية الهدف. أخيرًا ننشئ سلسلة جديدة في العملية الهدف مع العرض المعين كنقطة دخول.

root@kitploit:~
[+] تم العثور على العملية: 23740
[+] باستخدام التقنية: ShellcodeInjectionTechniques.InterProcessMappedView
[+] NtCreateSection() - معالج القسم: 0x37C
[+] NtMapViewOfSection() - العرض المحلي: 0x20CB8E40000
[+] جارٍ ترتيب الشيلكود
[+] NtMapViewOfSection() - العرض البعيد: 0x22D90310000
[+] RtlCreateUserThread() - معالج السلسلة: 0x384

القصف الذري

AtomBomb.cs: هذه التقنية مثيرة للاهتمام في كيفية كتابة الشيلكود إلى العملية الهدف. نستخدم جدول الذرات العالمي الذي يسمح لنا بكتابة سلاسل منتهية بقيمة null بحجم أقصى 255 بايت. نجد كهف كود لكتابة الشيلكود فيه، ثم نستخدم استدعاءات APC لدفع العملية الهدف لقراءة أسماء الذرات في الذاكرة. أخيرًا نستخدم استدعاءات APC لتغيير حماية الذاكرة للهدف وتنفيذ الشيلكود.

الكود الخاص بي يختلف عن تقنية القصف الذري الأصلية، المكتوبة بلغة C/C++. أولاً، أقوم بتسلسل أسماء الذرات معًا، باستخدام عدة APCs، لتشكيل شيلكود أكبر من 255 بايت. لا أستخدم سلاسل ROP لإجبار العملية الهدف على استدعاء VirtualProtect ثم تنفيذ الكود، بل أستخدم قائمة انتظار APC.

يتطلب هذا الكود أن تدخل السلسلة الرئيسية حالة قابلة للتنبيه لتنفيذ قائمة انتظار APC، ولا أقوم بالتنظيف بعد تنفيذ الشيلكود، ونتيجة لذلك تصبح العملية الهدف غير مستقرة. أخطط لتحسين هذه التقنية (عن طريق البحث عن سلاسل قابلة للتنبيه والتنظيف بعد ذلك)، ولكن كإثبات للمفهوم فهي تعمل جيدًا.

root@kitploit:~
[+] تم العثور على العملية: 14140
[+] باستخدام التقنية: ShellcodeInjectionTechniques.AtomBomb
[+] تم العثور على السلسلة: 5940
[+] OpenThread() - معالج السلسلة: 0xD0
[+] FindWritablePages() - عدد الصفحات التي تم العثور عليها: 2
[+] تم العثور على كهف كود مناسب - pWritable: 0x2CE60031
[+] GetProcAddress() - pGlobalGetAtomNameW: 0x7FFE20EB2680
[+] GlobalAddAtom() - ATOM: 0xC091
[+] NtQueueApcThread() - pWritable: 0x2CE60031
[+] GlobalAddAtom() - ATOM: 0xC06F
[+] NtQueueApcThread() - pWritable: 0x2CE600F9
[+] GlobalAddAtom() - ATOM: 0xC080
[+] NtQueueApcThread() - pWritable: 0x2CE601C1
[+] GlobalAddAtom() - ATOM: 0xC088
[+] NtQueueApcThread() - pWritable: 0x2CE60289
[+] GlobalAddAtom() - ATOM: 0xC084
[+] NtQueueApcThread() - pWritable: 0x2CE60351
[+] GetProcAddress() - pVirtualProtect: 0x7FFE20EBBC70
[+] NtQueueApcThread() PAGE_EXECUTE_READWRITE - codeCave: 0x2CE60031
[+] QueueUserAPC() - codeCave: 0x2CE60031

ملاحظات

تقنية القصف الذري تضع سلاسل منتهية بقيمة null في جدول الذرات العالمي، وهذا يعني أنه يجب عليك استخدام شيلكود لا يحتوي على أحرف 0x00.

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

root@kitploit:~
[!] غير قادر على العثور على عملية للحقن!

عند استخدام مشغل الشيلكود، أو تقنية اختطاف السلسلة المحلية، أو تقنية إفراغ العملية، ستحتاج إلى التعليق على الكود في Program.cs الذي يبحث عن العملية للحقن:

root@kitploit:~
/*
Process[] processes = Process.GetProcessesByName("notepad");

if(processes.Length == 0)
{
  Debug("[!] غير قادر على العثور على عملية للحقن!");
  return;
}

Debug("[+] تم العثور على العملية: {0}", new string[] { processes[0].Id.ToString() });
target = processes[0];
*/
تنزيل الأداة