GNU/Linux >> Tutoriales Linux >  >> Linux

Mostrar historial de eventos de dispositivos USB usando Usbrip en Linux

Esta guía explica qué es Usbrip programa, cómo rastrear los detalles de los dispositivos USB conectados o desconectados y también cómo mostrar el historial de eventos de los dispositivos USB usando la herramienta Usbrip en Linux.

Introducción

Hoy en día, los dispositivos USB prevalecen. Debería usar muchos dispositivos con un conector USB, como una unidad flash, una unidad externa, un mouse, un teclado, una impresora, un cargador de teléfono móvil todo el día, todos los días. Como cualquier otro evento, el sistema operativo Linux también realiza un seguimiento del historial de conexiones USB. Cada vez que conecta o desconecta un dispositivo USB, el historial de eventos de los dispositivos USB se rastrea y almacena en uno o más de los siguientes archivos en su sistema Linux:

  • /var/log/dmesg
  • /var/log/daemon.log
  • /var/log/kern.log
  • /var/log/syslog
  • /var/log/mensajes

Puede revisar manualmente estos archivos para conocer su historial de conexiones USB o usar una herramienta que ayude a organizar fácilmente los artefactos USB en un formato ordenado de columnas tabulares. Una de esas herramientas para rastrear el historial de eventos USB es Usbrip. .

Acerca de Usbrip

Usbrip es una herramienta forense de línea de comandos para rastrear el historial de todas las conexiones de dispositivos USB en Linux. Analiza los datos de registro de su sistema usando journelctl comando o desde archivos de registro como /var/log/syslog y /var/log/messages y muestra el historial de eventos USB recopilados en una salida estándar o en un archivo.

El programa usbrip rastrea los artefactos del dispositivo USB y los enumera en las siguientes columnas:

  1. Conectado (fecha y hora)
  2. Anfitrión
  3. VID (ID de proveedor)
  4. PID (ID de producto)
  5. Producto
  6. Fabricante
  7. Número de serie
  8. Puerto
  9. Desconectado" (fecha y hora)

Usbrip es una herramienta gratuita y de código abierto escrita en Python 3 . Para aquellos que se preguntan, el nombre Usbrip se deriva de dos palabras - USB y Destripador . No es USB R.I.P.

Características de Usbrip

Usbrip tiene algunas características interesantes. Me gustaría mencionar las siguientes tres características notables.

1. Encuentra acceso USB no autorizado

Este es el objetivo principal de la herramienta Usbrip. Usando la herramienta usbrip, podemos probar que un dispositivo USB fue conectado a un sistema Linux específico, por un usuario específico, dentro de un intervalo de tiempo específico. En general, podemos utilizar Usbrip en todos los casos en los que se trate de dispositivos USB.

Como ya se indicó, puede exportar todos los detalles de la conexión USB en un JSON expediente. ¿Por qué volcamos los detalles en un archivo JSON? Porque podemos buscar fácilmente cualquier "evento de violación". Por ejemplo, podríamos crear un archivo, digamos auth.json y almacene la lista de dispositivos USB autorizados o de confianza en ese archivo.

El auth.json El archivo se puede utilizar para investigar qué dispositivos USB se conectaron y si son dispositivos autorizados o no. De esta forma es posible saber si algún usuario ha copiado algo de tu sistema sin tu permiso.

Tenga en cuenta que si instala usbrip utilizando el script de instalación, el auth.json el archivo se creará automáticamente en la ubicación /var/opt/usbrip/trusted/ en el momento de la instalación. También puede crear el suyo propio en cualquier lugar de su elección.

2. Buscar detalles del dispositivo USB

Si desea conocer los detalles de las especificaciones de un dispositivo USB, puede obtenerlos fácilmente utilizando su VID o PID. Usbbrip obtendrá los detalles de proveedores, dispositivos e interfaces de usb.ids base de datos mantenida en http://www.linux-usb.org/ .

3. Copia de seguridad de eventos USB

Si ha instalado Usbrip manualmente con -s (--storages ), puede hacer una copia de seguridad automática de los eventos USB con el programador crontab.

Ahora veamos cómo instalar y usar Usbrip en Linux para recopilar eventos de conexión USB.

Instalar Usbrip en Linux

Como Usbrip está escrito en Python, podemos instalarlo usando Pip administrador de paquetes.

$ pip install usbrip

Si instaló usbrip con pip, algunas funciones no estarán disponibles. Para obtener todas las funciones, debe instalar usbrip manualmente usando su script de instalación llamado install.sh .

Primero, asegúrese de haber instalado los requisitos previos necesarios:

  • python3-venv
  • p7zip

En Debian, Ubuntu y sus derivados, puede instalarlos como se muestra a continuación:

$ sudo apt install python3-venv p7zip-full

Git clonar repositorio usbrip:

$ git clone https://github.com/snovvcrash/usbrip.git usbrip

El comando anterior clonará el contenido del repositorio usbrip y lo almacenará en un directorio llamado "usbrip" en su directorio actual.

Cd en el directorio usbrip:

$ cd usbrip

Haga que la secuencia de comandos del instalador sea ejecutable:

