حالة الموضوع:
مغلق
  1. unCoder

    unCoder Developer

    الأنتساب:
    ‏3 ديسمبر 2012
    المشاركات:
    11
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الإقامة:
    NTOSKRNL
    [​IMG]

    R I N G (Zer0) H O O K
    kernel-mode hooking

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

    [COLOR=Teal]فيجب أن نستعد لمرحلة جديدة ومتقدمة [/COLOR][SIZE=3][COLOR=Teal]في هذا المجال الرائع [/COLOR]
    [SIZE=3][SIZE=3][/SIZE][/SIZE][/SIZE]

    [​IMG]

    بعد أن نكون على إطلاع كافي وإستعداد تام لعمل هوك على أي دالة تخطر في رأسك
    فأنت مستعد للخوض في هذا الصراع فهنا لن نستخدم إلا الناتيف [ Native ]

    في البداية يجب أن نعلم بأن النظام ينقسم إلى :

    Ring3 : Usermode
    Ring2
    Ring1
    Ring0 : kernelmode

    الـ Ring3 وهو رينق اليوزر مود هي الطبقة اللتي نعمل عليها وكل الهوكات السابقة كانت عليها
    لكن لماذا تم تقسيم النظام بهذا الشكل ؟ كما نعلم أن نواة النظام (ntoskrnl.exe) لو تعاملنا معها بشكل مباشر فأي خطأ قد يخل بالنظام كامل ويتسبب في سقوطه لذلك تم تقسيم النظام بهذا الشكل فالأخطاء في الرينق3 لن تتسبب في إطاحة النظام بأكمله

    [​IMG]

    كيف يعمل النظام حيث الـ API Calls ؟

    لنأخد على سبيل المثال دالة ResumeThread
    فعند مانريد إستدعاء هذه الدالة نبدء بإستدعائها من kernel32

    فما اللذي يحدث هل فعلا يتم تنفيذها والتعامل مع المعالج من هنا مباشرة بالطبع لا .. فالكيرنل ( نواة الوندوز ) هي ماتقوم بكل هذا لكن كيف يصل الإستدعاء لها

    يتم نقل الإستدعاء من kernel32 إلى الناتيف الخاص بالدالة في ntdll
    NtResumeThread

    ثم كل مايحدث في الـ ntdll هو تجهيز البارمترات وفتح باب الدخول للـRING0
    عن طريقة دالة KiFastSystemCall
    لو نقحنا مايحدث خلال الإستدعاء سنرى طريقة إستدعاء هذه الدالة بكل بساطة



    [​IMG]

    فكنا نرى يتم وضع رقم الدالة في EAX
    ثم يتم عمل إجراءات إستدعاء الدالة

    وماتنفذه هذه الدالة بالفعل هي نقل البارمترات إلى المسجل EDX ثم نقل العملية إلى النواة عن طريق
    SYSENTER - SYSCALL - INT 2E ..
    وتختلف العملية من نظام لاخر

    [​IMG]


    [​IMG]

    اما الآن فقد وصلنا لل Ring0
    فما اللذي يحدث هنا

    في هذه المرحلة تكون الدوال موجودة ومرتبة في مايدعى بالـ SSDT
    System Service Descriptor Table
    الموجودة في ( ntkrnlpa.exe )
    وهي النواة المسوؤلة عن أغلب apis الوندوز

    فيتم تمرير الإستدعاء للدالة KiFastCallEntry في النواة واللتي يتم وضعها ادرسها
    عند البوت في > IA32_SYSENTER_EIP طبقة الـ MSR
    ثم عند إستدعائها يبدء البحث عن الدالة في الـ SSDT ومن ثم إستدعائا

    كما توجد أداة رائعة من عمل فريق AT4RE تمكنك من الإطلاع على محتوى SSDT
    إسم الأداة Kernel Detective



    [​IMG]

    فكنا نرى الآن هذا محتوى الـ SSDT واللذي يحتوي على رقم وعنوان وادرس الدالة الاصلي والحالي بالإضافة إلى الموديول ( الدرايفر ) اللذي يحتوي الدالة

    درايفر ( Driver ) ?

    نعم , كنا في اليوزر مود نتعامل بالـ dll librarys اما في النواة فسنبدء بالتحول إلى الدرايفر
    Device Driver > x.sys

    كما نلاحظ في الصورة السابقة أنه توجد دالة حمراء اللون ما السبب ؟
    كما أن الدرايفر المسؤول عنها مختلف , وهو درايفر الأفسات بالإضافة إلى ادرسها الحالي مختلف عن الأصلي

    فنستنتج أنه لعمل هوك في الكرنل مود نحتاج لعمل درايفر يحمل دالتنا ونغير ادرس الدالة المطلوبه في الـ SSDT إلى ادرسنا المطلوب .


    [​IMG]

    في الدرس القادم سنتطرق لكيفية برمجة الدرايفر وتحميله للنواة ومخاطره
    بالإضافة للوصول للـ SSDT والتعديل عليها وعمل الهوك وغيرها من التفاصيل المشوقة

    إضافة :
    الحمايات تستخدم هذا النوع من الهوك وهو آخر امتداد(مرحلة) للهوك في الوندوز

    بعض الملاحظات :

    الـring0 يختلف تماما عن الـ ring3 ومنعزل عنه فهو يملك الذاكرة الخاصة به فلايمكننا الوصل لذاكرته من الرينق3


    وايضا ماتكلمنا عنه اليوم لايمكن تلخيصه وإستيعابه في موضوع واحد فلابد من المزيد من البحوثات والقراءة فالموضوع أكبر من ذلك لدى رجاءآ لاتتوقفوا عند هذا الموضوع

    هنا ينتهي درسنا لليوم وأتمنى أن ينال على إعجابكم
    والسلام عليكم ورحمة الله وبركاته
     
  2. Shдd0w

    Shдd0w Developer

    الأنتساب:
    ‏9 ديسمبر 2011
    المشاركات:
    42
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    الوظيفة:
    xXxXx
    الإقامة:
    مـــصـــر
    رد: Ring0 hook - الهوك الأكثر تقدم ماهو Part1

    يا رجل يا ذيب ..:{17}:

    شكراً لك يا بطل
     
  3. ś‡òÞ Ħąć

    ś‡òÞ Ħąć Developer

    الأنتساب:
    ‏20 مارس 2013
    المشاركات:
    64
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    رد: Ring0 hook - الهوك الأكثر تقدم ماهو Part1

    موضوع أكثر من رائع
    جزاك الله خيرا
    دمت بود :{12}:​
     
  4. win-hacker

    win-hacker Developer

    الأنتساب:
    ‏1 ديسمبر 2012
    المشاركات:
    4
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الإقامة:
    مصر
    رد: Ring0 hook - الهوك الأكثر تقدم ماهو Part1

    شكرا لك يا غالي​
     
  5. slam

    slam ExpErt DeveloPer

    الأنتساب:
    ‏14 سبتمبر 2011
    المشاركات:
    238
    الإعجابات المتلقاة:
    5
    نقاط الجائزة:
    18
    الإقامة:
    MY HOME
    رد: Ring0 hook - الهوك الأكثر تقدم ماهو Part1

    جزاك الله كل خير ,
    مجهود رائع سلمت الايادي
     
  6. ҢącҜęЯ

    ҢącҜęЯ .:: <font color="#669999"><b>أستاذ مشارك</b></font Developer

    الأنتساب:
    ‏26 ديسمبر 2011
    المشاركات:
    77
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الوظيفة:
    مكتشف ثغرات
    الإقامة:
    (KsA)
    رد: Ring0 hook - الهوك الأكثر تقدم ماهو Part1

    ما شاء الله يا حبيبي
    سلمت يداك يا اخى
    فى تقدم :{1}:
     
حالة الموضوع:
مغلق

مشاركة هذه الصفحة