SAMSUNG_022024A Advertisement SAMSUNG_022024A Advertisement SAMSUNG_022024A Advertisement

Python a kybernetická bezpečnosť / 11. časť

0

V tejto časti seriálu sa vrátime k téme získavania prihlasovacích údajov, naprogramujeme novú časť (stránku) vzorovej aplikácie a prakticky predvedieme ďalší zo spôsobov útoku na cieľové zariadenie. Prihlásenie sa na cieľové zariadenie je jeden z najdôležitejších krokov potrebných na následnú záškodnícku činnosť útočníka. Kompromitácia zariadenia je síce možná aj bez tohto kroku, ale prihlásenie nám otvorí oveľa viac dverí a umožní nám vykonať podstatne viac aktivít. Práve preto je kvalita prihlasovacích údajov a takisto ich silná ochrana nesmierne dôležitá.

SAMSUNG 042024 Advertisement  

Predpoklady

Na kvalitu a ochranu prihlasovacích údajov nás síce vždy a všade upozorňujú, ale napriek tomu ju nedodržiavame. Azda najpochopiteľnejší dôvod je nemožnosť zapamätať si rôzne prihlasovacie údaje na prístup k množstvu používaných zariadení. Ďalšími predpokladmi, na ktorých si zakladajú mnohí útočníci, by mohli byť tieto:

1. na zariadeniach nechávame štandardné (default) prihlasovacie údaje – buď o tom nevieme, zabudli sme, alebo nás to nezaujíma,

2. používame jednoduché prihlasovacie údaje – sú predsa ľahšie zapamätateľné,

3. používame tie isté údaje na rôznych zariadeniach, veď kto by si pamätal stovky rôznych mien a hesiel,

4. necháme sa nachytať nejakou formou „phishingu“,

5. prezradíme svoje prihlasovacie údaje pri útoku v rámci „sociálneho inžinierstva“,

6. postúpime svoje údaje nevedome „neprajnému“ kolegovi či kamarátovi.

Aj keď si útočníci zakladajú na uvedených predpokladoch, mnohí z nás predsa len dodržiavame pravidlá a používame kvalitné prihlasovacie údaje, ktoré si starostlivo chránime. Navyše si pravidelne aktualizujeme operačný systém a poctivo využívame antivírusové, antimalvérové či antiphishingové služby. V takom prípade si môžeme byť takmer istí, že naše údaje nikto nezíska a nezneužije. Na internete sa síce povaľuje množstvo aplikácií, ktoré sľubujú prelomenie hesla na počkanie, s istotou však môžeme konštatovať, že kvalitné a dobre chránené prihlasovacie údaje nikdy neprelomia. Okrem toho mnohé zariadenia majú implementované rôzne druhy ochranných mechanizmov, ako napr. systémy na prevenciu/detekciu prienikov, odpojenie či vypnutie zariadenia, zapnutie alarmu, informovanie administrátora, zablokovanie účtu v prípade niekoľkých chybných prihlásení...

Každopádne v medzinárodnej počítačovej sieti internet, ale aj v našom najbližšom okolí stále existuje obrovské množstvo nechránených zariadení. Vôbec pritom nemusí ísť o počítač, ale útočníci sa môžu zamerať na akékoľvek sieťové zariadenia – počnúc Wi-Fi routermi cez sieťové kamery, rôzne smart TV, smart hodinky, domáce smart centrá, herné konzoly až po smart chladničky, mikrovlnky alebo rôzne detské smart hračky. Jednoducho všetko, čo máme nejakým spôsobom pripojené k počítačovej sieti, môže predstavovať vstupný bod pre potenciálneho útočníka.

Sieťový skener v4.0

Vo štvrtej verzii našej vzorovej aplikácie využívame prvý predpoklad umožňujúci útočníkom preniknúť do našich zariadení. Ide o to, že veľa zariadení má od výrobcu nastavené štandardné prihlasovacie údaje, ako napr. user:user, admin:admin, pričom mnohí používatelia tieto údaje nezmenia. Štandardné prihlasovacie údaje sú pritom verejne známe – na internete možno nájsť množstvo databáz s tzv. Vendor Default Credentials.

V predošlých častiach seriálu sme ukázali, akým spôsobom dokážeme v našom okolí identifikovať prítomnosť zariadení využívajúcich služby Telnet, resp. SSH. Ak predpokladáme, že konkrétne zariadenie môže mať stále nastavené štandardné prihlasovacie údaje, vieme pripraviť jednoduchý Python skript, prostredníctvom ktorého dokážeme otestovať skupinu Default Credentials a pri troche šťastia získame prístup k tomuto slabo chránenému zariadeniu.

Obr. 1 Cieľ útoku s funkčnými službami/servermi Telnet a SSH

 

Telentlib (docs.python.org/3/library/telnetlib.html), Paramiko (www.paramiko.org)

Python modul telnetlib, resp. trieda Telnet implementuje protokol Telnet (RFC 854), a hoci ide o protokol, resp. službu, ktorá sa z dôvodu bezpečnosti už takmer nevyužíva, na niektorých zariadeniach stále môžeme detegovať jej prítomnosť. Z triedy telnetlib.Telnet  využívame nasledujúce metódy:

read_until()

Číta z bytového streamu (socketu), pokiaľ nenájde požadovaný reťazec

write()

Zapíše reťazec na socket

expect()

Číta zo socketu, pokiaľ nenájde regulárny výraz/regulárne výrazy

close()

Ukončenie spojenia

 

Modul Paramiko je implementáciou protokolu SSHv2 (RFC 4250 – 4254). Pracuje na princípe klient-server, pričom v našej aplikácii využívame nasledujúce metódy triedy paramiko.SSHClient:

set_missing_host_key_policy()

Nastavenie politiky pre komunikáciu so serverom bez znalosti klientskeho kľúča (Host Key)

connect()

Nadviazanie spojenia so serverom + autentifikácia, pri nadviazaní spojenia sa použije nastavená Host Key Policy, pozri predchádzajúce

get_transport().open_session()

Požiadavka na otvorenie kanála (session) prostredníctvom tzv. transportného objektu (trieda Transport)

close()

Ukončenie spojenia

 

Page4.py

Štruktúra zdrojového kódu je veľmi podobná štruktúre ostatných stránok. Používateľ má možnosť vpísať IP adresu cieľového zariadenia a vybrať si službu, ku ktorej požaduje vykonať testovanie. Testovanie naštartujeme stlačením tlačidla TEST – START. Spustíme tým metódu run() triedy DefaultCredentialsClass, ktorá sa vykoná v samostatnom programovom vlákne. Na jej začiatku dôjde k otvoreniu súboru data/default-passwords.txt, ktorý obsahuje zoznam možných prihlasovacích hesiel. Po načítaní hesla dôjde k vykonaniu testu prihlásenia prostredníctvom vybranej služby. Prihlasovacie meno je pevne nastavené na „user“, nič nám však nebráni toto meno zmeniť, resp. pripraviť dátový súbor, v ktorom bude uložený komplexný zoznam možných prihlasovacích mien.

V prípade služby Telnet dôjde ku kontaktovaniu zariadenia, vloženiu mena a hesla a k následnej kontrole existencie textu „Last login“ v odpovedi. V prípade pozitivity je výsledok uložený do príslušného DataFrame. Podobne v prípade služby SSH je kontaktované zariadenie a testuje sa úspešnosť vytvorenia session. V prípade pozitivity sa napĺňa rovnaký DataFrame. Všimnime si, že medzi testami dochádza k náhodnému čakaniu, čím môžeme aspoň trošku znížiť riziko nášho odhalenia.

Obr. 2 Výstup aplikácie NetScanner v4.0 s úspešne otestovanými prihlasovacími údajmi

 

 

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať