حقن ملفات DLL: ما هو وما هي المخاطر التي ينطوي عليها فعلاً؟

  • يستغل حقن DLL واختطاف DLL كيفية تحميل نظام التشغيل Windows للمكتبات الديناميكية لتنفيذ التعليمات البرمجية الضارة في العمليات المشروعة.
  • تعتمد تقنيات حقن العمليات على واجهات برمجة التطبيقات مثل OpenProcess و VirtualAllocEx و WriteProcessMemory و CreateRemoteThread.
  • يتطلب التخفيف ممارسات تطوير جيدة، وتكوين بحث آمن عن ملفات DLL، واستخدام عناصر تحكم مثل DEP وASLR وEDR.

توضيح لحقن ملفات DLL والمخاطر الأمنية

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

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

ما هو ملف DLL ولماذا هو مهم جدًا في نظام التشغيل ويندوز؟

مكتبة الارتباط الديناميكي (DLL) هي ببساطة مكتبة من التعليمات البرمجية المترجمة مسبقًا والتي يمكن لعدة تطبيقات مشاركتهابدلاً من وضع كل التعليمات البرمجية داخل الملف التنفيذي (.exe)، يسمح نظام التشغيل Windows للعديد من الوظائف الشائعة (الرسومات، والشبكات، والتشفير، والنوافذ، وما إلى ذلك) بالتواجد في ملفات .dll منفصلة.

تحديد مكتبات DLL
المادة ذات الصلة:
تحديد ملفات DLL الخطيرة على نظام Windows 11 الخاص بك

وهذا له عدة مزايا: يوفر مساحة الذاكرة والقرص لأن العديد من البرامج تشترك في نفس المكتبة في ذاكرة الوصول العشوائي (RAM)؛ يمكنها تحديث مكونات محددة دون إعادة تجميع التطبيق بأكمله؛ كما أنه يشجع على إعادة استخدام التعليمات البرمجية المختبرة والمحسّنة، بدلاً من "إعادة اختراع العجلة" في كل مرة.

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

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

حقن DLL

كيفية تحميل نظام ويندوز لملفات DLL: الربط الضمني، والربط الصريح، والربط عن طريق البحث

يمكن لنظام التشغيل ويندوز ربط ملفات DLL بطريقتين رئيسيتين: من خلال رابط ضمني ومن خلال رابط صريحإن فهم هذا الاختلاف أمر أساسي لفهم كل من حقن DLL واختطاف DLL.

في الربط الضمني، يتم تعريف مكتبة الارتباط الديناميكي (DLL) في جدول استيراد الملف التنفيذي. عند بدء تشغيل البرنامج، يقوم مُحمِّل ويندوز يقوم تلقائيًا بالبحث عن ملفات DLL اللازمة وتحميلها. قبل بدء تنفيذ الكود الرئيسي. إذا كان أحدها مفقودًا، فقد لا يبدأ التطبيق على الإطلاق.

في الربط الصريح، يكون البرنامج نفسه هو الذي يقوم، في وقت التشغيل، باستدعاء تحميل المكتبة / تحميل المكتبة إكس لتحميل مكتبة DLL محددة. المعامل الرئيسي هو lpLibFileNameوالذي يمكن أن يكون مسارًا مطلقًا (على سبيل المثال، C:\Windows\System32\mylib.dll) أو مجرد اسم الملف (mylib.dll).

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

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

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

الاختلافات بين برمجة ملف تنفيذي (EXE) وملف مكتبة ديناميكي (DLL).

من منظور التطوير، فإن كتابة ملف تنفيذي تختلف عن كتابة مكتبة الارتباط الديناميكي (DLL). عادةً ما يحتوي الملف التنفيذي على نقطة دخول في الدالة. رئيسي (أو WinMain في تطبيقات ويندوز)، وهو يتم استدعاؤها مباشرة بواسطة مُحمِّل نظام التشغيل عند إنشاء العملية.

أما ملف DLL، من ناحية أخرى، فيستخدم الوظيفة دللماين تُعدّ هذه الدالة نقطة دخول داخلية للمكتبة. ويتم تنفيذها عند تحميل أو إلغاء تحميل ملف DLL في عملية ما، أو عند إنشاء أو تدمير سلاسل العمليات داخل تلك العملية. يجب كتابة الكود الموجود داخل DllMain بعناية فائقة لأنه يُنفّذ في سياقات حساسة.

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

علاوة على ذلك، عند حقن ملف DLL في عملية ما، يرث امتيازاته وسياقهإذا تم تشغيل العملية بامتيازات المسؤول أو كخدمة نظام، فسيكون لملف DLL نفس مستوى الوصول، مما يسهل تصعيد الامتيازات واستمرارها.

تحميل ملفات DLL والبحث عنها في نظام التشغيل ويندوز

ما هو حقن العمليات ولماذا هو خطير للغاية؟

حقن العملية هو أسلوب يسمح إدخال وتنفيذ التعليمات البرمجية داخل مساحة الذاكرة الخاصة بعملية أخرى وهو أمر جارٍ بالفعل. ولا يقتصر الأمر على حقن ملفات DLL، بل يشمل حقن التعليمات البرمجية العشوائية، واختطاف الخيوط، وحقن APC، وتفريغ العمليات، وما إلى ذلك.

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

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

ليس من قبيل المصادفة أن العديد من تقنيات التهديد المتقدمة (APTs) وبرامج التجسس المصرفية والبرامج الضارة المستهدفة عملية إساءة استخدام الحقن للتجسس، وسرقة البيانات، وتعطيل الحلول الأمنية، أو الحفاظ على الوصول المستمر إلى الأنظمة المخترقة.

أساسيات ذاكرة العمليات في نظام التشغيل ويندوز

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

في العمليات ذات 32 بت نطاق افتراضي يتراوح نطاقها عادةً بين 0 و0x7FFFFFFFF، بينما في أنظمة 64 بت، يمتد نطاقها إلى أبعد من ذلك بكثير (على سبيل المثال، حتى 0x7FFFFFFFFFF). يتولى مدير ذاكرة ويندوز مسؤولية ترجمة هذه العناوين الافتراضية إلى صفحات فعلية من خلال الترحيل.

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

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

يوفر نظام التشغيل ويندوز واجهات برمجة تطبيقات منخفضة المستوى لمعالجة الذاكرة: VirtualAlloc / VirtualAllocEx لحجز الذاكرة وتوثيقها؛ VirtualProtect / VirtualProtectEx لتغيير الأذونات؛ قراءة ذاكرة العملية y كتابة ذاكرة العملية القراءة والكتابة في عمليات الآخرين؛ و virtualFree / virtualFreeEx لتحرير المناطق.

تقنيات الحقن الرئيسية للعملية

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

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

الطريقة الأكثر شيوعًا هي حقن ملفات DLL التقليدية. تتكون عملية العمل النموذجية من افتح العملية المستهدفة باستخدام OpenProcessقم بحجز الذاكرة في مساحتك باستخدام VirtualAllocEx لتخزين مسار DLL، واكتب هذا المسار باستخدام WriteProcessMemory، وأخيرًا، قم بإنشاء مؤشر ترابط بعيد باستخدام CreateRemoteThread الذي يستدعي LoadLibraryA/W باستخدام هذا المسار.

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

حقن التعليمات البرمجية المباشرة

هناك نوع آخر وهو حقن التعليمات البرمجية "الخالصة"، بدون مكتبة DLL وسيطة. فبدلاً من تمرير مسار المكتبة، يقوم المهاجم كتابة الشفرة البرمجية أو الشفرة الآلية مباشرة في منطقة الذاكرة القابلة للتنفيذ للعملية المستهدفة، ويتسبب في انتقال مؤشر ترابط بعيد إلى ذلك العنوان.

تتمحور العملية مرة أخرى حول VirtualAllocEx وWriteProcessMemory وCreateRemoteThread (أو ما يعادلها في مكتبة ntdll). والنتيجة هي نفسها: تشغيل كود برمجي عشوائي في سياق عملية شرعية، ولكن في هذه الحالة، دون الحاجة إلى وجود ملف DLL على القرص.

اختطاف الموضوع

بدلاً من إنشاء سلاسل عمليات جديدة، يفضل بعض المهاجمين اختطاف سلسلة عمليات موجودة داخل العمليةوللقيام بذلك، يستخدمون واجهات برمجة التطبيقات مثل SuspendThread لإيقاف مؤشر الترابط مؤقتًا، وGetThreadContext لقراءة حالته (السجلات، ومؤشرات التعليمات، وما إلى ذلك)، وSetThreadContext لإعادة توجيهه إلى التعليمات البرمجية الضارة الخاصة بهم، وأخيرًا، ResumeThread لمواصلة التنفيذ من الوجهة الجديدة.

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

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

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

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

حقن DLL العاكس

تتجاوز تقنية حقن ملفات DLL الانعكاسية برنامج تحميل ويندوز القياسي. يحتوي ملف DLL على مكوناته الخاصة. شاحن داخلي قادر على الربط بالذاكرة، وحل عمليات الاستيراد، وتطبيق عمليات النقل دون المرور عبر LoadLibrary.

يقوم المهاجم بحقن كلٍ من كود مكتبة الارتباط الديناميكي (DLL) وكود المُحمِّل المُخصَّص في العملية المستهدفة، ثم يُشغِّل المُحمِّل. ولأن هذه التقنية لا تتطلب وجود ملف على نظام الملفات، فإنها تُعدّ عرضةً للاختراق بشكل كبير. يقلل من مساحة القرص ويزيد من تعقيد عملية الكشف القائمة على القطع الأثرية التقليدية.

عملية التجويف

تتضمن عملية تفريغ العمليات إنشاء عملية شرعية في حالة تعليق (CreateProcess مع CREATE_SUSPENDED)، قم بإلغاء ربط صورتك الأصلية (NtUnmapViewOfSection/ZwUnmapViewOfSection)، حجز الذاكرة لصورة جديدة، وكتابة الملف التنفيذي الضار إليها باستخدام WriteProcessMemory، وإصلاح الرؤوس وعمليات النقل، وضبط سياق سلسلة العمليات الرئيسية (SetThreadContext) للإشارة إلى نقطة الدخول الجديدة، وأخيرًا استئنافها باستخدام ResumeThread.

والنتيجة هي أن مدير المهام يبدو أنه قيد التشغيل. عملية مشروعةلكن في الواقع، تم استبدال ذاكرتها برمز خبيث، والذي يعمل الآن بهوية وأذونات الملف الثنائي الأصلي.

ما هو اختطاف ملفات DLL أو اختطاف ملفات DLL؟

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

تخيل تطبيقًا يحاول تحميل ملف "mylib.dll" بدون مسار كامل. سيتحقق نظام التشغيل Windows أولاً من بعض الدلائل: دليل التطبيق نفسه، ودليل النظام، ومجلد Windows، ودليل العمل الحالي، والدلائل الموجودة في متغير PATH. بترتيب محدد يعتمد ذلك على وضع البحث الآمن.

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

استُخدمت هذه الحيلة منذ عصر ويندوز 2000 على الأقل، ولا تزال صالحة حتى اليوم، خاصةً عند تشغيل التطبيقات عند بدء تشغيل النظام أو مع امتيازات مرتفعةهذا يحول أي ملف DLL مخترق إلى مسار لتصعيد الامتيازات أو الاستمرار.

أنواع اختطاف ملفات DLL: التحميل الجانبي وملفات DLL الوهمية

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

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

ملفات DLL المعروفة، وWinSxS، وغيرها من المتجهات الخاصة

تحتفظ ويندوز بقائمة من ملفات DLL المعروفة في سجل النظام (على سبيل المثال، في HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs). إذا تطابق اسم ملف DLL مع أحد الملفات الموجودة في هذه القائمة، فسيستخدم النظام نسخته الموثوقة، مما يقلل من خطر اختراق تلك الوحدات النمطية المحددة.

ومع ذلك، توجد وسائل نقل أكثر تطوراً مثل التحميل الجانبي في WinSxSيحتوي المجلد C:\Windows\WinSxS على نسخ متعددة من ملفات DLL. تستخدم التطبيقات ملفات البيان لتحديد نسخة DLL التي سيتم تحميلها. من خلال التلاعب بهذه الملفات أو البيانات الوصفية، يُمكن إدخال ملفات DLL مزيفة يتعامل معها النظام على أنها صالحة.

وهناك ناقل آخر أقل وضوحًا وهو تعديل قائمة ملفات DLL المعروفة أو مفاتيح التسجيل ذات الصلة لتغيير ملفات DLL التي تُعتبر ملفات DLL خاصة بالنظام أو كيفية تحديدها. يمكن للمهاجم الذي يتمتع بصلاحيات كافية محاولة التلاعب بهذه الإدخالات لتفضيل تحميل مكتباته الخاصة.

كشف حقن العمليات واختطاف مكتبات الارتباط الديناميكي (DLL)

ليس من السهل اكتشاف هذه الأساليب، لأنها تعتمد على الآليات المشروعة للنظام ولأنّ الكثير من الأنشطة الخبيثة تحدث في الذاكرة. ومع ذلك، توجد عدة استراتيجيات فعّالة.

تحليل الذاكرة والسلوك

يتمثل أحد الأساليب في مراقبة مناطق الذاكرة الخاصة بالعمليات بحثًا عن مناطق تنفيذية غير عادية أو مناطق غير مرتبطة بوحدات نمطية صالحةتُعد الصفحات التي تحمل علامة PAGE_EXECUTE_READWRITE، والتغييرات المفاجئة في أذونات الذاكرة، أو وجود شفرة برمجية في مناطق لا تتوافق مع الملفات الثنائية للقرص، مؤشرات نموذجية.

كما يتم مراقبتهم التعديلات الديناميكية لخريطة الذاكرةيُعدّ إنشاء سلاسل العمليات والروابط غير المعتادة بين العمليات التي لا تتفاعل عادةً من المشكلات أيضاً. وتُطبّق العديد من أنظمة الكشف والاستجابة لنقاط النهاية الحديثة محركات ربط تكشف السلاسل المشبوهة مثل: OpenProcess → VirtualAllocEx → WriteProcessMemory → CreateRemoteThread.

مراقبة استدعاءات واجهة برمجة تطبيقات ويندوز

ثمة نهج آخر يتمثل في مراقبة استخدام واجهات برمجة التطبيقات الحيوية. ويعتمد نمط حقن العمليات النموذجي على عملية مفتوحة لفهم عملية الضحية، استخدم VirtualAllocEx y كتابة ذاكرة العملية لكتابة البيانات، والانتهاء بـ إنشاء موضوع بعيد، QueueUserAPC أو SetThreadContext لتشغيل التنفيذ.

وبالمثل، سلاسل استخدام تحميل المكتبة / تحميل المكتبة إكس يمكن أن تكشف المسارات المشبوهة، بالإضافة إلى SearchPath أو الاستخدام غير السليم لدليل العمل الحالي، عن محاولات اختطاف DLL أو التحميل المسبق غير الآمن.

أدوات مثل Process Monitor / Process Explorer

مع مرافق مثل مراقب العمليات (بروكمون) y عملية إكسبلورر من الممكن مراقبة ملفات .dll التي يفتحها أي برنامج في الوقت الفعلي، ومن أي مسارات، وما هي النتيجة. كما يمكن تطبيق عوامل تصفية لعرض ملفات DLL فقط والنتائج من النوع لم يتم العثور على الاسم، يمكن الكشف عنها محاولات تحميل فاشلة أو من مجلدات غير متوقعة.

إذا كان أحد التطبيقات يقوم بتحميل ملفات DLL من دليل المستخدم، أو من مسارات مؤقتة، أو من مواقع غير قياسية، فمن المستحسن التحقق مما إذا كانت تلك الأدلة يمكن للمستخدمين غير المصرح لهم الكتابة فيه. أو من خلال حسابات الخدمة.

نماذج الذكاء الاصطناعي والتعلم الآلي

