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
USBvalve — Expose USB activity on the fly | Kitploit
Herramientas/GitHubGitHub/cecio/usbvalve
Embedded Systems SecurityDynamic Analysis (Sandboxing)ForensicsMalware AnalysisHardware Security
GitHubcecio/usbvalve

USBvalve

Expose USB activity on the fly

Ver Repositorio
1.3k43hace 4 mesesRevisado 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 →
Compartir

logotipo, horizontal, texto oscuro, fondo transparente

[!NOTE] USBvalve Versión 1.0.0

Se ha realizado una reescritura completa de la aplicación:

  • se ha dejado atrás el entorno Arduino IDE, ahora el código está escrito para el Pi Pico SDK
  • las dependencias de bibliotecas externas se han reducido mucho
  • el soporte de USB host para dispositivos Low Speed ahora es más robusto (ATTiny85, EvilCrow, etc.)
  • el hardware y las funcionalidades están casi sin cambios, consulta las notas a continuación para más detalles

Expón la actividad USB sobre la marcha

Los dos modelos El reloj 1.2

Estoy seguro de que, como a mí, te han pedido que pongas tu memoria USB en un dispositivo desconocido... y entonces la duda:

¿Qué le ha pasado a mi pobre dispositivo, entre bastidores? ¿Robando mis archivos? ¿Cifrándolos? ¿O solo instalando un malware? Con USBvalve puedes descubrirlo en segundos: construido con hardware comercial súper barato, puedes probar rápidamente cualquier actividad del sistema de archivos USB y entender lo que ocurre antes de que sea demasiado tarde.

Con USBvalve obtienes una retroalimentación inmediata sobre lo que le sucede a la unidad; la pantalla te mostrará si se accede al sistema de archivos falso integrado en el dispositivo, si se lee o si se escribe en él:

Autotest Léeme

y desde la versión 0.8.0 también puedes usarlo como USB Host para detectar dispositivos BADUSB:

HID

Este es un ejemplo del depurador de BADUSB disponible en el puerto serie:

Si prefieres los vídeos, también puedes echar un vistazo a mi presentación en Insomni'hack

USBvalve Watch

A partir de la versión 0.15.0 se admite una nueva versión Pi Pico Watch. Para compilar la nueva versión tienes que descomentar la línea #define PIWATCH al principio del código. El hardware es una placa de reloj con pantalla TFT de 1,28 pulgadas basada en RP2040. Puedes encontrar más información aquí. También es totalmente compatible con la Waveshare RP2040-LCD-1.28.

Estructura del repositorio

docs: documentación sobre el proyecto, con una presentación donde puedes ver todas las funcionalidades

firmware: firmwares precompilados para la Raspberry Pi Pico. Puedes usarlos directamente y flashearlos en la placa. Tenemos varias versiones diferentes, para OLED de 32 o 64 líneas, para Pico 1 o Pico2, Pi Pico Watch, etc.

PCB: archivo Gerber si quieres imprimir la PCB personalizada. No es obligatorio, puedes usar la tuya propia o montarla en una placa de prototipos

src y data: el código fuente, si quieres modificar y compilar el firmware tú mismo

utils: algunas utilidades que puedes usar para crear un FS personalizado

pictures: imágenes y recursos utilizados en este documento

STL: archivos STL para la carcasa. En las carpetas 1.1 y 1.2 hay carcasas completas (gracias a WhistleMaster). En las carpetas 1.2_64 y 1.2_64_simple hay carcasas para la pantalla de 128x64 (gracias a rtmq0227). Si quieres algo más ligero para proteger la pantalla LCD, puedes usar USBvalve_sliding_cover.stl.

Construir USBvalve

Lista de piezas

