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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/jxy-s/herpaderping
أدوات دفاعيةالاستغلالاختبار الاختراق
GitHubjxy-s/herpaderping

herpaderping

إثبات المفهوم والأداة والغوص التقني العميق لـ Process Herpaderping. يعمل Process Herpaderping على تجاوز منتجات الأمان عن طريق إخفاء نوايا العملية.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

عملية Herpaderping

[][png.HerpaderpIcon] عملية Herpaderping هي طريقة لإخفاء نوايا عملية عن طريق تعديل المحتوى على القرص بعد تعيين الصورة. يؤدي ذلك إلى سلوك غريب من منتجات الأمان ونظام التشغيل نفسه.

![][png.mimioogle]

![][gif.SurivDemo]

ملخص

بشكل عام، يتخذ منتج الأمان إجراءً عند إنشاء العملية عن طريق تسجيل رد اتصال في نواة Windows ([PsSetCreateProcessNotifyRoutineEx][msdn.PsSetCreateProcessNotifyRoutineEx]). في هذه المرحلة، قد يقوم منتج الأمان بفحص الملف الذي تم استخدامه لتعيين الملف التنفيذي وتحديد ما إذا كان ينبغي السماح بتنفيذ هذه العملية. يتم استدعاء رد الاتصال هذا في النواة عند إدراج الخيط الأولي، وليس عند إنشاء كائن العملية.

بسبب ذلك، يمكن للمهاجم إنشاء عملية وتعيينها، ثم تعديل محتوى الملف، ثم إنشاء الخيط الأولي. المنتج الذي يقوم بالفحص عند رد اتصال الإنشاء سيرى المحتوى المعدل. بالإضافة إلى ذلك، تستخدم بعض المنتجات نهج المسح عند الكتابة والذي يتكون من مراقبة عمليات كتابة الملفات. أحد التحسينات المألوفة هنا هو تسجيل أن الملف قد تمت كتابته وتأجيل الفحص الفعلي حتى حدوث [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP] (مثل إغلاق مقبض الملف). وبالتالي، فإن المهاجم الذي يستخدم سير عمل write -> map -> modify -> execute -> close سيتجاوز المسح عند الكتابة الذي يعتمد فقط على الفحص عند [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP].

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

  1. كتابة الملف الثنائي الهدف إلى القرص، مع إبقاء المقبض مفتوحًا. هذا ما سينفذ في الذاكرة.
  2. تعيين الملف كقسم صورة ([NtCreateSection][msdn.NtCreateSection], [SEC_IMAGE][msdn.SEC_IMAGE]).
  3. إنشاء كائن العملية باستخدام مقبض القسم (NtCreateProcessEx).
  4. باستخدام نفس مقبض الملف الهدف، إخفاء الملف على القرص.
  5. إنشاء الخيط الأولي في العملية (NtCreateThreadEx).
    • في هذه المرحلة، سيتم تشغيل رد اتصال إنشاء العملية في النواة. محتويات القرص لا تتطابق مع ما تم تعيينه. فحص الملف في هذه المرحلة سيؤدي إلى إسناد غير صحيح.
  6. إغلاق المقبض. سيحدث [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP] هنا.
    • نظرًا لأننا أخفينا محتويات ما يتم تنفيذه، فإن الفحص في هذه المرحلة سيؤدي إلى إسناد غير صحيح.

![][svg.StateDiagram]

plantuml

@startuml
hide empty description

[*] --> CreateFile
CreateFile --> FileHandle
FileHandle --> Write
FileHandle --> NtCreateSection
Write -[hidden]-> NtCreateSection
NtCreateSection --> SectionHandle
SectionHandle --> NtCreateProcessEx
FileHandle --> Modify
NtCreateProcessEx -[hidden]-> Modify
NtCreateProcessEx --> NtCreateThreadEx
Modify -[hidden]-> NtCreateThreadEx
NtCreateThreadEx --> [*]
FileHandle --> CloseFile
NtCreateThreadEx -[hidden]-> CloseFile
NtCreateThreadEx --> PspCallProcessNotifyRoutines
PspCallProcessNotifyRoutines -[hidden]-> [*]
CloseFile --> IRP_MJ_CLEANUP
IRP_MJ_CLEANUP -[hidden]-> [*]
PspCallProcessNotifyRoutines --> Inspect
PspCallProcessNotifyRoutines -[hidden]-> CloseFile 
IRP_MJ_CLEANUP --> Inspect
Inspect -[hidden]-> [*]

