Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
USBvalve — Expose USB activity on the fly | Kitploit
Strumenti/GitHubGitHub/cecio/usbvalve
Embedded Systems SecurityDynamic Analysis (Sandboxing)ForensicsMalware AnalysisHardware Security
GitHubcecio/usbvalve

USBvalve

Expose USB activity on the fly

Vedi Repository
1.3k434 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

logo, orizzontale, testo scuro, sfondo trasparente

[!NOTE] USBvalve Versione 1.0.0

È stata fatta una riscrittura completa dell'applicazione:

  • è stato abbandonato l'ambiente Arduino IDE, ora il codice è scritto per il Pi Pico SDK
  • le dipendenze da librerie esterne sono state notevolmente ridotte
  • il supporto host USB per dispositivi Low Speed è ora più robusto (ATTiny85, EvilCrow, ecc.)
  • hardware e funzionalità sono quasi invariati, vedi le note qui sotto per i dettagli

Esponi l'attività USB al volo

I due modelli L'orologio 1.2

Sono sicuro che, come me, ti è stato chiesto di inserire la tua chiavetta USB in un dispositivo sconosciuto... e poi il dubbio:

cosa è successo alla mia povera chiavetta, dietro le quinte? Mi sta rubando i file? Li sta criptando? O solo installando un malware? Con USBvalve puoi scoprirlo in pochi secondi: costruito su hardware economico e facilmente reperibile, puoi testare rapidamente qualsiasi attività del filesystem USB e capire cosa sta succedendo prima che sia troppo tardi!

Con USBvalve puoi avere un feedback immediato su cosa succede alla chiavetta; lo schermo ti mostrerà se al fittizio filesystem creato sul dispositivo si accede, se viene letto o scritto:

Selftest Readme

e dalla versione 0.8.0 puoi anche usarlo come host USB per rilevare dispositivi BADUSB:

HID

Questo è un esempio del debugger BADUSB disponibile sulla porta seriale:

Se preferisci i video, puoi anche dare un'occhiata alla mia presentazione all'Insomni'hack

USBvalve Watch

A partire dalla versione 0.15.0 è supportata una nuova versione Pi Pico Watch. Per compilare la nuova versione devi decommentare la riga #define PIWATCH all'inizio del codice. L'hardware è una scheda orologio con display TFT da 1,28 pollici basata su RP2040. Puoi trovare ulteriori informazioni qui. È inoltre completamente compatibile con il Waveshare RP2040-LCD-1.28.

Struttura del repository

docs: documentazione sul progetto, con una presentazione dove puoi vedere tutte le funzionalità

firmware: firmware precompilati per Raspberry Pi Pico. Puoi semplicemente usarli e flasharli sulla scheda. Abbiamo diverse versioni, per OLED a 32 o 64 linee, per Pico 1 o Pico2, Pi Pico Watch, ecc.

PCB: file Gerber se vuoi stampare il PCB personalizzato. Non è obbligatorio: puoi usare il tuo o costruirlo su una breadboard

src e data: sorgenti, se vuoi modificare e compilare tu stesso il firmware

utils: alcune utility che puoi usare per creare un filesystem personalizzato

pictures: immagini e risorse usate in questo documento

STL: file STL per il contenitore. Nelle cartelle 1.1 e 1.2 ci sono contenitori completi (grazie a WhistleMaster). Nelle cartelle 1.2_64 e 1.2_64_simple ci sono contenitori per lo schermo 128x64 (grazie a rtmq0227). Se vuoi qualcosa di più leggero per proteggere il display LCD, puoi usare USBvalve_sliding_cover.stl.

Costruire USBvalve

Elenco componenti

