
Un kit d'outils de collecte et d'analyse de preuves forensiques pour OS X

OSXCollector est une boîte à outils de collecte et d'analyse de preuves numériques pour OSX.
Le script de collecte s'exécute sur une machine potentiellement infectée et génère un fichier JSON qui décrit la machine cible. OSXCollector rassemble des informations à partir de plists, de bases de données SQLite et du système de fichiers local.
Armé de la collecte de preuves, un analyste peut répondre à des questions comme :
Yelp automatise l'analyse de la plupart des exécutions d'OSXCollector en convertissant sa sortie en un résumé facilement lisible et exploitable de seulement les éléments suspects. Découvrez le projet OSXCollector Output Filters pour apprendre à tirer le meilleur parti de l'analyse automatisée de la sortie d'OSXCollector.
osxcollector.py est un fichier Python unique qui s'exécute sans aucune dépendance sur une machine OSX standard. Cela rend très facile l'exécution de la collecte sur n'importe quelle machine - pas besoin de se soucier de brew, pip, fichiers de configuration ou variables d'environnement. Copiez simplement le fichier unique sur la machine et exécutez-le :
sudo osxcollector.py est tout ce qu'il faut.
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
Si vous venez de cloner le dépôt GitHub, osxcollector.py se trouve dans le répertoire osxcollector/, vous devez donc l'exécuter comme suit :
$ sudo osxcollector/osxcollector.py
IMPORTANT : assurez-vous que la commande python sur votre machine Mac OS X utilise l'interpréteur Python par défaut fourni avec le système et qu'il n'est pas outrepassé, par exemple par la version Python installée via brew. OSXCollector repose sur quelques liaisons Python natives pour les bibliothèques OS X, qui pourraient ne pas être disponibles dans d'autres versions de Python que celle installée à l'origine sur votre système.
Alternativement, vous pouvez exécuter osxcollector.py en spécifiant explicitement la version de Python que vous souhaitez utiliser :
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
La sortie JSON du collecteur, ainsi que quelques fichiers utiles comme les journaux système, a été regroupée dans un fichier .tar.gz pour être remise à un analyste.
osxcollector.py possède également de nombreuses options utiles pour modifier le fonctionnement de la collecte :
-i INCIDENT_PREFIX/--id=INCIDENT_PREFIX :
Définit un identifiant utilisé comme préfixe du fichier de sortie. La valeur par défaut est osxcollect.
$ sudo osxcollector.py -i IncontinentSealord
Wrote 35394 lines.
Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
Soyez créatif avec les noms d'incidents, cela permet de rire à travers la douleur.
-p ROOTPATH/--path=ROOTPATH :
Définit le chemin vers la racine du système de fichiers sur lequel exécuter la collecte. La valeur par défaut est /. C'est idéal pour exécuter la collecte sur l'image d'un disque.
$ sudo osxcollector.py -p '/mnt/powned'
-s SECTION/--section=SECTION :
Exécute uniquement une partie de la collecte complète. Peut être spécifié plusieurs fois. La liste complète des sections et sous-sections est :
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 :
Collecte la valeur des cookies. Par défaut, OSXCollector ne vide pas la valeur d'un cookie, car elle peut contenir des informations sensibles (par exemple l'identifiant de session).
-l/--collect-local-storage :
Collecte les valeurs stockées dans le stockage local des navigateurs web. Par défaut, OSXCollector ne vide pas les valeurs car elles peuvent contenir des informations sensibles.
-d/--debug :
Active la sortie détaillée et les points d'arrêt Python. Si quelque chose ne va pas avec OSXCollector, essayez ceci.
$ sudo osxcollector.py -d
Le collecteur produit un fichier .tar.gz contenant tous les artefacts collectés. L'archive contient un fichier JSON avec la majorité des informations. De plus, un ensemble de journaux utiles provenant des journaux du système cible est inclus.
Chaque ligne du fichier JSON enregistre 1 élément d'information. Il existe quelques clés communes qui apparaissent dans chaque enregistrement JSON :
osxcollector_incident_id : Un identifiant unique partagé par chaque enregistrement.osxcollector_section : La section ou le type de données que cet enregistrement contient.osxcollector_subsection : La sous-section ou le descripteur plus détaillé du type de données que cet enregistrement contient.Pour les enregistrements représentant des fichiers, il y a plusieurs clés utiles :
atime : L'heure d'accès au fichier.ctime : L'heure de création du fichier.mtime : L'heure de modification du fichier.file_path : Le chemin absolu vers le fichier.md5 : Le hachage MD5 du contenu du fichier.sha1 : Le hachage SHA1 du contenu du fichier.sha2 : Le hachage SHA2 du contenu du fichier.Pour les enregistrements représentant des fichiers téléchargés :
xattr-wherefrom : Une liste contenant les URL source et de référence pour le fichier téléchargé.xattr-quarantines : Une chaîne décrivant quelle application a téléchargé le fichier.Pour les enregistrements représentant une ligne d'une base de données SQLite :
osxcollector_table_name : Le nom de la table d'où provient la ligne.osxcollector_db_path : Le chemin absolu vers le fichier SQLite.Pour les enregistrements qui représentent des données associées à un utilisateur spécifique :
osxcollector_username : Le nom de l'utilisateurOSXCollector tente de convertir les horodatages en chaînes de date/heure lisibles par l'homme au format YYYY-mm-dd hh:MM:ss. Il utilise des heuristiques pour identifier automatiquement divers horodatages :
versionLa version actuelle d'OSXCollector.