
أداة لجمع وتحليل الأدلة الجنائية لنظام 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:
يشغّل جزءًا فقط من الجمع الكامل. يمكن تحديده أكثر من مرة. القائمة الكاملة للأقسام والأقسام الفرعية هي:
versionيقوم الجمع بإخراج ملف .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
يجمع هذا القسم أيضًا معلومات من فحص البرامج الضارة القائم على التجزئة XProtect للملفات المحجورة. ملف plist موجود في:
/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist
يضيف XProtect أيضًا إصدارات دنيا للإضافات الإضافية للإنترنت. ملف plist ذلك موجود في:
/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist
downloadsيجمع تجزئات جميع ملفات التنزيل للمستخدمين من:
~/Downloads~/Library/Mail Downloads~/Library/Containers/com.apple.mail/Data/Library/Mail Downloadschromeيجمع المعلومات التالية من متصفح الويب Google Chrome:
يتم استخراج هذه البيانات من ~/Library/Application Support/Google/Chrome/Default
firefoxيجمع المعلومات من قواعد بيانات SQLite المختلفة في ملف تعريف Firefox:
يتم استخراج هذه المعلومات من ~/Library/Application Support/Firefox/Profiles
لمزيد من التفاصيل حول مجلد ملف تعريف Firefox، انظر http://kb.mozillazine.org/Profile_folder_-_Firefox
safariيجمع المعلومات من مختلف ملفات plist وقواعد بيانات SQLite في ملف تعريف Safari:
accountsيجمع معلومات حول حسابات المستخدمين:
/private/var/db/dslocal/nodes/Default/groups/admin.plist/private/var/db/dslocal/nodes/Default/users~/Library/Accounts/Accounts3.sqlite~/Library/Preferences/com.apple.recentitems.plistmailيجمع تجزئات الملفات في أدلة تطبيق البريد:
~/Library/Mail~/Library/Mail Downloadsfull_hashيجمع تجزئات جميع الملفات على القرص. كلها. لا يتم تشغيل هذا افتراضيًا. يجب تفعيله باستخدام:
$ sudo osxcollector.py -s full_hash
التحليل الجنائي هو مزيج من الفن والعلم. سيرى كل محلل قصة مختلفة قليلاً عند قراءة مخرجات OSXCollector. وهذا جزء مما يجعل التحليل ممتعًا.
بشكل عام، يتم إجراء الجمع على جهاز مستهدف لأن شيئًا ما مريب: اكتشف مكافح الفيروسات ملفًا لا يعجبه، أو رصد فحص الحزم العميق استدعاءً، أو لاحظ مراقبة نقطة النهاية عنصر تشغيل جديد. تفاصيل هذا التنبيه الأولي - مسار ملف، طابع زمني، تجزئة، نطاق، عنوان IP، إلخ - هذا يكفي للبدء.
ببساطة، البحث عن بضع دقائق قبل وبعد طابع زمني يعمل بشكل رائع:
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'
إنه موجود. أداة مثل jq يمكن أن تكون مفيدة جدًا لإخراج متقدم:
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'
$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'
يحتوي مشروع مرشحات مخرجات OSXCollector على مرشحات تقوم بمعالجة وتحويل مخرجات OSXCollector. الهدف من المرشحات هو جعل تحليل مخرجات OSXCollector سهلاً.
وظائف OSXCollector مخزنة في ملف واحد: osxcollector.py. يجب أن يعمل الجمع على تثبيت عارٍ لـ OS X دون أي حزم أو تبعيات إضافية.
تأكد من اجتياز جميع اختبارات OSXCollector قبل تحرير كود المصدر. يمكنك تشغيل الاختبارات باستخدام: make test
بعد إجراء تغييرات على كود المصدر، قم بتشغيل make test مرة أخرى للتحقق من أن تغييراتك لم تكسر أيًا من الاختبارات.
هذا العمل مرخص بموجب رخصة جنو العمومية العامة وهو مشتق من https://github.com/jipegit/OSXAuditor
هل تريد معرفة المزيد عن أدلة OS X الجنائية؟
بعض الأدوات الأخرى المثيرة للاهتمام:
system_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