بدأت بعض الحلول الحديثة، مثل بعض منصات SIEM وEDR، في استخدام نماذج التعلم الآلي لتحديد أنماط اختطاف مكتبات الارتباط الديناميكي (DLL). تأخذ هذه النماذج كمدخلات بيانات وصفية من العملية والمكتبة: المسارات، والحجم، والبنية الداخلية، والتوقيع الرقمي، وتغييرات الاسم، والموقع (قياسي أو غير قياسي)، وما إلى ذلك.

بدمج تلك المعلومات مع بيانات القياس عن بُعد المجهولة وسمعة السحابةقد يقوم النموذج بتصنيف محاولة تحميل ملف DLL غير عادي من مسار غير مألوف على أنها مشبوهة، حتى لو لم يكن الملف موجودًا في أي قاعدة بيانات معروفة للبرامج الضارة.

كيفية التخفيف من آثار حقن العمليات واختطاف مكتبات الارتباط الديناميكي (DLL)

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

أفضل الممارسات للمطورين

إذا كنت تبرمج في نظام ويندوز، فإن القاعدة الأولى واضحة: استخدم المسارات الكاملة كلما أمكن ذلك في LoadLibrary و CreateProcess و ShellExecute.لا تعتمد على ترتيب البحث الافتراضي لتحديد موقع ملفات DLL الهامة.

بالإضافة إلى ذلك، يُنصح بشدة بالاتصال SetDllDirectory(«») في بداية العملية، يتم حذف دليل العمل الحالي (CWD) من ترتيب البحث عن ملفات DLL. هذا يمنع المهاجم من استغلال دليل عمل مخترق لحقن مكتباته.

يُنصح أيضاً بتجنب أنماط مثل استخدام مسار البحث لتحديد موقع ملفات DLL التي يتم تحميلها بعد ذلك باستخدام LoadLibrary، لأن ترتيب البحث في SearchPath يختلف عن ترتيب البحث في LoadLibrary ويمكن أن يؤدي إلى نتائج غير متوقعة وغير آمنة.

عندما يكون ذلك ممكنا، استخدم قم بتوقيع ملفات DLL والتحقق من صحة التوقيع. قبل تحميلها. خيار آخر هو التحقق من قيمة التجزئة للمكتبة والتأكد من مطابقتها للقيمة المتوقعة. هذا يقلل من احتمالية تحميل ملف DLL مُعدّل، حتى لو كان موجودًا في المسار الصحيح.

إعدادات خاصة بنظام التشغيل ويندوز

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

توصية أساسية أخرى هي لا تقم بتثبيت التطبيقات في جذر محرك الأقراص (على سبيل المثال، C:\) لأن المجلدات التي تُنشأ هناك غالبًا ما ترث صلاحيات كتابة أوسع للمستخدمين المصادق عليهم. من الأفضل استخدام المسارات الموجودة ضمن مجلد "ملفات البرامج" أو المجلدات ذات قوائم التحكم بالوصول (ACLs) المُحكمة.

من المهم أيضاً ضبط السياسات بشكل صحيح، مثل التحكم في حساب المستخدم (UAC)، أو قفل التطبيقات (AppLocker)، أو التحكم في تطبيقات Windows Defender (WDAC) للحد من الملفات الثنائية وملفات DLL التي يمكن لكل عملية تحميلها، ولفرض سلامة التعليمات البرمجية (التوقيعات الصحيحة) حيثما أمكن ذلك.

ضوابط على مستوى النظام والتنظيم

على مستوى النظام، تقنيات مثل DEP (منع تنفيذ البيانات), ASLR (عشوائية تخطيط مساحة العنوان), حارس تدفق التحكم (CFG) o ضوء العملية المحمي (PPL) إنها تضع عقبات إضافية أمام تنفيذ التعليمات البرمجية في الذاكرة والتلاعب بالعمليات المحمية.

على مستوى الشبكة والمؤسسة، من الضروري الحفاظ على حلول محدثة لمكافحة الفيروسات وحلول الاستجابة لنقاط النهاية (EDR)بما أن العديد من متغيرات حقن DLL لا تزال قابلة للكشف باستخدام التوقيعات والأساليب الاستدلالية، فإن أدوات محددة مثل DLLSPY يمكن أن تساعد في تحديد ثغرات تصعيد الامتيازات القائمة على DLL.

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

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