
Python a kybernetická bezpečnosť / 25. časť
V tomto článku plynule nadviažeme na informácie, ktoré sme uviedli v predošlej časti seriálu. Predstavíme vám praktické použitie nástroja nmap na získavanie informácií o zariadeniach pripojených do počítačových sietí vrátane informácií o službách, ktoré na daných zariadeniach bežia. Ukážeme si niekoľko základných skenov, ktoré môžeme pomocou nmap vykonať, a rozoberieme si získané výsledky. Pripravíme si tak pôdu na realizáciu rovnakých skenov prostredníctvom programového kódu napísaného v jazyku Python.
Nmap prakticky
Zopakujme si, že najčastejším výstupom nmap sú IP adresy zariadení spolu so zoznamom a stavom prístupných portov, protokolov a služieb. Nmap okrem toho dokáže identifikovať MAC adresy, DNS názvy, typy zariadení a takisto dokáže odhadnúť, aké operačné systémy bežia na daných zariadeniach. Skeny možno realizovať v rámci lokálnej počítačovej siete, ale aj v rámci vzdialených lokalít, resp. cielene na konkrétne zariadenia pripojené do počítačovej siete (vrátane internetu). V našom prípade sme použili jednoduchý laptop s nainštalovaným OS Linux a nmap. K lokálnej sieti sme boli pripojení bezdrôtovo, pričom naša vlastná IP adresa bola 192.168.30.175 a skeny sme realizovali v privilegovanom režime (teda ako root). Vykonali sme nasledujúcich sedem základných skenov:
1. List scan
Pripraví jednoduchý zoznam (Hostname/IP) zariadení bez odoslania paketov týmto zariadeniam (teda bez pingu). Vykoná reverzný preklad DNS, to značí, že získa názvy zariadení, podľa ktorých vieme vykonať prvotnú identifikáciu účelu ich využitia. V našom prípade sme takto identifikovali gateway a názov vlastného laptopu.
2. Ping scan
Pripraví zoznam aktívnych zariadení, ktoré odpovedali na ping (ICMP Echo Request). Nevykonáva skenovanie portov ani detekciu OS. Získali sme MAC adresy zariadení a nmap na ich základe identifikoval ich výrobcov (vendors). Podľa výrobcu následne možno identifikovať, resp. odhadnúť typ zariadenia, ako napr. router, access point, IoT… V prípade, že je medzi naším počítačom a cieľovou sieťou „silný“ firewall (zakazuje ICMP), je možné, že tento sken nepodá relevantné výsledky.
3. SYN scan
Pripraví zoznam zariadení/portov, ktoré odpovedali na SYN, ale spojenie sa nenadviaže, pretože nmap namiesto ACK zašle RST. Ide teda o tzv. neviditeľný/nehlučný (stealthy) sken, ktorý pomerne spoľahlivo rozoznáva otvorené, zatvorené a filtrované stavy portov. Oproti Connect scanu je „opatrnejší“, pretože nevytvára spojenie. Connect scan spojenie vytvorí a následne ho ukončí, čím sa vytvorí udalosť, ktorá sa zrejme zapíše do logov a pre systémy IDS/IPS môže byť riziková, čo povedie k zastaveniu ďalších spojení. V našom prípade sme takto získali zoznamy portov, pričom nmap k nim priradil stavy a takisto typy poskytovaných služieb, na základe čoho vieme odhadnúť, na čo sa asi dané zariadenia používa. Rozsah identifikovaných portov bol však menší a pri mnohých zariadeniach neurčený.
4. TCP Connect scan
Pripraví zoznam zariadení/portov, ktoré odpovedali na systémové volanie connect(). Oproti SYN scanu sa nám rozšíril zoznam zariadení a v niektorých prípadoch aj zoznam portov, čo však nemuselo byť spôsobené väčšou schopnosťou identifikácie Connect scanu, ale napr. nájdením zariadení, ktoré sa práve pripojili do siete (ako napr. pripojenie nového smartfónu či aktivovanie predtým uspaného zariadenia). Skeny sme totiž nevykonávali v tých istých časových okamihoch. SYN scan aj Connect scan nám teda poskytli pomerne rovnaké, vzájomne sa doplňujúce výsledky. Ako sme už uviedli, Connect scan spojenie vytvorí a následne ho riadne ukončí bez odoslania obsahových údajov, čo vyvoláva dojem korektne prebiehajúcej komunikácie (na rozdiel od RST, ktorý zasiela SYN scan), ale môže vyvolať zvýšený záujem detekčných systémov.
5. ARP ping
Nmap pripraví zoznam zariadení, ktoré odpovedali na ARP Request, pričom zo získaných MAC adries možno identifikovať výrobcov zariadení. V našom prípade sme získali prakticky ten istý výstup ako v prípade Ping scanu. Nové zariadenia mohli byť pridané iba preto, že sa práve pripojili k sieti. Dokumentácia nmap uvádza, že tento typ skenu je rýchlejší ako Ping scan, a to z dôvodu, že hneď ako nmap získa odpoveď na ARP Request, uvedie, že zariadenie je aktívne, a ďalej mu už neodosiela klasický ping.
6. Null / FIN / Xmas scan
Všetky tri typy skenov pripravujú zoznam zariadení/portov, ktoré neodpovedali (open/filtered), resp. odpovedali RST (closed). Rozdiel je v tom, že pri Null scan sú všetky flagy TCP segmentu prázdne, pri FIN scan je nastavený FIN flag a pri Xmas scan sú nastavené flagy FIN, PSH a URG. Null scan funguje tak, že keď cieľové zariadenie s otvoreným portom prijme segment s prázdnymi flagmi, nijako nezareaguje. Naopak, zatvorený port je „zmätený“ (confused) a reaguje pomocou RST. V prípade FIN / Xmas scan otvorené porty takisto nijako nereagujú, ale zatvorené porty sú opäť „zmätené“ a zašlú RST paket. Navyše ak cieľové zariadenie odošle ICMP unreachable, port sa doplnkovo označí ako filtrovaný. Výhodou N/F/X scanov je to, že dokážu celkom dobre oklamať firewally a viaceré aktívne kontrolné prvky. Nevýhodné je, že pokiaľ cieľový OS nedodržiava štandard TCP RFC, zvyčajne vždy zašle RST, na základe čoho nmap mylne označí port ako zatvorený.
V našom prípade bol najrýchlejší Null scan, potom FIN scan a najpomalší bol Xmas scan. Tomu však zodpovedali aj výsledky. Null scan nepriniesol oproti SYN scanu žiadne nové výsledky. FIN scan bol jemne lepší, ale najviac a najdetailnejšie výsledky poskytol jednoznačne Xmax scan. Z jeho výstupu sme získali zoznam mnohých nových identifikovaných portov a mnohých nových zariadení.
Obr. 1 Časť textového výpisu výsledkov Xmas scanu
7. Sken operačného systému
Posledným nami realizovaným skenom sme získali zoznam IP/MAC/typov/portov, doplnený o odhad typov operačných systémov, ktoré bežia na daných zariadeniach. V niektorých prípadoch nám nmap oznámil, že nevie presne identifikovať OS, a ponúkol nám výber zo zoznamu TCP/IP fingerprint.
Analýza získaných výsledkov
V prvom rade musíme uviesť, že viaceré nmap skeny trvajú pomerne dlho, a to najmä v prípade, ak chceme preskenovať celú lokálnu sieť. Konkrétne hovoríme o časoch 30-40 minút a niekedy aj o jednej hodine či aj viac. Samozrejme, tento čas sa výrazne skráti obmedzením počtu skenovaných objektov.
Nami získané výsledky sme zhrnuli do schémy na obr. 2. V nej sme identifikovali 6 najzaujímavejších zariadení, ktoré by boli objektom ďalšieho skúmania. V prvom rade ide o router/gateway, resp. aktívny switch s IP 192.168.30.1, na ktorom je viacero otvorených portov. Ďalej je to aktívny sieťový prvok, zrejme Wi-Fi Access Point IP 192.168.30.3, takisto s viacerými otvorenými portami, ktorý je pravdepodobne prepojený s ďalšími AP (.10, .20, .54, .180), pretože išlo o podnikovú sieť väčšej budovy, kde počítame, že nebude nainštalovaný iba jediný AP. Okrem toho sme identifikovali tri zariadenia s množstvom detegovaných portov, ktoré môžu byť počítačmi s nainštalovanými službami. Zariadenie s IP 192.168.30.213 by mohla byť sieťová tlačiareň, čomu zodpovedajú niektoré detegované porty. Dovedna nmap identifikoval 28 rôznych zariadení, zväčša to boli smartfóny, nejaké zariadenia IoT a 8 tzv. generic zariadení, ktoré boli síce aktívne, ale neposkytli o sebe žiadnu detailnejšiu informáciu.
Obr. 2 Získané informácie o zariadeniach pripojených do lokálnej počítačovej siete
Pokračovanie nabudúce...
Poznámka: Všetky zdrojové kódy možno stiahnuť zo stránky softengine.sk.
Zobrazit Galériu