CreateFile : Create target file, keep handle open.
Write : Write source payload into target file.
Modify : Obscure the file on disk.
NtCreateSection : Create section using file handle.
NtCreateProcessEx : Image section for process is mapped and cached in file object.
NtCreateThreadEx : The cached section is used.
NtCreateThreadEx : Process notify routines fire in kernel.
Inspect : The contents on disk do not match what was executed. 
Inspect : Inspection of the file at this point will result in incorrect attribution.
@enduml

السلوك

سترى في العرض التوضيحي أدناه، يتم استخدام CMD.exe كهدف للتنفيذ. التشغيل الأول يستبدل البايتات على القرص بنمط. التشغيل الثاني يستبدل CMD.exe بـ ProcessHacker.exe. أداة Herpaderping تقوم بتصحيح الثنائي ليجعله مشابهًا قدر الإمكان لـ ProcessHacker.exe، حتى مع الاحتفاظ بالتوقيع الأصلي. لاحظ عمليات التنفيذ المتعددة لنفس الثنائي وكيف تبدو العملية للمستخدم مقارنة بما هو موجود في الملف على القرص.

![][gif.ProcessHerpaderp]

![][png.procmon]

الغوص أعمق

لاحظنا السلوك وقد يكون بعض هذا مفاجئًا. دعنا نحاول شرح هذا السلوك.

[الغوص الفني العميق][md.DivingDeeper]

الخلفية والدوافع

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

الدافع لهذا البحث جاء عند اكتشاف كيفية إجراء التحليل عند كتابة ملف. مع خلفية سابقة في البحث عن Process Hollowing و Doppelganging، افترضت أن هذا قد يكون ممكنًا. الهدف هو توفير أمان أفضل. لا يمكنك صنع قفل أفضل دون فهم كيفية كسر القديم أولاً.

تقنيات مشابهة

Herpaderping تشبه Hollowing و Doppelganging ولكن هناك بعض الاختلافات الرئيسية:

Process Hollowing

Process Hollowing تتضمن تعديل القسم المعين قبل بدء التنفيذ، والتي تبدو بشكل مجرد: map -> modify section -> execute. هذا السير العمل يؤدي إلى انحراف تدفق التنفيذ المقصود للعملية المجوفة إلى كود غير مقصود. قد يعتبر Doppelganging شكلاً من Hollowing. ومع ذلك، فإن Hollowing، في رأيي، أقرب إلى الحقن حيث أن Hollowing عادة ما يتضمن كتابة صريحة إلى الكود المعين بالفعل. هذا يختلف عن Herpaderping حيث لا توجد أقسام معدلة.

Process Doppelganging

Process Doppelganging أقرب إلى Herpaderping. Doppelganging تسيء استخدام عمليات الملفات المعاملية (transacted file operations) وتتضمن عمومًا هذه الخطوات: transact -> write -> map -> rollback -> execute. في هذا السير العمل، سيقوم نظام التشغيل بإنشاء قسم الصورة وحساب المعاملات، لذا ينتهي قسم الصورة المخبأ ليكون ما كتبته إلى المعاملة. قامت Microsoft بتصحيح هذه التقنية. حسنًا، قاموا بتصحيح الانهيار الذي تسببت فيه. ربما يعتبرون هذا استخدامًا "قانونيًا" للمعاملة. لحسن الحظ، يكتشف Windows Defender تقنية Doppelganging. تختلف Doppelganging عن Herpaderping في أن Herpaderping لا تعتمد على عمليات الملفات المعاملية. و Defender لا يكتشف Herpaderping.

المقارنة

للإشارة، التقنيات المعممة:

النوعالتقنية
Hollowingmap -> modify section -> execute
Doppelgangingtransact -> write -> map -> rollback -> execute
Herpaderpingwrite -> map -> modify -> execute -> close

يمكننا رؤية الاختلافات موضحة هنا. بينما يمكن القول أن Herpaderping أكثر ضوضاءً من Doppelganging، حيث أن البتات الضارة تصل إلى القرص، فقد رأينا أن منتجات الأمان لا تزال غير قادرة على اكتشاف Herpaderping.

حل محتمل

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

خيار آخر قد يكون إزالة التغييرات إلى الملف من خلال قسم الصورة المخبأ إذا لم يتم تعيينه في عملية بعد. ولكن بما أن التعيين في العملية الجديدة يحدث عند NtCreateProcess، ربما ليس هذا حلاً قابلاً للتطبيق.

تنزيل الأداة