SAMSUNG_022024B Advertisement SAMSUNG_022024B Advertisement SAMSUNG_022024B Advertisement

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

2

V rámci tohto článku budeme pokračovať v rozvíjaní aplikácie Sieťový skener. Tentoraz sa zameriame na tzv. Domain Name System (DNS). Aplikáciu doplníme o jednoduchý DNS skener, prostredníctvom ktorého budeme môcť získavať informácie o úlohách, ktoré plnia jednotlivé sieťové zariadenia. Je totiž bežné, že prevádzkovatelia sieťových služieb nazývajú jednotlivé servery podľa účelu, na ktorý slúžia. To, či je v našom bezprostrednom okolí nainštalovaný nejaký DNS server, môžeme zistiť sledovaním prevádzky na všeobecne známom porte 53. DNS je ako kniha, ak ju vieme správne čítať, vieme z nej získať mnoho zaujímavých informácií.

SAMSUNG 042024 Advertisement

DNS systém / proces

DNS predstavuje komplexnú hierarchiu názvov (domain names), ktorá slúži na to, aby sme si nemuseli pamätať IP adresu každého zariadenia, s ktorým chceme komunikovať. To sa týka nielen prehliadania webového obsahu, ale aj poštových služieb, prehliadania či zdieľania sieťových zložiek, komunikácie s okolím, resp. všeobecne komunikácie so sieťovými službami a zariadeniami z pohľadu človeka. DNS možno prirovnať k telefónnemu zoznamu, v ktorom sú jednotlivým IP adresám zariadení priradené ich slovné, zväčša ľahko čitateľné a zrozumiteľné názvy. Detailný opis fungovania DNS systému ďaleko presahuje rámec tohto článku. Na základný rozhľad spomenieme iba niekoľko najdôležitejších faktov.

Proces získania IP adresy zariadenia na základe jeho názvu iniciuje klient prostredníctvom tzv. Stub Resolvera. Ten zašle DNS požiadavku tzv. Recursive Resolveru, ktorý ju ďalej rieši na úrovni Root – Top Level Domain (TLD) – Authoritative servera. Authoritative server vo výsledku zašle klientovi nájdenú IP adresu prostredníctvom Recursive a Stub Resolvera.

Stub Resolver

Softvérový nástroj, tzv. čiastkový resolver, spravujúci DNS požiadavky medzi aplikáciou a Recursive Resolverom

Internet Service Provider (ISP) Recursive Server

Recursive Resolver

DNS služba zodpovedná za kompletné vyriešenie DNS požiadavky

Root Server

Koreňový server v DNS hierarchii

TLD Server

Server spravujúci poslednú časť názvu zariadenia = Top Level Domain

Authoritative Server

Server spravujúci jednotlivé názvy zariadení v rámci danej TLD


Obr. 1 Zjednodušený diagram DNS procesu

Do uvedeného procesu, samozrejme, vstupujú ďalšie drobnosti ako domény/subdomény (domains/subdomains), priebežné ukladanie údajov (DNS caching), názvové súbory (hostnaming), typy záznamov (DNS records), typy požiadaviek (DNS queries), reverzný DNS (reverse DNS), dynamický DNS (DDNS)…

Každopádne výsledkom DNS procesu je v prípade úspechu IP adresa prislúchajúca k zadanému názvu domény/subdomény. Táto IP adresa sa následne použije na komunikáciu medzi klientom a požadovanou službou (serverom, resp. iným klientom).

Aplikácia Sieťový skener v3.0

V rámci tretej verzie našej vzorovej aplikácie sme implementovali jednoduchý DNS sken. Vytvorili sme nový súbor pages/page3.py, ktorý obsahuje novú triedu DNSSnifferClass().

Programová logika je mierne zložitejšia. Stránka okrem výsledkovej tabuľky obsahuje dve vstupné polia. Prvé slúži na zápis názvu domény, ktorú chceme skenovať. Druhé obsahuje zoznam prefixov názvov subdomén, ktoré sa majú doplniť k zvolenému názvu domény a následne skenovať.

