
Un conjunto de herramientas forenses de recopilación y análisis de evidencia para OS X

OSXCollector es un conjunto de herramientas de recolección y análisis de evidencia forense para OSX.
El script de recolección se ejecuta en una máquina potencialmente infectada y genera un archivo JSON que describe la máquina objetivo. OSXCollector recopila información de plists, bases de datos SQLite y el sistema de archivos local.
Armado con la recolección forense, un analista puede responder preguntas como:
Yelp automatiza el análisis de la mayoría de las ejecuciones de OSXCollector convirtiendo su salida en un resumen fácilmente legible y procesable de solo las cosas sospechosas. Revisa el proyecto OSXCollector Output Filters para aprender cómo aprovechar al máximo el análisis automatizado de la salida de OSXCollector.
osxcollector.py es un único archivo Python que se ejecuta sin dependencias en una máquina OSX estándar. Esto facilita mucho la ejecución de la recolección en cualquier máquina, sin tener que lidiar con brew, pip, archivos de configuración o variables de entorno. Simplemente copia el único archivo en la máquina y ejecútalo:
sudo osxcollector.py es todo lo que se necesita.
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
Si acabas de clonar el repositorio de GitHub, osxcollector.py está dentro del directorio osxcollector/, por lo que debes ejecutarlo como:
$ sudo osxcollector/osxcollector.py
IMPORTANTE: asegúrate de que el comando python en tu máquina Mac OS X use el intérprete de Python predeterminado incluido con el sistema y no esté sobrescrito, por ejemplo, por la versión de Python instalada a través de brew. OSXCollector depende de un par de enlaces nativos de Python para bibliotecas de OS X, que podrían no estar disponibles en otras versiones de Python que no sean la instalada originalmente en tu sistema.
Alternativamente, puedes ejecutar osxcollector.py especificando explícitamente la versión de Python que deseas usar:
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
La salida JSON del recolector, junto con algunos archivos útiles como registros del sistema, se ha agrupado en un archivo .tar.gz para su entrega a un analista.
osxcollector.py también tiene muchas opciones útiles para cambiar cómo funciona la recolección:
-i INCIDENT_PREFIX/--id=INCIDENT_PREFIX:
Establece un identificador que se utiliza como prefijo del archivo de salida. El valor predeterminado es osxcollect.
$ sudo osxcollector.py -i IncontinentSealord
Wrote 35394 lines.
Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
Sé creativo con los nombres de incidentes, hace que sea más fácil reírse del dolor.
-p ROOTPATH/--path=ROOTPATH:
Establece la ruta raíz del sistema de archivos sobre el que se ejecutará la recolección. El valor predeterminado es /. Esto es excelente para ejecutar la recolección en la imagen de un disco.
$ sudo osxcollector.py -p '/mnt/powned'
-s SECTION/--section=SECTION:
Ejecuta solo una parte de la recolección completa. Se puede especificar más de una vez. La lista completa de secciones y subsecciones es:
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:
Recoge el valor de las cookies.
Por defecto, OSXCollector no vuelca el valor de una cookie, ya que puede contener información sensible (por ejemplo, el id de sesión).
-l/--collect-local-storage:
Recoge los valores almacenados en el almacenamiento local de los navegadores web.
Por defecto, OSXCollector no vuelca los valores ya que pueden contener información sensible.
-d/--debug:
Habilita la salida detallada y los puntos de interrupción de Python. Si algo anda mal con OSXCollector, prueba esto.
$ sudo osxcollector.py -d
El recolector genera un archivo .tar.gz que contiene todos los artefactos recolectados. El archivo contiene un archivo JSON con la mayor parte de la información. Además, se incluye un conjunto de registros útiles de los registros del sistema objetivo.
Cada línea del archivo JSON registra 1 pieza de información. Hay algunas claves comunes que aparecen en cada registro JSON:
osxcollector_incident_id: Un ID único compartido por cada registro.osxcollector_section: La sección o tipo de datos que contiene este registro.osxcollector_subsection: La subsección o descriptor más detallado del tipo de datos que contiene este registro.Para registros que representan archivos, hay un montón de claves útiles:
atime: La hora de acceso al archivo.ctime: La hora de creación del archivo.mtime: La hora de modificación del archivo.file_path: La ruta absoluta al archivo.md5: Hash MD5 del contenido del archivo.sha1: Hash SHA1 del contenido del archivo.sha2: Hash SHA2 del contenido del archivo.Para registros que representan archivos descargados:
xattr-wherefrom: Una lista que contiene las URLs de origen y de referencia para el archivo descargado.xattr-quarantines: Una cadena que describe qué aplicación descargó el archivo.Para registros que representan una fila de una base de datos SQLite:
osxcollector_table_name: El nombre de la tabla de la que proviene la fila.osxcollector_db_path: La ruta absoluta al archivo SQLite.Para registros que representan datos asociados a un usuario específico:
osxcollector_username: El nombre del usuarioOSXCollector intenta convertir las marcas de tiempo a cadenas de fecha/hora legibles por humanos en el formato YYYY-mm-dd hh:MM:ss. Utiliza heurísticas para identificar automáticamente varias marcas de tiempo:
versionLa versión actual de OSXCollector.
system_infoRecoge información básica sobre el sistema:
kext