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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
herpaderping — إثبات المفهوم والأداة والغوص التقني العميق لـ Process Herpaderping. يعمل Process Herpaderping على تجاوز منتجات الأمان عن طريق إخفاء نوايا العملية. | Kitploit
أدوات/GitHubGitHub/jxy-s/herpaderping
أدوات دفاعيةالاستغلالاختبار الاختراق
GitHubjxy-s/herpaderping

herpaderping

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

عملية Herpaderping

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

ملخص

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

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

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

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

plantuml

root@kitploit:~
@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، حتى مع الاحتفاظ بالتوقيع الأصلي. لاحظ عمليات التنفيذ المتعددة لنفس الثنائي وكيف تبدو العملية للمستخدم مقارنة بما هو موجود في الملف على القرص.

الغوص أعمق

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

الغوص الفني العميق

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

عند تصميم منتجات لتأمين منصات 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، ربما ليس هذا حلاً قابلاً للتطبيق.

من وجهة نظر الكشف، ليس هناك طريقة رائعة لتحديد البتات الفعلية التي تم تعيينها، الفحص عند IRP_MJ_CLEANUP أو رد اتصال مسجل في PsSetCreateProcessNotifyRoutineEx يؤدي إلى إسناد غير صحيح لأن البتات على القرص قد تغيرت، سيتعين عليك إعادة بناء الملف من القسم الذي تم إنشاؤه. يجدر الإشارة هنا إلى وجود رد اتصال جديد في Windows 10 يمكنك التسجيل له: PsSetCreateProcessNotifyRoutineEx2 لكن هذا يعاني من نفس مشكلة رد الاتصال السابق، يتم استدعاؤه عند تنفيذ الخيط الأولي، وليس عند إنشاء كائن العملية. أضافت Microsoft PsSetCreateThreadNotifyRoutineEx الذي يتم استدعاؤه عند إدراج الخيط الأولي إذا تم التسجيل باستخدام PsCreateThreadNotifyNonSystem، على عكس عندما يكون على وشك بدء التنفيذ (كما كان رد الاتصال القديم). تمديد PSCREATEPROCESSNOTIFYTYPE ليتم استدعاؤه عند إنشاء كائن العملية لن يساعد أيضًا، لقد رأينا في قسم الغوص أعمق أن كائن قسم الصورة يتم تخزينه مؤقتًا عند استدعاء NtCreateSection وليس NtCreateProcess.

لا يمكننا بسهولة تحديد ما تم تنفيذه. نبقى مع محاولة اكتشاف السلوك الاستغلالي من قبل المهاجم، سأترك اكتشاف مؤشرات السلوك كتمرين للقارئ.

المنصات المعروفة المتأثرة

فيما يلي قائمة بالمنتجات وأنظمة Windows التي تم اختبارها حتى (8/31/2020). تم إجراء الاختبارات باستخدام ملف ثنائي ضار معروف.

الإفصاح المسؤول

تم الإفصاح عن هذه الثغرة الأمنية إلى مركز استجابة أمان Microsoft (MSRC) في 7/17/2020 وتم فتح حالة من قبل MSRC في 7/22/2020. اختتم MSRC تحقيقه في 8/25/2020 وقرر أن النتائج صالحة ولكنها لا تلبي معاييرهم للصيانة الفورية. في هذا الوقت، تم إغلاق حالتهم دون حل، وتم وضع علامة للمراجعة المستقبلية، دون جدول زمني.

نحن نختلف في شدة هذا الخلل؛ تم إبلاغ MSRC بهذا في 8/27/2020.

  1. هناك ثغرات مماثلة في هذه الفئة (Hollowing و Doppelganging).
  2. تم إظهار الثغرة لهزيمة ميزات الأمان المتأصلة في نظام التشغيل (Windows Defender).
  3. الثغرة تسمح للمهاجم بالحصول على تنفيذ كود تعسفي.
  4. لا يتم إخطار المستخدم بتنفيذ كود غير مقصود.
  5. معلومات العملية المقدمة للمستخدم لا تعكس بدقة ما يتم تنفيذه.
  6. التسهيلات لتحديد العملية بدقة ليست بديهية أو غير صحيحة، حتى من النواة.

