AutoMacTC Colector Automático Triaje Forense Mac
AutoMacTC Colector Automático Triaje Forense Mac

AutoMacTC: Colector Automático de Triaje Forense Mac

Se trata de un framework modular de recolección de triaje forense diseñado para acceder a diversos artefactos forenses en macOS, analizarlos y presentarlos en formatos viables para su análisis. El resultado puede proporcionar una valiosa información para la respuesta a incidentes en un entorno de MacOS. Automactc puede ejecutarse contra un sistema vivo o un disco muerto (como un volumen montado).

Requisitos

  • Python 3.7.3 o anterior (También es compatible con Python 2.7)
  • Sistemas objetivos MacOS, para la colección en vivo (probado con éxito en las versiones principales de MacOS 10.11 a 10.15)
  • Sistemas de análisis MacOS, para el triaje contra una imagen de disco montada (se admiten imágenes de disco de los sistemas macOS 10.11 a 10.14)

Uso Básico

En su forma más simple, puedes ejecutar automactc con la siguiente invocación.

Nota

Automactc requiere privilegios de sudo para ejecutarse, y debe ser llamado específicamente desde /usr/bin/python2.7 o /usr/bin/python3 para asegurar la completa funcionalidad.

sudo /usr/bin/python2.7 automactc.py -m all

Esto ejecutará todos los módulos (-m) con la configuración por defecto, es decir – el directorio de entrada por defecto será /, o la raíz del volumen actual – el directorio de salida por defecto será ./, o el directorio de trabajo desde el que se ejecuta automactc (NO la ubicación del script) – el prefijo por defecto para los nombres de los archivos de salida será automactc-output – el comportamiento por defecto es rellenar un runtime.log para depuración e información – el formato por defecto para los archivos de salida de los artefactos individuales es CSV – la prioridad por defecto de la CPU se establece en baja – el comportamiento por defecto al completarse es comprimir todos los archivos de salida a tar.gz

Para listar todos los módulos disponibles y no hacer nada más, simplemente ejecuta:

automactc.py -l

La dirección de entrada y la dirección de salida pueden especificarse con las flags -i y -o, respectivamente.

automactc.py -i / -o /automactc_output -m all

Los módulos pueden especificarse para su inclusión o exclusión sobre la base de cada uno de ellos. En otras palabras, se pueden INCLUIR módulos específicos, como pslist, bash y profiler:

automactc.py -m pslist bash profiler

O bien, puede excluir módulos específicos, para ejecutar todos EXCEPTO los especificados, como dirlist y autoruns:

automactc.py -x dirlist autoruns

Control de Salida

Para cada módulo, automactc generará un archivo de salida y lo llenará de datos. El formato del archivo de salida es por defecto CSV, pero se puede cambiar a JSON con la flag -fmt. Actualmente no es posible especificar el formato de salida por cada módulo.

automactc.py -m all -fmt json

Una vez que el archivo de salida se llena con datos, se pasa a un archivo .tar que se genera cuando automactc completa su primer módulo. Una vez completado el último módulo, automactc pasará el archivo .tar a .tar.gz.

El nombre del archivo tar sigue la siguiente convención de nombres:

prefix,hostname,ip,automactc_runtime.tar

El primer campo, prefijo, puede ser especificado en tiempo de ejecución con -p. Si no se especifica, el prefijo se establece en automactc-output. Los demás campos se rellenan a partir de los datos recopilados en tiempo de ejecución. Esto es útil cuando se ejecuta automactc en varios sistemas para un solo incidente.

automactc.py -m all -p granny-smith

Mientras que el comportamiento por defecto es generar un tarball, el uso de la flag -nt evitará la creación de un archivo tar y dejará los archivos de salida tal como están en el directorio de salida.

automactc.py -m all -p granny-smith -nt

Módulos Actuales

  • pslist (lista de procesos actuales en el momento de la ejecución de automactc)
  • lsof (archivo actual se maneja abierto en el momento de la ejecución de automactc)
  • netstat (conexiones actuales de la red en el momento de la ejecución de automactc)
  • asl (analizador de archivos Apple System Log (.asl))
  • auditlog (analizador de archivos /private/var/audit/*)
  • autoruns (analizador de varias ubicaciones de persistencia y plists)
  • bash (analizador de archivos bash/.*_history para todos los usuarios)
  • chrome (analizador de historial de visitas y descargas de Chrome)
  • cookies (analizador cookies de chrome y firefox)
  • coreanalytics (analizador pruebas de ejecución del programa producidas por los diagnósticos de Apple)
  • dirlist (lista de archivos y directorios a través del disco)
  • firefox (analizador de historial de visitas y descargas de Firefox)
  • installhistory (analizador historial de instalación de programas)
  • mru (analizador archivos plist SFL y MRU)
  • netconfig (analizador de configuración de airport e interfaz de red)
  • quarantines (analizador base de datos de QuarantineEventsV2)
  • quicklook (analizador base de datos Quicklooks)
  • safari (analizador historial de visitas y descargas en safari)
  • spotlight (analizador de búsqueda usuarios, spotlight)
  • ssh (analizador archivos known_hosts y authorized_keys de cada usuario
  • syslog (analizador archivos system.log)
  • systeminfo (identificación básica del sistema, como la dirección IP actual, el número de serie, el nombre del host)
  • terminalstate (analizador archivos Terminal savedState)
  • users (enumera los usuarios actuales y los eliminados del sistema)
  • utmpx (enumera las sesiones de usuario en los terminales)

Uso Avanzado

De forma predeterminada, automactc rellena la depuración detallada registrándose en un archivo llamado named prefix,hostname,ip,runtime.log. Puedes desactivar la generación de este registro con:

automactc.py -m all -nl

Por defecto, automactc imprimirá los mensajes de registro de INFO y ERROR en la consola. Para ejecutar automactc en modo silencioso y no escribir NINGÚN mensaje en la consola, usa -q. Los mensajes INFO incluyen mensajes de inicio del programa, un mensaje por inicio de módulo, y mensajes de finalización/limpieza.

automactc.py -m all -q

Para imprimir los mensajes DEBUG en la consola junto con los mensajes INFO y ERROR, use la flag -d.

automactc.py -m all -d

Automactc se ejecuta con la menor prioridad de CPU (niceness) posible por defecto. Es posible deshabilitar niceness y ejecutar con una prioridad normal con la flag -r.

automactc.py -m all -r

Automactc también puede funcionar contra un disco muerto, si el disco está montado como un volumen en el sistema de análisis. Una vez montado, ejecuta automactc con el directorio de entrada apropiado (apuntando al punto de montaje del volumen) y -f para activar el modo forense.

NOTA

Para un sistema vivo, si deseas recopilar dirlist en los dispositivos periféricos montados, puedes utilizar -f con -i /, de lo contrario la dirlist no volverá a aparecer en el /Volumen montado.

automactc.py -i /Volumes/mounted_IMAGE/ -o /path/to/output -f -m all

Argumentos Dirlist

Inclusión/exclusión en el Directorio

Es posible limitar la recursividad de las listas de direcciones a directorios específicos con la flag -K. Por defecto, dirlist intentará recursar desde la raíz del volumen de inputdir, a menos que se especifique lo contrario con este flag. Se pueden especificar varios directorios en una lista separada por espacios.

automactc.py -m dirlist -K /Users/ /Applications/ /tmp

También es posible excluir directorios específicos de la recursividad de la lista con la flag -E.

automactc.py -m dirlist -E /path/to/KnownDevDirectory

Por defecto, los siguientes directorios y archivos se excluyen en los sistemas activos:

/.fseventsd (to reduce output verbosity)
/.DocumentRevisions-V100 (to reduce output verbosity)
/.Spotlight-V100 (to reduce output verbosity)
/Users//Pictures (to avoid permissions errors) /Users//Library/Application Support/AddressBook (to avoid permissions errors)
/Users//Calendar (to avoid permissions errors) /Users//Library/Calendars (to avoid permissions errors)
/Users/*/Library/Preferences/com.apple.AddressBook.plist (to avoid permissions errors)

Por defecto, los siguientes directorios se excluyen cuando se ejecuta el modo forense contra una imagen montada:

/.fseventsd (to reduce output verbosity)
/.DocumentRevisions-V100 (to reduce output verbosity)
/.Spotlight-V100 (to reduce output verbosity)

Cualquier directorio adicional a excluir se añadirá a esta lista por defecto, a menos que proporcione primero el argumento -E no-defaults, en cuyo caso sólo se excluirán los directorios especificados.

automactc.py -m dirlist -E no-defaults /path/to/KnownDevDirectory

Hashing

Los argumentos hashing de abajo pueden ser usados para AMBAS dirlist y los módulos autoruns.

Por defecto, el módulo dirlist sólo tiene archivos de hash con el algoritmo sha256. Si deseas utilizar ambos algoritmos, el SHA256 y el MD5, utiliza -H sha256 md5. Si deseas usar sólo md5, usa -H md5. Si no deseas utilizar ninguno de los dos, usa -H none.

Nota

Si ejecutas el módulo dirlist contra un disco muerto con el hashing activado, esto actualmente toma un tiempo LARGO para ejecutarse.

automactc.py -m dirlist -H sha256 md5

Por defecto, el módulo dirlist sólo tiene archivos con tamaños inferiores a 10mb. Para anular esta configuración y los archivos de hash con un umbral de tamaño diferente, el umbral se puede cambiar con la flag -S en número de megabytes. NOTA: si se aumentas el umbral de tamaño, es probable que aumente el tiempo de ejecución del módulo dirlist. Por ejemplo, para hacer hash de archivos de hasta 15MB:

automactc.py -m dirlist -S 15

Paquetes, Firmas, Multihilo

De forma predeterminada, el módulo dirlist NO se reincorporará a los directorios del paquete, incluyendo los siguientes:

'.app', '.framework','.lproj','.plugin','.kext','.osax','.bundle','.driver','.wdgt'

Para anular este ajuste, use la flag -R. NOTA: esto produce un volumen de salida mucho más alto y lleva mucho más tiempo. Estos directorios de paquetes serán configurables en una futura actualización.

Por defecto, el módulo dirlist comprobará las firmas de código de todos los archivos .app, .kext y .osax encontrados. Para evitar que el módulo dirlist compruebe cualquier firma de código, utiliza la flag -NC. Este argumento puede ser usado para AMBOS módulos dirlist y autoruns.

automactc.py -m dirlist -NC

Por defecto, el módulo dirlist ha sido multihilo para aumentar la velocidad de procesamiento. El multihilo se puede desactivar con la flag -NM.

automactc.py -m dirlist -NM

Menú de Ayuda

usage: automactc.py [-m INCLUDE_MODULES  | -x
                    EXCLUDE_MODULES  | -l] [-h]
                    [-i INPUTDIR] [-o OUTPUTDIR] [-p PREFIX] [-f] [-nt] [-nl]
                    [-fmt {csv,json}] [-np] [-b] [-q | -d]
                    [-K DIR_INCLUDE_DIRS 
                    [-E DIR_EXCLUDE_DIRS 
                    [-H DIR_HASH_ALG 
                    [-S DIR_HASH_SIZE_LIMIT] [-R] [-NC] [-NM]

AutoMacTC: an Automated macOS forensic triage collection framework.

module filter:
  -m INCLUDE_MODULES , --include_modules INCLUDE_MODULES 
                        module(s) to use, use "all" to run all modules, space
                        separated list only
  -x EXCLUDE_MODULES , --exclude_modules EXCLUDE_MODULES 
                        assumes you want to run all modules EXCEPT those
                        specified here, space separated list only
  -l, --list_modules    if flag is provided, will list available modules and
                        exit.

general arguments:
  -h, --help            show this help message and exit
  -i INPUTDIR, --inputdir INPUTDIR
                        input directory (mount dmg with mountdmg.sh script and
                        use -f to analyze mounted HFS or APFS Volume)
  -o OUTPUTDIR, --outputdir OUTPUTDIR
                        output directory
  -p PREFIX, --prefix PREFIX
                        prefix to append to tarball and/or output files
  -f, --forensic_mode   if flag is provided, will analyze mounted volume
                        provided as inputdir
  -nt, --no_tarball     if flag is provided, will NOT package output files
                        into tarball
  -nl, --no_logfile     if flag is provided, will NOT generate logfile on disk
  -fmt {csv,json}, --output_format {csv,json}
                        toggle between csv and json output, defaults to csv
  -np, --no_low_priority
                        if flag is provided, will NOT run automactc with
                        highest niceness (lowest CPU priority). high niceness
                        is default
  -b, --multiprocessing
                        if flag is provided, WILL multiprocess modules
                        

console logging verbosity:
  -q, --quiet           if flag is provided, will NOT output to console at all
  -d, --debug           enable debug logging to console

specific module arguments:
  -K DIR_INCLUDE_DIRS , --dir_include_dirs DIR_INCLUDE_DIRS 
                        directory inclusion filter for dirlist module,
                        defaults to volume root, space separated list only
  -E DIR_EXCLUDE_DIRS , --dir_exclude_dirs DIR_EXCLUDE_DIRS 
                        directory and file exclusion filter for dirlist
                        module. defaults are specified in README. space
                        separated list only. put 'no-defaults' as first item
                        to overwrite default exclusions and then provide your
                        own exclusions
  -H DIR_HASH_ALG , --dir_hash_alg DIR_HASH_ALG 
                        either sha256 or md5 or both or none, at least one is
                        recommended, defaults to sha256. also applies to
                        autoruns module
  -S DIR_HASH_SIZE_LIMIT, --dir_hash_size_limit DIR_HASH_SIZE_LIMIT
                        file size filter for which files to hash, in
                        megabytes, defaults to 10MB. also applies to autoruns
                        module
  -R, --dir_recurse_bundles
                        will fully recurse app bundles if flag is provided.
                        this takes much more time and space
  -NC, --dir_no_code_signatures
                        if flag is provided, will NOT check code signatures
                        for app and kext files. also applies to autoruns
                        module
  -NM, --dir_no_multithreading
                        if flag is provided, will NOT multithread the dirlist
                        module
https://github.com/CrowdStrike/automactc

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda