
اكتشاف اختطاف DLL الآلي، والتحقق منه، والتأكيد عليه. تحويل الأخطاء المحلية في التهيئة إلى مسارات هجوم مؤكدة ومسلحة.
اكتشاف، تحقق، وتأكيد آلي لاختطاف DLL
تحويل الأخطاء المحلية في الإعدادات إلى مسارات هجوم مؤكدة وجاهزة للاستغلال.
DLLHijackHunter هي أداة آلية لاكتشاف اختطاف DLL على نظام Windows تتجاوز التحليل الثابت. تكتشف، وتتحقق، وتؤكد فرص اختطاف DLL باستخدام خط أنابيب متعدد المراحل:
معظم أدوات اختطاف DLL تتوقف عند "قد يكون هذا DLL قابلاً للاختطاف." DLLHijackHunter تحاول التحقق من ذلك، ومطابقته مع معلومات استغلال معروفة، وتأكيد مسارات التنفيذ الفعلية حيثما أمكن.
flowchart TB
subgraph Phase1["المرحلة 1: الاكتشاف"]
SE["المحرك الثابت<br/>الخدمات، المهام، بدء التشغيل،<br/>COM، مفاتيح التشغيل"]
AE["محرك AutoElevate<br/>Manifest + تجاوز UAC عبر COM"]
PE["محلل PE<br/>جداول الاستيراد، التحميل المؤجل،<br/>Manifests، الصادرات"]
ETW["محرك ETW<br/>مراقبة تحميل DLL<br/>في الوقت الفعلي"]
SO["حاسبة ترتيب<br/>البحث"]
end
subgraph Phase2["المرحلة 2: خط أنابيب التصفية"]
direction LR
HG["البوابات الصارمة<br/>(إقصاء ثنائي)"]
SG["البوابات المرنة<br/>(تعديل الثقة)"]
end
subgraph Phase3["المرحلة 3: التحقق من التحميل (--verify-load)"]
LP["LoadProbe<br/>اختبار تحميل عملية فرعية<br/>وضع وإزالة DLL تجريبي"]
end
subgraph Phase4["المرحلة 4: Canary"]
CB["باني DLL الكناري"]
TE["منفذ التشغيل"]
VF["التحقق"]
end
subgraph Phase5["المرحلة 5: المخرجات"]
SC["مقيّم متدرج"]
RC["تقرير وحدة التحكم"]
RJ["تقرير JSON"]
RH["تقرير HTML"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
| النوع | الوصف | التخفي | الحالة |
|---|---|---|---|
| Phantom | DLL غير موجود في أي مكان على القرص | عالي | منفذ |
| ترتيب البحث | وضع DLL في وقت أبكر في ترتيب بحث Windows | عالي | منفذ |
| Side-Loading | استغلال تحميل التطبيقات الشرعية لملفات DLL من دليلها | عالي | منفذ (مسار النسخ إلى temp عبر AutoElevate) |
| إعادة توجيه .local | الاختطاف عبر إعادة توجيه دليل .local | عالي | منفذ |
| ENV PATH | استغلال الأدلة القابلة للكتابة في PATH النظام | عالي | منفذ (خريطة خدمات/DLL منسقة) |
| AppInit DLLs | استغلال سجل AppInit_DLLs | منخفض | منفذ |
| AppCert DLLs | استغلال سجل AppCertDLLs (يُحمّل في كل مستدعي CreateProcess/WinExec) | منخفض | منفذ |
| CWD | اختطاف دليل العمل الحالي | منخفض | مخطط — لا يُنتج حالياً من أي مسار اكتشاف |
يتم تعداد إدخالات IFEO Debugger وتحليل الملف التنفيذي المرجعي لاستيرادات DLL، ولكن لا يوجد نوع اختطاف مخصص لـ IFEO/تجاوز KnownDLL — لا يتم الإعلان عنها كاكتشافات مستقلة.
يتضمن DLLHijackHunter اكتشافاً مخصصاً لتجاوز UAC:
System32 وSysWOW64 بحثاً عن ملفات EXE تحتوي على <autoElevate>true</autoElevate> في الـ manifests المدمجةHKLM\SOFTWARE\Classes\CLSID بحثاً عن كائنات COM مع Elevation\Enabled=1SetDllDirectory أو SetDefaultDllDirectories، محاكاة مسار الهجوم "نسخ EXE إلى مجلد قابل للكتابة + إسقاط DLL"Resources/hijacklibs.json. التطابق يعزز الثقة ويربط النتيجة بصفحة مرجع HijackLibs الخاصة بها؛ غياب التطابق لا يعني شيئاً. مجموعة البيانات مدفوعة بالبيانات — قم بتحديثها بإعادة تنزيل https://hijacklibs.net/api/hijacklibs.json فوق هذا المورد (بدون تغييرات في الكود). مجموعة البيانات © مشروع HijackLibs والمساهمين.PATH القابلة للكتابة وتوليد مرشحين للاختطاف لخريطة منسقة من خدمات Windows الأصلية المعروفة بالبحث في PATH عن ملفات DLL مفقودةيقلل خط الأنابيب النتائج الإيجابية الكاذبة عبر مرحلتين:
البوابات الصارمة
api-ms-*, ext-ms-*)Users / Authenticated Users / Everyone، بالإضافة إلى حسابات خدمات فرعية مقاومة لتسريب الامتيازات مثل LOCAL SERVICE/NETWORK SERVICE) حقوق كتابة فعلية. الأهم من ذلك، يتم حساب هذا بشكل مستقل عن الرمز المميز الذي تعمل به الأداة، لذا فإن التشغيل بصلاحيات مرتفعة لا يجعل System32/Program Files تبدو قابلة للكتابة. هذا ما يجعل التشغيل بصلاحيات مرتفعة ذا معنى لفرز LPE.البوابات المرنة
LoadLibraryExبدلاً من التخمين، يحاول DLLHijackHunter إثبات نجاح الاختطافات:
sequenceDiagram
participant H as DLLHijackHunter
participant B as باني DLL الكناري
participant T as منفذ التشغيل
participant V as الملف التنفيذي الضحية
H->>B: بناء DLL كناري
B->>B: استخراج كناري مُجمّع مسبقاً<br/>(أو تجميع وكيل مع MSVC)
B-->>H: canary.dll + مسار ملف التأكيد
H->>H: وضع DLL في مسار الاختطاف
H->>T: تشغيل الملف التنفيذي
T->>V: بدء خدمة / تشغيل مهمة / تفعيل COM
V->>V: تحميل DLL الكناري
V-->>H: كتابة ملف التأكيد<br/>PID، الامتيازات، مستوى السلامة
H->>H: تسجيل: CONFIRMED
H->>H: تنظيف DLL الكناري
DLL الكناري:
%ProgramData%\DLLHijackHunter\canary_<hash>.confirm)، لذا يعمل ملف ثنائي واحد لكل مرشح. يحسب الماسح نفس التجزئة من مسار النشر ويستقصي عن ذلك الملف.الملفات الثنائية المدمجة مبنية من المصدر القابل للتدقيق في src/DLLHijackHunter/Resources/canary_src.c ويمكن إعادة توليدها باستخدام Resources/build_canary.bat (يتطلب مجموعة أدوات MSVC C++؛ الماسح الضوئي لا يتطلبها).