
أداة للمساعدة في العمل في النقاط العمياء لـ EDRs
يتكون Pyramid من:
Pyramid مفيدة لأداء مهام ما بعد الاستغلال بطريقة مراوغة، من خلال تنفيذ أدوات هجومية من ملف ثنائي موقع (مثل python.exe) عن طريق استيراد تبعياتها في الذاكرة. يمكن تحقيق ذلك للأسباب التالية:
لمزيد من المعلومات، يرجى مراجعة عرض شرائح محادثة DEFCON30 - قرية الخصم "Python vs Modern Defenses" و هذا المنشور على مدونتي.
تم إنشاء هذه الأداة لإظهار استراتيجية تجاوز ضد أنظمة EDR بناءً على بعض افتراضات النقاط العمياء. إنها مزيج من التقنيات والأدوات الموجودة بالفعل بطريقة جديدة (على حد علمي) يمكن أن تساعد في تجاوز الدفاعات. القصد الوحيد من الأداة هو مساعدة المجتمع على زيادة الوعي حول هذا النوع من الاستخدام وتسريع الحل. إنها ليست ثغرة يوم صفر، وليست C2 لامعة كاملة المواصفات، تستغل Pyramid ما قد يكون نقاط عمياء في EDR وقد تم نشر الأداة علنًا لتسليط الضوء عليها. تم تضمين فقرة دفاعية، على أمل أن يتمكن خبراء الفريق الأزرق من المساهمة وتقديم حل أفضل ممكن للمشكلة التي تهدف Pyramid إلى تسليط الضوء عليها. يتم توفير جميع المعلومات للأغراض التعليمية فقط. اتبع التعليمات على مسؤوليتك الخاصة. لا يتحمل المؤلف ولا صاحب العمل أي مسؤولية عن أي ضرر أو خسارة مباشرة أو غير مباشرة تنشأ عن أي شخص أو منظمة.
تم إلهام التحميل في الذاكرة لـ Pyramid في البداية وتوسع بناءً على xorrior 's Empyre - Finder Class
snovvcrash بنى الوحدات النمطية mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py
يمكن تنفيذ قدرات وحدات Pyramid مباشرة من مُفسّر Python وهي حاليًا:
الميزات الرئيسية لخادم HTTP الخاص بـ Pyramid:
الميزات الرئيسية للقاعدة:
يمكن استخدام Pyramid مع مُفسّر Python موجود بالفعل على جهاز الهدف، أو عن طريق فك ضغط حزمة Python القابلة للتضمين الرسمية ثم تشغيل python.exe لتنفيذ قاعدة تحميل Python. هذه طريقة بسيطة لتجنب إنشاء نمط شجرة عمليات غير عادي والظهور كاستخدام عادي لتطبيق Python.
في Pyramid، تُستخدم قاعدة التحميل للوصول إلى خادم Pyramid عبر HTTP/S لجلب الوحدات والتبعيات.
الوحدات خاصة بالميزة التي تريد استخدامها وتحتوي على:
تم إصلاح تبعيات Python وتعديلها بالفعل ليتم استيرادها في الذاكرة دون تعارض.
يتوفر حاليًا 8 وحدات Pyramid:
git clone https://github.com/naksyn/Pyramid
إنشاء شهادات SSL لخادم HTTP:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
إذا كنت تريد استخدام شهادة SSL الموقعة الخاصة بك، فتأكد من:
على سبيل المثال، إذا كنت تريد استخدام pythonmemorymodule مع Pyramid، ضع حمولتك في مجلد Delivery_files، ثم افتح pythonmemorymodule.py وقم بتكوين المعلمات المطلوبة في أعلى البرنامج النصي، مثل اسم ملف الحمولة والإجراء الذي تريد استدعاءه بعد تحميل PE.
بمجرد تشغيل خادم Pyramid وإعداد البرنامج النصي الأساسي، يمكنك تعيين متغير pyramid_module في ملف Agent/cradle.py وتنفيذه على الهدف.
تم بناء القاعدة ليتم تشغيلها باستخدام المكتبات القياسية لـ Python.
مثال على تشغيل خادم HTTP الخاص بـ Pyramid باستخدام شهادة SSL مع توفير مصادقة أساسية، وتشفير ملفات التسليم باستخدام ChaCha وإنشاء تكوين الخادم تلقائيًا في الوحدات وطباعة قاعدة قابلة للصق لـ pythonmemorymodule:
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py
عند بدء التشغيل، يقوم pyramid.py بتحليل هيكل المجلد الخاص به للبحث عن key.pem و cert.pem وسيقوم بتسليم الملفات من مجلد Server.
https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195
لتنفيذ Pyramid دون إظهار موجه python.exe مرئي، يمكنك الاستفادة من pythonw.exe الذي لن يفتح نافذة وحدة تحكم عند التنفيذ وهو موجود في نفس حزمة Windows القابلة للتضمين. توضح الصورة التالية مثالاً على استخدام pythonw.exe لتنفيذ base-tunnel-socks5.py على جهاز بعيد دون فتح نافذة وحدة تحكم python.exe.

لا يدعم التحميل الديناميكي لوحدات Python بشكل أصلي استيراد ملفات *.pyd التي هي في الأساس ملفات dll. الحل العام الوحيد المعروف لي الذي يحل هذه المشكلة يوفره Scythe *(in-memory-execution) من خلال إعادة هندسة مُفسّر CPython. من أجل عدم فقدان التوقيع الرقمي، فإن أحد الحلول التي تسمح باستخدام حزمة Python القابلة للتضمين الأصلية يتضمن إسقاط ملفات pyd أو العجلات المطلوبة على القرص. لا ينبغي أن يكون لهذا آثار كبيرة على OPSEC في معظم الحالات، ومع ذلك ضع في اعتبارك أن العجلات التالية التي تحتوي على ملفات pyd يتم إسقاطها على القرص للسماح بإكمال التحميل الديناميكي: *. Cryptodome - مطلوب من قبل Bloodhound-Python و Impacket و DonPAPI و LaZagne *. bcrypt و cryptography و nacl و cffi - مطلوب من قبل paramiko
ملف python.exe هو ملف ثنائي موقع يتمتع بسمعة جيدة ولا يوفر رؤية للكود الديناميكي لـ Python. تستغل Pyramid خصائص التهرب هذه من خلال تنفيذ مهام هجومية من داخل نفس عملية python.exe.
لهذا السبب، سيكون أحد أكثر الحلول فعالية هو حظر الملفات الثنائية و dll الموقعة من مؤسسة Python افتراضيًا، مع إنشاء استثناءات فقط للمستخدمين الذين يحتاجون بالفعل إلى استخدام ملفات Python الثنائية.
يمكن أيضًا إطلاق تنبيهات على تنزيل الحزم القابلة للتضمين.
نشر PEP-578 ممكن أيضًا على الرغم من تعقيده، هذا نموذج تنفيذ. ومع ذلك، فإن نشر PEP-578 دون حظر استخدام ملفات Python الثنائية القياسية يمكن أن يجعل هذا الإجراء المضاد عديم الفائدة.