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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
LazyHook — تجاوز التحليل السلوكي عن طريق تنفيذ كود خبيث داخل مكدسات استدعاء Microsoft الموثوقة، مكتبة خطاف بدون تصحيح (Patchless Hooking) لـ IAT/EAT. | Kitploit
أدوات/GitHubGitHub/hwbp/lazyhook
الاستغلالالتهرب من IDS/IPSتحليل البرمجيات الخبيثةالتعلم والتعليمالفريق الأحمرمكافحة الروبوتات
GitHubhwbp/lazyhook

LazyHook

تجاوز التحليل السلوكي عن طريق تنفيذ كود خبيث داخل مكدسات استدعاء Microsoft الموثوقة، مكتبة خطاف بدون تصحيح (Patchless Hooking) لـ IAT/EAT.

عرض المستودع
14825منذ 8 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

نظرة عامة

LazyHook هو إطار عمل خفي لربط استدعاءات الـ API (API Hooking) يتجاوز أنظمة منع التسلل على مستوى المضيف (HIPS) من خلال انتحال مكدس الاستدعاءات (Call Stack Spoofing). من خلال استغلال نقاط التوقف العتادية على مستوى المعالج (Hardware Breakpoints) ومعالجة الاستثناءات الموجهة (Vectored Exception Handling)، ينفّذ تعليمات برمجية عشوائية كما لو كانت صادرة من وحدات موثوقة موقّعة من مايكروسوفت — مما يخدع تمامًا محركات التحليل السلوكي التي تعتمد على فحص مكدس الاستدعاءات والتحقق من أصل الوحدات.

تجنّب التحليل السلوكي عبر تنفيذ تعليمات برمجية خبيثة داخل مكدسات استدعاءات مايكروسوفت الموثوقة
يستخدم نقاط توقف العتاد + VEH لاختطاف الدوال الشرعية وانتحال أصول الوحدات

المشكلة: برامج الأمان الحديثة

تراقب أنظمة منع التسلل على مستوى المضيف (HIPS) ومحركات التحليل السلوكي التطبيقات من خلال:

  • تحليل مكدس الاستدعاءات: تتبّع أصل وتدفق استدعاءات الـ API
  • التحقق من أصل الوحدات: التحقق مما إذا كان السلوك المشبوه صادرًا من وحدات موثوقة
  • التعرف على أنماط الـ API: اكتشاف التسلسلات الخبيثة (مثل: VirtualAlloc → WriteProcessMemory → CreateRemoteThread)
  • التحقق من عنوان الإرجاع: ضمان أن عناوين الإرجاع تشير إلى مقاطع برمجية شرعية

تستخدم أنظمة مثل Kaspersky System Watcher وWindows Defender وCylance وCrowdStrike جميعها أشكالًا مختلفة من هذه التقنيات.

الحل: انتحال مكدس استدعاءات موثوق

من خلال اختطاف دالة في تجميعة موقّعة من مايكروسوفت (مثل: System.Windows.Forms.dll، user32.dll)، يمكننا تنفيذ منطق برمجي عشوائي داخل مكدس استدعاءات يبدو شرعيًا تمامًا.

ملاحظة: من الممكن استخدام JmpHook، والذي سيربط الدالة MsgBox -> ثم يستدعي الكود المخصص لك مباشرة بعدها. لكن LazyHook لا يقوم بذلك

لماذا ينجح هذا؟

  1. الدالة المُختطفة موجودة في DLL من مايكروسوفت موثوق وموقّع رقميًا
  2. عند تنفيذ الحمولة (Payload)، يُظهر مكدس الاستدعاءات الوحدة الموثوقة باعتبارها المتصل
  3. لا تترك نقطة توقف العتاد أي تعديلات في الذاكرة، لذلك تنجح فحوصات التكامل

يرى برنامج الأمان السيناريو الثاني ويفكر: "MessageBoxA من user32.dll تستدعي واجهات برمجة تطبيقات ويندوز؟ هذا سلوك طبيعي."

كيف يعمل

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  1. Target Function Call                                │
│     ↓                                                    │
│  2. CPU Debug Register Triggers (DR0-DR3)               │
│     ↓                                                    │
│  3. EXCEPTION_SINGLE_STEP Raised                        │
│     ↓                                                    │
│  4. VEH Handler Intercepts Exception                    │
│     ↓                                                    │
│  5. Execution Redirected to Hook Function               │
│     ↓                                                    │
│  6. CallOriginal() Temporarily Disables Breakpoint      │
│     ↓                                                    │
│  7. Original Function Executes                          │
│     ↓                                                    │
│  8. Breakpoint Re-enabled                               │
└─────────────────────────────────────────────────────────┘

أنواع الربط (Hook)

ربط IAT (جدول عناوين الاستيراد)

يعترض الدوال المستوردة عن طريق تحديد عنوانها في IAT وتعيين نقطة توقف عتادية. يؤدي هذا إلى ربط الاستيراد المحدد في عمليتك.

root@kitploit:~
HookIAT("user32.dll", "MessageBoxA", HookFunction, &OriginalFunction);

ربط EAT (جدول عناوين التصدير)

يربط الدوال المُصدَّرة من DLL بشكل عام عن طريق حلّ عنوانها عبر جدول التصدير. يؤثر هذا على جميع استدعاءات ذلك التصدير.

root@kitploit:~
HookEAT("amsi.dll", "AmsiScanBuffer", HookFunction, &OriginalFunction);

عرض توضيحي لـ Entry.cpp

يعرض العرض التوضيحي المرفق ثلاثة سيناريوهات عملية:

1. ربط MessageBoxA عبر IAT

يعرض الربط عبر IAT من خلال اعتراض استدعاءات MessageBoxA وتعديل الرسالة المعروضة:

root@kitploit:~
int WINAPI HookMessageBoxA(HWND H, LPCSTR T, LPCSTR C, UINT U)
{
    printf("[*] MessageBoxA hooked!\n");
    return LazyHook::CallOriginal<int>(LazyHook::GetIatState(), H, "Hooked!", ">:)", U);
}

2. ربط CreateFileA عبر EAT (مثال معلَّق)

يعرض كيفية مراقبة عمليات الملفات عبر تسجيل استدعاءات CreateFileA:

root@kitploit:~
HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
    printf("[*] CreateFileA hooked: %s\n", Filename);
    return LazyHook::CallOriginal<HANDLE>(...);
}

3. تجاوز AMSI عبر ربط AmsiScanBuffer

يعرض تجاوز برامج الأمان عن طريق إجبار جميع فحوصات AMSI على إرجاع نتائج نظيفة:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    printf("[*] AmsiScanBuffer hooked! Bypassing...\n");
    HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Force clean regardless of content
    return OrgResult;
}

يختبر العرض التوضيحي تجاوز AMSI بفحص "Invoke-Mimikatz" (سلسلة معروفة بأنها خبيثة) ويُظهر تصنيفها على أنها نظيفة.

تفاصيل التنفيذ

إعداد سجلات التصحيح (Debug Registers)

root@kitploit:~
DR7 Layout (Simplified):
- Bits 0,2,4,6: Enable flags for DR0-DR3 (Local Enable)
- Bits 16-31: Breakpoint conditions (Execute, Write, IO, R/W)

يقوم الإطار بتهيئة DR7 من أجل:

  • تفعيل نقاط توقف التنفيذ (00b لشرط التنفيذ)
  • ضبط طول 1 بايت لدقة نقطة التوقف

معالجة الاستثناءات الموجهة (VEH)

يقوم معالج VEH بـ:

  1. التحقق مما إذا كان الاستثناء هو EXCEPTION_SINGLE_STEP
  2. مقارنة مؤشر التعليمات (RIP/EIP) مع الخطافات المسجلة
  3. إعادة توجيه التنفيذ إلى دالة الخطاف في حال وجود تطابق
  4. إرجاع EXCEPTION_CONTINUE_EXECUTION للاستئناف عند الخطاف

نمط CallOriginal

root@kitploit:~
template<typename Ret, typename... Args>
Ret CallOriginal(VehHookState* State, Args... args)
{
    RemoveHardwareBreakpoint(State->DrIndex);  // Disable temporarily
    Ret Result = ((FuncType)State->OriginalFunction)(args...);
    SetHardwareBreakpoint(State->OriginalFunction, State->DrIndex);  // Re-enable
    return Result;
}

أمثلة على حالات الاستخدام

1. تجاوز AMSI

يعرض العرض التوضيحي ربط AmsiScanBuffer لإجبار نتائج الفحص على أن تكون نظيفة:

root@kitploit:~
HRESULT WINAPI HookAmsiScanBuffer(...)
{
    HRESULT Result = LazyHook::CallOriginal<HRESULT>(...);
    (*Result) = AMSI_RESULT_CLEAN;  // Force clean result
    return Result;
}

يوضح هذا كيف يمكن تعديل سلوك برامج الأمان في وقت التشغيل عن طريق اعتراض استدعاءات الـ API الحساسة.

2. مراقبة استدعاءات الدوال

اربط CreateFileA لتسجيل الوصول إلى الملفات دون تعديل سلوك التطبيق:

root@kitploit:~
HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
    printf("File accessed: %s\n", Filename);
    return LazyHook::CallOriginal<HANDLE>(...);
}

الاستخدام المسؤول وإشعار قانوني

يعرض هذا الكود تقنيات مراوغة متقدمة من أجل:

  • البحث والتعليم في مجال الأمان
  • عمليات الفريق الأحمر في بيئات مصرّح بها
  • تحليل البرمجيات الخبيثة والبحث الدفاعي

⚠️ تحذير: قد ينتهك الاستخدام غير المصرّح به لتجاوز الضوابط الأمنية أو تعديل سلوك البرامج أو الالتفاف على الحمايات قوانين الاحتيال الحاسوبي (CFAA وGDPR والتشريعات المماثلة). يُقدَّم هذا الإطار لأغراض البحث الأمني التعليمي والمصرّح به فقط.


فهم التقنيات الهجومية يبني دفاعات أفضل.

تنزيل الأداة