WebElektronika

Fertőzött USB pen drive alkalmazása

person access_time 2018.12.20.
Ebben a cikkben megnézzük a "fertőzött" USB eszközök alkalmazását. A cél az, hogy az Olvasót meggyőzzük arról, hogy ismeretlen (vagy nem megbízható) forrásból érkező pendrive-ot ne csatlakoztasson a saját számítógépének USB portjába. Ezért egy egyszerű demo-t készítünk el ebben a cikkben.


Ez a cikk illeszkedik a korábban indult sorozatunkba, amelynek célja az, hogy az otthoni rendszerünk tesztelésének az alapjait megismerjük, hogy a saját számítógépünk, hálózatunk biztonságosabb legyen. Nem célunk tehát semmilyen segítséget nyújtani más rendszerek feltörésének a megismerésében!

Figyelem! Semmilyen felelősséget nem vállalunk a cikk tartalmáért!

 

Nem biztonságos olyan számítógépen az USB portokat engedélyezni, amelyhez nem csak a tulajdonosa fér hozzá. Ha egy számítógépre idegen által USB pendrive csatlakoztatható, akkor megvan a veszélye annak, hogy a számítógépet megfertőzik, illetve adatokat lophatnak róla. Ennek demonstrálására született meg ez a cikk. Nem egy konkrét  támadó scriptet fogunk írni, hanem egy olyan egyszerű kódot, amely egy notepad-et indít el, és ott egy szöveget jelenítünk meg.
Elkészítünk egy egyszerű scriptet, majd egy (speciális) pendrive segítségével ezt egy számítógépen fogjuk futtatni. Ahhoz, hogy futtatni tudjuk, nem kell  adminisztrátori jogosultság, mert a pendrive HID (Human Interface Device) módban lesz, a számítógép tehát billentyűzetként fogja ezt az eszközt felismerni.

Az interneten különböző pendrive-ok vásárolhatók, amelyek nem csak adattárolásra alkalmasak, hanem különböző scriptek futtatására is. Az olcsóbb verzióknál a script futtatás lehetősége megmaradt (pont ez a lényeg), de az adattárolás már nem lehetséges.

Ez a cikk egy ilyen eszköznek az alkalmazását mutatja be. Az első ábrán látjuk ennek az eszköznek a képét.

kep
1. ábra   Egy speciális USB pen drive, amely egy virtuális billentyűzet
 

Ebben egy Atmega AVR van, a könnyebb fejlesztés, illetve az eszköz programozása miatt szükséges az Arduino fejlesztőrendszerének a letöltése, illetve a telepítése.

Töltsük le az Arduino oldaláról az Arduino IDE-t, majd telepítsük. 

Ezután csatlakoztassuk ezt az USB eszközt a számítógépünkhöz, és indítsuk el az Arudino IDE-t. A "Tools" menüben válasszuk ki az "Arduino Leonardo"-t (2. ábra).

kep
2. ábra   Az "Arduino Leonardo" kiválasztása
 

Ezután szintén a "Tools" menüben jelöljük ki azt a portot, amelyen megtalálható a badusb (3. ábra).

kep
3. ábra   Válasszuk ki azt a portot, ahova csatlakozott a pen drive
 

Írjunk most egy scriptet, amely akkor fog lefutni, amikor ezt a pendrive-ot egy másik számítógépre csatlakoztatjuk.
Mit csináljon ez a program? Legyen például ez a működése:
Amikor  rádugjuk egy másik számítógép USB portjára ezt a pendrive-ot, várjunk két másodpercet, majd a jelenítsük meg a "Run" ablakot (GUI r), ahol különböző parancsok futtathatók. Ebben az ablakban tudunk írni parancsokat, amelyeket azután futtatunk. Amikor megjelenítjük a "Run" ablakot, várjunk 0.2 másodpercet, majd írjuk bele az ablakba a "notepad"-et, megint várjunk 0.2 másodpercet, majd az "ENTER" segítségével indítsuk el a szövegszerkesztőt. Amikor a szövegszerkesztő megjelenik, megint várjunk (0.5 másodperc), majd jelenítsünk meg egy üdvözlőszöveget.
A következő kód ezt a műveletetsort valósítja meg:

DELAY 2000
GUI r
DELAY 200
STRING notepad
DELAY 200
ENTER
DELAY 500
STRING Udvozlet a WebElektronika Olvasoinak!
ENTER

 

Hogyan lehet ezt a scriptet letölteni az virtuális billentyűzetbe? Ehhez kell az Arduino IDE, viszont ez nem ismeri ezt a nyelvet, tehát át kell ezt konvertálni "C"-be. Ebben segít a következő honlap:

http://roothaxor.gitlab.io/ducky2arduino_stable/

 

A honlap felső ablakába másoljuk be ezt a kódot, amjd konvertáljuk át "C" nyelvre (4. ábra).

kep
4. ábra   Script fordítása "C" nyelvre
 

A következő programot kaptuk, amelyet másoljunk be az Arduino IDE ablakába:

#include <Keyboard.h> 
/*
 * Developer @root_haxor !
 */

// Init function
void setup()
{
  // Begining the stream
  Keyboard.begin();

  // Waiting 500ms for init
  delay(500);

  delay(2000);

  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press(114);
  Keyboard.releaseAll();

  delay(200);

  Keyboard.print("notepad");

  delay(200);

  typeKey(KEY_RETURN);

  delay(500);

  Keyboard.print("Udvozlet a WebElektronika Olvasoinak!");

  typeKey(KEY_RETURN);
}

void typeKey(int key)
{
  Keyboard.press(key);
  delay(50);
  Keyboard.release(key);
}

// Unused
void loop() {}

 

Fordítsuk le ezt a programot, majd töltsük le az USB eszközünkre. Vegyük ki ezután a pen drive-ot, majd tegyük be újra. Ekkor már a script lefut, és az 5. ábrán lévő eredményt kapjuk.

kep
5. ábra   Futási eredmény
 

Fontosnak tartjuk ismét megjegyezni azt, hogy ennek a cikknek az a célja, hogy az Olvasót ráébressze arra, hogy a számítógépére ismeretlen eredetű USB eszközt ne csatlakoztasson.