Skip to content

BorjaPintos/whatthefile

Repository files navigation

whatthefile

Extrae información de archivos pasando varios módulos especializados. Pensado para forensics o CTFs

Info shields

Por las dependencias inseguras, este proyecto dejó de ser compatible con

Módulos

  • analysispysentimiento: Realiza un análisis de sentimiento (positivo, nogativo, emoción, hate...) del resultado de otros módulos, como strings, tikaparser, whisper, y pstoostparser.
  • Básico: Datos específicos del archivo, tipo, tamaño, uid, gid...
  • BrowserHistory: Extrae historial de navegadores web (Chrome, Safari, Firefox) y además permite enviarlos por un segundo canal de salida (por ejemplo otro índice de elasticsearch, u otro fichero distinto al del análisis)
  • certificatereader: Extrae información de los certificados tipo PEM y DER
  • commentExtractor: Extrae comentarios de ficheros de códido fuente, html, bash..
  • entropy: Calcula la entropia de shannon
  • evtxreader: Parsea eventos interesantes de ficheros de eventos del sistema, y además permite enviarlos por un segundo canal de salida (por ejemplo otro índice de elasticsearch, u otro fichero distinto al del análisis)
  • hashes: Realiza diversos hashes
  • ignore: Modulo encargado de anular el análisis del fichero actual si cumple ciertos requisitos como hashes, tamaños, paths o extensiones
  • imagerecognitiontensorflow: reconocimiento de imágenes usando tensorflow.
  • infoextractor: extracción de emails, urls, iban, direcciones bitcoin de los módulos ejecutados.
  • metadata: extracción de metadatos con Exiftool
  • mftparser: Parsea el fichero de la MFT, y además permite enviar el resultado por un segundo canal de salida (por ejemplo otro índice de elasticsearch, u otro fichero distinto al del análisis)
  • ocrtesseract: Extrae texto que se visualice en imágenes
  • pstostparser: Extrae correos electrónicos de ficheros pst/ost, y además permite enviarlos por un segundo canal de salida (por ejemplo otro índice de elasticsearch, u otro fichero distinto al del análisis)
  • qrbcreader: Lector de código QR y Códigos de Barras
  • strings: extracción de strings
  • tikaparser: Obtención del texto de documentos offimáticos, pdfs...
  • virustotal: Comprobación de infección enviando el hash a virustotal
  • whisper: Módulo de IA que es capaz de transcribir el audio en texto
  • windowsprefetch Parseo de ficheros de windows prefetch
  • windowsregisty Extracción de claves importantes de los ficheros de registro hives de windows
  • zipextractor: Extrae los ficheros de un zip, incluso aplicando fuerza bruta.

Si algún módulo crea nuevos ficheros lo harán en un directorio especial para no modificar evidencias, por ejemplo zipextractor, en ese caso luego cada ficheros será otra vez reanalizado.

Requisitos

  • Instalación común para todos pip install -r requirements.txt

Instalaciones especiales para cada uno:

  • Linux pip install -r requirementsunix.txt
  • Windows pip install -r requirementswindows.txt
  • MacOS pip install -r requirementsunix.txt

Se necesita instalar la librería libmagic En MacOS se puede hacer a través de Homebrew: (tambien sirve para Linux) https://brew.sh

y una vez instalado: brew install libmagic

Módulos

Dentro de cada módulo se explican las instrucciones de sus dependencias, por lo general tienen un fichero requirements.txt

pip install -r MODULOPATH/requirements.txt

Existe el fichero installmodulesrequirements.sh que es un centralizador para instalar todos juntos:

sh installmodulesrequirements.sh

Algunos necesitan instalar algun software adicional de sistema operativo. Por ejemplo, exiftools

Salidas disponibles

Existen varios tipos de salida del programa para obtener los resultados:

  • print: salida normal por pantalla
  • file: volcado a un fichero
  • list: el resultado se mantiene en un objecto lista, ideal para exportar a otra librería
  • elasticsearch: los resultados se envían a un elasticsearch u opendistro

Requisitos para servidor

pip install -r requirementsweb.txt

Ejecución

Terminal

Configuración

Todas las opciones están en el fichero whatthefile.ini

Ejecución

python whathefile.py whatthefile.ini <file_or_directory>

Servidor web

Configuración

La configuración del servidor está en application/web/settings.py y en application/web/whatthefile.ini

Ejecución

Para ejecutar el servidor web python runserverpro.py

Tests

pip install -r requirementstest.txt
python -m pytest

Desarrollo de módulos

Los módulos deben estar siempre bajo la carpeta de src/modules Tendrá su carpeta con un fichero llamado main.py La clasedeberá llamarse Constructor y deberá implementar la interfaz IModule.

# -*- coding: utf-8 -*-
from src.domain.targetpath import TargetPath
class Constructor(IModule):
    def __init__(self):
        super().__init__()

    def is_valid_for(self, target_file: TargetPath) -> bool:
        pass

    """También se admite la firma: 
    def run(self, target_file: TargetFile, result_of_previos_modules: dict) -> dict:
    """
    def run(self, target_path: TargetPath, result_of_previos_modules: dict) -> dict:
        pass
  • El método is_valid_for se debe implementar para saber cuándo se puede ejecutar el módulo, por ejemplo, solo para ficheros de tipo jpg, etc.
  • El método run es la ejecución del módulo, y recibiendo ya un objeto adecuado, es decir, no es necesario volver a validarlo.
  • También en el método run, se recibe el resultado de los anteriores módulos ejecutados en ese fichero, de tal forma que seacompatible con otros módulos. Por ejemplo infoextractor, que busca información en el resultado de otros módulos ya que por la naturaleza del fichero no se ejecutaría, por ejemplo: un pdf, que al pasar por tika tiene un contenido que luego es analizado finalmente por infoextractor.

Docker

Para fácil ejecución, existe una carpeta con docker-compose para desplegar herramientas externas así como una versión del servidor web y una de la versión normal. No obstante, también existen carpetas por separado para levantar los dockers a gusto del consumidor

About

Herramienta para análisis de datos forenses

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages