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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ScareCrow — ScareCrow - إطار عمل لإنشاء الحمولات مصمم لتجاوز أنظمة EDR. | Kitploit
أدوات/GitHubGitHub/optiv/scarecrow
أطر الاستغلالتوليد الحمولةشيل كوداختبار الاختراقالفريق الأحمرتطوير الحمولاتArchived
GitHuboptiv/scarecrow

ScareCrow

ScareCrow - إطار عمل لإنشاء الحمولات مصمم لتجاوز أنظمة EDR.

عرض المستودع
2.9k52921منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

تم أرشفة هذا المستودع

لعرض أحدث إصدار من ScareCrow أو لتقديم مشكلة، راجع https://github.com/Tylous/ScareCrow.



ScareCrow

مزيد من المعلومات

إذا كنت ترغب في معرفة المزيد عن التقنيات المستخدمة في هذا الإطار، يرجى إلقاء نظرة على الجزء 1 و الجزء 2

الوصف

ScareCrow هو إطار عمل لإنشاء الحمولات من أجل التحميل الجانبي (وليس الحقن) في عملية ويندوز شرعية (لتجاوز ضوابط القائمة البيضاء للتطبيقات). بمجرد تحميل محمل DLL في الذاكرة، يستخدم تقنية لإزالة خطافات EDR من ملفات DLL النظامية التي تعمل في ذاكرة العملية. يعمل هذا لأننا نعلم أن خطافات EDR توضع عند إنشاء عملية.

يمكن لـ ScareCrow استهداف ملفات DLL هذه والتلاعب بها في الذاكرة باستخدام دالة API VirtualProtect، التي تغير صلاحيات جزء من ذاكرة العملية إلى قيمة مختلفة، وتحديداً من Execute–Read إلى Read-Write-Execute.

يستخدم ScareCrow إحدى طريقتين لإزالة الخطافات:

القرص

عند التنفيذ، سيقوم ScareCrow بنسخ بايتات ملفات DLL النظامية المخزنة على القرص في C:\Windows\System32\. يتم تخزين ملفات DLL هذه على القرص "نظيفة" من خطافات EDR لأن النظام يستخدمها لتحميل نسخة غير معدلة في عملية جديدة عند إنشائها. نظراً لأن EDRs تخترق هذه العمليات في الذاكرة فقط، فإنها تبقى غير معدلة. لا يقوم ScareCrow بنسخ ملف DLL بأكمله، بل يركز فقط على قسم .text من ملفات DLL. يحتوي هذا القسم من DLL على التجميع القابل للتنفيذ، وبفعل ذلك، يساعد ScareCrow في تقليل احتمالية الكشف لأن إعادة قراءة الملفات بأكملها قد تتسبب في اكتشاف EDR لتعديل على مورد نظام. ثم يتم نسخ البيانات إلى منطقة الذاكرة الصحيحة باستخدام إزاحة كل دالة. لكل دالة إزاحة تشير إلى العدد الدقيق للبايتات من العنوان الأساسي حيث توجد، مما يوفر موقع الدالة على المكدس.

للقيام بذلك، يغير ScareCrow صلاحيات منطقة .text من الذاكرة باستخدام VirtualProtect. على الرغم من أن هذا ملف DLL نظامي، إلا أنه بمجرد تحميله في عمليتنا (التي نتحكم بها)، يمكننا تغيير صلاحيات الذاكرة دون الحاجة إلى صلاحيات مرتفعة.

استدعاءات النظام غير المباشرة

يقوم ScareCrow بتحميل شيل كود في الذاكرة عن طريق فك تشفير الشيل كود أولاً، والذي يتم تشفيره بواسطة إحدى طرق التشفير الثلاث (الموضحة أدناه). بمجرد فك التشفير والتحميل، يتم تنفيذ الشيل كود. اعتماداً على خيارات المحمل المحددة، سيقوم ScareCrow بإعداد دوال تصدير مختلفة لملف DLL. لا يحتوي ملف DLL المحمل أيضاً على دالة DLLMain القياسية التي تحتاجها جميع ملفات DLL عادةً للعمل. سيستمر تنفيذ DLL دون أي مشكلة لأن العملية التي نحمله إليها ستبحث عن دوال التصدير هذه ولن تقلق بشأن وجود DLLMain.

عينة ثنائية

بعد

KnownDLLs

KnownDLLs هي قائمة بملفات DLL التي يتم تحميلها بواسطة ويندوز أثناء عملية بدء تشغيل النظام. نظراً لأن ملفات DLL هذه تعتبر أساسية لعمل نظام التشغيل، يتم تخزينها مؤقتاً للمساعدة في تقليل أوقات التحميل وتحسين الأداء عند بدء تشغيل التطبيقات. تتضمن KnownDLLs ملفات مثل kernel32.dll، kernelbase.dll، و ntdll.dll.

باستخدام هذه KnownDlls، يقوم ScareCrow بتعيين نسخة من DLL من \KnownDlls\<dllname> باستخدام مجموعة من NtOpenSection و NtMapViewOfSection لتحميلها في ذاكرة العملية. لا يقوم ScareCrow بتحميل DLL بأكمله، بل يحمل فقط قسم .text من DLL (لأن هذا يحتوي على جميع استدعاءات النظام). من هناك، يستخدم ScareCrow استدعاءات النظام غير المباشرة لاستدعاء NtProtectVirtualMemory وتغيير صلاحيات قسم الذاكرة .text الخاص بـ DLL للسماح لـ ScareCrow بالكتابة فوق خطافات EDR قبل استعادة الصلاحيات.

لمزيد من المعلومات، يمكنك قراءة مقال modexp المفصل هنا

بمجرد إزالة هذه الخطافات، يستخدم ScareCrow بعد ذلك استدعاءات نظام مخصصة لتحميل وتشغيل شيل كود في الذاكرة. يقوم ScareCrow بذلك حتى بعد إزالة خطافات EDR للمساعدة في تجنب الكشف بواسطة أدوات جمع القياسات غير المعتمدة على مساحة المستخدم مثل ETW أو آليات تسجيل الأحداث الأخرى. تُستخدم استدعاءات النظام المخصصة هذه أيضاً لأداء استدعاء VirtualProtect لإزالة الخطافات التي تضعها EDRs، الموضحة أعلاه، لتجنب الكشف بواسطة أي ضوابط مضادة للعبث من EDR. يتم ذلك عن طريق استدعاء نسخة مخصصة من استدعاء نظام VirtualProtect، NtProtectVirtualMemory. يستخدم ScareCrow لغة Go لإنشاء هذه المحملات ثم التجميع لوظائف استدعاء النظام المخصصة هذه.

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

غالباً ما تخضع الملفات الموقعة بشهادات توقيع الكود لفحص أقل، مما يسهل تنفيذها دون مواجهة تحديات، حيث أن الملفات الموقعة باسم موثوق تكون أقل إثارة للريبة من غيرها. معظم منتجات مكافحة البرامج الضارة ليس لديها الوقت للتحقق من هذه الشهادات والتحقق منها (الآن البعض يفعل ذلك ولكن عادةً ما يتم تضمين أسماء البائعين الشائعة في القائمة البيضاء). يقوم ScareCrow بإنشاء هذه الشهادات باستخدام إصدار حزمة Go من أداة limelighter لإنشاء ملف pfx12. تأخذ هذه الحزمة اسم نطاق يتم إدخاله بواسطة المستخدم لإنشاء شهادة توقيع كود لذلك النطاق. إذا لزم الأمر، يمكنك أيضاً استخدام شهادة توقيع الكود الخاصة بك إذا كانت لديك، باستخدام خيار سطر الأوامر valid.

  • يحتوي ScareCrow أيضاً على القدرة على أخذ السلسلة الكاملة وجميع السمات من شهادة توقيع كود شرعية من ملف ونسخها إلى ملف آخر. يشمل ذلك تاريخ التوقيع، التوقيعات المقابلة، والسمات الأخرى القابلة للقياس. يمكن لهذا الخيار استخدام ملفات DLL أو .exe للنسخ باستخدام خيار سطر الأوامر clone، بالإضافة إلى مسار الملف الذي تريد نسخ الشهادة منه.

اعتبارات أمنية:

  عند توقيع المحمل باستخدام microsoft.com، قد لا يكون استخدامها ضد منتجات WINDOWS DEFENDER ATP فعالاً لأنها تستطيع التحقق من الشهادة لأنها مملوكة لهم. إذا كنت تستخدم محملاً ضد منتج ويندوز، فمن الممكن استخدام نطاق مختلف.
  • تزوير سمات المحمل: يتم ذلك باستخدام ملفات syso وهي شكل من أشكال ملفات الموارد المضمنة التي عند تجميعها مع المحمل الخاص بنا، ستعدل أجزاء السمات من الكود المجمع. قبل إنشاء ملف syso، سيقوم ScareCrow بإنشاء اسم ملف عشوائي (بناءً على نوع المحمل) لاستخدامه. بمجرد الاختيار، سيرتبط اسم الملف هذا بالسمات المرتبطة باسم الملف هذا، مما يضمن تعيين القيم الصحيحة.

عينة سمات الملف

باستخدام هذه الملفات وكود Go، سيقوم ScareCrow بتجميعها بشكل متقاطع إلى ملفات DLL باستخدام خيار المكتبة المشتركة c-shared. بمجرد تجميع DLL، يتم تشويشه إلى سلسلة base64 مكسورة سيتم تضمينها في ملف. يتيح ذلك سحب الملف عن بعد، والوصول إليه، وتنفيذه برمجياً.

ملفات السمات المخصصة

بينما يمتلك ScareCrow قائمة واسعة من سمات الملفات، هناك بعض الظروف التي تتطلب مجموعة مخصصة من السمات (ربما خاصة بالبيئة). لاستيعاب ذلك، يسمح ScareCrow بإدخال ملف JSON يحتوي على سمات. باستخدام خيار سطر الأوامر -configfile، سيستخدم ScareCrow هذه السمات واسم الملف بدلاً من السمات الموجودة مسبقاً في ScareCrow. يحتوي الملف main.json على نموذج لهيكل JSON الذي يجب أن يكون ليعمل بشكل صحيح. لاحظ أن ما تستخدمه كـ "InternalName" سيكون اسم الملف.

المتطلبات

يتطلب ScareCrow الآن إصدار golang 1.19.1 أو أحدث لتجميع المحملات. إذا كنت تستخدم إصداراً أقدم، فيرجى استخدام الإصدار 1.19.1 أو أحدث.

راجع الإصدارات الجديدة: https://golang.org/dl/.

التثبيت

الخطوة الأولى هي دائماً استنساخ المستودع. قبل تجميع ScareCrow، ستحتاج إلى تثبيت التبعيات.

لتثبيتها، قم بتشغيل الأوامر التالية:``` go get github.com/fatih/color go get github.com/yeka/zip go get github.com/josephspurrier/goversioninfo go get github.com/Binject/debug/pe go get github.com/awgh/rawreader

تأكد من تثبيت ما يلي على نظام التشغيل الخاص بك:```
openssl
osslsigncode
mingw-w64

ثم قم ببنائه``` go build ScareCrow.go

بالإضافة إلى ذلك، يستخدم ScareCrow [Garble](https://github.com/burrowers/garble) لتعتيم جميع المحملات.

ملاحظة: العديد من التبعيات لا تعمل بشكل جيد على ويندوز عند التجميع، ولهذا يُنصح بتجميع المحملات الخاصة بك على أو إس إكس أو لينكس.

## المساعدة```

./ScareCrow -h
تنزيل الأداة