OS X Auditor

OS X Auditor es una herramienta gratuita de análisis forense informático para Mac OS X.
OS X Auditor analiza y genera hashes de los siguientes artefactos en el sistema en ejecución o en una copia de un sistema que desee analizar:
- las extensiones del kernel
- los agentes y demonios del sistema
- los agentes y demonios de terceros
- los elementos de inicio antiguos y obsoletos del sistema y de terceros
- los agentes de los usuarios
- los archivos descargados por los usuarios
- las aplicaciones instaladas
Extrae:
- los archivos en cuarentena de los usuarios
- el historial de Safari de los usuarios, descargas, top sites, LastSession, bases de datos HTML5 y almacenamiento local
- las cookies de Firefox de los usuarios, descargas, historial de formularios, permisos, lugares e inicios de sesión
- el historial de Chrome de los usuarios y el historial archivado, cookies, datos de inicio de sesión, top sites, datos web, bases de datos HTML5 y almacenamiento local
- las cuentas sociales y de correo electrónico de los usuarios
- los puntos de acceso WiFi a los que se ha conectado el sistema auditado (e intenta geolocalizarlos)
También busca palabras clave sospechosas en los propios archivos .plist.
Puede verificar la reputación de cada archivo en:
- MHR de Team Cymru
- VirusTotal
- su propia base de datos local
Puede agregar todos los registros de los siguientes directorios en un zip:
- /var/log (-> /private/var/log)
- /Library/logs
- el directorio ~/Library/logs del usuario
Finalmente, los resultados pueden ser:
- renderizados como un archivo de registro txt simple (para que pueda usar cat-pipe-grep… o simplemente grep)
- renderizados como un archivo de registro HTML
- enviados a un servidor Syslog
Autor
Jean-Philippe Teissier - @Jipe_ y otros.
Estado del desarrollo
OS X Auditor YA NO SE MANTIENE - NO DEBE USARLO
Soporte
OS X Auditor comenzó como un proyecto de fin de semana y ya no se mantiene. Ha sido bifurcado por los grandes chicos de Yelp, quienes crearon osxcollector.
Recomiendo usar osxcollector (https://github.com/Yelp/osxcollector)
Cómo instalar
Simplemente copie todos los archivos de GitHub.
Dependencias
Si planea ejecutar OS X Auditor en una Mac, obtendrá soporte completo para el análisis de plist con OS X Foundation a través de pyobjc:
Si no puede instalar pyobjc o si planea ejecutar OS X Auditor en otro sistema operativo que no sea Mac OS X, puede experimentar algunos problemas con el análisis de plist:
pip install biplist
pip install plist
Estas dependencias se eliminarán cuando un módulo plist nativo funcional esté disponible en Python.
Cómo ejecutar
- OS X Auditor funciona bien con Python >= 2.7.2 (2.7.9 está bien). No funciona con una versión diferente de Python todavía (debido a la pesadilla de plist).
- OS X Auditor se mantiene para funcionar en la última versión de OS X. Hará lo posible en versiones anteriores de OS X.
- Debe ejecutarlo como root (o mediante sudo) si desea usarlo en un sistema en ejecución; de lo contrario, no podrá acceder a algunos archivos del sistema y de otros usuarios.
- Si está utilizando claves de API de variables de entorno (ver más abajo), necesita usar
sudo -E para usar las variables de entorno del usuario.
Escriba osxauditor.py -h para obtener todas las opciones disponibles, luego ejecútelo con las opciones seleccionadas.
ej. [sudo -E] python osxauditor.py -a -m -l localhashes.db -H log.html
Configuración de variables de entorno
API de VirusTotal:
export VT_API_KEY=aaaabbbbccccddddeeee
Registro de cambios
0.4.3
0.4.2
- CAMBIO: claves de API movidas del código a variables de entorno
0.4.1
- CAMBIO: búsqueda de puertas traseras genéricas en LaunchAgentPlist
0.4
- NUEVO: extrae eventos (arranque/apagado, hibernación entrada/salida, comandos sudo, dispositivos USB, ttys abiertos/cerrados, de los registros del sistema y crea una línea de tiempo (aún no legible) (-e/eventlogs)
- NUEVO: extrae LoginItems de usuarios
- NUEVO: extrae RecentItems de usuarios
- NUEVO: extrae LastSession de artefactos de Safari
- NUEVO: extrae detalles de grupos y usuarios del sistema
- CORRECCIÓN: llamadas incorrectas a os.path.join()
- CORRECCIÓN: error en ParsePackagesDir() recursivo
0.3.1
- NUEVO: proporciona el nombre del sistema, versión y compilación del sistema auditado
- NUEVO: capacidad de analizar aplicaciones instaladas (-i/--installedapps)
- NUEVO: extrae el historial archivado de artefactos de Google Chrome
- NUEVO: informe de registro HTML legible por humanos :)
- CORRECCIÓN: HTMLLog() y SYSLOGLog() ahora manejan excepciones
- CORRECCIÓN: ParsePackagesDir() ahora es recursivo y solo intenta analizar aplicaciones o extensiones del kernel. Se agregó algo de salida DEBUG
- CORRECCIÓN: GRAN mejora UTF-8/UNICODE
- CORRECCIÓN: los archivos .DS_Store y .localized se ignoran en ParsePackagesDir()
0.3
- NUEVO: capacidad de analizar artefactos de Google Chrome (historial e historial archivado, cookies, datos de inicio de sesión, top sites, datos web, bases de datos HTML5 y almacenamiento local) con -b/--browsers
- NUEVO: capacidad de extraer los AP WiFi a los que se ha conectado el sistema auditado desde las preferencias de Airport e intentar geolocalizarlos usando Geomena (-A/--airportprefs). Debe usar -g/--wifiapgeolocate para habilitar la geolocalización (o establecer GEOLOCATE_WIFI_AP en True en el código).
- NUEVO: capacidad de extraer cuentas sociales y de correo electrónico de los usuarios (-U/--usersaccounts)
- CORRECCIÓN: capacidad de manejar bases de datos sqlite bloqueadas, especialmente al auditar un sistema en vivo
- CORRECCIÓN: duplicados de hashes eliminados
- CORRECCIÓN: mejor identificación de md5 en la salida HTML
- CAMBIO: indica si una sección (elementos de inicio, directorio de paquetes, tablas de base de datos, etc.) está vacía para aclarar la salida
- CAMBIO: los artefactos de descargas (-d/--downloads) incluyen los directorios de descarga predeterminados antiguos y nuevos de Mail.app
0.2.1
- CAMBIO/CORRECCIÓN: implementar una función BigFileMd5() para hashear archivos muy grandes, evitar excepciones de MemoryError y reducir el uso de memoria
- CORRECCIÓN: entradas UTF-8 de LSQuarantineEvent en ParseQuarantines()
0.2
- NUEVO: capacidad de enviar los resultados a un servidor syslog remoto (-S)
- NUEVO: capacidad de crear un zip de todos los archivos de registro encontrados en el sistema auditado (-z)
- CAMBIO: el análisis de artefactos de inicio incluye los StartupItems antiguos y obsoletos
- CAMBIO: el análisis de artefactos de inicio incluye las ScriptingAdditions
- CAMBIO: el análisis de artefactos en cuarentena incluye los antiguos QuarantineEvents para sistemas Mac OS X <= 10.6
- CAMBIO: gran mejora en el manejo de plist utilizando el puente Python ⟷ Objective-C (PyObjC) y OS X Foundation
- CAMBIO: algunos cambios en los parámetros de opciones (-t, -l)
- CAMBIO: licencia cambiada de CC a GPL
- CAMBIO: los niveles de depuración ahora son más consistentes en los registros de salida
- CAMBIO: pequeño cambio con el Bootstrap CSS
- CAMBIO: la búsqueda en VirusTotal ahora se realiza en modo masivo
- CORRECCIÓN: error en ParseLaunchAgents() en archivos plist que contienen claves Program y ProgramArguments
0.1
Diseño y Capacidades

Artefactos
Usuarios
-
Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
-
Library/Preferences/com.apple.LaunchServices.QuarantineEvents
-
Library/Preferences/com.apple.loginitems.plist
-
Library/Mail Downloads/
-
Library/Containers/com.apple.mail/Data/Library/Mail Downloads
-
Library/Accounts/Accounts3.sqlite
-
Library/Containers/com.apple.mail/Data/Library/Mail/V2/MailData/Accounts.plist
-
Library/Preferences/com.apple.recentitems.plist
-
Firefox
- Library/Application Support/Firefox/Profiles/
- cookies.sqlite
- downloads.sqlite
- formhistory.sqlite
- places.sqlite
- signons.sqlite
- permissions.sqlite
- addons.sqlite
- extensions.sqlite
- content-prefs.sqlite
- healthreport.sqlite
- webappsstore.sqlite
- Library/Safari/
- Downloads.plist
- History.plist
- TopSites.plist
- LastSession.plist
- Databases
- LocalStorage
- Library/Application Support/Google/Chrome/Default/
- History
- Archived History
- Cookies
- Login Data
- Top Sites
- Web Data
- databases
- Local Storage
Sistema
- /System/Library/LaunchAgents/
- /System/Library/LaunchDaemons/
- /System/Library/ScriptingAdditions/
- /System/Library/StartupItems/Library/ScriptingAdditions/
- /System/Library/Extensions/
- /System/Library/CoreServices/SystemVersion.plist
- /Library/LaunchAgents/
- /Library/LaunchDaemons/
- /Library/StartupItems/
- /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
- /Library/logs
- /var/log
- /etc/localtime
- StartupParameters.plist
- /private/var/db/dslocal/nodes/Default/groups/admin.plist
- /private/var/db/dslocal/nodes/Default/users
TODO
- extraer información de usuario de /private/var/db/dslocal/nodes/Default/users
Trabajo relacionado
Disk Arbitrator
Disk Arbitrator es una utilidad forense para Mac OS X diseñada para ayudar al usuario a asegurarse de que se sigan los procedimientos forenses correctos durante la creación de imágenes de un dispositivo de disco. Disk Arbitrator es esencialmente una interfaz de usuario para el framework Disk Arbitration, que permite que un programa participe en la gestión de dispositivos de almacenamiento en bloque, incluido el montaje automático de sistemas de archivos. Cuando está habilitado, Disk Arbitrator bloqueará el montaje de sistemas de archivos para evitar montarlos en modo lectura-escritura y violar la integridad de la evidencia.
https://github.com/aburgh/Disk-Arbitrator
Volafox
volafox, también conocido como 'Mac OS X Memory Analysis Toolkit', está desarrollado en Python 2.x.
https://code.google.com/p/volafox/
Mandiant Memoryze(tm) para Mac
Memoryze para Mac es un software forense de memoria gratuito que ayuda a los respondedores de incidentes a encontrar el mal en la memoria… en Macs. Memoryze para Mac puede adquirir y/o analizar imágenes de memoria. El análisis se puede realizar en imágenes de memoria fuera de línea o en sistemas en vivo.
http://www.mandiant.com/resources/download/mac-memoryze
Volatility MacMemoryForensics
https://code.google.com/p/volatility/wiki/MacMemoryForensics
Licencia
OS X Auditor
Copyright (C) 2013-2015 Jean-Philippe Teissier
Este programa es software libre: puede redistribuirlo y/o modificarlo
bajo los términos de la Licencia Pública General de GNU publicada por
la Free Software Foundation, ya sea la versión 3 de la Licencia, o
(a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil,
pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
Licencia Pública General de GNU para obtener más detalles.
Debería haber recibido una copia de la Licencia Pública General de GNU
junto con este programa. Si no es así, consulte http://www.gnu.org/licenses/.
Bootstrap y JQuery tienen sus propias licencias compatibles con GPL.