
OS X के लिए एक फोरेंसिक साक्ष्य संग्रह और विश्लेषण टूलकिट

OSXCollector OS X के लिए एक फोरेंसिक साक्ष्य संग्रह और विश्लेषण टूलकिट है।
संग्रह स्क्रिप्ट संभावित रूप से संक्रमित मशीन पर चलती है और एक JSON फ़ाइल आउटपुट करती है जो लक्ष्य मशीन का वर्णन करती है। OSXCollector plists, SQLite डेटाबेस और स्थानीय फ़ाइल सिस्टम से जानकारी एकत्र करता है।
फोरेंसिक संग्रह से लैस, एक विश्लेषक इस तरह के प्रश्न का उत्तर दे सकता है:
Yelp अधिकांश OSXCollector रनों के विश्लेषण को स्वचालित करता है, इसके आउटपुट को सिर्फ संदिग्ध चीजों के आसानी से पढ़ने योग्य और कार्रवाई योग्य सारांश में परिवर्तित करता है। स्वचालित OSXCollector आउटपुट विश्लेषण का अधिकतम लाभ उठाने का तरीका जानने के लिए OSXCollector Output Filters project देखें।
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
महत्वपूर्ण: कृपया सुनिश्चित करें कि आपकी Mac OS X मशीन पर python कमांड सिस्टम के साथ शिप किए गए डिफ़ॉल्ट Python इंटरप्रेटर का उपयोग करता है और इसे ओवरराइड नहीं किया गया है, उदा. brew के माध्यम से स्थापित Python संस्करण द्वारा। OSXCollector OS X लाइब्रेरीज़ के लिए कुछ देशी Python बाइंडिंग पर निर्भर करता है, जो आपके सिस्टम पर मूल रूप से स्थापित Python संस्करण के अलावा अन्य 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 फ़ाइल की प्रत्येक पंक्ति 1 जानकारी का टुकड़ा रिकॉर्ड करती है। कुछ सामान्य कुंजियाँ हैं जो प्रत्येक JSON रिकॉर्ड में दिखाई देती हैं:
osxcollector_incident_id: एक अद्वितीय ID जो प्रत्येक रिकॉर्ड में साझा होती है।osxcollector_section: इस रिकॉर्ड में डेटा का अनुभाग या प्रकार।osxcollector_subsection: डेटा के प्रकार का उपखंड या अधिक विस्तृत विवरण।फ़ाइलों का प्रतिनिधित्व करने वाले रिकॉर्ड के लिए कई उपयोगी कुंजियाँ हैं:
atime: फ़ाइल एक्सेस समय।ctime: फ़ाइल निर्माण समय।mtime: फ़ाइल संशोधित समय।file_path: फ़ाइल का निरपेक्ष पथ।md5: फ़ाइल सामग्री का MD5 हैश।sha1: फ़ाइल सामग्री का SHA1 हैश।sha2: फ़ाइल सामग्री का SHA2 हैश।डाउनलोड की गई फ़ाइलों का प्रतिनिधित्व करने वाले रिकॉर्ड के लिए:
xattr-wherefrom: डाउनलोड की गई फ़ाइल के स्रोत और रेफरर URL वाली एक सूची।xattr-quarantines: एक स्ट्रिंग जो बताती है कि किस एप्लिकेशन ने फ़ाइल डाउनलोड की।SQLite डेटाबेस की एक पंक्ति का प्रतिनिधित्व करने वाले रिकॉर्ड के लिए:
osxcollector_table_name: वह तालिका का नाम जिससे पंक्ति आती है।osxcollector_db_path: SQLite फ़ाइल का निरपेक्ष पथ।किसी विशिष्ट उपयोगकर्ता से जुड़े डेटा का प्रतिनिधित्व करने वाले रिकॉर्ड के लिए:
osxcollector_username: उपयोगकर्ता का नामOSXCollector टाइमस्टैम्प को YYYY-mm-dd hh:MM:ss प्रारूप में मानव-पठनीय दिनांक/समय स्ट्रिंग में बदलने का प्रयास करता है। यह स्वचालित रूप से विभिन्न टाइमस्टैम्प की पहचान करने के लिए heuristic का उपयोग करता है:
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.plistMac OS X स्टार्टअप के बारे में अधिक जानकारी यहाँ मिल सकती है: http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf
applications अनुभागस्थापित अनुप्रयोगों को हैश करता है और इंस्टॉल इतिहास एकत्र करता है:
/Applications~/Applications/Library/Receipts/InstallHistory.plistquarantines अनुभागक्वारंटाइन मूल रूप से वह जानकारी है जो 'क्या आप वाकई इसे चलाना चाहते हैं?' दिखाने के लिए आवश्यक है जब कोई उपयोगकर्ता इंटरनेट से डाउनलोड की गई फ़ाइल खोलने का प्रयास करता है। कुछ और विवरणों के लिए, क्वारंटाइन की 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 अनुभागFirefox प्रोफ़ाइल में विभिन्न SQLite डेटाबेस से जानकारी एकत्र करता है:
यह जानकारी ~/Library/Application Support/Firefox/Profiles से निकाली गई है
Firefox प्रोफ़ाइल फ़ोल्डर के बारे में अधिक जानकारी के लिए देखें http://kb.mozillazine.org/Profile_folder_-_Firefox
safari अनुभागSafari प्रोफ़ाइल में विभिन्न plists और SQLite डेटाबेस से जानकारी एकत्र करता है:
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, आदि - यह शुरू करने के लिए पर्याप्त है।
एक टाइमस्टैम्प से कुछ मिनट पहले और बाद में बस grep करना बढ़िया काम करता है:
$ 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 Output Filters project में ऐसे फ़िल्टर हैं जो OSXCollector के आउटपुट को संसाधित और रूपांतरित करते हैं। फ़िल्टर का लक्ष्य OSXCollector आउटपुट का विश्लेषण करना आसान बनाना है।
OSXCollector की कार्यक्षमता एक एकल फ़ाइल में संग्रहीत है: osxcollector.py। कलेक्टर को OS X के नंगे इंस्टॉलेशन पर बिना किसी अतिरिक्त पैकेज या निर्भरता के चलना चाहिए।
सुनिश्चित करें कि स्रोत कोड को संपादित करने से पहले सभी OSXCollector परीक्षण पास हो जाएँ। आप परीक्षण इस प्रकार चला सकते हैं: make test
स्रोत कोड में बदलाव करने के बाद, यह सत्यापित करने के लिए make test फिर से चलाएँ कि आपके बदलावों ने किसी भी परीक्षण को नहीं तोड़ा।
यह कार्य GNU जनरल पब्लिक लाइसेंस के तहत लाइसेंस प्राप्त है और 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:
वर्बोज़ आउटपुट और python ब्रेकपॉइंट्स को सक्षम करता है। यदि OSXCollector में कुछ गलत है, तो यह प्रयास करें।
$ sudo osxcollector.py -d