
أداة لجمع وتحليل الأدلة الجنائية لنظام OS X

OSXCollector هي مجموعة أدوات لجمع وتحليل الأدلة الجنائية لنظام OSX.
يعمل سكريبت الجمع على جهاز قد يكون مصابًا ويخرج ملف JSON يصف الجهاز المستهدف. يقوم OSXCollector بجمع المعلومات من ملفات plist وقواعد بيانات SQLite ونظام الملفات المحلي.
باستخدام المجموعة الجنائية، يمكن للمحلل الإجابة على أسئلة مثل:
تقوم Yelp بأتمتة تحليل معظم عمليات تشغيل OSXCollector، محولة مخرجاته إلى ملخص سهل القراءة وقابل للتنفيذ عن الأشياء المشبوهة فقط. اطّلع على مشروع مرشحات مخرجات OSXCollector لتعلم كيفية تحقيق أقصى استفادة من التحليل الآلي لمخرجات OSXCollector.
osxcollector.py هو ملف Python واحد يعمل دون أي تبعيات على جهاز OSX قياسي. هذا يجعله سهلًا جدًا لتشغيل الجمع على أي جهاز - لا داعي للتعامل مع brew أو pip أو ملفات التهيئة أو متغيرات البيئة. فقط انسخ الملف الواحد على الجهاز وشغّله:
sudo osxcollector.py هو كل ما يلزم.
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
إذا كنت قد استنسخت مستودع GitHub للتو، فإن osxcollector.py موجود داخل مجلد osxcollector/، لذا تحتاج لتشغيله كالتالي:
$ sudo osxcollector/osxcollector.py
هام: يُرجى التأكد من أن الأمر python على جهاز Mac OS X الخاص بك يستخدم المفسّر الافتراضي للـ Python المرفق مع النظام وأنه لم يتم استبداله، على سبيل المثال، بإصدار Python المثبّت عبر brew. يعتمد OSXCollector على بعض روابط Python الأصلية لمكتبات OS X، والتي قد لا تكون متاحة في إصدارات Python أخرى غير تلك المثبّتة أصلاً على نظامك.
بدلاً من ذلك، يمكنك تشغيل osxcollector.py مع تحديد إصدار Python الذي ترغب في استخدامه صراحةً:
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
تم تجميع مخرجات الجمع بصيغة JSON، بالإضافة إلى بعض الملفات المفيدة مثل سجلات النظام، في ملف .tar.gz لتسليمها إلى المحلل.
يحتوي osxcollector.py أيضًا على العديد من الخيارات المفيدة لتغيير طريقة العمل:
-i INCIDENT_PREFIX/--id=INCIDENT_PREFIX:
يحدد معرّفًا يُستخدم كبادئة لملف الإخراج. القيمة الافتراضية هي osxcollect.
$ sudo osxcollector.py -i IncontinentSealord
Wrote 35394 lines.
Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
ابتكر أسماء حوادث إبداعية، فهذا يجعل من السهل الضحك في خضم الألم.
-p ROOTPATH/--path=ROOTPATH:
يحدد المسار إلى جذر نظام الملفات لتشغيل الجمع عليه. القيمة الافتراضية هي /. هذا رائع لتشغيل الجمع على صورة قرص.
$ sudo osxcollector.py -p '/mnt/powned'
-s SECTION/--section=SECTION:
يشغّل جزءًا فقط من الجمع الكامل. يمكن تحديده أكثر من مرة. القائمة الكاملة للأقسام والأقسام الفرعية هي:
versionsystem_infokextstartup
launch_agentsscripting_additionsstartup_itemslogin_itemsapplications
applicationsinstall_historyquarantinesdownloads
downloadsemail_downloadsold_email_downloadschrome
historyarchived_historycookieslogin_datatop_sitesweb_datadatabaseslocal_storagepreferencesfirefox
cookiesdownloadsformhistoryhistorysignonspermissionsaddonsextensioncontent_prefshealth_reportwebapps_storejson_filessafari
downloadshistoryextensionsdatabaseslocalstorageextension_filesaccounts
system_adminssystem_userssocial_accountsrecent_itemsmailfull_hash$ sudo osxcollector.py -s 'startup' -s 'downloads'
-c/--collect-cookies:
يجمع قيمة ملفات تعريف الارتباط (الكوكيز).
افتراضيًا لا يقوم OSXCollector بتفريغ قيمة الكوكي، حيث قد تحتوي على معلومات حساسة (مثل معرف الجلسة).
-l/--collect-local-storage:
يجمع القيم المخزنة في التخزين المحلي لمتصفحات الويب.
افتراضيًا لا يقوم OSXCollector بتفريغ القيم لأنها قد تحتوي على معلومات حساسة.
-d/--debug:
يفعل إخراجًا مفصلاً ونقاط توقف بايثون. إذا كان هناك خطأ ما في OSXCollector، جرّب هذا.
$ sudo osxcollector.py -d
يقوم الجمع بإخراج ملف .tar.gz يحتوي على جميع القطع الأثرية المجمّعة. يحتوي الأرشيف على ملف JSON مع معظم المعلومات. بالإضافة إلى ذلك، يتم تضمين مجموعة من السجلات المفيدة من سجلات النظام المستهدف.
يسجل كل سطر من ملف JSON قطعة واحدة من المعلومات. هناك بعض المفاتيح الشائعة التي تظهر في كل سجل JSON:
osxcollector_incident_id: معرف فريد مشترك بين كل سجل.osxcollector_section: القسم أو نوع البيانات الذي يحمله هذا السجل.osxcollector_subsection: القسم الفرعي أو واصف أكثر تفصيلاً لنوع البيانات الذي يحمله هذا السجل.بالنسبة للسجلات التي تمثل ملفات، هناك مجموعة من المفاتيح المفيدة:
atime: وقت الوصول إلى الملف.ctime: وقت إنشاء الملف.mtime: وقت تعديل الملف.file_path: المسار المطلق للملف.md5: تجزئة MD5 لمحتويات الملف.sha1: تجزئة SHA1 لمحتويات الملف.sha2: تجزئة SHA2 لمحتويات الملف.بالنسبة للسجلات التي تمثل ملفات تم تنزيلها:
xattr-wherefrom: قائمة تحتوي على روابط المصدر والمرجع للملف الذي تم تنزيله.xattr-quarantines: سلسلة تصف أي تطبيق قام بتنزيل الملف.بالنسبة للسجلات التي تمثل صفًا من قاعدة بيانات SQLite:
osxcollector_table_name: اسم الجدول الذي يأتي منه الصف.osxcollector_db_path: المسار المطلق لملف SQLite.بالنسبة للسجلات التي تمثل بيانات مرتبطة بمستخدم معين:
osxcollector_username: اسم المستخدميحاول OSXCollector تحويل الطوابع الزمنية إلى سلاسل تاريخ/وقت قابلة للقراءة البشرية بتنسيق YYYY-mm-dd hh:MM:ss. يستخدم استدلالات للتعرف تلقائيًا على مختلف الطوابع الزمنية:
versionالإصدار الحالي من OSXCollector.
system_infoيجمع المعلومات الأساسية عن النظام:
kextيجمع إضافات النواة من:
/System/Library/Extensions/Library/Extensionsstartupيجمع معلومات حول LaunchAgents و LaunchDaemons و ScriptingAdditions و StartupItems وعناصر تسجيل الدخول الأخرى من:
/System/Library/LaunchAgents/System/Library/LaunchDaemons/Library/LaunchAgents~/Library/LaunchAgents/Library/LaunchDaemons/System/Library/ScriptingAdditions/Library/ScriptingAdditions/System/Library/StartupItems/Library/StartupItems~/Library/Preferences/com.apple.loginitems.plistيمكن العثور على مزيد من المعلومات حول بدء تشغيل Max OS X هنا: http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf
applicationsيجمع تجزئات التطبيقات المثبتة وسجل التثبيت من:
/Applications~/Applications/Library/Receipts/InstallHistory.plistquarantinesالحجر الصحي (Quarantines) هو أساسًا المعلومات اللازمة لإظهار رسالة 'هل أنت متأكد أنك تريد تشغيل هذا؟' عندما يحاول المستخدم فتح ملف تم تنزيله من الإنترنت. لمزيد من التفاصيل، اطّلع على شرح دعم Apple للحجر الصحي: http://support.apple.com/kb/HT3662