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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
IconJector — حقن ملفات DLL في عملية المستكشف باستخدام الأيقونات | Kitploit
أدوات/GitHubGitHub/d419h/iconjector
الاستغلالما بعد الاستغلالالهندسة الاجتماعيةالفريق الأحمرتطوير الحمولاتالهجوم العدائي
GitHubd419h/iconjector

IconJector

حقن ملفات DLL في عملية المستكشف باستخدام الأيقونات

عرض المستودع
41549منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

IconJector

هذه تقنية حقن لملفات DLL في مستكشف Windows تستخدم مربع حوار تغيير الأيقونة في Windows.

يمكنها خداع المستخدمين لتحميل ملف DLL خبيث في عملية المستكشف الخاصة بهم:

https://github.com/0xda568/IconJector/assets/61665703/06428402-764c-4279-b762-1d01082552c8

بالإضافة إلى ذلك، يمكن استخدامها لحقن DLL من عملية أخرى في المستكشف:

https://github.com/0xda568/IconJector/assets/61665703/bbf53775-ad8d-422b-b186-663ff5074976

كيف تعمل؟

إلى جانب احتوائها على الكود البرمجي، تُستخدم ملفات DLL أيضًا لتخزين موارد مثل الأيقونات. في العرض التوضيحي يمكنك رؤية أن الأيقونات الافتراضية مخزّنة في shell32.dll:

image

في الواقع، في إصدارات Windows الحديثة، يتم تخزينها في shell32.dll.mui، لكنها ما تزال تُعرض على أنها shell32.dll

لكي تتمكن عملية المستكشف من عرض جميع الأيقونات المخزنة في ملف DLL داخل مربع الحوار، يجب عليها تحميل ملف DLL في الذاكرة حتى يمكن تحليله.

علاوة على ذلك، تمتلك ملفات DLL في Windows القدرة على تعريف دالة DllMain اختيارية، والتي يتم استدعاؤها عند تحميل ملف DLL أو إلغاء تحميله باستخدام دالتي LoadLibrary وFreeLibrary.

root@kitploit:~
BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpvReserved )  // reserved
{
    // Perform actions based on the reason for calling.
    switch( fdwReason ) 
    { 
        case DLL_PROCESS_ATTACH:
         // Initialize once for each new process.
         // Return FALSE to fail DLL load.
            break;

        case DLL_THREAD_ATTACH:
         // Do thread-specific initialization.
            break;

        case DLL_THREAD_DETACH:
         // Do thread-specific cleanup.
            break;

        case DLL_PROCESS_DETACH:
        
            if (lpvReserved != nullptr)
            {
                break; // do not do cleanup if process termination scenario
            }
            
         // Perform any necessary cleanup.
            break;
    }
    return TRUE;  // Successful DLL_PROCESS_ATTACH.
}

هذا يعني أنه إذا تم تحميل ملف DLL يحتوي على دالة DllMain بواسطة المستكشف، فإن الكود المعرّف في دالة DllMain سيُنفَّذ في ذاكرة المستكشف.

وهذا هو بالضبط ما يتم هنا. إضافة إلى ذلك، يتم إخفاء ملف DLL على هيئة أيقونة:

الأيقونة

«الأيقونة» هي في الواقع ملف DLL بسيط بامتداد .ico يفتح تطبيق الآلة الحاسبة مع مورد أيقونة تمت إضافته باستخدام Resource Hacker. (يمكن أيضًا إضافة الأيقونة في Visual Studio)

توجد بعض الحالات الشاذة فيما يتعلق بمظهر الأيقونة في عرض المجلد. لقد اختبرت هذا على إصدارين مختلفين من Windows 10 (الأحدث وإصدار أقدم) وعلى Windows 11.

Windows 10

في كلا إصدارَي Windows 10، لم يتم عرض الأيقونة المخزنة داخل ملف DLL عند تغيير الامتداد إلى .ico

win10 dll

ومع ذلك، في أحدث إصدار من Windows 10، عملت بشكل صحيح حتى حاولت فتح «الأيقونة» داخل تطبيق الصور. ومنذ ذلك الحين، لم أتمكن من إعادة تكرار ذلك.

new win10 icon

Windows 11

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

https://github.com/0xda568/IconJector/assets/61665703/748c1012-1d2c-47dd-915f-860ffc6d1b05

الحقن البرمجي لملف DLL

إلى جانب خداع المستخدم لتحميل ملف DLL يدويًا، أمام المهاجم أيضًا خيار استخدام هذه التقنية لحقن ملف DLL في عملية المستكشف برمجيًا:

أولًا، يتم إنشاء مجلد في المجلد المؤقت، ويتم فتح خصائص المجلد باستخدام SHObjectProperties. لاسترداد مقبض النافذة بغض النظر عن لغة النظام، يتم استخدام EnumWindows مع دالة استدعاء تتحقق من اسم المجلد المميز في كل نافذة مفتوحة.

callback function

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

لماذا؟

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

أيضًا، قد يكون نشر ملفات DLL متنكرة كملفات .ico ناقل هجوم مثيرًا للاهتمام.

الأدوات المستخدمة

للحصول على مقابض النوافذ الصحيحة، استخدمت Spy++، وهي أداة يتم تثبيتها مع Visual Studio.

spy++

شكر وتقدير

شكرًا جزيلًا لـ Bill G. من Microsoft على أيقونة المجلد الجميلة!

شكرًا لك، أيها الشخص العشوائي على الإنترنت، على أيقونة الحقن الجميلة!

تنزيل الأداة