Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
usbrip — Seguimiento del historial de eventos USB en GNU/Linux | Kitploit
Herramientas/GitHubGitHub/snovvcrash/usbrip
Análisis ForenseForensia DigitalInteligencia de AmenazasRespuesta a IncidentesAnálisis de RegistrosArchived
GitHubsnovvcrash/usbrip

usbrip

Seguimiento del historial de eventos USB en GNU/Linux

Ver Repositorio
1.2k1136hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Sitio web
Compartir

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip (heredado de "USB Ripper", no "USB R.I.P.") es una herramienta forense simple con interfaz de línea de comandos que le permite rastrear artefactos de dispositivos USB (es decir, historial de eventos USB) en máquinas Linux.

Índice:

  • Descripción
  • Inicio Rápido
  • Demostración
  • Estructura del Registro del Sistema
  • Dependencias
    • deb
    • pip
  • Instalación Manual
    • Git Clone
    • install.sh
      • Rutas
      • Cron
      • uninstall.sh
  • Uso
    • Sinopsis
    • Ayuda
  • Ejemplos
  • Créditos y Referencias
  • Gráfico de Estrellas
  • Post Scriptum

Descripción

usbrip es un pequeño software que analiza datos de registro de Linux: la salida de journalctl o el contenido de los archivos /var/log/syslog* (o /var/log/messages*). Basado en los datos recopilados, usbrip puede construir tablas de historial de eventos USB con las siguientes columnas:

  • Conectado (fecha y hora)
  • Host
  • VID (ID de proveedor)
  • PID (ID de producto)
  • Producto
  • Fabricante
  • Número de serie
  • Puerto
  • Desconectado (fecha y hora)

Además, también puede:

  • Exportar los datos recopilados como un volcado JSON para su uso posterior.
  • Generar una lista de dispositivos USB autorizados (de confianza) como un archivo JSON (llámelo auth.json).
  • Buscar "eventos de violación" basados en auth.json: descubrir dispositivos USB que aparecen en el historial y NO aparecen en el archivo auth.json.
  • *cuando se instala con la bandera -s* Crear almacenes protegidos (archivos 7-Zip) para realizar copias de seguridad automáticas y acumular eventos USB con la ayuda del programador cron.
  • Buscar detalles adicionales sobre un dispositivo USB específico basado en su VID y/o PID.

Inicio Rápido

Método 1. Instalar con pip:

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

Método 2. Instalar la versión más reciente con install.sh (recomendado, funciones adicionales disponibles):

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

Demostración

showcase.png

Docker (*SOLO DEMOSTRACIÓN!*)

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

Estructura del Registro del Sistema

usbrip admite dos tipos de marcas de tiempo para analizar dentro de los archivos de registro del sistema:

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

Si tiene journalctl instalado, no hay nada de qué preocuparse, ya que puede convertir marcas de tiempo sobre la marcha. De lo contrario, la estructura de syslog deseada se puede lograr configurando el formato RSYSLOG_FileFormat en la configuración de rsyslog.

  1. Comente la siguiente línea en /etc/rsyslog.conf:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. Agregue un archivo .conf personalizado para usbrip:
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *opcional* Elimine los archivos de registro existentes:
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. Reinicie el servicio:
root@kitploit:~
~$ sudo systemctl restart rsyslog

Primero, usbrip comprobará si hay posibilidad de volcar eventos del sistema usando journalctl como la opción más portable. Si no es así, buscará y analizará los archivos de registro del sistema /var/log/syslog* o /var/log/messages*.

Dependencias

deb

  • intérprete de python3.6 (o más reciente)
  • python3-venv
  • p7zip-full (utilizado por el módulo storage)

pip

  • terminaltables
  • termcolor
  • tqdm

Instalación Manual

Git Clone

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 git clone:

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

Además de instalar con pip, usbrip también se puede instalar con el script personalizado installers/install.sh.

Al usar install.sh, algunas funciones adicionales están disponibles:

  • El entorno virtual se crea automáticamente.
  • Puede usar el módulo storage: configurar un trabajo cron para hacer copias de seguridad de eventos USB según un horario (un ejemplo de trabajo cron se puede encontrar en usbrip/cron/usbrip.cron).

⚠️ Advertencia: si utiliza la programación cron, desea configurar el crontab con sudo crontab -e para forzar que el submódulo storage update se ejecute como root. Las contraseñas de almacenamiento se guardan en /var/opt/usbrip/usbrip.ini y solo son accesibles por root de forma predeterminada.

Para instalar usbrip con install.sh, use:

root@kitploit:~
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
  • Cuando la opción -l está habilitada, las dependencias de Python se resuelven desde paquetes .tar locales (directorio 3rdPartyTools) en lugar de PyPI.
  • Cuando la opción -s está habilitada, no solo se instala el proyecto usbrip, sino que también se crean la lista de dispositivos USB de confianza, los almacenes de historial y de violaciones.

Después de que la instalación se complete, puede eliminar el directorio ~/usbrip.

Rutas

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

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

Cron

Los trabajos cron se pueden configurar de la siguiente manera:

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

uninstall.sh

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

Para desinstalar usbrip, use:

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • Cuando la opción -a está habilitada, no solo se elimina el directorio del proyecto usbrip, sino también todos los almacenes y registros de usbrip.

No olvide eliminar el trabajo cron si había configurado uno.

Uso

Sinopsis

root@kitploit:~
# ---------- BANNER ----------

~$ usbrip banner
Obtener banner de usbrip.

# ---------- EVENTOS ----------

~$ usbrip events history [-t | -l] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [-c <COLUMNA> [<COLUMNA> ...]] [-f <ARCHIVO> [<ARCHIVO> ...]] [-q] [--debug]
Obtener historial de eventos USB.

~$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [-c <COLUMNA> [<COLUMNA> ...]] [-q] [--debug]
Abrir volcado de eventos USB.

~$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATRIBUTO> [<ATRIBUTO> ...]] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [-f <ARCHIVO> [<ARCHIVO> ...]] [-q] [--debug]
Generar una lista de dispositivos USB de confianza (autorizados).

~$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATRIBUTO> [<ATRIBUTO> ...]] [-t | -l] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [-c <COLUMNA> [<COLUMNA> ...]] [-f <ARCHIVO> [<ARCHIVO> ...]] [-q] [--debug]
Obtener eventos de violación USB basados en la lista de dispositivos de confianza.

# ---------- ALMACENAMIENTO ----------

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

~$ sudo usbrip storage open <TIPO_ALMACEN> [-t | -l] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [-c <COLUMNA> [<COLUMNA> ...]] [-q] [--debug]
Abrir el almacén seleccionado. Se comporta de manera similar al submódulo EVENTOS OPEN.

~$ sudo usbrip storage update <TIPO_ALMACEN> [IN_AUTH.JSON] [-a <ATRIBUTO> [<ATRIBUTO> ...]] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [--lvl <NIVEL_COMPRESIÓN>] [-q] [--debug]
Actualizar almacén: agregar eventos USB al almacén existente. NIVEL_COMPRESIÓN es un número en [0..9].

~$ sudo usbrip storage create <TIPO_ALMACEN> [IN_AUTH.JSON] [-a <ATRIBUTO> [<ATRIBUTO> ...]] [-e] [-n <NÚMERO_DE_EVENTOS>] [-d <FECHA> [<FECHA> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <FABRICANTE> [<FABRICANTE> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PUERTO> [<PUERTO> ...]] [--lvl <NIVEL_COMPRESIÓN>] [-q] [--debug]
Crear almacén: crear archivo 7-Zip y agregar eventos USB según las opciones seleccionadas.

~$ sudo usbrip storage passwd <TIPO_ALMACEN> [--lvl <NIVEL_COMPRESIÓN>] [-q] [--debug]
Cambiar contraseña del almacén existente.

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

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

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

Ayuda

Para obtener una lista de nombres de módulos, use:

root@kitploit:~
~$ usbrip -h

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

root@kitploit:~
~$ usbrip <MÓDULO> -h

Para obtener una lista de todas las opciones para un submódulo específico, use:

root@kitploit:~
~$ usbrip <MÓDULO> <SUBMÓDULO> -h

Ejemplos

  • Mostrar el historial de eventos de todos los dispositivos USB, suprimiendo la salida del banner, mensajes de información e interacción del usuario (-q, --quiet), representado como una lista (-l, --list) con las últimas 100 entradas (-n NÚMERO, --number NÚMERO):

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • Mostrar el historial de eventos de los dispositivos USB externos (-e, --external, que realmente fueron desconectados) representado como una tabla (-t, --table) que contiene las columnas Conectado, VID, PID, Desconectado y Número de serie (-c COLUMNA [COLUMNA ...], --column COLUMNA [COLUMNA ...]) filtrado por fecha (, ) y PID () con registros tomados de archivos externos (, ):

Créditos y Referencias

  • usbrip / Инструменты Kali Linux
  • Как узнать, какие USB устройства подключались к Linux / HackWare.ru
  • usbrip: USB-форензика для Линуксов, или Как Алиса стала Евой / Форум информационной безопасности Codeby.net

13cubed.jpg

Gráfico de Estrellas

stargazers

Descargar herramienta
-d FECHA [FECHA ...]
--date FECHA [FECHA ...]
--pid <PID> [<PID> ...]
-f ARCHIVO [ARCHIVO ...]
--file ARCHIVO [ARCHIVO ...]
root@kitploit:~
~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz

👽 Nota: hay algo que recordar al trabajar con filtros. Hay 4 tipos de filtrado disponibles: solo eventos USB externos (dispositivos que se pueden extraer fácilmente, -e), por fecha (-d), por campos (--host, --vid, --pid, --product, --manufact, --serial, --port) y por número de entradas que obtiene como salida (-n). Al aplicar diferentes filtros simultáneamente, obtendrá el siguiente comportamiento: primero, se aplican los filtros externo y por fecha, luego usbrip buscará los valores de campo especificados en la intersección de los dos últimos filtros, y al final cortará la salida al número que definió con la opción -n. Así que piénselo como una intersección para el filtrado externo y por fecha y una unión para el filtrado por campos. Espero que tenga sentido.

  • Construir el historial de eventos de todos los dispositivos USB y redirigir la salida a un archivo para su posterior análisis. Cuando el flujo de salida NO es la terminal stdout (| o > por ejemplo), no habrá caracteres de escape ANSI (color) en la salida, así que siéntase libre de usarlo de esa manera. También tenga en cuenta que usbrip usa algunos símbolos UNICODE, por lo que sería bueno convertir el archivo resultante a codificación UTF-8 (con encov por ejemplo), así como cambiar los caracteres de nueva línea al estilo de Windows para portabilidad (con awk por ejemplo):

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 Nota: siempre puede deshacerse de los caracteres de escape usted mismo incluso si ya ha obtenido la salida en stdout. Para hacer eso, simplemente copie los datos de salida a usbrip.out y aplique una instrucción awk más:

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • Generar una lista de dispositivos USB de confianza como un archivo JSON (trusted/auth.json) con los atributos VID y PID que contenga los primeros tres dispositivos conectados el 30 de noviembre de 1984:

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ Advertencia: hay casos en los que diferentes unidades flash USB pueden tener números de serie idénticos. Esto podría suceder como resultado de un error de fabricación o simplemente algunos hackers pudieron reescribir el chip de memoria de la unidad que resultó ser no programable una sola vez, etc. De todas formas, "ningún sistema es seguro". usbrip no maneja tales casos de manera inteligente hasta ahora, es decir, tratará un par de dispositivos con SN idénticos (si existe uno) como el mismo dispositivo con respecto a la lista de dispositivos de confianza y al módulo genauth.

  • Buscar en el historial de eventos de los dispositivos USB externos violaciones basadas en la lista de dispositivos USB de confianza (trusted/auth.json) por el atributo PID, restringir los eventos resultantes a aquellos que tienen Bob-PC como nombre de host, EvilUSBManufacturer como fabricante, 0123456789 como número de serie y representar la salida como una tabla con las columnas Conectado, VID y PID:

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • Buscar detalles sobre un dispositivo USB específico por su VID (--vid VID) y PID (--pid PID):

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • Descargar la última versión de la base de datos usb.ids database:

    root@kitploit:~
    ~$ usbrip ids download