$ chmod +x ./installers/install.sh

Y finalmente instálelo usando el comando:

$ sudo -H ./installers/install.sh -s

Aquí, usamos -s bandera para habilitar el módulo de almacenamiento. Esto no solo instalará el programa usbrip, sino que también creará la lista de dispositivos USB confiables, el historial y los almacenamientos de infracciones. Tome nota de su contraseña secreta. Es posible que lo necesite más tarde.

Una vez completada la instalación, puede eliminar el directorio clonado:

$ cd
$ rm -r usbrip/

Mostrar historial de eventos de dispositivos USB usando Usbrip en Linux

Antes de comenzar a usarlo, conozcamos la lista de opciones generales y banderas disponibles.

1. Obtener ayuda

Para ver la sección de ayuda del programa Usbrip, simplemente ejecute:

$ usbrip --help

Salida de muestra:

usage: usbrip [-h] {banner,events,storage,ids} ...

positional arguments:
  {banner,events,storage,ids}
    banner              show tool banner
    events              work with USB events
    storage             work with USB event storage
    ids                 work with USB IDs

optional arguments:
  -h, --help            show this help message and exit

Como puede ver, hay cuatro comandos principales, a saber, banner , events , storage y ids .

Para ver la lista de subcomandos para un comando principal específico, ejecute:

$ usbrip <command> --help

Ejemplo:

$ usbrip events --help

Para enumerar todos los interruptores relacionados con un subcomando específico, por ejemplo, events , ejecuta:

$ usbrip events genauth --help

2. Ver el historial de conexión del dispositivo USB

Para mostrar el historial de conexiones de dispositivos USB, ejecute:

$ usbrip events history

Se le preguntará si desea mostrar el historial de eventos USB en salida estándar o en un archivo JSON. Si desea mostrar la salida, simplemente presione ENTER (que es el valor predeterminado) o escriba el número 2 para guardarlo en un archivo JSON.

Voy con la salida predeterminada, por lo que obtengo esta salida larga:

                   
         _     {{4}}    {v2.2.2-1}
 _ _ ___| |_ ___[e]___ 
| | |_ -| . |  _[n] . |
|___|___|___|_| [5]  _|
               x[1]_|   https://github.com/snovvcrash/usbrip
                       

[*] Started at 2021-03-27 14:28:31
[14:28:31] [INFO] Trying to run journalctl...
[14:29:10] [INFO] Successfully runned journalctl
[14:29:11] [INFO] Reading journalctl output
100%|█████████████████████████████| 912197/912197 [00:04<00:00, 188838.07line/s]
[?] How would you like your event history list to be generated?

    1. Terminal stdout
    2. JSON-file

[>] Please enter the number of your choice (default 1): 1
[14:29:48] [INFO] Preparing collected events
[14:29:48] [WARNING] Terminal window is too small to display table properly
[14:29:48] [WARNING] Representation: list

USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2020-12-26 21:24:23
Host:           ostechnix
VID:            0cf3
PID:            3002
Product:        ∅
Manufacturer:   ∅
Serial Number:  ∅
Bus-Port:       1-1.4
Disconnected:   2020-12-26 21:24:24
.
.
.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 11:52:19
Host:           ostechnix
VID:            046d
PID:            c52b
Product:        USB Receiver
Manufacturer:   Logitech
Serial Number:  ∅
Bus-Port:       1-1.2
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[*] Shut down at 2021-03-27 14:29:48
[*] Time taken: 0:01:17.624936

Por defecto, Usbrip mostrará el resultado en formato de columna tabular. Dado que mi ventana de Terminal es demasiado pequeña para mostrar la tabla correctamente, la salida se muestra en formato de lista. Si desea insistir en que Usbrip muestre el resultado en formato de columna tabular de todos modos, agregue -t bandera:

$ usbrip events history -t

Puede personalizar la salida según su gusto. En el siguiente ejemplo, utilicé -q/--quiet flag para suprimir el banner y otra información del usuario, -l/--list para mostrar la salida en formato de lista y -n/--number para mostrar un número específico de salidas.

$ usbrip events history -ql -n 2

El comando anterior solo mostrará los últimos 2 Eventos del historial USB sin el banner, el mensaje de información y el mensaje de interacción del usuario.

Salida de muestra:

100%|█████████████████████████████| 912890/912890 [00:05<00:00, 159754.38line/s]

USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 10:16:08
Host:           ostechnix
VID:            0cf3
PID:            3005
Product:        ∅
Manufacturer:   ∅
Serial Number:  ∅
Bus-Port:       1-1.4
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 11:52:19
Host:           ostechnix
VID:            046d
PID:            c52b
Product:        USB Receiver
Manufacturer:   Logitech
Serial Number:  ∅
Bus-Port:       1-1.2
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

3. Guardar historial de eventos USB en un archivo

En lugar de mostrar el historial de eventos en la salida estándar, podemos guardarlo en un archivo con formato JSON.

Para hacerlo, ejecute el comando para mostrar el historial de eventos USB:

$ usbrip events history

Escriba 2 cuando se le pida que elija cómo le gustaría guardar la salida. Se le pedirá nuevamente que ingrese la ubicación del nombre del archivo de salida. Simplemente ingrese una ubicación de su elección o presione ENTER para guardarlo en el archivo predeterminado llamado history.json en el $HOME directorio.

                      
         _     {{4}}    {v2.2.2-1}
 _ _ ___| |_ ___[3]___ 
| | |_ -| . |  _[N] . |
|___|___|___|_| [5]  _|
               x[1]_|   https://github.com/snovvcrash/usbrip
                       

[*] Started at 2021-03-29 11:49:40
[11:49:40] [INFO] Trying to run journalctl...
[11:49:41] [INFO] Successfully ran journalctl
[11:49:41] [INFO] Reading journalctl output
100%|███████████████████████████████| 15910/15910 [00:00<00:00, 235574.33line/s]
[?] How would you like your event history list to be generated?

    1. Terminal stdout
    2. JSON-file

[>] Please enter the number of your choice (default 1): 2
[>] Please enter the output file name (default is "history.json"): 
[11:49:46] [INFO] Generating event history list (JSON)
[11:49:46] [INFO] New event history list: "/home/ostechnix/history.json"
[*] Shut down at 2021-03-29 11:49:46
[*] Time taken: 0:00:05.852216

Puede ver este archivo en cualquier momento usando el comando:

$ usbrip events open history.json

4. Mostrar historial de eventos de dispositivos USB externos

Para mostrar el historial de conexión de dispositivos externos, use -e , --external bandera:

$ usbrip events history -q -e

5. Muestra el historial de eventos USB entre un período de tiempo específico

Podemos usar -d , --date marca para ver el historial de eventos de los dispositivos USB entre cierto período de tiempo. Por ejemplo, este comando muestra el historial de eventos que han tenido lugar entre enero de 2021 y marzo de 2021:

 $ usbrip events history -q -d '2021-01-01' '2021-03-29'

6. Mostrar solo cierta información

Puede que le interese ver los eventos específicos de las conexiones USB. Por ejemplo, el siguiente comando le proporcionará los detalles de las columnas, a saber, Conectado, Desconectado, Serie y Nombre del producto únicamente:

$ usbrip events history -q -c conn disconn serial prod -n 20

Aquí, -n 20 La opción se utiliza para mostrar los últimos 20 registros.

7. Buscar detalles de dispositivos USB específicos

Puede que le interese ver el historial de eventos de un dispositivo específico. Si es así, puede usar el --manufact marcar para ver tales detalles:

En el siguiente ejemplo, he mostrado los 15 eventos recientes de mi receptor inalámbrico Logitech. También enumeré los detalles de solo 4 columnas, a saber, Conectado, Desconectado, Serie y Producto.

$ usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15

Del mismo modo, puede filtrar los eventos USB combinando muchos campos como PID, VID, puerto, nombre de host, número de serie, etc.

8. Genere una lista de dispositivos USB de confianza

Para crear una lista de dispositivos USB autorizados, use authgen opción:

$ sudo usbrip events genauth ~/auth.json -a vid pid -n 10 -d '2021-03-29'

Este comando generará una lista de dispositivos USB confiables como un archivo JSON llamado auth.json que contiene los primeros 10 dispositivos conectados el 29 de marzo de 2021. Además, este archivo solo contendrá los detalles de los atributos VID y PID.

9. Buscar infracciones

Si desea comprobar si hay algún acceso USB no autorizado, simplemente busque a través de auth.json archivo que creamos anteriormente.

$ sudo usbrip events violations ~/auth.json

También puede filtrar la salida según su gusto.

Ejemplo:

$ sudo usbrip events violations ~/auth.json -a pid -et --host ostechnix --manufact Logitech --serial 0123456789 -c conn disconn

Este comando buscará violaciones en el historial de eventos de los dispositivos USB externos según la lista de dispositivos USB confiables (~/auth.json) por el atributo "PID", restringirá los eventos resultantes a aquellos que tengan "ostechnix" como nombre de host, " Logitech" como fabricante, "0123456789" como número de serie y muestra el resultado como una tabla con las columnas "Conectado", "Desconectado".

Si un dispositivo USB aparece en el historial pero no en el auth.json archivo, podemos decir que hay un evento de violación.

Para obtener más detalles de uso, consulte la página de GitHub del proyecto que figura a continuación.


Linux
  1. Analizando el historial de Bash en Linux

  2. Uso de modificadores de palabras con el historial de Bash en Linux

  3. Cómo deshabilitar el acceso de escritura a dispositivos USB usando la herramienta "hdparm"

  4. Simulación del evento Key Press usando Python para Linux

  5. Lectura de flujo de entrada USB en Linux

Reconozca más dispositivos en Linux con este repositorio de ID USB

Cómo mostrar usuarios en MySQL usando Linux

Comando de historial en Linux (Bash History)

Cree un USB de arranque persistente usando Ventoy en Linux

Cómo encriptar dispositivos de bloque usando LUKS en Linux

Banda ancha USB:cómo conectar dispositivos de módem USB en Linux