Si quieres construir el tuyo propio, necesitas:

  • Una Raspberry Pi Pico 1 o 2 (u otra placa basada en RP2040)
  • una pantalla OLED I2C de 128x64 o 128x32 (SSD1306)
  • (opcional) una PCB USBvalve o una placa de prototipos
  • (opcional) un separador impreso en 3D para aislar la pantalla de la placa (https://www.thingiverse.com/thing:4748043), pero puedes usar un trozo de cinta aislante en su lugar

Notas sobre BOOTSEL y la versión >= 1.0.0

En las versiones 0.x.x, BOOTSEL se usaba para reiniciar el dispositivo o imprimir el número de eventos HID (pulsación > 2 s). El sondeo de BOOTSEL estaba causando algunos problemas a la detección de BADUSB, por lo que se eliminó en la versión 1.0.0 y se sustituyó por las dos opciones siguientes:

  • suelda un botón entre GP0 y GND (pads 1 y 3, consulta la imagen a continuación para ver un ejemplo) para tener las mismas funciones
  • usa los comandos r (reset) y h (eventos HID) desde el monitor serie

En PCB también encontrarás una versión 1.3 de la placa, con algunos agujeros en los pads 1 y 3 para facilitar el montaje del botón. Pero como puedes ver, también puedes usar tu versión antigua.

Si no estás usando las funciones de BADUSB o si prefieres tener menos cobertura en la detección pero conservar el uso de BOOTSEL, también proporciono un firmware creado con bootsel habilitado (consulta la carpeta y las versiones publicadas).

Instrucciones de construcción

Gracias a Tz1rf también tenemos dos vídeos geniales: uno que explica el proceso de construcción paso a paso, y otro que muestra cómo cargar el firmware y usar la herramienta.

Casi todo el trabajo lo realiza el software directamente en la placa, así que solo necesitas preparar la conexión con el OLED para la salida.

A partir de la versión 0.8.0 del firmware, USBvalve puede detectar dispositivos HID (utilizados para detectar BADUSB). Esto requiere un puerto USB adicional que actúe como Host. Si no te interesa, puedes usar las instrucciones antiguas en la carpeta docs y usar la versión de PCB 1.1. De lo contrario, continúa con la versión de PCB 1.2 (tenemos versión para USB-A o USB-B, consulta la carpeta).

Con la PCB USBvalve

  • suelda un puerto USB hembra en el área USBH. Esto es para la versión A, pero también hay una versión para USB Micro-B si lo prefieres
  • coloca la Raspberry Pi Pico en la serigrafía de la parte frontal
  • no necesitas soldar todos los PIN. Solo los siguientes:
    • D4 y D5 (lado izquierdo)
    • D14 y D15 (lado izquierdo)
    • GND (lado derecho, tercer pin desde arriba)
    • GND (lado derecho, tercer pin desde abajo)
    • 3v3_OUT (lado derecho)
    • VBUS (lado derecho)
    • los 3 pines DEBUG en la parte inferior: SWCLK, GND y SWDIO
  • coloca el separador impreso en 3D o un trozo de cinta en las partes del OLED que puedan tocar la Raspberry
  • suelda el OLED (con un conector de pines) en el espacio de 4 PIN

Algunos OLED tienen los pines GND y VCC intercambiados, así que construí la PCB para que sea compatible con ambas versiones:

Por ejemplo, si tu OLED tiene GND en el PIN1 y VCC en el PIN2, así:

Tienes que colocar una gota de soldadura en estos dos pads en la parte posterior de la PCB:

De lo contrario, debes hacer lo contrario y colocar la soldadura en los otros PADs:

Sin la PCB USBvalve

Pico Pi

Si estás usando una placa de prototipos o solo cableado, todo lo que tienes que hacer es asegurarte de conectar los PIN adecuados a la pantalla OLED y al puerto USB Host.

El mapeo es el siguiente:

  • PIN6 de la Pi --> OLED SDA
  • PIN7 de la Pi --> OLED SCL
  • PIN19 de la Pi --> D+ del USB Host
  • PIN20 de la Pi --> D- del USB Host
  • PIN23 (GND) de la Pi --> GND del USB Host
  • PIN38 (GND) de la Pi --> OLED GND
  • PIN36 (3V3OUT) de la Pi --> OLED VCC
  • PIN40 (VBUS) de la Pi --> VCC del USB Host

Si quieres usar las funciones DEBUG, también puedes colocar un conector de pines en los 3 PIN SWD en la parte inferior de la placa.

Con la PCB USBpipe

[!CAUTION] Esta PCB está pensada para makers de electrónica con experiencia ¡NO LA USES SI NO ESTÁS SEGURO DE QUE PUEDES MANEJARLA!

[!NOTE] R7 y R8 en realidad no están conectados a nada. Se añaden con fines de depuración del circuito. Por eso no aparecen en la BOM

USBpipe PCB USBpipe

USBpipe es una PCB dedicada para este proyecto.

Puedes encontrar todo lo que necesitas en la carpeta ./PCB/USBpipe/.

Parte frontal Parte posterior

Flashear el firmware

Para flashear el firmware, sigue estos pasos:

  • Conecta la Raspberry Pi Pico con el cable USB, manteniendo pulsado el botón BOOTSEL (el gran botón blanco de la placa)
  • suelta el botón
  • verás una nueva unidad en el sistema, llamada RPI-RP2 (en entornos Linux puede que tengas que montarla manualmente)
  • copia el archivo de firmware adecuado (con extensión uf2) en la carpeta, dependiendo del OLED que hayas usado
  • espera unos segundos hasta que la carpeta montada desaparezca

¡Ya está!

Anti-Detección

No sé si alguna vez sucederá, pero puede que quieras personalizar el firmware para evitar la detección por parte de malware que conozca USBvalve :-)

He agrupado la mayoría de las variables que puedes querer modificar en esta sección de usb_config.h (consulta el Dockerfile a continuación para recompilar)

root@kitploit:~
// USB anti-detection settings
//
// Set USB IDs strings and numbers, to avoid possible detections.
// Remember that you can cusotmize FAKE_DISK_BLOCK_NUM as well
// for the same reason. Also DISK_LABEL in ramdisk.h can be changed.
//
// You can see here for inspiration: https://the-sz.com/products/usbid/
//
// Example:
//             0x0951 0x16D5    VENDORID_STR: Kingston   PRODUCTID_STR: DataTraveler
//
#define USB_VENDORID       0x0951
#define USB_PRODUCTID      0x16D5
#define USB_DESCRIPTOR     "DataTraveler"
#define USB_MANUF          "Kingston"
#define USB_SERIAL         "123456789A"
#define USB_VENDORID_STR   "Kingston"        // Up to 8 chars
#define USB_PRODUCTID_STR  "DataTraveler"    // Up to 16 chars
#define USB_VERSION_STR    "1.0"             // Up to 4 chars

Compilar tu firmware

Obviamente también puedes compilar tu propio firmware. Para compilar necesitas el Raspberry Pi Pico SDK y este repositorio.

Instrucciones básicas de recompilación:

root@kitploit:~
export PICO_SDK_PATH=</path/to/pico-sdk>

git clone --recursive https://github.com/cecio/USBvalve.git
cd USBvalve
mkdir build && cd build
cmake -DPICO_BOARD=pico ..   # or pico2 for standard build
make -j$(nproc)
# Output: build/src/USBvalve.uf2

Si quieres volver a crear un nuevo sistema de archivos falso, puede que quieras echar un vistazo a la carpeta utils, donde he colocado algunas utilidades para construir uno nuevo.

Dockerfile

Si quieres compilar tu propio firmware, después de personalizarlo, proporciono un Dockerfile que construye un entorno de compilación completo y compila el firmware.

Introduce los siguientes comandos en la carpeta principal USBvalve para compilar:

root@kitploit:~
# To Build:
#       docker build -t usbvalve-sdk -f Dockerfile.sdk .
#
# To Run (default: pico, SSD1306 OLED 128x32):
#       docker run --rm -v $PWD:/mnt usbvalve-sdk
#
# Options (via environment variables):
#       BOARD=pico|pico2          Board target (default: pico)
#       OLED_HEIGHT=32|64         OLED display height (default: 32)
#       PIWATCH=1                 Use GC9A01 round TFT instead of SSD1306
#       USE_BOOTSEL=1             Enable BOOTSEL button (disrupts Low Speed USB)
#
# Examples:
#       docker run --rm -e BOARD=pico2 -v $PWD:/mnt usbvalve-sdk
#       docker run --rm -e PIWATCH=1 -v $PWD:/mnt usbvalve-sdk
#       docker run --rm -e BOARD=pico2 -e OLED_HEIGHT=64 -v $PWD:/mnt usbvalve-sdk

El firmware se colocará con extensión uf2 en la carpeta USBvalve_out.

Contribuir

Si tienes ideas o mejoras en mente, te animo a abrir un issue para que podamos mejorar el proyecto juntos. ¡Gracias!

Soporte

Si tienes preguntas o necesitas soporte, puedes abrir un Issue aquí o contactarme en Twitter/X @red5heep

Versiones de la comunidad

La comunidad ha creado algunos forks que implementan soporte para otras placas u otras modificaciones. Gracias a todos los que han contribuido al desarrollo de USBvalve. A continuación se muestra una lista no oficial/incompleta/sin soporte:

  • USBvalve-tbfa-Mod

ADVERTENCIA DE SEGURIDAD

[!WARNING] He recibido muchas preguntas sobre USBvalve y los dispositivos USB killer. USBvalve no está diseñado para probar estos dispositivos, no tiene ningún tipo de aislamiento ni protección, así que si sospechas que estás lidiando con uno de estos dispositivos, pruébalo con otra cosa, NO con USBvalve, o podrías dañar el dispositivo, a ti mismo o los objetos cercanos.

Descargar herramienta