Ako vytvoriť vlastné Rubber Ducky z Arduina?

Chceli by ste si vyskúšať funkcie ponúkané zariadením Rubber Ducky, no príde vám zbytočne drahé alebo by ste si tam chceli pridať vlastnú funkcionalitu? V tomto článku sa podrobne pozrieme na jednoduchý, lacný, no napriek tomu efektívny spôsob ako si takéto zariadenie môžete vytvoriť, za využitia najrozšírenejšieho Arduina.

Čo je Rubber Ducky?

USB Rubber Ducky je HID zariadenie, ktoré vyzerá podobne ako USB kľúč, no správa sa ako klávesnica. Ide o zariadenie, ktoré sa využíva na automatizované stlačenie kláves po pripojení do akéhokoľvek zariadenia, ktoré podporuje HID. Takéto zariadenie je schopné písať rýchlosťou až 1000 slov za minútu. Pri Rubber Ducky je veľmi důležité podotknúť, že takéto zariadenie nedokáže detegovať žiadny antivírus alebo firewall, pretože funguje ako HID zariadenie.

RubberDucky

HID zariadenie

HID je skratka pre Human Interface Devices. Je to trieda špecifikácií pre počítačové zariadenia, ktoré interagujú s používateľmi prostredníctvom ovládacích prvkov ako sú například tlačidlá, dotykové plochy a podobne. HID zariadenia sú často používané ako bezdrôtové myši, klávesnice, dotykové perá a iné zariadenia.

DuckyScript

DuckyScript je skriptovací jazyk určený pre Rubber Ducky. Písanie skriptov je možné z akéhokoľvek bežného textového editora ASCII, akým je napríklad Notepad alebo Vim. Ak sa rozhodnete vytvoriť vlastné Rubber Ducky za využitia Arduino dosky, je potrebné myslieť na to, že tieto dosky samotný DuckyScript nepodporujú a je potrebné ich konvertovať do kompatibilného súboru. Toto môžeme dosiahnuť za využitia online konvertorov.

Využitie

Ide o zariadenie, ktoré je určené primárne pre etických hackerov. Toto zariadenie v rámci našej práce využívame pri vykonávaní fyzických testov sociálnym inžinierstvom alebo v prípade vykonávania Red Team operácií. Okrem spomenutých prípadov je možné takéto zariadenie využívať aj na IT automatizáciu alebo len pre vlastnú zábavu.

Je dôležité poznamenať, že používanie Rubber Ducky je v mnohých krajinách nezákonné a môže mať vážne následky pre tých, ktorí ich používajú na škodlivé účely. Etickí hackeri a penetrační testeri pri používaní hackerských nástrojov, ako je Rubber Ducky, majú vždy potrebné povolenia a dodržujú etické pokyny.

Spôsoby vytvorenia

Existuje viacero spôsobov, ktorými sme schopní dosiahnuť funkcionality originálneho Rubber Ducky zariadenia, za využitia vlastného, vo väčšine prípadov lacnejšieho, hardvéru. Ideálnym riešením je využitie Raspberry Pi Pico, ktoré veľkostne zodpovedá bežnému USB kľúču. Ďalším veľmi jednoduchým a efektívnym riešením je využitie Digispark Attiny alebo Arduino Nano. V prípade že máte root-nuté vaše Android zariadenie, ide tiež o jednu z možností, pri ktorej vieme dosiahnuť všetky funkcionality ponúkané Rubber Ducky zariadením. Je už len na vás, pre ktorú možnosť sa rozhodnete.

V našom článku sa pozrieme na mierne komplikovanejší spôsob vytvorenia a to za pomoci najrozšírenejšej Arduino dosky, ktorou je Arduino UNO.

Požiadavky

Svojpomocné vytvorenie takéhoto zariadenia, za využitia Arduina, je veľmi lacné, jednoduché, no napriek tomu efektívne riešenie. Na vytvorenie budeme potrebovať:

  • Arduino UNO
  • USB kábel
  • Arduino IDE
  • DuckyScript
  • DuckyScript konvertor
  • Súbor s potrebným softvérom a knižnicami - link

Krok 1 - Príprava prostredia

V prvom rade si pripravím prostredie, ktoré nám umožní tvorbu Rubber Ducky z Arduino dosky. Budeme potrebovať voľne dostupné Arduino IDE, ktoré je možné stiahnuť z oficialnej stránky. Keďže sme sa rozhodli využiť Arduino Uno, budeme potrebovať aj ďalší softvér s názvom Atmel Flip, ktorý využijeme na nahrávanie „driverov“ do zariadenia. Tento softvér je súčasťou ZIP súboru s odkazom v podkapitole "Požiadavky".

Krok 2 - Importovanie HID knižnice

Keď už máme nainštalovaný potrebný softvér, do Arduino IDE si importujeme HID knižnicu, nachádzajúcu sa na tomto linku.

Import HID knižnice

Sketch -> Include Library -> Add .ZIP Library

Krok 3 – Vytvorenie skriptu

V tomto kroku si vytvoríme testovací skript. Takýto skript si môžete napísať sami alebo využiť voľne dostupné zdroje, obsahujúce veľké množstvo skriptov. Väčšina z nich je napísaná v jazyku DuckyScript, preto budeme musieť využiť, už vyššie spomenutý, konvertor.

Testovací skript môže vyzerať nasledovne:

Testovací skript

V tomto prípade ide o veľmi jednoduchý skript, ktorý stlačí klávesu „Windows“, otvorí Notepad a napíše doň reťazec „Hello World“.

Krok 4 – Nahranie skriptu na Arduino dosku

Za pomoci USB kábla pripojíme naše Arduino k počítaču a v Arduino IDE si zvolíme správny typ využitého zariadenia (Tools -> Board -> Arduino AVR Boards -> Arduino Uno) spolu so správny portom (Tools -> Port -> Správny port).

Voľba Arduino dosky a portu

V prípade že máme pripravený skript, zvolenú správnu dosku a port, môžeme kliknúť na tlačidlo „Upload“ v Arduino IDE.

Skript máme teraz úspešne nahraný na našom zariadení a môžeme prejsť na tú mierne „komplikovanejšiu“ časť, kedy spravíme zo sériového zariadenia, zariadenie HID.

Krok 5 – Konverzia sériového zariadenia na HID zariadenie.

Na našom zariadení už máme nahraný testovací skript, no po pripojení do počítača sa nevykoná. Toto sa pokúsime v nasledujúcich krokoch zmeniť. Zariadenie pripojené do počítača je aktuálne rozpoznávané ako sériové zariadenie, ktoré sa nedokáže správať ako klávesnica. Požadované správanie dosiahneme inštaláciou potrebného drivera na Arduino dosku za pomoci softvéru Atmel Flip, kde si na začiatku zvolíme naše zariadenie. V prípade Arduina UNO ide o ATmega16U2.

Voľba zariadenia v Atmle Flip

Následne je potrebné short-nutie (krátke spojenie) dvoch pinov znázornených zelenými bodmi na obrázku nižšie.

Arduino UNO

Približne po sekundovom spojení, znázornených pinov, sa z počítača ozve tón odpojenia / pripojenia zariadenia a môžeme v aplikácii Atmel Flip kliknúť na ikonu USB kábla, následne zvoliť možnosť USB a kliknúť na spodné tlačidlo „Run“.

Výber USB zariadenia

V ideálnom prípade by ste mali vidieť rovnaké okno, ako je zobrazené na obrázku vyššie aj s chybovou hláškou „Verify device fail at 0x00000“, ktorá ale pre nás nie je podstatná. Ide o chybu spôsobenú nevykonaným updatom driveru pripojeného zariadenia.

Teraz si v Atmel Flip zvolíme Hex file (File->Load Hex File->Arduino-keyboard-0.3.hex) a znova stlačíme tlačidlo „Run“.

Nahranie driver-u

V prípade že po ťuknutí na tlačidlo „Run“ vidíte rovnaké okno ako je na obrázku vyššie, vlastné Rubber Ducky je definitívne hotové. Stačí ho už len vytiahnuť z počítača a opätovne doň zasunúť alebo do akéhokoľvek iného zariadenia, podporujúceho HID. Na obrázku nižšie môžeme vidieť výsledok nášho testovacie skriptu.

Výstup testovacieho skriptu

Krok 6 – Konverzia zariadenia HID na sériové zariadenie.

V tomto prípade budeme postupovať takmer totožne ako to bolo v kroku 5. Zariadenie si zapojíme za pomoci USB kábla do počítača, spustíme softvér Atmel Flip, v ktorom skontrolujeme či máme správne nastavené zariadenie (ATmega16U2 v prípade Arduino UNO). Rovnako short-neme 2 označené piny ako to bolo aj v kroku 5, zvolíme komunikačné médium kliknutím na ikonu USB kľúča a dáme „Run“. Následne si načítame súbor Hex pre sériové zariadenie (Arduino-usbserial-uno.hex) a nahráme ho do Arduina, kliknutím na tlačidlo „Run“. Teraz máme zo svojho Arduina sériové zariadenie a za pomoci Arduino IDE môžeme znova upravovať a nahrávať nové skripty.

Úspešná zmena na sériové zariadenie

Príklady možností využitia

Samozrejme, za pomoci tohto zariadenia môžeme vykonávať oveľa komplikovanejšie procesy ako je len samotný zápis do textového editora. Takéto zariadenie v práci využívame na spúšťanie a sťahovanie súborov do testovaných zariadení za pomoci CMD alebo Powershellu, vypínanie firewallov, spúšťanie reverzného shellu alebo taktiež na extrahovanie wifi hesiel, ktoré sú následne odoslané za využitia protokolu FTP alebo jednoduchého HTTP requestu na náš webový server.

Na obrázku nižšie môžeme vidieť výsledok skriptu, určeného na extrakciu uložených wifi hesiel z napadnutého zariadenia a následné odoslanie týchto údajov na stránku https://webhook.site, ktorú je možné využiť v prípade, že nedisponujete vlastným serverom s verejnou IP adresou. Keďže ide o voľne dostupnú službu tretích strán, neodporúčame ju využívať na zachytávanie citlivých údajov. V tomto prípade sme ju využili len demonštráciu dosiahnutých výsledkov.

Extrahované Wifi heslá z napdnutého zariadenia

Skript určený na vykonanie takejto akcie, sme na stránke z bezpečnostných dôvodov nezverejnili zámerne.

Test rýchlosti

Počas vykonania jednoduchého testu rýchlosti, sme dosahovali, rýchlosť písania na našom zariadení približne 1000 znakov za 15 sekúnd, čo v prepočte vychádza na 800 slov za minútu. Ako už bolo v tomto článku spomenuté, rýchlosť originálneho zariadenia sa uvádza na 1000 slov za minútu. Ide o relatívne pomalé zariadenie, no pre väčšinu situácii je takáto rýchlosť úplne postačujúca.

Záver

Vytvorenie vlastného Rubber Ducky zariadenia, za využitia mikrokontroléra Arduino má niekoľko výhod, akými sú napríklad nízka cena alebo vyššia škála možností jeho využitia. Ide o projekt, ktorý je do veľkej miery nenáročný na vytvorenie, pretože všetky potrebné komponenty možno ľahko zakúpiť za nízku cenu a platforma Arduino poskytuje užívateľsky príjemné rozhranie pre programovanie. Doma vytvorené zariadenie Rubber Ducky má potenciál zlepšovať efektivitu a presnosť v rôznych situáciách, akými sú napríklad fyzické penetračné testy alebo úlohy automatizácie. Svojpomocne vytvorené Rubber Ducky zariadenie je zaujímavým projektom aj pre tých, ktorí len chcú rozširovať svoje technické zručnosti v tejto oblasti.

Na záver je dôležité podotknúť že informácie a pokyny uvedené na tejto webovej stránke, slúžia len na edukačné a zábavné účely.