Visualizzazione post con etichetta Leonardo. Mostra tutti i post
Visualizzazione post con etichetta Leonardo. Mostra tutti i post

giovedì 15 marzo 2018

Rubber Duck clone con Arduino Leonardo

Rubber Ducky e' un dispositivo di Hak5 che permette di effettuare penetration testing su macchine a cui si ha accesso fisico. In pratica si tratta di un dispositivo che viene visto dal computer come una tastiera e che invia caratteri tastiera da uno script predefinito come se fosse un utente umano. Lo script puo' essere configurato in modo da compromettere il terminale.
Qualcosa di simile e' BadUSB anche se in questo caso si prende una chiavetta di memoria USB che agisce come tastiera ma mantiene anche le sue caratteristiche di espansione di memoria.

Esempio di script automatico in esecuzione su Ubuntu Keyboard US Layout

E' possibile fare qualcosa di simile anche con una Arduino Leonardo dato che anche questa scheda ha una funzionalita' di tastiera. Io ho acquistato un mini clone di Arduino Leonardo

La scheda originale viene programmata mediante un suo linguaggio di scripting ed a questo link sono disponibili vari payload (sia innocui che offensivi)
Per convertire i payload da Rubber Ducky a Arduino Leonardo si puo' usare il comodo servizio online https://nurrl.github.io/Duckuino/.

Attenzione : gli script sono sia funzione del sistema operativo che del layout della  tastiera
Dal sito viene scaricato un file .zip con lo script .ino e Keyboard.h e Keyboard.cpp...non si tratta della libreria Keyboard di Arduino...nel file Keyboard.cpp si trova la configurazione del layout di tastiera desiderato (per esempio US od IT)

Per compilare lo sketch su Linux ho dovuto modificare il file Keyboard.h eliminando la riga

#include "HID.h"

inoltre il comando dell'esempio Hello World


Keyboard.press("r");

deve essere modificato in (il carattere e' incluso in apici singoli, la stringa in apici doppi)

Keyboard.press('r');

Un po' di note
1) Una volta caricato il payload questo viene mandato subito in esecuzione. In caso di payload malevolo puo' compromettere anche la macchina di sviluppo.Per questo motivo e' fortemente consigliato di inserire un delay nell'avvio del payload in modo da dare il tempo di disinserire la chiavetta.

2) Su Linux e Mac funziona tutto magnificamente ed in modo trasparente. Se si connette la schedina ad un computer Windows e si tenta di usare un payload malevole la cosa sara' molto meno trasparente perche' Windows si accorge che oltre all'interfaccia HID trova anche due dispositivi Arduino e tenta di scaricare i driver da Internet. Per evitare questa cosa ci sarebbe da pasticciare sui files boards.txt and USBDescriptor.h di Arduino IDE ma al momento non ho tempo di provarci





Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...