إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

ثغرات DLL Hijacking Flaws

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • [شرح] ثغرات DLL Hijacking Flaws

    بسم الله الرحمن الرحيم

    اولا وقبل كل شيئ رمضانكم مبروك اتمنى من الله ان يدخله علينا وعلى الامة الاسلامية بالصحة والعافية ومغفرة الدنوب ان شاء الله.

    لقد ظهر مؤخرا وبما تحمله الكلمة من معنى تهديد جديد وهو ثغرات DLL Hijacking Flaws التي كانت تعتبرها Microsoft دات درجة تهديد منخفظة (خصوصا انها كانت تعتقد ان الاستغلال لن يتجاوز الحاسوب المحلي )فقد قام عدة اخصائي حماية وعلى راسهم HD Moore بالكشف عن طريقة لاستغلال هدا النوع من الثغرات التي كما اشرت سابقا لم يكن يحسب لها اي حساب واما الان فاصبحت تتصدر القائمة وبادن الله سوف احاول في هدا الموضوع المتواضع والدي كما اعتقد يطرح لاول مرة عربيا محاولة الكشف ولو عن جزء صغير من هدا التهديد الجديد فعلى بركة الله لننطلق.

    معظمنا ومعظم من يتعامل مع البرمجة بصفة عامة يعرف ان البرامج الحديثة تعتمد على مكتبات Dll لاستوراد بعض الدوال منها فلاداعي لاعادة برمجة الدوال ادا كانت قد برمجت اصلا ففي هدا توفير في الوقت و المجهود وبما ان الدوال المستخدمة في البرمجة منتشرة في مكتبات Dll هده الاخيرة قد لا تكون دائما في جهاز المستخدم فان المبرمجين يظطرون الى حزم هده المكتبات مع برامجهم فلنفترض اننا انشئنا برنامج ما فهدا البرنامج بمجرد بداه يبدا بتحميل مكتبات Dll ودلك لانه يحتاج الى الدوال الموجودة فيها وعملية التحميل هده تتم بطريقتين اما بطريقة يدوية حيث يتم تزويد البرنامج بالمسار الكامل للمكتبة او بطريقة ديناميكية فالنظام يحاول حينها ايجاد هده المكتبات بطريقة اوتوماتيكية ودلك باستخدام تقنية SafeDllSearchMode او اعداد SafeDllSearchMode هو ان صح التعبير قائمة بالمناطق التي يجدر بالنظام البحث فيها عن مكتبات Dll لتحميلها وهده هي القائمة :
    -الممجلد الدي تم تحميل البرنامج منه
    -مجلد system
    -مجلد 16-bit system هدل المجلد لا يستعمل من طرف اي برنامج ولكنه ومع دلك يتم البحث فيه
    -مجلد windows
    -المجلد الحالي
    -المجلدات الموجودة في متغير path environment

    لمعلومات اكثر يمكنكم اتباع هدا الرابط

    http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

    وهنا يكمن خطر الطريقة الاوتوماتيكية لاننا ببساطة يمكننا ان نستغل التحميل الغير الامن للمكتبات لانه بالطبع هناك طرق لتخطي هدا المشكل ومعظمها يتعلق بالمبرمج فادا كان هناك تحميل غير امن لهده المكتبات فالمخترق يمكنه حينها تنفيد اكود على جهازك ودلك بتحميل المكتبة الخاصة به فمثلا يمكننا ان ننشئ مكتبة ضارة بنفس اسم المكتبة الدي طلبها البرنامج وبالتالي نضمن تنفيد الكود الخاص بنا بالطبع الاستغلال عادة يكون محليا ولكن HD Moore تطرق الى فكرة استخدام network share وبالتالي جعل الاستغلال عن بعد .

    لناخد مثالا عن الاستغلال برنامج

    Microsoft PowerPoint 2010
    http://www.exploit-db.com/exploits/14723/

    كود PHP:

    #include <windows.h>
    #define DLLIMPORT __declspec (dllexport)

    DLLIMPORT void HrCreateConverter() { evil(); }

    int evil()
    {
      
    WinExec("calc"0);
      exit(
    0);
      return 
    0;

    الكود اعلاه يمثل كود المكتبة الضارة

    ولنرى الان سيناريو لعملية الاختراق (فيمكننا بالطبع في الكود اعلاه ان نقوم باي شيئ نريد) فالمخترق سوف يقوم بانشاء ملف ppt مثلا ثم يقوم بارفاق معه المكتبة المصابة وبمجرد ان يقوم البرنامج بطلب تحميل مكتبة pptimpconv.dll والتي تحميلها غير امن مما يجعلنا نخدع البرنامج ودلك بتحميل مكتبتنا الموجودة اعلاه لنلاحظ ظهور الالة الحاسبة على اي كما دكرت في الاول هدا مثال فقط وهدا جزء بسيط من خطر الثغرة خصوصا ان هده الاخيرة اصبحت الان من السهل الكشف عنها بواسطة اداة DLLHijackAuditKit.zip
    مثلا

    https://www.metasploit.com/redmine/p...ckAuditKit.zip

    وفي صدد كتابتي لهدا الموضوع ظهرت ثغرة في Firefox <= 3.6.8 في مكتبة dwmapi.dll
    مما ينبهنا الى حقيقة اساسية وهو ان عصر DLL Hijacking قد بدا.

  • #2
    لا يسعنى غير أن أقول اللهم زد المحتكرين مما يستحقون

    تعليق


    • #3
      *إضافة: فيديو يوضح كيفية الاستغلال http://www.offensive-security.com/of...loit-in-action/
      شكراً أخ محمد

      تعليق


      • #4
        السلام عليكم و رحمة الله تعالى و بركاته،

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

        لينوكس من ناحية أخرى يركز على استعمال مكتبات النظام، لذا فإن ال path لا تتضمن المجلد الحالي الذي به البرنامج ( . )، و ذلك للعلم المسبق بهاته الثغرة. و لكن رغم ذلك يمكن لبرنامج تحميل مكتبة أخرى غير مكتبة النظام بتغيير ld_library_path أو ملء ld_preload.

        لذا فإنه كما جاء في مقالة مايكروسوفت، مسؤولية التأمين تأتي على عاتق المبرمج ( و عاتق المستخدم أيضا ).

        في أمان الله

        تعليق

        يعمل...
        X