Samotný sken sa vykoná po stlačení tlačidla SKEN – START, čím dôjde k spusteniu metódy DNSScan(). Tá vo svojom tele volá rekurzívnu metódu DNSRequest(), ktorá rieši DNS požiadavky cestou objektu triedy dns.resolver.Resolver() modulu resolver.py. Metóda resolve() vracia zoznam IP adries spojených s názvom zvolenej domény/subdomény ako objekt triedy dns.resolver.Answer.

V prípade úspešného nájdenia IP adresy (adries) sa následne k tejto IP adrese (IP adresám) prostredníctvom metódy DNSReverse() získajú názvy (hostname) zariadení = domén/subdomén v tzv. reverznom DNS procese s využitím funkcie socket.gethostbyaddr(). V prípade nájdenia nových názvov domén/subdomén, resp. aliasov, dôjde k rekurzívnemu zavolaniu metódy DNSRequest(). Aplikácia teda prostredníctvom uvedeného procesu hľadá IP adresy k zadanému názvu domény, k zadaným názvom subdomén (prefix.doména) a k názvom domén/subdomén, ktoré boli nájdené v rámci reverzného DNS procesu.

Výsledky, tzv. názvy domén/subdomén a k nim prislúchajúce IP adresy, sa ukladajú do Pandas DataFrame objektu dns_data, ktorého obsah je pravidelne zobrazovaný v tabuľke.


Obr. 2 Výstup aplikácie NetScanner v3.0 – prijaté odpovede na zaslané DNS požiadavky

Použiteľnosť získaných výsledkov

Ak vezmeme do úvahy portfólio prefixov subdomén, dokážeme po vykonaní DNS skenu v sieti identifikovať prítomnosť nasledujúcich serverov/služieb:

dns, ns

DNS server

ftp

FTP server

www, web

Webový server

mail, email, exchange, smtp, pop, imap, mx

Poštový server

myslq

MySQL server

DNS sken implementovaný v rámci našej aplikácie vytvára v sieti „hluk“, ale pri jeho správnom použití možno túto činnosť ľahko zakryť. Požiadať DNS server o IP adresu nie je nič zvláštne ani výnimočné. DNS Authoritative servery prijímajú obrovské množstvo takýchto požiadaviek bez toho, aby im to bolo podozrivé. Stačí, ak do nášho webového prehliadača zadáme doposiaľ neznámy názov, DNS Resolver nášho OS požiada o nájdenie korešpondujúcej IP adresy. Tento proces sa opakuje stále dookola, to znamená, že nie je ničím podozrivý. Je však jasné, že len čo vložíme do zoznamu prefixov veľa položiek a požiadavky zašleme bezprostredne po sebe, niektorý zo „strážcov“  DNS serverov si to môže všimnúť. Našu aplikáciu by sme mohli zlepšiť tak, že DNS Requesty budeme zasielať v náhodnom časovom intervale s určitým odstupom. Každopádne je veľmi nepravdepodobné, že s obozretným využitím funkcií DNS Stub Resolvera vyvoláme príliš veľké podozrenie.

Zobrazit Galériu

Marek Sopko

Všetky autorove články

2 komentáre

canada cialis sublingual online reakcia na: Python a kybernetická bezpečnosť / 9. časť

3.3.2024 05:03
<a href="http://cialiss.hair">is cialis generic</a> Because of the potential risk to the infant, breast feeding is not recommended while using this drug and for 10 days after stopping treatment
Reagovať

how much is levitra in mexico reakcia na: Python a kybernetická bezpečnosť / 9. časť

17.2.2024 12:02
<a href="http://levitr.autos">magasin levitra en ligne</a> pottery barn teen coupons barely leagal annd adulot gays adian staple angie everhartt free nude redhead midget
Reagovať

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať