USBRIP Seguimiento Historial Eventos USB GNU Linux
USBRIP Seguimiento Historial Eventos USB GNU Linux

USBRIP: Seguimiento Historial de Eventos USB en GNU/Linux

usbrip (heredado de “USB Ripper”, no de “USB R.I.P.”) es una sencilla herramienta forense con interfaz de línea de comandos que permite realizar un seguimiento de los artefactos de los dispositivos USB (es decir, el historial de eventos USB) en máquinas Linux.

usbrip es una pequeña pieza de software que analiza los datos de registro de Linux: la salida de  journalctl o el contenido de los archivos /var/log/syslog* (/var/log/messages*) . Basándose en los datos recogidos usbrip puede construir tablas de historial de eventos USB con las siguientes columnas:

  • “Connected” (date & time);
  • “Host”;
  • “VID” (vendor ID);
  • “PID” (product ID);
  • “Product”;
  • “Manufacturer”;
  • “Serial Number”;
  • “Port”;
  • “Disconnected” (date & time).

Además, también puede

  • exportar los datos recogidos como un volcado JSON para su uso posterior;
  • generar una lista de dispositivos USB autorizados (de confianza) como un archivo JSON (llamado  auth.json);
  • buscar “eventos de violación” basados en el  auth.json: descubrir dispositivos USB que sí aparecen en el historial y que NO aparecen en el  auth.json;
  • cuando se instala con la opción -s crear almacenamientos protegidos (archivos 7-Zip) para hacer copias de seguridad y acumular eventos USB automáticamente con la ayuda del programador crontab;
  • buscar detalles adicionales sobre un dispositivo USB específico basado en su VID y/o PID.
Historial de Eventos USB

Inicio rápido

Forma 1. Instalar con pip:

sudo -H python3 -m pip install --upgrade usbrip
usbrip --help
Instalar usbrip en Linux
Instalar usbrip en Linux

Forma 2. Instalar bleeding-edge con  install.sh (recomendado, funciones extra disponibles):

sudo apt install python3-venv p7zip-full -y
git clone https://github.com/snovvcrash/usbrip.git ~/usbrip && cd ~/usbrip
sudo -H installers/install.sh
cd
usbrip --help

Dependencias

Estructura del registro del sistema

usbrip soporta dos tipos de marcas de tiempo dentro de los archivos de registro del sistema:

  1. No modificada – estructura syslog estándar para GNU/Linux("%b %d %H:%M:%S", ejemplo. "Jan 1 00:00:00"). Este tipo de timestamp no proporciona la información sobre los años.
  2. Modificado (recomendado) – una mejor estructura de syslog que proporciona marcas de tiempo de alta precisión incluyendo años ("%Y-%m-%dT%H:%M:%S.%f%z", ejemplo. "1970-01-01T00:00:00.000000-00:00").

Si tienes journalctl instalado, no hay nada de qué preocuparse, ya que puede convertir las marcas de tiempo sobre la marcha.

De lo contrario, la estructura deseada del syslog podría lograrse estableciendo el formato RSYSLOG_FileFormat en la configuración de rsyslog.

  1. Comenta la siguiente línea en/etc/rsyslog.conf:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. Añadir archivo .conf personalizado para usbrip:
echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. (opcional) Eliminar los archivos de registro existentes:
sudo rm -f /var/log/syslog* /var/log/messages*
  1. Reiniciar el servicio:
sudo systemctl restart rsyslog

En primer lugar, usbrip comprobará si existe la posibilidad de volcar los eventos del sistema utilizando journalctl como opción más portable. Si no, buscará y analizará los archivos de registro del sistema /var/log/syslog* y /var/log/messages*.

Paquetes DEB

  • python3.6 (o más reciente);
  • python3-venv;
  • p7zip-full (utilizado por el módulo  storages).

Paquetes pip

Instalación manual

Clonación Git

Para simplificar, acordemos que todos los comandos donde aparece el prefijo ~/usbrip$ se ejecutan en el directorio ~/usbrip que se crea como resultado de un clon git:

git clone https://github.com/snovvcrash/usbrip.git usbrip && cd usbrip

install.sh

Además de instalarse con pip, usbrip también puede instalarse con instaladores personalizados installers/install.sh.

Cuando se utiliza install.sh algunas características adicionales están disponibles:

  • el entorno virtual se crea automáticamente;
  • el módulo storage se hace disponible: puedes establecer un trabajo crontab para respaldar los eventos USB en un horario (el ejemplo de trabajos crontab se puede encontrar en usbrip/cron/usbrip.cron).

Advertencia: si estás utilizando la programación crontab, debes configurar el trabajo cron con  sudo crontab -e para forzar la ejecución del submódulo  storage update  como root. Las contraseñas de almacenamiento se guardan en /var/opt/usbrip/usbrip.ini y son accesibles sólo por root por defecto.

Para instalar usbrip utiliza:

~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip --help
  • Cuando el parámetro -l está activado, las dependencias de Python se resuelven a partir de paquetes locales .tar (./3rdPartyTools/) en lugar de PyPI.
  • Cuando se activa el parámetro -s no sólo se instala el proyecto usbrip, sino que también se crea la lista de dispositivos USB de confianza, el historial y los almacenamientos de violaciones.

Una vez finalizada la instalación, no dudes en eliminar el directorio ~/usbrip.

Rutas

Cuando se instala con install.sh, el usbrip utiliza las siguientes rutas:

  • /opt/usbrip/ – el directorio principal del proyecto;
  • /var/opt/usbrip/log/ – registros de usbrip cuando se usa con cron;
  • /var/opt/usbrip/storage/ – Almacenamientos de eventos USB (history.7z y violations.7z, creados durante el proceso de instalación);
  • /var/opt/usbrip/trusted/ – lista de dispositivos USB de confianza (auth.json, creado durante el proceso de instalación);
  • /var/opt/usbrip/usbrip.ini – Archivo de configuración usbrip (contiene las contraseñas para los almacenamientos de 7-Zip);
  • /usr/local/bin/usbrip – enlace simbólico al script /opt/usbrip/venv/bin/usbrip.

cron

Los Cron jobs se pueden configurar de la siguiente manera:

~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

Desinstalar

El script installers/uninstall.sh elimina usbrip y todos los artefactos de instalación de su sistema.

Para desinstalar usbrip utiliza:

~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • Cuando se activa la opción -a, no sólo se elimina el directorio del proyecto usbrip, sino que también se eliminan todos los almacenes y los registros de usbrip.

No te olvides de eliminar la tarea cron si la habías configurado.

Uso

(Puedes ver una pequeña demostración en este vídeo)

Sinopsis

Comandos uso usbrip
Comandos uso usbrip
# ---------- BANNER ----------

$ usbrip banner
Obtener el banner de usbrip.

# ---------- EVENTS ----------

$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Obtener el historial de eventos del USB.

$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Abrir el volcado de eventos USB.

$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Generar una lista de dispositivos USB de confianza (autorizados).

$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Obtener eventos de violación de USB basados en la lista de dispositivos de confianza.

# ---------- STORAGE ----------

$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
Listar el contenido del almacén seleccionado. STORAGE_TYPE es "history" o "violations".

$ sudo usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Abre el almacenamiento seleccionado. Se comporta de forma similar al submódulo EVENTS OPEN.

$ sudo usbrip storage update <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Actualizar el almacenamiento -- añadir eventos USB al almacenamiento existente. COMPRESSION_LEVEL es un número en [0..9].

$ sudo usbrip storage create <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Crear almacenamiento -- crear un archivo 7-Zip y añadirle eventos USB según las opciones seleccionadas.

$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Change password of the existing storage.

# ---------- IDs ----------

$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
Obtener detalles adicionales sobre un dispositivo USB específico por su <VID> y/o <PID> de la base de datos de ID USB.

$ usbrip ids download [-q] [--debug]
Actualizar (descargar) la base de datos de ID USB.

Ayuda

Para obtener una lista de nombres de módulos utiliza:

usbrip --help

Para obtener una lista de nombres de submódulos para un módulo específico, utiliza:

usbrip <module> --help

Para obtener una lista de todos los interruptores de un submódulo específico utiliza:

usbrip <module> <submodule> --help
Historial de eventos
Unidades conectadas
Unidades conectadas

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda