
يجمع بين حقن AppDomain Manager وتضمين shellcode في ملفات ثنائية موقعة لتجاوز كشف EDR/AV لحمولات فريق الاختراق الأحمر.
في الأيام القليلة الماضية كنت أجرب تقنية حقن مدير AppDomain وحققت نجاحًا جيدًا بها في مهام الفريق الأحمر السابقة ضد بعض أنظمة EDR. على الرغم من أن هذا جيد جدًا كناقل وصول أولي، أردت إصدار POC يساعد في إخفاء شيلكودك في مكان آخر. لا مزيد من ملفات DLL المضمنة في الشيلكود!
على الرغم من أنها تقنية ممتازة عند استخدامها بشكل مستقل، إلا أنها عندما تقترن بتقنية توصيل مثل إرسال C# ClickOnce داخل ملف ISO/ZIP/VHD/VHDX. المشكلة الحقيقية هي أن في 1 من كل 10 مرات، كان يتم اكتشاف DLL الخاص بـ appdomain بواسطة الاستدلالات AI/ML لبرنامج AV/EDR. وذلك لأن ملف DLL يحتاج إلى أن يُسقط على القرص قبل تهيئة appdomain. بصرف النظر عن تحميلات DLL عن بُعد في الوقت الحالي (مسارات UNC في .config)، فإن DLL الخاص بـ appdomain كان يحتوي على الشيلكود، وشعرت بشدة أن هذا هو سبب الاكتشاف الثابت المحتمل، لأن بقية الكود الذي هو استدعاءات WINAPI يمكن حلها ديناميكيًا وتعميتها جيدًا.
أردت تحسين هذه التقنية من حيث تقليل ما يحمله DLL في البداية. بدأت بإسقاط شيلكود مشفر في ملف منفصل على القرص إلى جانب DLL الحاقن، لكن بعد ذلك صادفت هذه المدونة الرائعة من Checkpoint حول حملة Zloader
النسخة المختصرة: يمكننا تضمين بيانات عشوائية في بعض الحقول داخل PE بطريقة لا تفسد توقيع الملف. لذلك سيتم تضمين بياناتنا وسيظل الملف التنفيذي موقّعًا رقميًا.
مزيد من المعلومات حول هذا - https://www.blackhat.com/docs/us-16/materials/us-16-Nipravsky-Certificate-Bypass-Hiding-And-Executing-Malware-From-A-Digitally-Signed-Executable-wp.pdf
لذا الفكرة هي تضمين شيلكود مشفر في ملف تنفيذي موقّع معروف مع الحفاظ على توقيعه كما فعل برنامج Zloader الخبيث. من خلال القيام بذلك، لن يحتوي DLL الخاص بـ AppDomain Manager على الشيلكود داخل نفسه بعد الآن، بل سيكون لديه فقط المنطق لاستخراج الشيلكود من ملف PE الثنائي الذي يقوم بتحميله لفك تشفيره وتنفيذه كسلسلة منفصلة. قد يؤدي هذا إلى تقليل معدل الكشف الثابت لـ DLL بينما يتم وضع الشيلكود الخاص بك بشكل جيد داخل ملف ثنائي موقّع.
كنت أحاول تحقيق ذلك عن طريق التلاعب اليدوي بعينات Zloader التي حصلت عليها من VirusTotal، لكن لاحقًا وجدت مشروعًا قام بالفعل بتنفيذ كل هذه التقنيات بشكل جيد - Sigflip. في هذا POC، استفدت من كود محمل Sigflip لبناء DLL الخاص بـ AppDomain ومحقن SigFlip لتضمين الشيلكود المشفر في ملف C# exe الخاص بنا.
لم يعد يتم تخزين كتل كبيرة من الشيلكود مثل شيلكود Cobalt Strike عديم الحالة على ملف DLL غير موقّع على القرص، بغض النظر عن تقنيات التعمية/الترميز المستخدمة. أصبح DLL أنظف وأصغر وأكثر خفاءً مع الحد الأدنى من الكود، مما يقلل من فرص الكشف.
SigFlip.exe -i "Z:\ZLoader\CasPol.exe" "Z:\ZLoader\x64-stageless.bin" "Z:\ZLoader\update.exe" "S3cretK3y"update.exe والذي سيكون PE موقّعًا رقميًا مع شيلكود مشفر مدمج فيه.csc /target:library /out:test.dll test.csهذا POC هو مجرد فكرة خطرت ببالي لدمج تقنيتين مختلفتين تمامًا لتجنب الدفاع معًا، مما سيساعدني ويساعد أعضاء الفريق الأحمر الآخرين في بناء حمولات تنفيذ أولية أفضل لعملياتهم. يستخدم هذا المشروع حقن AppDomain Manager كمثال، ولكن هذه الفكرة قابلة للتطبيق على تقنيات الحقن الأخرى أيضًا مثل - DLL SideLoading، DLL Hijacking إلخ.
الشكر الكامل لـ med0x2e، هذا POC مبني على مشروعه SigFlip