
Ein forensisches Toolkit zur Sammlung und Analyse von Beweisen für OS X

OSXCollector ist ein Toolkit für die forensische Beweissammlung und -analyse für OSX.
Das Sammlungsskript läuft auf einer potenziell infizierten Maschine und gibt eine JSON-Datei aus, die die Zielmaschine beschreibt. OSXCollector sammelt Informationen aus Plists, SQLite-Datenbanken und dem lokalen Dateisystem.
Mit der forensischen Sammlung ausgestattet, kann ein Analyst Fragen beantworten wie:
Yelp automatisiert die Analyse der meisten OSXCollector-Läufe und wandelt seine Ausgabe in eine leicht lesbare und umsetzbare Zusammenfassung nur der verdächtigen Dinge um. Schauen Sie sich das OSXCollector Output Filters-Projekt an, um zu erfahren, wie Sie die automatisierte OSXCollector-Ausgabeanalyse optimal nutzen können.
osxcollector.py ist eine einzelne Python-Datei, die ohne Abhängigkeiten auf einer Standard-OSX-Maschine läuft. Das macht es sehr einfach, die Sammlung auf jeder Maschine durchzuführen – kein Ärger mit brew, pip, Konfigurationsdateien oder Umgebungsvariablen. Kopieren Sie einfach die einzelne Datei auf die Maschine und führen Sie sie aus:
sudo osxcollector.py ist alles, was es braucht.
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
Wenn Sie gerade das GitHub-Repository geklont haben, befindet sich osxcollector.py im Verzeichnis osxcollector/, also müssen Sie es wie folgt ausführen:
$ sudo osxcollector/osxcollector.py
WICHTIG: Stellen Sie bitte sicher, dass der Befehl python auf Ihrem Mac OS X den standardmäßig mitgelieferten Python-Interpreter verwendet und nicht durch z.B. die über brew installierte Python-Version überschrieben wird. OSXCollector ist auf einige native Python-Bindungen für OS X-Bibliotheken angewiesen, die in anderen Python-Versionen als der ursprünglich auf Ihrem System installierten möglicherweise nicht verfügbar sind.
Alternativ können Sie osxcollector.py ausführen und dabei explizit die gewünschte Python-Version angeben:
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
Die JSON-Ausgabe des Sammlers wurde zusammen mit einigen hilfreichen Dateien wie Systemprotokollen in eine .tar.gz-Datei gebündelt, um sie an einen Analysten zu übergeben.
osxcollector.py hat auch viele nützliche Optionen, um die Funktionsweise der Sammlung zu ändern:
-i INCIDENT_PREFIX/--id=INCIDENT_PREFIX:
Legt eine Kennung fest, die als Präfix der Ausgabedatei verwendet wird. Der Standardwert ist osxcollect.
$ sudo osxcollector.py -i IncontinentSealord
Wrote 35394 lines.
Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
Seien Sie kreativ bei den Vorfallnamen, es macht es einfacher, über den Schmerz zu lachen.
-p ROOTPATH/--path=ROOTPATH:
Legt den Pfad zum Wurzelverzeichnis des Dateisystems fest, auf dem die Sammlung ausgeführt werden soll. Der Standardwert ist /. Dies ist ideal, um die Sammlung auf einem Datenträgerabbild durchzuführen.
$ sudo osxcollector.py -p '/mnt/powned'
-s SECTION/--section=SECTION:
Führt nur einen Teil der vollständigen Sammlung aus. Kann mehrmals angegeben werden. Die vollständige Liste der Abschnitte und Unterabschnitte ist:
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:
Sammelt den Wert von Cookies.
Standardmäßig gibt OSXCollector den Wert eines Cookies nicht aus, da er sensible Informationen enthalten kann (z.B. Session-ID).
-l/--collect-local-storage:
Sammelt die in den lokalen Speichern der Webbrowser gespeicherten Werte.
Standardmäßig gibt OSXCollector die Werte nicht aus, da sie sensible Informationen enthalten können.
-d/--debug:
Aktiviert ausführliche Ausgaben und Python-Breakpoints. Wenn etwas mit OSXCollector nicht stimmt, versuchen Sie dies.
$ sudo osxcollector.py -d
Der Sammler gibt eine .tar.gz-Datei aus, die alle gesammelten Artefakte enthält. Das Archiv enthält eine JSON-Datei mit dem Großteil der Informationen. Zusätzlich sind nützliche Protokolle aus den Systemlogs des Zielsystems enthalten.
Jede Zeile der JSON-Datei zeichnet 1 Information auf. Es gibt einige gemeinsame Schlüssel, die in jedem JSON-Datensatz vorkommen:
osxcollector_incident_id: Eine eindeutige ID, die von jedem Datensatz geteilt wird.osxcollector_section: Der Abschnitt oder die Art der Daten, die dieser Datensatz enthält.osxcollector_subsection: Der Unterabschnitt oder eine detailliertere Beschreibung der Art der Daten, die dieser Datensatz enthält.Für Datensätze, die Dateien repräsentieren, gibt es eine Reihe nützlicher Schlüssel:
atime: Die Zugriffszeit der Datei.ctime: Die Erstellungszeit der Datei.mtime: Die Änderungszeit der Datei.file_path: Der absolute Pfad zur Datei.md5: MD5-Hash des Dateiinhalts.sha1: SHA1-Hash des Dateiinhalts.sha2: SHA2-Hash des Dateiinhalts.Für Datensätze, die heruntergeladene Dateien repräsentieren:
xattr-wherefrom: Eine Liste mit den Quell- und Referrer-URLs für die heruntergeladene Datei.xattr-quarantines: Eine Zeichenkette, die beschreibt, welche Anwendung die Datei heruntergeladen hat.Für Datensätze, die eine Zeile einer SQLite-Datenbank repräsentieren:
osxcollector_table_name: Der Tabellenname, aus dem die Zeile stammt.osxcollector_db_path: Der absolute Pfad zur SQLite-Datei.Für Datensätze, die Daten darstellen, die einem bestimmten Benutzer zugeordnet sind:
osxcollector_username: Der Name des BenutzersOSXCollector versucht, Zeitstempel in menschenlesbare Datums-/Zeitzeichenfolgen im Format YYYY-mm-dd hh:MM:ss umzuwandeln. Es verwendet Heuristiken, um verschiedene Zeitstempel automatisch zu identifizieren:
version-AbschnittDie aktuelle Version von OSXCollector.
system_info-AbschnittSammelt grundlegende Informationen über das System:
kext-Abschnitt