Un escáner de análisis forense de sistemas de archivos y herramienta de caza de amenazas. Analiza los sistemas de archivos a nivel de MFT y SO y almacena los datos en SQL, SQLite o CSV. Las amenazas y los datos se pueden sondear aprovechando la potencia y la sintaxis de SQL.
Características
- Escanea un sistema de archivos montado en busca de amenazas de inmediato
- O recopilar una línea de base del sistema antes de un incidente, para una capacidad adicional de caza de amenazas
- Puede utilizarse antes, durante o después de un incidente
- Para una o varias estaciones de trabajo
- Escanea el MFT, saltándose los permisos de archivo, los bloqueos de archivo o las protecciones/ocultamiento/sombra de archivos del sistema operativo
- Recoge hasta 51 propiedades diferentes para cada archivo
- Los resultados del escaneo van a una tabla SQL para su posterior búsqueda, agregando los resultados de muchos escaneos y/o muchas máquinas, y el análisis histórico o retrospectivo
- Aprovecha la potencia de SQL para buscar en sistemas de archivos, consultar las propiedades de los archivos, responder a preguntas complejas o de alto nivel y buscar amenazas o indicadores de peligro
Requerimientos
- .NET Framework v4.8
- Microsoft Visual C++ 2015 Redistribuible
- Base de datos SQL local o remota con acceso de lectura/escritura/creación.
- Visual Studio (si deseas compilar el código C#)
- Acceso a internet (si no, ¿cómo has conseguido este código? También para los paquetes NuGet…)
- Conocimientos básicos de SQL
Cazar virus, malware y APTs en (múltiples) sistemas de archivos usando SQL
Empiezas con un disco o imágenes de disco que están potencialmente sucios con malware, virus, APT’s (amenazas persistentes avanzadas) o similares, y luego los escaneas con esta herramienta. (Opcionalmente, y asumiendo que tienes la sabiduría y la previsión de hacerlo, puedes querer escanear una imagen de disco de referencia conocida con esta herramienta primero (o después – no importa). Esto no es necesario, pero puede servir de ayuda).
La parte de escaneo a nivel forense de esta herramienta recoge un montón de propiedades sobre cada archivo en un sistema de archivos (o una imagen(s) de uno), y coloca estas propiedades en una tabla de base de datos relacional SQL. La clave está en la posibilidad de buscar, investigar o hacer preguntas sobre los datos mediante el uso de consultas, en el lenguaje de SQL, contra la base de datos creada. Una característica clave aquí fue NO inventar un lenguaje de consulta propietario. Si sabes SQL, y cómo hacer clic en un botón, entonces ya sabes cómo utilizar esta herramienta como un jefe. Incluso si no lo sabes, este concepto es lo suficientemente potente como para que las consultas enlatadas (ver más abajo) te den mucho juego.
Escaneo a nivel forense
En primer lugar, la herramienta crea una entrada en la base de datos para cada registro encontrado en la MFT (tabla maestra de archivos -es la forma en que NTFS lleva su registro). Esto evita los permisos de seguridad de los archivos, la ocultación de los mismos, las técnicas de ocultación u ofuscación, el borrado de archivos o la manipulación de las marcas de tiempo. Estas técnicas no impedirán que el archivo sea escaneado y catalogado. Los bytes del archivo se leen de la MFT y se toman tantos puntos de datos como sea posible de los bytes del archivo leídos de la MFT antes de intentar acceder a cualquier punto de datos utilizando las llamadas a la API del SO de nivel superior.
Análisis de datos ricos y de alto nivel
Una vez asegurados los datos a nivel MFT y forense, se recogen las propiedades a nivel de sistema operativo, los datos y los metadatos disponibles sobre cada archivo y se aumenta cada entrada creada a partir de la entrada MFT. Como resultado de esto, incluso si no se puede acceder al archivo o a sus propiedades desde la API del sistema operativo o el framework .NET debido a permisos de archivo (ACL), bloqueos de archivo (está en uso), corrupción del disco, un archivo de longitud de cero bytes, o cualquiera de las varias otras razones, la existencia del archivo seguirá siendo registrada, archivada y rastreada. La entrada, sin embargo, simplemente no contendrá la información sobre el mismo que no era accesible para el sistema operativo. Se pueden recoger hasta 51 puntos de datos diferentes para cada archivo.
Información Recogida de cada Archivo
Para cada archivo, la información recogida incluye:
- hash SHA256
- hash MD5
- Hash de la tabla de importación (si existe)
- Número MFT y número de secuencia
- Fechas de creación/modificación/acceso de MFT
- Fechas de creación/modificación/acceso comunicadas por el SO
- Todas las propiedades “estándar” de los archivos del SO: ubicación, tamaño, marcas de fecha, atributos, metadatos
- ¿Es un PE, DLL o controlador?
- ¿Está firmado por Authenticode?
- ¿Se verifica la cadena de certificados X.509?
- Reglas personalizadas de YARA (lista de nombres de reglas que coinciden)
- Entropía del archivo
- Entropía de archivos
- Hasta 51 puntos de datos diferentes en total
Consultas Enlatadas
Todos los archivos del directorio C:\Windows\System32\
deben ser ‘propiedad’ de TrustedInstaller.
Si un archivo en el directorio System32 es propiedad de un usuario diferente, esto indica una anomalía, y ese usuario es probablemente el que creó ese archivo.
Al malware le gusta hacerse pasar por archivos válidos del sistema de Windows. Los ejecutables que se colocan en el directorio System32 no sólo parecen más oficiales, ya que es una ruta común para archivos del sistema, sino que no es necesario proporcionar una ruta explícita a ese ejecutable para ejecutarlo desde la línea de comandos, el cuadro de diálogo ‘Ejecutar‘ del menú de inicio de Windows, o la llamada de la API win32 ShellExecute.
SELECT
TOP 1000 *
FROM [FileProperties]
WHERE
[FileOwner] <> 'TrustedInstaller'
AND [DirectoryLocation] = ':\Windows\System32'
AND IsSigned = 0
ORDER BY [PrevalenceCount] DESC
La marca de tiempo de creación de la MFT y la marca de tiempo de creación del SO deben coincidir.
Si la marca de tiempo de creación de la MFT es posterior a la hora de creación indicada por los metadatos del SO esto indica una anomalía.
Timestomp es una herramienta que forma parte de Metasploit Framework y que permite al usuario retroceder un archivo a un tiempo arbitrario de su elección. Realmente no hay una buena razón legítima para hacer esto (hazme saber si puedes pensar en una), y se considera una técnica antiforense.
SELECT
TOP 1000 *
FROM [FileProperties]
WHERE
([MftTimeAccessed] <> [LastAccessTime]) OR
([MftTimeCreation] <> [CreationTime]) OR
([MftTimeMftModified] <> [LastWriteTime])
ORDER BY [DateSeen] DESC
La propiedad “CompileDate” de cualquier ejecutable o dll debe ser siempre anterior a la marca de tiempo de creación de ese archivo.
Se aplica una lógica similar a la de la marca de tiempo de creación de la MFT, que es posterior a la marca de tiempo de creación. ¿Cómo podría un programa haber sido ¿Cómo puede un programa haber sido compilado DESPUÉS de la creación del archivo que lo contiene? Esta anomalía indica que se ha producido un backdating o timestomping.
SELECT
TOP 1000 *
FROM [FileProperties]
WHERE
([MftTimeCreation] < [CompileDate]) OR
([CreationTime] < [CompileDate])
ORDER BY [DateSeen] DESC
Judge-Jury-and-Executable (este enlace se abre en una nueva ventana) por AdamWhiteHat (este enlace se abre en una nueva ventana)
A file system forensics analysis scanner and threat hunting tool. Scans file systems at the MFT and OS level and stores data in SQL, SQLite or CSV. Threats and data can be probed harnessing the power and syntax of SQL.