البحث عن دليل على التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL) باستخدام PowerShell وSysmon

منظر جانبي لمطور برمجيات يعمل على البرمجة باستخدام كمبيوتر في أثناء العمل من المنزل

مؤلف

John Dwyer

Head of Research

IBM Security X-Force

مؤخرًا، أصدرت X-Force Red أداة تُسمى Windows Feature Hunter، والتي تحدد أهداف التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL) على نظام Windows باستخدام Frida. لتوفير منظور إجراءات حماية مضادة للتحميل الجانبي لمكتبات الارتباطات الديناميكية، أصدرت X-Force Incident Response أداة SideLoaderHunter، وهي نصوص برمجية مخصصة لتحليل النظام وتكوين Sysmon ومصممة لتحديد أدلة التحميل الجانبي على أنظمة Windows. سيتناول هذا المنشور سبب اعتقاد IBM X-Force بأنّ هذه الأداة ضرورية، وسيوضح وظائفها، وسيحلل بعض حالات الاستخدام.

ما المقصود بالتحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL)؟

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

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

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

للمزيد من المعلومات حول التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL)، يُرجى الرجوع إلى تقنية MITRE ATT&CK T1574.002.

أحدث الأخبار التقنية، مدعومة برؤى خبراء

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

شكرًا لك! أنت مشترك.

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

نطاق تهديدات التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL)

لا يُعد التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL) تقنية جديدة، حيث إن ثغرة اختراق ترتيب البحث في Windows موجودة منذ ظهور Windows XP. رصدت X-Force تحميلاً جانبيًا لمكتبات الارتباطات الديناميكية (DLL) يستخدمه حصان طروادة المصرفي Metamorfo، والذي يسقط ملفات MSI خبيثة تستخرج ملفًا ثنائيًا موقعًا وملف DLL خبيثًا بهدف تنفيذ محمل البرنامج الضار في المرحلة الثانية. ونظرًا إلى ترتيب البحث الافتراضي المدمج في Windows، سيحمل الملف الثنائي الموقّع ملف DLL الخبيث ويستكمل مسار التنفيذ الخبيث.

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

على سبيل المثال، استفاد مشغل برامج الفدية REvil من ثغرة التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL) داخل ملف Windows Defender تنفيذي (MsMpEng.exe) لتحميل ملف DLL خبيث باسم mpsvc.dll يحتوي على حمولة برامج الفدية.

Mixture of Experts | 12 ديسمبر، الحلقة 85

فك تشفير الذكاء الاصطناعي: تقرير إخباري أسبوعي

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

اكتشاف التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL)

لم ترصد X-Force العديد من عناصر التهديد أو البرامج الضارة التي تستبدل الملفات الثنائية أو الوحدات الموجودة على النظام لتنفيذ هجوم التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL) لأن ذلك قد يتسبب في تعطل النظام أو ظهور أخطاء قد تؤدي إلى اكتشافه.

بدلاً من ذلك، تعتمد عناصر التهديد أو البرامج الضارة التي تستفاد من التحميل الجانبي لمكتبات الارتباطات الديناميكية (DLL) عادةً على سلوكين قبل تنفيذ الهجوم:

  1. زرع ملف تنفيذي موقّع في المجلد المستهدف مع ملف DLL الخبيث.
  2. نقل ملف Windows التنفيذي من System32 أو SysWow64 على الجهاز المستهدف إلى مجلد غير قياسي وزرع ملف DLL الخبيث داخل المجلد نفسه.

حالة الاستخدام الأولى هي منهجية اكتشاف مباشرة إلى حد ما. على الرغم من أن الملف الثنائي قد يكون موقعًا، فإن تنفيذه سيظل حالة شاذة ضمن مجموعة بيانات تنفيذ البرنامج. في مثال Metamorfo المذكور سابقًا، زرع البرنامج الضار أداة تفريغ الذاكرة من Avast والتي تُسمى AVDump32.exe، وقد أُعيدت تسميتها إلى jesus.exe، لتحمل ملف DLL خبيثًا بالتحميل الجانبي باسم dbghelp.dll.

في هذا المثال، نجح التعرف على jesus.exe من خلال إجراء تحليل التكرار على أسماء الملفات المسجلة ضمن مجموعة بيانات تنفيذ البرنامج.

تحليل التكرار على أسماء الملفات الثنائية في مجموعة بيانات تنفيذ البرنامج

الشكل 1: تحليل التكرار على أسماء الملفات الثنائية في مجموعة بيانات تنفيذ البرنامج

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

وبدلاً من ذلك، يمكن تصفية مجموعة بيانات تنفيذ البرنامج لتضمين أسماء الملفات التنفيذية التي تُوضع في System32 أو SysWow64 بشكل افتراضي فقط. في هذه الحالة، سيُجرى التحليل على جميع بيانات تنفيذ البرنامج المرتبطة بالملفات التنفيذية في System32 أو SysWow64 حيث لا يتطابق المسار الكامل للملف الثنائي مع المسار الافتراضي.

ولإجراء هذا التحليل، أنشئ جدول بحث للملفات التنفيذية الموجودة بشكل افتراضي في System32 وSysWow64 على أنظمة Windows، والتي ستعمل كمجموعة بيانات تحكم، يمكن لفرق الحماية من خلالها تحديد الحالات الشاذة.

سيعمل نص PowerShell البرمجي التالي على تعداد الملفات التنفيذية في System32 وSysWow64 وتصدير النتائج إلى ملف CSV.

يتيح استخدام sysbins.csv كمجموعة تحكم إمكانية التعرف على تنفيذ البرنامج ويوفر دليلاً على وجود تطبيقات Windows خارج مجلدات System32 أو SysWow64 الافتراضية.

$SysBinList = Get-ChildItem $env:SystemRoot\system32\
,$env:SystemRoot\syswow64\ -Recurse -ErrorAction SilentlyContinue | Where-Object
{($_.Extension -like “.exe”)} -ErrorAction SilentlyContinue | Select Name;$SysBinLobj
= $SysBinList.Name | select -Unique | Select-Object @{Name=’Name’;
Expression={$_}};$SysBinLobj | export-csv sysbins.csv -NoTypeInformation
تحليل التكرار على المسار الكامل للملفات الثنائية في System32

الشكل 2: تحليل التكرار على المسار الكامل للملفات الثنائية في System32

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

Side-LoadSide-Loading mspaint.exe (أُعيدت تسميته إلى notmspaint.exe) من خلال msftedit.dll

الشكل 3: Side-LoadSide-Loading mspaint.exe (أُعيدت تسميته إلى notmspaint.exe) من خلال msftedit.dll

تتمثل إحدى طرق اكتشاف الملفات التنفيذية التي أُعيدت تسميتها في إجراء مزيد من التحليل لقيم تجزئة الملفات التنفيذية في System32 وSysWow64 على أجهزة Windows أو جمع الاسم الداخلي للملفات التنفيذية من الأنظمة المستهدفة. ستسجل بعض حلول مراقبة تنفيذ العمليات مثل Sysmon الاسم الداخلي للملف التنفيذي عند التنفيذ. بالإضافة إلى ذلك، يتمكن PowerShell من تعداد اسم الملف الأصلي للملف التنفيذي بعد إعادة تسميته.

إدراج سمة اسم الملف الأصلي في PowerShell

الشكل 4: إدراج سمة اسم الملف الأصلي في PowerShell

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

$binarray=@()$SysBinList = Get-ChildItem $env:SystemRoot\system32\,$env:SystemRoot
\syswow64\ -Recurse -ErrorAction SilentlyContinue
| Where-Object {($_.Extension -like “.exe”)} -ErrorAction SilentlyContinue | Select FullName,Name

foreach($bin in $SysBinList)

{

$binhash = Get-FileHash $bin.FullName -Algorithm SHA1

$binobject = New-Object psobject

$binobject | Add-Member -MemberType NoteProperty -Name “Name” -Value $bin.Name

$binobject | Add-Member -MemberType NoteProperty -Name “Hash” -Value $binhash.Hash

$binarray += $binobject

}

$binarray | export-csv sysbinhash.csv -NoTypeInformation

الشكل 5: نصوص PowerShell البرمجية لجمع قيم تجزئة الملفات

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

وللتغلب على هذا التحدي، تنشر X-Force أدوات جمع البيانات بهدف جمع البيانات الوصفية من نقاط النهاية على نطاق واسع. إحدى هذه الأدوات هي SideLoadHunter، والتي ستحلل نقطة النهاية بحثًا عن ملفات DLL والملفات التنفيذية الموجودة ضمن ملفات تعريف المستخدم، وSystem32 وSysWow64. وبمجرد تحليل الملفات التنفيذية وملفات DLL، تُجري X-Force تحليلاً مقارنًا لتحديد الأدلة المحتملة على التحميل الجانبي لملفات DLL من خلال أسماء الملفات وقيم التجزئة والأسماء الداخلية. بالإضافة إلى ذلك، يُجرى تحليل آثار تنفيذ البرنامج بحثًا عن أدلة على وجود ملفات تنفيذية محملة جانبيًا ولم تعد موجودة على القرص. نُقلت هذه الأداة إلى PowerShell وهي متاحة للتنزيل من هنا.

SideLoadHunter

الدوال الرئيسية لأداة SideLoadHunter هي كما يلي:

  • Get-SideLoadDetect: دالة التحليل المقارن المصممة لتحديد المواقف التي يوجد فيها ملف System32/SysWow64 تنفيذي في مجلد المستخدم مع ملف DLL يتطابق اسمه مع اسم ملف System32/SysWow64 DLL ولكنه غير موقع من Microsoft.
  • Get-SusShimcache: لإجراء بعض عمليات اكتشاف الملفات التنفيذية المحملة جانبيًا والتي لم تعد موجودة على القرص، ستحلل SusShimcache إدخالات ShimCache للملفات التنفيذية في System32 وSysWow64 والتي نُفذت من موقع غير قياسي.
  • Get-SusExecs وGet-SusDLLs: تحلل النظام لتحديد موقع ملفات System32 وSysWow64 التنفيذية وملفات DLL التي لا توجد في موقعها الافتراضي.
تنفيذ Side-Loadhunter.ps1

الشكل 6: تنفيذ Side-Loadhunter.ps1

SideLoadDetect

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

يمكن العثور على قائمة كاملة بأهداف التحميل الجانبي هنا.

للمساعدة على اكتشاف أهداف التحميل الجانبي هذه في الوقت الفعلي، نقلت X-Force قائمة التحميل الجانبي المعروفة إلى تكوين Sysmon بهدف تسجيل عمليات تحميل الوحدات للملفات التنفيذية وملفات DLL المرتبطة بها.

يمكن العثور على تكوين Sysmon هنا.

حدث Sysmon من Side-Loadhunter.xml

الشكل 7: حدث Sysmon من Side-Loadhunter.xml

أكثر من System32 وSysWow64

بينما يستهدف كل من البرامج الضارة والخصوم عادةً الملفات التنفيذية داخل المجلدات System32 وSysWow64 للتحميل الجانبي، إلا أن إمكانية التحميل الجانبي لملف DLL في ملف تنفيذي ليست محصورة على تلك المجلدات. على سبيل المثال، من خلال الجهود التعاونية بين X-Force Incident Response وX-Force Red، يمكن إجراء تحميل جانبي للملف التنفيذي OneDriveStandaloneUpdater.exe، الموجود ضمن %userprofile%\appdata\local\Microsoft\OneDrive بشكل افتراضي على أنظمة Windows 10، عبر WofUtil.dll. والذي يوجد في %windir%\system32\ بشكل افتراضي.

التحميل الجانبي لملف OneDriveStandaloneUpdater.exe باستخدام WofUtil.dll

الشكل 8: التحميل الجانبي لملف OneDriveStandaloneUpdater.exe باستخدام WofUtil.dll

تُجري X-Force حاليًا مزيدًا من البحث لإنشاء قائمة أكثر شمولاً بالملفات التنفيذية وملفات DLL التي تُعد أهدافًا للتحميل الجانبي، لذا ترقبوا التحديثات المستقبلية.