
Un toolkit per la raccolta e l'analisi di prove forensi per OS X

OSXCollector è un toolkit di raccolta e analisi di prove forensi per OSX.
Lo script di raccolta viene eseguito su una macchina potenzialmente infetta e produce un file JSON che descrive la macchina bersaglio. OSXCollector raccoglie informazioni da plist, database SQLite e dal filesystem locale.
Grazie alla raccolta forense, un analista può rispondere a domande come:
Yelp automatizza l'analisi della maggior parte delle esecuzioni di OSXCollector, convertendo il suo output in un riepilogo facilmente leggibile e utilizzabile di solo le cose sospette. Dai un'occhiata al progetto OSXCollector Output Filters per sapere come sfruttare al meglio l'analisi automatizzata dell'output di OSXCollector.
osxcollector.py è un singolo file Python che funziona senza dipendenze su una normale macchina OSX. Questo rende molto semplice eseguire la raccolta su qualsiasi macchina - niente seccature con brew, pip, file di configurazione o variabili d'ambiente. Basta copiare il singolo file sulla macchina ed eseguirlo:
sudo osxcollector.py è tutto ciò che serve.
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
Se hai appena clonato il repository GitHub, osxcollector.py si trova all'interno della directory osxcollector/, quindi devi eseguirlo come:
$ sudo osxcollector/osxcollector.py
IMPORTANTE: assicurati che il comando python sulla tua macchina Mac OS X utilizzi l'interprete Python predefinito fornito con il sistema e non sia stato sovrascritto, ad esempio dalla versione di Python installata tramite brew. OSXCollector si basa su un paio di binding Python nativi per le librerie OS X, che potrebbero non essere disponibili in versioni di Python diverse da quella installata originariamente sul sistema.
In alternativa, puoi eseguire osxcollector.py specificando esplicitamente la versione di Python che desideri utilizzare:
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
L'output JSON del collettore, insieme ad alcuni file utili come i log di sistema, è stato impacchettato in un archivio .tar.gz per essere consegnato a un analista.
osxcollector.py ha anche molte opzioni utili per modificare il funzionamento della raccolta:
-i INCIDENT_PREFIX/--id=INCIDENT_PREFIX:
Imposta un identificatore utilizzato come prefisso del file di output. Il valore predefinito è osxcollect.
$ sudo osxcollector.py -i IncontinentSealord
Wrote 35394 lines.
Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
Sii creativo con i nomi degli incidenti, rende più facile ridere attraverso il dolore.
-p ROOTPATH/--path=ROOTPATH:
Imposta il percorso della radice del filesystem su cui eseguire la raccolta. Il valore predefinito è /. È ottimo per eseguire la raccolta sull'immagine di un disco.
$ sudo osxcollector.py -p '/mnt/pwned'
-s SECTION/--section=SECTION:
Esegue solo una parte della raccolta completa. Può essere specificato più di una volta. L'elenco completo delle sezioni e sottosezioni è:
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:
Raccogli il valore dei cookie.
Per impostazione predefinita, OSXCollector non scarica il valore di un cookie, poiché potrebbe contenere informazioni sensibili (es. ID di sessione).
-l/--collect-local-storage:
Raccogli i valori memorizzati nell'archiviazione locale dei browser web.
Per impostazione predefinita, OSXCollector non scarica i valori poiché potrebbero contenere informazioni sensibili.
-d/--debug:
Abilita output verboso e breakpoint Python. Se qualcosa non va con OSXCollector, prova questo.
$ sudo osxcollector.py -d
Il collettore produce un .tar.gz contenente tutti gli artefatti raccolti. L'archivio contiene un file JSON con la maggior parte delle informazioni. Inoltre, sono inclusi una serie di log utili dal sistema bersaglio.
Ogni riga del file JSON registra 1 informazione. Ci sono alcune chiavi comuni che appaiono in ogni record JSON:
osxcollector_incident_id: Un ID univoco condiviso da ogni record.osxcollector_section: La sezione o tipo di dati che questo record contiene.osxcollector_subsection: La sottosezione o descrittore più dettagliato del tipo di dati che questo record contiene.Per i record che rappresentano file ci sono alcune chiavi utili:
atime: L'ora di accesso al file.ctime: L'ora di creazione del file.mtime: L'ora di modifica del file.file_path: Il percorso assoluto del file.md5: Hash MD5 del contenuto del file.sha1: Hash SHA1 del contenuto del file.sha2: Hash SHA2 del contenuto del file.Per i record che rappresentano file scaricati:
xattr-wherefrom: Una lista contenente gli URL di origine e di riferimento per il file scaricato.xattr-quarantines: Una stringa che descrive quale applicazione ha scaricato il file.Per i record che rappresentano una riga di un database SQLite:
osxcollector_table_name: Il nome della tabella da cui proviene la riga.osxcollector_db_path: Il percorso assoluto del file SQLite.Per i record che rappresentano dati associati a un utente specifico:
osxcollector_username: Il nome dell'utenteOSXCollector tenta di convertire i timestamp in stringhe di data/ora leggibili dall'uomo nel formato YYYY-mm-dd hh:MM:ss. Utilizza euristiche per identificare automaticamente vari timestamp:
versionLa versione corrente di OSXCollector.
system_infoRaccoglie informazioni di base sul sistema:
kextRaccoglie le estensioni del kernel da:
/System/Library/Extensions/Library/Extensionsstartup