
أداة تعداد لنظام macOS مستوحاة من أداة Seatbelt الخاصة بـ harmjoy والمبنية على نظام Windows. المؤلف: Cedric Owens
SwiftBelt هي أداة تعداد لنظام macOS مستوحاة من أداة تعداد Seatbelt المستندة إلى Windows والمطورة من قبل @harmjoy. لا تستخدم SwiftBelt أي أدوات مساعدة لسطر الأوامر، وبدلاً من ذلك تستخدم كود Swift (باستخدام إطار عمل Cocoa، ومكتبات Foundation، ومكتبات OSAKit، إلخ) لتنفيذ تعداد النظام. يمكن الاستفادة من هذه الأداة من الجانب الهجومي لتنفيذ التعداد بمجرد الحصول على وصول إلى مضيف macOS. لقد تعمدت عدم تضمين أي دوال تسبب نوافذ منبثقة (مثال: تعداد سلاسل المفاتيح).
شكرًا لـ Ramos04 للمساهمة بكود للبحث عن أدوات Objective See المختلفة، وشكرًا لـ mattreduce للمساهمة بكود لتاريخ zshell بالإضافة إلى بيانات اعتماد azure.

تأكد من تثبيت Swift على مضيف macOS الخاص بك
من خلال الطرفية (Terminal)، انتقل إلى دليل SwiftBelt وقم بتشغيل: "swift build" لإنشاء الملف الثنائي. سيتم وضع الملف الثنائي في المجلد .build/debug داخل مجلد SwiftBelt وسيتم تسميته SwiftBelt.
انسخ إلى المضيف المطلوب وامسح سمة العزل ($ xattr -c SwiftBelt) واضبطه كملف قابل للتنفيذ ($ chmod +x SwiftBelt).
قم بالتفيذ
خيارات SwiftBelt:
-CheckFDA --> التحقق من صلاحية الوصول الكامل للقرص (Full Disk Access) دون إنشاء موجه TCC للمستخدم حتى لو لم تمنح Terminal أي صلاحيات TCC. يتم ذلك بالبحث عن TCC.db باستخدام استعلامات قاعدة بيانات Spotlight. سيعيد ما إذا كانت صلاحية FDA قد مُنحت بالفعل لسياق التطبيق الخاص بك أم لا.
-SecurityTools --> التحقق من وجود أدوات أمان شائعة لنظام macOS (على الأقل تلك التي أعرفها).
-SystemInfo --> التحقق من سياق التنفيذ الحالي، وصلاحية الوصول إلى TCC، معلومات النظام الأساسية، آخر وقت إقلاع، وقت الخمول، معلومات حول ما إذا كانت الشاشة مقفلة حاليًا أم لا، ومعلومات متغيرات البيئة.
-LockCheck --> التحقق مما إذا كانت الشاشة مقفلة حاليًا أم لا (أضفت هذا كتحقق منفصل بالإضافة إلى تضمينه ضمن SystemInfo).
-SearchCreds --> البحث عن بيانات اعتماد ssh/aws/azure/gcloud.
-Clipboard --> تفريغ محتويات الحافظة.
-RunningApps --> عرض جميع التطبيقات قيد التشغيل.
-ListUsers --> عرض حسابات المستخدمين المحليين.
-LaunchAgents --> عرض وكلاء الإطلاق (launch agents)، وخدمات الإطلاق (launch daemons)، وملفات تعريف التكوين.
-BrowserHistory --> محاولة سحب سجل Safari وFirefox وChrome وسجل الحجر الصحي (ملاحظة كمعلومة: إذا كان Chrome أو Firefox قيد التشغيل، فلن تتمكن الأداة من قراءة قاعدة البيانات المقفلة لاستخراج المعلومات). ومع ذلك، يمكن نسخ قاعدة البيانات المقفلة إلى مكان آخر وقراءتها منه.
-SlackExtract --> التحقق من وجود Slack، وإذا كان موجودًا، قراءة معلومات ملفات تعريف الارتباط والتنزيلات ومساحات العمل (الاستفادة من البحث الذي أجراه Cody Thomas).
-ShellHistory --> قراءة محتوى تاريخ الصدفة (Bash أو Zsh).
-Bookmarks --> قراءة الإشارات المرجعية المحفوظة في Chrome.
-ChromeUsernames --> القراءة من ~/Library/Application Support/Google/Chrome/Default/Login Data الذي يخزن عناوين URL مع أسماء المستخدمين لكل منها.
-UniversalAccessAuth --> القراءة من /Library/Preferences/com.apple.universalaccessAuthWarning.plist لعرض قائمة بالتطبيقات التي تلقى المستخدم منها مطالبات التفويض، إلى جانب 1 (قبول) أو 2 (رفض).
-StickieNotes --> قراءة محتويات أي ملفات ملاحظات لاصقة (Stickie Notes) مفتوحة على النظام.
-TextEditCheck --> التحقق من وجود مستندات TextEdit غير محفوظة ومحاولة قراءة محتويات الملف.
-JupyterCheck --> التحقق من وجود قاعدة بيانات ipython history (التي يستخدمها Jupyter notebook)، وإذا وُجدت، قراءة المحتويات (والتي تتضمن أوامر بايثون المنفذة).
لتشغيل جميع الخيارات:
./SwiftBelt
لتحديد خيارات معينة:
./SwiftBelt [option1] [option2] [option3]...
مثال:
./SwiftBelt -SystemInfo -Clipboard -SecurityTools ...
على الرغم من أن هذه الأداة لا تستخدم أي أدوات مساعدة لسطر الأوامر (والتي يسهل اكتشافها)، إلا أنها تقرأ من عدة ملفات على النظام يمكن اكتشافها بواسطة أي أدوات تستخدم إطار عمل Endpoint Security Framework (يتم التقاط قراءات الملفات هذه بشكل خاص بواسطة أحداث ES_EVENT_TYPE_NOTIFY_OPEN داخل ESF).