Iot Security and Hacking

osvojiť si spôsoby etického hackovania a naučiť sa zraniteľnosti IoT zariadení

Video pre cvičenie

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.

Smart Department: Architektúra

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
$ 

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

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

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 umiestnenie IP:80 alebo toto umiestnenie otvorte z príkazového riadku cez nástroj http alebo curl.

  • Otvorený je aj port 22, čo je štandardný port pre protokol SSH. Pokúste sa teda pripojiť cez klienta z príkazového riadku ssh.

  • Pokiaľ neviete, aký protokol je používaný na komunikáciu na konkrétnom porte, môžete použiť univerzálneho klienta ncat (skrátene len nc) v tvare:

    $ nc IP_ADDRESS PORT

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:

  1. Nezabezpečené sieťové služby
  2. Nezabezpečené rozhrania ekosystému
  3. 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 symbol x, 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íkazu vi.

  • 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.

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

  1. OWASP IoT Top 10
  2. IoT Goat - IoTGoat is a deliberately insecure firmware created to educate software developers and security professionals with testing commonly found vulnerabilities in IoT devices.