Swift-Attack
اختبارات وحدة للفرق الزرقاء للمساعدة في بناء عمليات الكشف عن بعض طرق ما بعد الاستغلال الشائعة لنظام macOS. لقد أدرجت بعض الأمثلة على ما بعد الاستغلال باستخدام كل من سطر الأوامر واستدعاءات API. الأمثلة المدرجة هنا لا تشمل كل شيء. بدلاً من ذلك، هذه مجرد بعض الأمثلة الشائعة التي اعتقدت أنها ستكون مفيدة لإجراء اختبارات وحدة حولها. أخطط لمواصلة إضافة المزيد من اختبارات الوحدة إلى هذا المشروع بمرور الوقت.
جميع هذه الاختبارات تعمل محليًا وتُعيد النتائج إلى stdout (أي أن Swift-Attack لا يتصل بأي خادم).
الخطوات:
-
git clone https://github.com/cedowens/Swift-Attack && cd Swift-Attack
-
تأكد من تثبيت Swift وأدوات المطور (يمكن التثبيت من متجر تطبيقات Mac)
-
قم ببناء calc.c لاختبار حقن dylib:
gcc -dynamiclib -o calc.dylib calc.c
-
swiftc -o Swift-Attack swift-attack.swift
-
./Swift-Attack -h

ملاحظة: تبعيات TTP الأخرى موجودة أدناه:
- تثبيت Go (لاختبار تفريغ الكوكيز)
- تثبيت Firefox (لاختبار حقن dylib)
الاستخدام:
يمكنك تشغيل Swift-Attack بخيار واحد أو خيارات متعددة
./Swift-Attack [option1] [option2]...
-
لقد أدرجت أيضًا ملف macro.txt بسيط (غير مُبهم) لاختبار علاقات الآباء-الأبناء حول تنفيذ ماكروات Office على macOS. لم أقم بإبهامه لأن التركيز ينصب على رؤية/كشف علاقة الآباء-الأبناء. إذا كنت ترغب في الاختبار باستخدام ماكرو مُبهم، لدي مستودع على github.com/cedowens/MacC2 يحتوي على ماكرو مُبهم.
-
لقد أدرجت فقط اختبارين للثبات (Launch Agent و Login Item). تحقق من مستودع Leo Pitt's persistent JXA على https://github.com/D00MFist/PersistentJXA للحصول على قائمة أكثر شمولاً لأمثلة الثبات.
اختبارات الوحدة المضمنة:
- مطالبة باستخدام الملف الثنائي osascript
- مطالبة عبر استدعاءات API
- تفريغ الحافظة باستخدام الملف الثنائي osascript
- تفريغ الحافظة باستخدام استدعاءات API
- لقطة شاشة باستخدام الملف الثنائي screencapture
- لقطة شاشة باستخدام استدعاءات API
- تفريغ سجل zsh
- تعداد أدوات الأمان
- الحصول على معلومات النظام باستخدام الملف الثنائي osascript
- الحصول على معلومات النظام عبر استدعاءات API
- تفريغ مفاتيح ssh و aws و gcp و azure على القرص
- تفريغ سجل المتصفح (Chrome, Safari, Firefox)
- تفريغ سجل Quarantine
- ماكرو Office: لقد أدرجت ماكرو Office بسيط يتصل بالمضيف المحلي. ملاحظة: سيقوم الماكرو باستدعاء curl لعمل طلب GET باستخدام python إلى http://127.0.0.1/testing عند تنفيذه بالنقر على زر "Enable Macros". سيتيح لك هذا اختبار عمليات الكشف عن علاقات الآباء-الأبناء حول تنفيذ الماكرو. ملاحظة: هذا الاختبار البسيط لا يتضمن أي إبهام، لأن الاختبار موجه أساسًا نحو علاقات الآباء-الأبناء. يمكنك استخدام مستودع آخر لدي على https://github.com/cedowens/MacC2 لاختبار الماكرو المُبهم. للاستخدام، ما عليك سوى لصق محتويات "macro.txt" في مستند Office، وحفظه كمستند مُمكّن للماكرو أو بتنسيق 97-2004 (مثل: .doc, .xls, إلخ)، ثم النقر على "Enable Macros" عند فتح المستند لتنفيذه.
- حزمة التثبيت: لقد أدرجت ملف TestInstaller.pkg لاختبار عمليات الكشف حول حزمة تثبيت أساسية. تتضمن حزمة التثبيت هذه سكريبت preinstall يعمل في bash ويضع ملف com.simple.agent.plist في /Library/LaunchDaemons/ وملف test.js (مطالبة منبثقة بسيطة) في /Library/Application Support/. يقوم ملف com.simple.agent.plist ببساطة بتشغيل osascript على /Library/Application Support/test.js. يتضمن أيضًا سكريبت postinstall يعمل في bash ويقوم بتحميل com.simple.agent.plist باستخدام launchctl load. أثناء الضغط على زر Control، انقر فوق Open على TestInstaller.pkg لتشغيله. سيقوم TestInstaller.pkg بوضع الملفات المذكورة أعلاه كمستخدم root.
- حمولات تجاوز CVE-2021-30657: نموذجين من الحمولات (كلاهما يقوم بعمل طلبات curl إلى localhost عند التفجير) لاختبار نوعين مختلفين من الحمولات التي تستغل cve-2021-30657. مزيد من المعلومات هنا: https://cedowens.medium.com/macos-gatekeeper-bypass-2021-edition-5256a2955508
- ثبات Launch Agent
- ثبات Login Item
- الوصول/نسخ قاعدة بيانات Keychain للمستخدم
- حقن Dylib
- تفريغ كوكيز Chrome