Hoe maak je je eigen BadUSB?
💡
TL;DR: een eigen BadUSB maken kan voor minder dan €20, en 2 uurtjes van je tijd.

We hebben je in [[dit vorige artikelLINK]] inmiddels haarfijn verteld wat een BadUSB is, en wat je ermee kan. Oók bieden we je er in onze shop een aan, waar je hartstikke leuk al mee aan de slag kunt.

Maar, bro's zouden bro's niet zijn als we je niet gingen vertellen hoe je er zelf een kan maken, voor nog goedkoper dan wij het ooit zouden kunnen aanbieden aan je. Zelf een BadUSB maken kan je met een eenvoudig PCB/USB board maken, zoals een Raspberry Pi Pico, maar we focussen vandaag op een BadUSB die wordt gemaakt met een ESP32-board.

Let op:

Uiteraard is dit artikel uitsluitend bedoeld voor educatieve doeleinden. Gebruik dit apparaat alleen op een verantwoorde manier en met toestemming van de betrokkenen.

Wat heb je nodig?

  1. ESP32-S2 of ESP32-S3 board (met native USB-ondersteuning). Zoals deze.
  2. Een micro-USB-kabel.
  3. Arduino IDE of een andere geschikte ontwikkelomgeving.
  4. USB Rubber Ducky scripts (voorgeconfigureerde payloads).
  5. Basiskennis van programmeren en het gebruik van Arduino IDE. [geen zorgen, we leggen je alles haarfijn uit]

Stap 1: Bereid je ESP32 voor

Voordat je begint, moet je ervoor zorgen dat je ESP32 correct is ingesteld en dat je de benodigde bibliotheken (directories) hebt geïnstalleerd.

  1. Installeer Arduino IDE: Download en installeer Arduino IDE.
  2. Voeg de ESP32 Board Manager URL toe:
  1. Installeer ESP32-bibliotheken:
  • Ga naar Hulpmiddelen > Board > Boards manager.
  • Zoek naar "ESP32" en klik op "Installeren".

Stap 2: USB HID-emulatie instellen

ESP32-S2 en ESP32-3 kunnen HID emuleren. HID staat voor een Human Interface Device, en betekent dus iets als bijvoorbeeld een muis, toetsenbord of game controller.

  1. Laad het juiste voorbeeldprogramma:
  • Open Arduino IDE en ga naar Bestand > Voorbeelden > USB > HID > Keyboard.
  • Dit voorbeeld laat zien hoe je de ESP32 kunt gebruiken als toetsenbord.
  1. Pas het script aan: Voeg de payload toe die je wilt uitvoeren. Een eenvoudige payload om bijvoorbeeld de rekenmachine te openen op een Mac computer.
#include "USB.h"

void setup() {
  USB.begin();
  delay(5000); // Wacht 5 seconden voordat de payload start na het in de Mac stoppen

  // Simuleer Command + Spatie om Spotlight te openen (MacOS)
  USB.write(KEY_LEFT_GUI);
  USB.write(' ');

  // Typ "Calculator" en druk op Enter
  USB.print("calculator");
  USB.write(KEY.RETURN);
}

void loop() {
    // Niets doen
}    
  1. Upload de code: Verbind je ESP32 met je computer en upload de code via Arduino IDE.

Stap 3: Payloads maken en testen

Payloads zijn scrips die acties uitvoeren zodra het apparaat wordt ingeplugd. Je kunt zelfs payloads schrijven of een van de vele bestaande gebruiken, zoals die van USB Rubber Ducky. Voor zover wij hebben kunnen vinden hebben die de grootste directory van kant en klare payloads die je kan gebruiken. Gratis en voor niets.

Zodra je in de code bekende dingen begint te herkennen, is het leuker om jouw eigen payloads te schrijven. In Terminal (MacOS) of in Command Prompt (Windows) kan je nagenoeg alles openen, installeren, en doen met slechts een toetsenbord. Wil je Spotify openen, en een leuk liedje afspelen? Geen probleem. Heb je een leuke payload bedacht voor de ESP32? Laat het ons weten en wellicht publiceren we het op onze blog.