
Python a kybernetická bezpečnosť – 2. časť
V tejto časti seriálu sa doslova bezhlavo vrhneme do neprebádaných vôd a hneď zostra začneme programovať. Pri plnom vedomí toho, že sme si zatiaľ takmer nič nevysvetlili, pripravíme prvú verziu vzorovej aplikácie, ktorú budeme v nasledujúcich častiach dopĺňať o novú funkcionalitu. Ako základ nám poslúži kód, ktorý sme už raz predstavili, ale nateraz použijeme iné výkonné príkazy. Čo sa týka teórie, tú budeme vysvetľovať postupne s uvedením vzťahu k jednotlivým príkazom a postupom. Chápeme, že bez ďalšieho štúdia potrebných detailov budú viaceré veci nejasné, ale naším cieľom je čo najrýchlejšie prezentovať praktické aplikácie bez zdĺhavého venovania sa teórii.
Drôtové vs. bezdrôtové prostredie
Väčšinu nami opisovaných riešení budeme realizovať v bezdrôtovom prostredí. Prečo? Jeden z najdôležitejších dôvodov je všadeprítomná preferencia tohto druhu sietí. Nemenej dôležitý dôvod je implementácia pokročilých kontrolných mechanizmov v rámci drôtových, resp. optických sietí, ktoré je veľmi ťažké prekonať a ktorých narúšanie môže viesť k problémom s legislatívou. Okrem toho sa nám v rámci bezdrôtových sietí ponúkajú (aj keď nechcene) mnohé spôsoby interakcie, a to často bez toho, aby sme porušili akékoľvek zákony.
Potrebné nástroje
Náš kód alebo postupy budeme riešiť na úplne obyčajnom prenosnom počítači s bežným sieťovým rozhraním, pomocou ktorého sme sa doposiaľ pripájali k ostatným zariadeniam, resp. k sieti internet. Ako zvyčajne použijeme operačný systém Linux (Ubuntu distro). Nič nám nebráni použiť niektorý z virtualizačných nástrojov, ako napr. VirtualBox, ale naše aplikácie môžeme spúšťať aj priamo, a to po doinštalovaní nasledujúcich balíčkov:
sudo apt install net-tools |
Základné sieťové nástroje |
ifconfig |
sudo apt install wireless-tools |
Sieťové nástroje určené pre bezdrôtové siete |
iwconfig, iwgetid |
sudo apt install aircrack-ng |
Nástroje určené na prelomenie (cracking) bezpečnosti bezdrôtových sietí |
airmon-ng |
sudo apt install tshark
sudo dpkg-reconfigure wireshark-common sudo chmod +x /usr/bin/dumpcap |
Konzolová verzia notoricky známeho nástroja Wireshark, ktorý je určený na zachytávanie a analýzu sieťovej prevádzky
Umožnenie spúšťania tshark pod účtami bežných (non-superusers) používateľov |
tshark |
sudo apt install pip |
Python Package Installer |
pip |
sudo apt install idle |
Python Integrated Development Environment |
idle |
Príprava na programovanie
Aplikácie budeme programovať v bežnom Pythone pomocou knižníc Pandas a Dash. Knižnica Pandas je určená na manipuláciu a analýzu rôznych typov údajov. Pomocou frameworku Dash dokážeme vytvárať interaktívne webové aplikácie slúžiace na vizualizáciu údajov. Prioritne sa zameriava na analýzu, revíziu, kontrolu údajov a ich vizualizáciu, modelovanie, reportovanie... Viac informácií o knižnici Pandas a frameworku Dash možno nájsť v predošlých častiach tohto seriálu.
Programový kód aplikácie budeme v počiatočnej fáze pripravovať v základnom Python IDE IDLE. Zdrojový súbor editujeme jednoduchým príkazom idle scanner.py. Vykonanie kódu zabezpečíme príkazom sudo python3 scanner.py. Spúšťanie s právami root je nevyhnutné z dôvodu spúšťania systémových príkazov v rámci aplikácie, ktoré nemožno spustiť pod účtami bežných (non-superusers) používateľov.
Obr. 1 Podtypy manažment rámcov štandardu IEEE 802.11 (Wi-Fi)
Monitoring siete
Získavanie informácií o potenciálnych cieľoch útokov, resp. získavanie informácií v rámci penetračných testov kybernetickej bezpečnosti je jeden z najdôležitejších krokov, ktorý determinuje našu ďalšiu činnosť. V prípade drôtových sietí môže byť skenovanie siete klasifikované ako trestná činnosť, a preto sa takýmto krokom zďaleka vyhneme. Bezdrôtové siete však fungujú na úplne inom princípe a ich skenovanie bez akéhokoľvek zásahu (zatiaľ) pre nás nepredstavuje žiadne právne riziko.
Nesmiernymi výhodami bezdrôtových sietí je jednoduchosť až trivialita ich používania, ktoré sú doplnené o ich všadeprítomnosť. Tieto výhody však získavame za cenu niekoľkých zásadných nevýhod. Tá najdôležitejšia je pravidelné vysielanie vlastných údajov a takisto prejavovanie záujmu o údaje ostatných zariadení prítomných v okolí. Zariadenia, ktoré sa v rámci najznámejšej bezdrôtovej siete Wi-Fi, založenej na pravidlách definovaných štandardom 802.11, chcú pripojiť k iným zariadeniam, vysielajú tzv. Probe Request rámce (frames – Data Link vrstva modelu OSI) spolu s viacerými údajmi používanými na výber „spriazneného“ zariadenia. Naopak, zariadenia, ktoré ponúkajú možnosť pripojenia (zväčša tzv. prístupové body – Access Point – AP), vysielajú tzv. Beacon rámce, pomocou ktorých informujú o svojej existencii a podporovaných vlastnostiach. Pomocou rámcov Probe Request a Beacon sa teda jednotlivé zariadenia a ich sieťové rozhrania vzájomne informujú o svojej prítomnosti a svojich spôsobilostiach. Podrobnosti vysvetlíme neskôr.
Obr. 2 Grafický výstup aplikácie WiFiScanner
WiFiScanner
Cieľom našej prvej aplikácie bude základný monitoring sietí Wi-Fi. Po úspešnej inštalácii všetkých uvedených nástrojov musíme naše sieťové rozhranie prepnúť do tzv. Monitor módu, a to pomocou príkazu sudo airmon-ng start „wlp2s0“ (wlp2s0 je názov bezdrôtového rozhrania v rámci nášho OS). Sieťové rozhranie v móde Monitor prijíma všetky údaje, ktoré sú vysielané akýmkoľvek iným zariadením v našom okolí s kompatibilným sieťovým rozhraním. Je jedno, či ide o počítač, smartfón, tablet, tlačiareň, fotoaparát, alebo obyčajné hodinky.
Ako sme uviedli, každé zariadenie, ktoré má možnosť pripojiť sa k sieti Wi-Fi, začne po aktivácii Wi-Fi vysielať rámce Probe Request. Ich cieľom je nadviazať kontakt s okolitými zariadeniami (najmä AP) a v prípade kladnej reakcie participovať na vytvorení príslušného spoja. Naopak, hlavnou úlohou rámcov Beacon je informovať okolité zariadenia o možnosti využitia kvalitnejšieho spoja v prípade pohybu/prechodu zariadenia od jedného AP k druhému. V oboch prípadoch teda dochádza k automatickému vysielaniu uvedených rámcov.
Aplikácia WiFiScanner využíva nástroj tshark na zachytávanie rámcov Probe Request a Beacon vysielaných zariadeniami v našom okolí. Napriek tomu, že moderné ovládače implementujú viaceré obranné mechanizmy, ako napr. náhodná zmena MAC adresy, nevysielanie názvu siete (SSID), nevysielanie špecifických elementov výrobcu (Vendor Specific Elements), zachytávaním uvedených rámcov máme možnosť získať mnoho užitočných informácií o zariadeniach, ktoré sa nachádzajú v našom okolí.
Marek Sopko
Zobrazit Galériu