Se vuoi costruirne uno tuo, hai bisogno di:

  • Un Raspberry Pi Pico 1 o 2 (o un'altra scheda basata su RP2040)
  • uno schermo OLED I2C 128x64 o 128x32 (SSD1306)
  • (opzionale) un PCB USBvalve o una breadboard
  • (opzionale) un distanziale stampato in 3D per isolare lo schermo dalla scheda (https://www.thingiverse.com/thing:4748043), ma puoi usare anche un pezzo di nastro isolante

Note su BOOTSEL e versione >= 1.0.0

Nelle versioni 0.x.x, BOOTSEL veniva usato per resettare il dispositivo o stampare il numero di eventi HID (pressione > 2s). Il polling di BOOTSEL creava alcuni problemi al rilevamento BADUSB, quindi è stato rimosso dalla versione 1.0.0 e sostituito con le seguenti due opzioni:

  • saldare un pulsante tra GP0 e GND (pad 1 e 3, vedi l'immagine sotto per un esempio) per avere le stesse funzioni
  • usare i comandi r (reset) e h (eventi HID) dal monitor seriale

In PCB troverai anche una versione 1.3 della scheda, con alcuni fori sui pad 1 e 3 per facilitare il montaggio del pulsante. Ma come puoi vedere, puoi usare anche la tua vecchia versione.

Se non usi le funzioni BADUSB o se preferisci avere meno copertura sul rilevamento ma mantenere l'uso di BOOTSEL, fornisco anche un firmware creato con bootsel abilitato (vedi cartella e release).

Istruzioni di costruzione

Grazie a Tz1rf abbiamo anche due ottimi video: uno spiega il processo di costruzione passo dopo passo, e un altro mostra come caricare il firmware e usare lo strumento.

Quasi tutto il lavoro è svolto direttamente sulla scheda dal software, quindi devi solo predisporre la connessione con l'OLED per l'output.

A partire dalla versione 0.8.0 del firmware, USBvalve può rilevare dispositivi HID (usati per rilevare BADUSB). Questo richiede una porta USB aggiuntiva che funga da host. Se non sei interessato, puoi usare le vecchie istruzioni nella cartella docs e usare la versione 1.1 del PCB. Altrimenti procedi con la versione 1.2 del PCB (abbiamo versioni per USB-A o USB-B, vedi cartella).

Con il PCB USBvalve

  • salda una porta USB femmina nell'area USBH. Questa è per la versione A, ma c'è anche una versione per USB Micro-B se preferisci
  • posiziona il Raspberry Pi Pico sulla serigrafia sul davanti
  • non devi saldare tutti i pin. Solo i seguenti:
    • D4 e D5 (lato sinistro)
    • D14 e D15 (lato sinistro)
    • GND (lato destro, terzo pin dall'alto)
    • GND (lato destro, terzo pin dal basso)
    • 3v3_OUT (lato destro)
    • VBUS (lato destro)
    • i 3 pin DEBUG in basso: SWCLK, GND e SWDIO
  • posiziona il distanziale stampato in 3D o un pezzo di nastro sulle parti dell'OLED che toccano il Raspberry
  • salda l'OLED (con un connettore) sullo spazio dei 4 pin

Alcuni OLED hanno i pin GND e VCC invertiti, quindi ho costruito il PCB per essere compatibile con entrambe le versioni:

Ad esempio, se il tuo OLED ha GND sul PIN1 e VCC sul PIN2, come questo:

Devi mettere una goccia di stagno su questi due pad sul retro del PCB:

Altrimenti devi fare l'opposto e mettere lo stagno sugli altri pad:

Senza PCB USBvalve

Pico Pi

Se stai usando una breadboard o semplicemente dei cavi, tutto quello che devi fare è assicurarti di collegare i pin corretti allo schermo OLED e alla porta host USB.

La mappatura è la seguente:

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

Se vuoi usare le funzioni DEBUG, puoi anche posizionare un connettore sui 3 pin SWD in basso sulla scheda.

Con il PCB USBpipe

[!CAUTION] Questo PCB è per esperti di elettronica NON USARLO SE NON SEI SICURO DI POTERLO GESTIRE!

[!NOTE] R7 e R8 in realtà non sono collegati a nulla. Sono stati aggiunti per scopi di debug del circuito. Quindi non compaiono nella BOM

PCB USBpipe USBpipe

USBpipe è un PCB dedicato a questo progetto.

Puoi trovare tutto ciò che ti serve nella cartella ./PCB/USBpipe/.

Fronte Retro

Flash del firmware

Per flashare il firmware, segui questi passaggi:

  • Collega il Raspberry Pi Pico con il cavo USB, tenendo premuto il pulsante BOOTSEL (il grande pulsante bianco sulla scheda)
  • rilascia il pulsante
  • vedrai una nuova unità sul sistema, chiamata RPI-RP2 (negli ambienti Linux potresti doverla montare manualmente)
  • copia il file firmware appropriato (con estensione uf2) nella cartella, a seconda dell'OLED che hai usato
  • attendi qualche secondo finché la cartella montata non sparisce

Fatto!

Anti-Rilevamento

Non so se ti capiterà mai, ma potresti voler personalizzare il firmware per evitare il rilevamento da parte di malware a conoscenza di USBvalve :-)

Ho raggruppato la maggior parte delle variabili che potresti voler modificare in questa sezione di usb_config.h (vedi Dockerfile qui sotto per la ricompilazione)

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

Compilare il tuo firmware

Ovviamente puoi anche compilare il tuo firmware. Per compilare ti servono il Raspberry Pi Pico SDK e questo repository.

Istruzioni di base per la ricompilazione:

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

Se vuoi ricreare un nuovo filesystem fittizio, potresti dare un'occhiata alla cartella utils, dove ho inserito alcune utility per crearne uno nuovo.

Dockerfile

Se vuoi compilare il tuo firmware, dopo averlo personalizzato, fornisco un Dockerfile che crea un ambiente di compilazione completo e compila il firmware.

Inserisci i seguenti comandi nella cartella principale USBvalve per compilare:

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

Il firmware verrà salvato con estensione uf2 nella cartella USBvalve_out.

Contribuisci

Se hai idee o miglioramenti in mente, ti incoraggio ad aprire una issue così possiamo migliorare il progetto insieme! Grazie!

Supporto

Se hai domande o hai bisogno di supporto, puoi aprire una Issue qui o contattarmi su Twitter/X @red5heep

Versioni della community

La community ha creato alcuni fork che implementano il supporto per altre schede o altre modifiche. Grazie a tutti coloro che hanno contribuito allo sviluppo di USBvalve. Ecco qui di seguito un elenco non ufficiale/incompleto/non supportato:

  • USBvalve-tbfa-Mod

AVVERTENZA DI SICUREZZA

[!WARNING] Ho ricevuto molte domande su USBvalve e i dispositivi USB killer. USBvalve non è progettato per testare questi dispositivi, non ha alcun tipo di isolamento o protezione, quindi se sospetti di avere a che fare con uno di questi dispositivi, testalo con qualcos'altro, NON con USBvalve, o potresti danneggiare il dispositivo, te stesso o gli oggetti vicini a te.

Scarica lo strumento