Iot Security and Hacking
osvojiť si spôsoby etického hackovania a naučiť sa zraniteľnosti IoT zariadení
Video pre cvičenie
Upozornenie
Predtým, ako prídete na cvičenie, tak:
je potrebné mať lokálne nainštalovaný Docker
je potrebné zvládať základy práce s technológiou Docker
stiahnite si nasledujúce Docker obrazy:
bletvaska/iottoolbox
Motivácia
V dnešnom cvičení sa zameriame na bezpečnostné analýzy (Etický Hacking) IoT zariadenia na základe bezpečnostných hrozieb OWASP IoT Top 10. Zariadenie, ktoré budete analyzovať, bude fyzicky prítomné v našej sieti.
Pre účely tohto cvičenia budete pracovať s predpripraveným prostredím založeným na Docker kontejneri, ktoré obsahuje všetky potrebné nástroje na vykonávanie bezpečnostných testov a analýz. Tento kontajner bude vašou konzolou pre testovanie.
Ciele
naučiť sa ovládať základné nástroje na hackovanie
získať praktické znalosti z etického hackingu IoT zariadení
Postup
Príprava prostredia
Na testovanie bezpečnosti sa zvykne s obľubou používať linuxová distribúcia Kali Linux. Pre naše potreby však použijeme pripravený Docker obraz, ktorý obsahuje všetky nástroje, ktoré budeme potrebovať.
Task
Spustite Docker kontajner z obrazu bletvaska/iottoolbox
a použite sieťový režim host
.
Po spustení sa vám zobrazí konzola s predpripravenými nástrojmi, ktorú budete používať na testovanie.
~/work
$
Poznámka
Sieťový režim host
zabezpečí, že IP adresa kontajnera
bude rovnaká, ako je IP adresa vášho hostiteľského počítača. To je veľmi
dôležité, nakoľko budeme potrebovať pristupovať k zariadeniam
nachádzajúcim sa v lokálnej sieti. To, že spustený kontajner má naozaj
IP adresu vášho hostiteľského počítača, si môžete overiť príkazom:
$ ip addr show
Task
Diskutujte s Vašim cvičiacim o možných nástrojoch, ktoré môžu byť použité na etické hackovanie IoT zariadení.
Oboznámente sa so základnými nástrojmi Security toolboxu:
bettercap
nmap
openssh
John
(John the Ripper)hashcat
nc
Identifikácia zariadenia v sieti
Keďže prostredie pre testovanie máme pripravené, tak sa v tomto kroku pokúsime identifikovať pripojené IoT zariadenie v našej lokálnej sieti. Našim cieľom bude zistiť jeho IP adresu, ako aj otvorené porty, na ktorých zariadenie komunikuje pomocou spustených služieb.
Task
Získajte IP adresu pripojeného MAGIC BOXU do vašej siete.
Na získanie IP adresy použijeme nástroj bettercap, ktorý je súčasťou Docker
obrazu. Po jeho spustení zadajte nasledujúce príkazy, ktorými spustíte
moduly net.probe
a ticker
:
$ bettercap
> set ticker.commands 'clear; net.show; events.show 10'
> net.probe on
> ticker on
Prácu s nástrojom bettercap
následne ukončíte príkazom quit
.
Task
Zistite, aké porty má zariadenie MAGIC BOX otvorené.
Aby sme zistili, aké porty má zariadenie otvorené, oskenujeme ho. Na
tento účel použijeme príkaz nmap
. Jeho základné použitie
vyzerá nasledovne:
$ nmap IP_ADDRESS
Poznámka
Skenovanie portov je časovo náročná úloha. Preto je potrebné na výsledok chvíľu počkať.
My však budeme potrebovať oskenovať všetky porty. Za tým účelom
spustíme príkaz nmap
s týmito parametreami:
$ nmap -nv -p- IP_ADDRESS
Význam jednotlivých parametrov je nasledujúci:
-n
– Zabráni Nmapu v zisťovaní DNS názvov (hostname), čím urýchli skenovanie.-v
– Verbose mód (podrobné informácie o priebehu skenovania).-p-
– Skontroluje všetkých 65 535 portov (porty od 1 do 65535).IP_ADDRESS
- Cieľová IP adresa
Upozornenie
V nasledujúcom výpise sa nachádza úplný zoznam všetkých otvorených portov zariadenia:
Completed Connect Scan at 22:32, 2788.47s elapsed (65535 total ports) Nmap scan report for 192.168.2.107 Host is up (0.021s latency). Not shown: 65528 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 53/tcp open domain 80/tcp open http 443/tcp open https 5000/tcp open upnp 5515/tcp open unknown 65534/tcp open unknown Read data files from: /usr/local/bin/../share/nmap Nmap done: 1 IP address (1 host up) scanned in 2788.53 seconds
Task
Identifikujte jednotlivé služby.
Skúste odpovedať na tieto otázky:
- Aké služby sú na zariadení dostupné a čo naznačujú?
- Je niektorá z týchto služieb potenciálne zraniteľná alebo otvorená pre neoprávnený prístup?
- Ako by ste mohli overiť bezpečnosť týchto služieb?
Task
Pokúste sa pripojiť na jednotlivé služby pomocou vhodných klientov/nástrojov.
Skúste vyskúšať rôzne spôsoby prihlásenia sa na naše magické zariadenie. Príklad:
Po skenovaní portov sme zistili že naše zariadenie má otvorený port
80
, ktorý reprezentuje štandardný port pre protokol HTTP. Cez webový prehliadač otvorte umiestnenieIP:80
alebo toto umiestnenie otvorte z príkazového riadku cez nástrojhttp
alebocurl
.Otvorený je aj port
22
, čo je štandardný port pre protokol SSH. Pokúste sa teda pripojiť cez klienta z príkazového riadkussh
.Pokiaľ neviete, aký protokol je používaný na komunikáciu na konkrétnom porte, môžete použiť univerzálneho klienta
ncat
(skrátene lennc
) v tvare:$ nc IP_ADDRESS PORT
Poznámka
Pokiaľ budete postupovať správne, objavíte na zariadení zadné vrátka (tzv. backdoor).
Task
Analyzujte, ktoré služby nie sú pre správne fungovanie zariadenia potrebné alebo ktoré z nich sú nedostatočne zabezpečené.
Riziká podľa OWASP IoT Top 10:
- Nezabezpečené sieťové služby
- Nezabezpečené rozhrania ekosystému
- Používanie nebezpečných alebo neaktuálnych komponentov
Prelomenie hesla MAGIC BOXU
Dodané zariadenie a hlavne je príkladom porušenia 1. rizika projektu OWASP IoT Top 10 s názvom Slabé, uhádnuteľné alebo natvrdo napísané heslá. To je dané tým, že firmvér už pri dodaní obsahuje dva vytvorené používateľské účty s natvrdo vytvorenými heslami, ktoré používateľ po inštalácii nemusí zmeniť.
V linuxových systémoch sú informácie o používateľských menách a heslách spravidla uložené v dvoch súboroch:
/etc/passwd
– Obsahuje základné informácie o používateľoch (meno, UID, GID, domovský adresár a shell). Heslá tu už nie sú priamo uložené. Namiesto toho obsahuje symbolx
, ktorý odkazuje na bezpečnejší súbor/etc/shadow
./etc/shadow
– Tento súbor obsahuje hashované verzie hesiel používateľov. Prístup k tomuto súboru má iba používateľroot
. Hash hesla sa zvyčajne zobrazuje ako reťazec.
Kedže sa nám podarilo v predchádzajúcom kroku získať prístup k celému zariadeniu pomocou zadných vrátok, v tomto kroku sa pokúsime získať zoznam dodávaných používateľov spolu s ich heslami.
Task
Zo súboru /etc/passwd
získajte mená regulárnych
používateľov systému.
V súbore /etc/passwd
sa nachádza niekoľko
používateľských účtov. Väčšina z nich je ale systémových. To znamená, že
niektoré spúšťané služby sú spustené pod špeciálnym používateľom. Takýto
používateľ obyčajne nemá domovský priečinok a nemá zadefinovaný ani
interpreter príkazov. Miesto neho má častokrát uvedený príkaz
nologin
.
Tá istá informácia sa dá rovnako získať zo súboru
/etc/shadow
. Tu sa dá vychádzať z informácie, že heslo (a
teda hash v súbore) sa bude nachádzať len pri účte, ktorý sa môže do
systému prihlásiť.
Nás budú naopak zaujímať účty, ktoré majú zadefinovaný niektorý z interpreterov príkazov.
Task
Pokúste sa získať heslo pre oboch používateľov pomocou
Heslá v podobe hashu
Zo súboru
/etc/shadow
si skopírujte hash jednotlivých používateľ a uložte si ich do txt vo svojom počítačí.V security toolboxe sa odpojte od MAGIC BOXU pomocu klávesovej skratky -> ctrl + c.
prejdite do domovského adresára pomocu príkazu -> cd
v domovskom adresári by ste mali vidieť súbor mire-botnet.txt a priečinok work
Vytvorte si súbor
iothash.txt
pomocou príkazuvi
.Z vášho počítača si skopírujte uložené hashe do vytvoreného súboru
iothash.txt
Task
John The Ripper
Ak sa Vám podarilo zistiť používatešlké mená a hash hesiel, tak teraz nastáva ta chvíľa aby sme odhalili ich heslá. Pomocou nástroja John The Ripper skúste prelomiť heslo.
Poznámka
Pred tým ako prejdete na samotné prelomenie hesla, si pozrite súbor mire-botnet.txt. Čo vieme o tomto súbore povedať? Čo obsahuje tento súbor?
Použite nasledovný kód na oddelenie používateľských mien od hesiel:
>bash > awk '{print $2}' mire-botnet.txt > mire-botnet_passwords.txt >
Diskutujte s vašim cvičiacim o tom prečo treba alebo je potrebné oddeliť v našom pípade používateľské mena od hesiel.
Pomocou nástroja John The Ripper skúste prelomiť heslá.
Po úspešnom spustení nástroja John the Ripper s pripraveným slovníkom a súborom hashov získame prelomené heslo pre používateľa iotgoatuser. Skúste porozmýšľať ako by sa nám mohlo podariť získať heslo pre užívateľa root?
Task
Ako heslo využiť ďalej?
Zistite spolu s Vašim cvičiacim ako overiť správnsť hesla.
je heslo správne, funguje?
„Heslo nájdené, ale sme skutočne ďalej?“
Na prvý pohľad sa môže zdať, že nájdením tohto hesla sme sa nikde neposunuli a stojíme opäť na začiatku. V skutočnosti však prelomenie hesla predstavuje dôležitý krok v analýze bezpečnosti. Tento moment nám umožňuje posunúť sa ďalej – môžeme:
- Otestovať prístup k systému s použitím získaného hesla.
- Overiť, či heslo poskytuje ďalšie možnosti eskalácie prístupu.
- Skúmať, či je heslo opakovane použité na iných miestach.
Tento krok nám teda poskytuje cenné informácie a otvára dvere pre ďalšiu analýzu a testovanie.
Skúste prísť na to ako využiť nájdene heslo. Stačí nám prístup iotgoatuser na to aby sme sa vedeli dostať do MAGIC BOXU cez http? cez shell? alebo potrebujeme zistiť aj používateľa root?
Ďalšie úlohy
Ďalšie zdroje
- OWASP IoT Top 10
- IoT Goat - IoTGoat is a deliberately insecure firmware created to educate software developers and security professionals with testing commonly found vulnerabilities in IoT devices.