المصدر

يحتوي هذا المستودع على أداة لممارسة طريقة Herpaderping لإخفاء العملية. الاستخدام كما يلي:

root@kitploit:~
Process Herpaderping Tool - Copyright (c) Johnny Shaw
ProcessHerpaderping.exe SourceFile TargetFile [ReplacedWith] [Options...]
Usage:
  SourceFile               Source file to execute.
  TargetFile               Target file to execute the source from.
  ReplacedWith             File to replace the target with. Optional,
                           default overwrites the binary with a pattern.
  -h,--help                Prints tool usage.
  -d,--do-not-wait         Does not wait for spawned process to exit,
                           default waits.
  -l,--logging-mask number Specifies the logging mask, defaults to full
                           logging.
                               0x1   Successes
                               0x2   Informational
                               0x4   Warnings
                               0x8   Errors
                               0x10  Contextual
  -q,--quiet               Runs quietly, overrides logging mask, no title.
  -r,--random-obfuscation  Uses random bytes rather than a pattern for
                           file obfuscation.
  -e,--exclusive           Target file is created with exclusive access and
                           the handle is held open as long as possible.
                           Without this option the handle has full share
                           access and is closed as soon as possible.
  -u,--do-not-flush-file   Does not flush file after overwrite.
  -c,--close-file-early    Closes file before thread creation (before the
                           process notify callback fires in the kernel).
                           Not valid with "--exclusive" option.
  -k,--kill                Terminates the spawned process regardless of
                           success or failure, this is useful in some
                           automation environments. Forces "--do-not-wait
                           option.

الاستنساخ والبناء

يستخدم المستودع وحدات فرعية (submodules)، بعد الاستنساخ تأكد من تهيئة وتحديث الوحدات الفرعية. تستهدف ملفات المشروع Visual Studio 2019.

root@kitploit:~
git clone https://github.com/jxy-s/herpaderping.git
cd .\herpaderping\
git submodule update --init --recursive
MSBuild .\herpaderping.sln

الاعتمادات

تم استخدام ما يلي دون تعديل. الاعتمادات لمؤلفيها.

  • Windows Implementation Libraries (WIL)
    مكتبة C++ تعمل بالرؤوس فقط تم إنشاؤها لتسهيل الحياة على المطورين على Windows من خلال واجهات C++ مقروءة وآمنة من النوع لأنماط برمجة Windows الشائعة.
  • Process Hacker Native API Headers
    مجموعة من ملفات رأس Native API. تم جمعها من ملفات رأس Microsoft وملفات الرموز، بالإضافة إلى الكثير من الهندسة العكسية والتخمين.
تنزيل الأداة
نظام التشغيلالإصدارمعرض للخطر
Windows 7 Enterprise x866.1.7601نعم
Windows 10 Pro x6410.0.18363.900نعم
Windows 10 Pro Insider Preview x6410.0.20170.1000نعم
Windows 10 Pro Insider Preview x6410.0.20201.1000نعم
منتج الأمانالإصدارمعرض للخطر
Windows Defender AntiMalware Client4.18.2006.10نعم
Windows Defender Engine1.1.17200.2نعم
Windows Defender Antivirus1.319.1127.0نعم
Windows Defender Antispyware1.319.1127.0نعم
Windows Defender AntiMalware Client4.18.2007.6نعم
Windows Defender Engine1.1.17300.2نعم
Windows Defender Antivirus1.319.1676.0نعم
Windows Defender Antispyware1.319.1676.0نعم
Windows Defender AntiMalware Client4.18.2007.8نعم
Windows Defender Engine1.1.17400.5نعم
Windows Defender Antivirus1.323.267.0نعم
Windows Defender Antispyware1.323.267.0نعم