Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/yelparchive/osxcollector
Criminalistique DisqueOSINT (Renseignement de Sources Ouvertes)Criminalistique MémoireAnalyse ForensiqueCriminalistique NumériqueRéponse aux IncidentsArchived
GitHubyelparchive/osxcollector

osxcollector

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

Voir le dépôt
1.9k2398il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Site web
Partager

osxcollector

Build Status PyPI

Manuel d'OSXCollector

OSXCollector est une boîte à outils de collecte et d'analyse de preuves numériques pour OSX.

Collecte de preuves numériques

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.

Analyse de preuves numériques

Armé de la collecte de preuves, un analyste peut répondre à des questions comme :

  • Cette machine est-elle infectée ?
  • Comment ce malware est-il arrivé là ?
  • Comment puis-je prévenir et détecter une infection supplémentaire ?

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.

Réalisation de la collecte

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.

root@kitploit:~
$ 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 :

root@kitploit:~
$ 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 :

root@kitploit:~
$ 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.

    root@kitploit:~
    $ 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.

    root@kitploit:~
    $ 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 :

    • version
    • system_info
    • kext
    • startup
      • launch_agents
      • scripting_additions
      • startup_items
      • login_items
    • applications
      • applications
      • install_history
    • quarantines
    • downloads
      • downloads
      • email_downloads
      • old_email_downloads
    • chrome
      • history
      • archived_history
      • cookies
      • login_data
      • top_sites
      • web_data
      • databases
      • local_storage
      • preferences
    • firefox
      • cookies
      • downloads
      • formhistory
      • history
      • signons
      • permissions
      • addons
      • extension
      • content_prefs
      • health_report
      • webapps_store
      • json_files
    • safari
      • downloads
      • history
      • extensions
      • databases
      • localstorage
      • extension_files
    • accounts
      • system_admins
      • system_users
      • social_accounts
      • recent_items
    • mail
    • full_hash
    root@kitploit:~
    $ 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.

    root@kitploit:~
    $ sudo osxcollector.py -d
    

Détails de la collecte

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.

Clés communes

Chaque enregistrement

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.
Enregistrements de fichiers

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.
Enregistrements SQLite

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'utilisateur

Horodatages

OSXCollector 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 :

  • secondes depuis l'epoch
  • millisecondes depuis l'epoch
  • secondes depuis 2001-01-01
  • secondes depuis 1601-01-01

Sections

Section version

La version actuelle d'OSXCollector.

Section system_info

Collecte les informations de base sur le système :

  • nom du système
  • nom du nœud
  • version de publication
  • version
  • machine
Section kext

Collecte les extensions du noyau depuis :

  • /System/Library/Extensions
  • /Library/Extensions
Section startup

Collecte les informations sur les LaunchAgents, LaunchDaemons, ScriptingAdditions, StartupItems et autres éléments de connexion depuis :

  • /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

Plus d'informations sur le démarrage de Mac OS X peuvent être trouvées ici : http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf

Section applications

Hache les applications installées et rassemble l'historique d'installation depuis :

  • /Applications
  • ~/Applications
  • /Library/Receipts/InstallHistory.plist
Section quarantines

Les quarantaines sont essentiellement les informations nécessaires pour afficher le message 'Êtes-vous sûr de vouloir exécuter ceci ?' lorsqu'un utilisateur tente d'ouvrir un fichier téléchargé depuis Internet. Pour plus de détails, consultez l'explication du support Apple sur les quarantaines : http://support.apple.com/kb/HT3662

Cette section collecte également les informations de la vérification de malware basée sur le hachage XProtect pour les fichiers en quarantaine. Le plist se trouve à : /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist

XProtect ajoute également des versions minimales pour les plug-ins Internet. Ce plist se trouve à : /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist

Section downloads

Hache tous les fichiers téléchargés des utilisateurs depuis :

  • ~/Downloads
  • ~/Library/Mail Downloads
  • ~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads
Section chrome

Collecte les informations suivantes du navigateur web Google Chrome :

  • Historique
  • Historique archivé
  • Cookies
  • Extensions
  • Données de connexion
  • Sites les plus visités
  • Données web

Ces données sont extraites de ~/Library/Application Support/Google/Chrome/Default

Section firefox

Collecte les informations des différentes bases de données SQLite dans un profil Firefox :

  • Cookies
  • Téléchargements
  • Historique des formulaires
  • Historique
  • Identifiants enregistrés
  • Permissions
  • Modules complémentaires
  • Extensions
  • Préférences de contenu
  • Rapport de santé
  • Boutique d'applications web

Ces informations sont extraites de ~/Library/Application Support/Firefox/Profiles

Pour plus de détails sur le dossier de profil Firefox, voir http://kb.mozillazine.org/Profile_folder_-_Firefox

Section safari

Collecte les informations des différents plists et bases de données SQLite dans un profil Safari :

  • Téléchargements
  • Historique
  • Extensions
  • Bases de données
  • Stockage local
Section accounts

Collecte les informations sur les comptes des utilisateurs :

  • administrateurs système : /private/var/db/dslocal/nodes/Default/groups/admin.plist
  • utilisateurs système : /private/var/db/dslocal/nodes/Default/users
  • comptes sociaux : ~/Library/Accounts/Accounts3.sqlite
  • éléments récents des utilisateurs : ~/Library/Preferences/com.apple.recentitems.plist
Section mail

Hache les fichiers dans les répertoires de l'application Mail :

  • ~/Library/Mail
  • ~/Library/Mail Downloads
Section full_hash

Hache tous les fichiers sur le disque. Tous. Cela ne s'exécute pas par défaut. Il doit être déclenché avec :

root@kitploit:~
$ sudo osxcollector.py -s full_hash

Analyse manuelle de base

L'analyse forensique est à la fois un art et une science. Chaque analyste verra une histoire un peu différente en lisant la sortie d'OSXCollector. C'est ce qui rend l'analyse amusante.

Généralement, la collecte est effectuée sur une machine cible parce que quelque chose cloche : un antivirus a trouvé un fichier qu'il n'aime pas, une inspection profonde des paquets a observé une communication sortante, une surveillance de point de terminaison a remarqué un nouvel élément de démarrage. Les détails de cette alerte initiale – un chemin de fichier, un horodatage, un hachage, un domaine, une adresse IP, etc. – suffisent pour commencer.

Horodatages

Simplement greper quelques minutes avant et après un horodatage fonctionne très bien :

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'

Historique du navigateur

Il y est. Un outil comme jq peut être très utile pour obtenir une sortie élaborée :

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'

Un seul utilisateur

root@kitploit:~
$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'

Analyse automatisée

Le projet OSXCollector Output Filters contient des filtres qui traitent et transforment la sortie d'OSXCollector. L'objectif des filtres est de faciliter l'analyse de la sortie d'OSXCollector.

Conseils de développement

La fonctionnalité d'OSXCollector est stockée dans un seul fichier : osxcollector.py. Le collecteur doit s'exécuter sur une installation nue de OS X sans aucun paquet ou dépendance supplémentaire.

Assurez-vous que tous les tests d'OSXCollector réussissent avant de modifier le code source. Vous pouvez exécuter les tests en utilisant : make test

Après avoir apporté des modifications au code source, exécutez à nouveau make test pour vérifier que vos changements n'ont cassé aucun test.

Licence

Ce travail est sous licence GNU General Public License et est une dérivation de https://github.com/jipegit/OSXAuditor

Article de blog

  • OSXCollector: Forensic Collection and Automated Analysis for OS X par Ivan Leichtling

Présentations

  • OSXCollector: Automated forensic evidence collection & analysis for OS X par Kuba Sendor @ BruCON 0x07
  • Squashing Rotten Apples: Automated forensics & analysis for Mac OS X with OSXCollector par Kuba Sendor @ BSides Manchester 2015
  • OSXCollector par Ivan Leichtling @ Macbrained's August Meet-Up
  • OSXCollector - Automated Forensic Evidence Collection & Analysis for OS X par Ivan Leichtling @ OpenNSM
  • OSXCollector - Automated Forensic Evidence Collection & Analysis for OS X par Ivan Leichtling @ Duo Tech Talk (blog post)

Présentations externes

  • OSX Archaeology: Becoming Indiana Jones with OSXCollector and Strata par Chris Henderson & Justin Larson @ SAINTCon 2015

Ressources

Vous voulez en savoir plus sur l'analyse forensique d'OS X ?

  • mac4n6.com de Sarah Edwards - Les meilleures présentations sur l'analyse forensique Mac.

Quelques autres outils intéressants :

  • KnockKnock - KnockKnock est un script Python en ligne de commande qui affiche les binaires persistants d'OS X configurés pour s'exécuter automatiquement à chaque démarrage.
  • Grr - Google Rapid Response : analyse forensique à distance en direct pour la réponse aux incidents
  • osquery - Instrumentation, surveillance et analyse du système d'exploitation pilotées par SQL
Télécharger l’outil