Operační systémy Unix/Linux

PŘIPOJIT SE, ALE NEDOTÝKAT

První krok, který musí útočník udělat, je anonymní připojení (attachment) k novellovému serveru. Abyste pochopili, co znamená připojení, musíte nejdříve pochopit proces přihlášení. Novell navrhl přihlášení následovně: aby vás server NetWare mohl ověřit, musíte se k němu nejdříve připojit. Připojení a přihlášení nejsou na sobě vzájemně závislé. Jinými slovy: jestliže se přihlášení nepovede, navázané spojení zůstává. Takže nepotřebujete platné jméno uživatele a heslo k navázání spojení. Ukážeme vám, že mnoho z věcí, které útočník potřebuje k proniknutí do vaší bedny s NetWarem, je dostupných pouze na základě samotného připojení.

ZMAPOVÁNÍ BINDERY A NDS STROMŮ

V tomto zvláštním stavu, kdy jste k serveru připojeni, ale nejste jím ověřeni, můžete odhalit velké množství informací - více, než by mělo být možné. Nástroje jako userinfo, userdump, finger, bindery, bindin, n l i s t a cx poskytují bindery informace. Nástroje typu On-Site Admin pak umožňují vyhodnotit strom NDS. Dohromady poskytují útočníkovi většinu informací nezbytných pro proniknutí do vašeho serveru. Mějte na paměti, že všechny tyto informace jsou dostupné díky jednomu jedinému spojení s vaším serverem.

chknull

Jen málo netwarových utilit je tak důležitých pro útočníka (a samozřejmě i pro správce), jako chknull. Tento bindery nástroj pracuje se servery NetWare 3.x i se servery NetWare 4.x, které mají nastavený „bindery context". Program je neocenitelný jak pro útočníka, tak pro správce tím, že najde účty, které nemají nastavenéheslo nebo se heslo dá snadno uhodnout. Pamatujte si, že NetWare nevyžaduje, aby měl nově vytvořený uživatelzadané heslo (pokud nepoužijete šablonu). Výsledkem je, že mnoho uživatelských účtů nemá nastavené heslo, a navíc nebyly nikdy použity. Nabízí tím tak doširoka otevřené dveře k většině novellových serverů. Mnozí uživatelé ještě situaci zhorší tím, že dají přednost jednoduchosti před bezpečností a volí si snadno zapamatovatelná hesla (často díky špatné bezpečnostní politice a jejímu nedostatečnému vymáhání).

userlist /a

Programu userl i st nestačí pouhé připojení k serveru, takže pro přihlášení musíte použít jméno a heslo získané pomocí programu chknull. Userlist je podobný programu On-Site, jak ukazuje následující obrázek, ale je to řádkový příkaz, což znamená, že je snadno použitelný ve skriptech

Detekce funkce Intruder Lockout

Intruder Lockout je vlastnost zabudovaná do NetWaru, která uzamkne účet uživatele po daném počtu neúspěšných pokusů o ověření hesla. Naneštěstí není tato funkce standardně zapnuta. Chcete-li útočníkovi zabránit v pokusech o získání přístupu k serveru, je pro vás tento rys systému nesmírně důležitý a měl by být vždy zapnutý. Když budete funkci „Intruder Lockout" nastavovat, viz obrázek 7-6, nezapomeňte tak učinit u každého kontejneru, jenž obsahuje uživatele, kteří se mohou přihlásit.

Rabování

V tomto stadiu bude většina zlomyslných útočníků rabovat a vykrádat vaše servery. Útočníci se přihlásí k co největšímu počtu serverů a budou se snažit najít hesla uložená v textových souborech, která tam zanechali leniví uživatelé. Toto hrubé násilnické chování je více obvyklé, než si myslíte.

Nwpcrack

Nwpcrack je program, pomocí kterého můžete prolomit heslo uživatele v síti NetWare 4.x. Tento nástroj umožňuje útočníkovi použít pro nalezení hesla uživatele slovník nejčastěji používaných hesel. V našem příkladu jsme objevili skupinu Admins. Jakmile se přihlásíte jako uživatel, máte možnost vidět uživatele, kteří jsou z hlediska bezpečnosti rovnocenní (Security Equal To) s uživatelem Admin nebo uživatele, kteří jsou prostě členy skupiny Admins, MIS, Spravce atd. Tímto způsobem jsme našli ve skupině Admins uživatele DEOANE a JSYMOENS, na které zaútočíme nejdřív.

NetWare Perl

Tento problém byl objeven počátkem roku 1997. Pokud nemáte některou z prvních verzí NetWare 4.x,nemusíte být zranitelní. Problém umožňoval útočníkovi spustit Perl skript z kteréhokoliv místa na vašich svazcích včetně domovských složek uživatelů nebo obecně dostupných složek, jako jsou LOGIN a MAIL.

NetWare FTP

Zranitelnost FTP se objevuje pouze v původním FTP serveru z IntraNetWaru. Původní nastavení dává uživateli anonymous právo File Scan do složky SYS:ETC, ve které se nachází soubor netinfo.cfg (a dalšídůležité konfigurační soubory).

NetWare Web Server

Následující zneužití NetWare Web Serveru pochází z roku 1996. Starší verze Web Serveru v systémech NetWare 4.x nebránily předávání parametrů Basic skriptu convert.bas. Výsledkem bylo, že útočníci si mohli snadno zobrazit kterýkoliv soubor vašeho serveru včetně autoexec.ncf, ldremote.ncf a netinfo.ncf.

SPOOFING ÚTOKY (PANDORA)

Jestliže selhaly všechny dosavadní způsoby dávající útočníkovi práva administrátora, existuje ještě několik útoků od Nomad Mobile Research Centra (NMRC) (http://www.nmrc.org), které falšují NCP pakety (NCP spoofing) a umožňují uživatelům získat přístup s právy Admina. Nástroje jsou jemně nazývány Pandora (http://www.nmrc.org/pandora/download.html).

rconsole Hacking

Nejjednodušší způsob, jak získat heslo pro použití rconsole, využívá pohodlnosti správců. Standardně je totiž heslo rconsol e uloženo jako prostý text.

ZÍSKANÍ NDS SOUBORU

Jakmile jste získali heslo pro rconsole, zbývá už jen závěrečný krok, a to získat soubory databáze NDS. Tyto soubory ukládá Novell na svazku SYS do skryté složky s názvem _netware. Jediný způsob, jak tytosoubory získat, je přístup ke konzole serveru (pro útočníka rconsole). Existuje několik způsobů, kterými je možné NDS soubory zkopírovat. Každý útočník má svůj oblíbený.

OŠETŘENÍ LOGU

Opravdový útočník se snaží zanechat po sobě co nejméně stop. To zahrnuje vypnutí auditu, nastavení data a času v položkách souborů, které evidují použití a změnu souboru, a ošetření logů.

Zadní vrátka

Nejúčinnější zadní vrátka pro Novell jsou ta, o kterých vám říkají, že je nemáte nikdy použít - osiřelé objekty. Použití skryté organizační jednotky (OU), ve které se nachází uživatel ekvivalentní Adminovi s dostatečnými právy vůči vlastnímu kontejneru, efektivně objekt utají.

Útoky pomocí formátovacích řetězců

Útoky založené na formátovacích řetězcích a útoky pomocí přeplnění bufferu jsou si značně podobné
a oba zneužívají špatných programátorských praktik. V případě formátovacích řetězců se jedná o chyby ve formátovacích funkcích, jako jsou printf () a sprintf (). Útočník předá některé z těchto funkcí pečlivě připravený textový řetězec, který obsahujeformátující direktivy. Tyto direktivy mohou donutit cílový počítač vykonat libovolné příkazy, a to je obzvlášť nebezpečné v případě, že je vadný program vykonáván s privilegii superuživatele. Je tedy zřejmé, že cílem číslo jedna budou programy S nastaveným SUID bitem a náležející superuživateli.

Útoky založené na nedostatečné kontrole vstupních dat

Příkladem tohoto druhu útoku je nechvalně známá chyba PHF popsaná v roce 1996 Jennifer Myersovou.
V této kapitole se nebudeme danou problematikou podrobně zabývat, protože je dostatečně popsána
v kapitole 15. Pouze si řekneme, jak může útočník pomocí tohoto útoku získat přístup do operačního
systému Unix. Útok je možný v následujících případech:
• Program nedokáže rozeznat syntakticky chybný vstup.
• Modul akceptuje vstupní data nesouvisející s jeho činností.
• Modul se nedokáže vyrovnat s chybějícími vstupními poli.
• Nastane chyba ve vztahu pole-hodnota.
PHF je CGI skript, který je standardně dodáván se staršími verzemi WWW serveru Apache a NCSA
HTTPD. Tento program chybně interpretuje vstupní data. Akceptuje znak pro nový řádek (%0a) a vykoná
všechny za ním následující příkazy s právy stejnými jako uživatel, pod kterým běží server.

Operace X

Protože útočník může vykonat libovolný příkaz na cílovém serveru, může se k získání shellu pokusit využít vlastností X Window systému. X Window umožňuje X klientům zobrazovat svoje výstupy na lokálním nebo síťovém X serveru, běžícím na portech 6000-6063. Jedním z nejužitečnějších klientů je pro útočníka xterm. Xterm promítne na vzdálený X server příkazový řádek ze systému, na kterém je spuštěn. IP adresu nebo DNS jméno serveru, na který má být řádek promítnut, je nutno specifikovat za přepínačem -display.

Reverzní telnet a zpětné kanály

Co když pečlivý správce zvýšil bezpečnost svého systému tak, že odstranil X Window? Útočník má několik dalších možností. Jednou z nich je vytvoření zpětného kanálu. Zpětný kanál je mechanismus, kdy je komunikační kanál iniciován z cílového systému, místo ze systému útočníka. Připomeňme si, že v našem scénáři nemůže útočník vytvořit tradiční komunikační kanál, protože firewall z jeho strany blokuje všechny porty kromě TCP 80 a TCP 443. Nezbývá tedy než iniciovat spojení směrem od cílového serveru k systému
útočníka - vytvořit zpětný kanál.

TFTP

TFTP neboli jednoduchý protokol pro přenos souborů (Trivial File Transfer Protocol) se obvykle používá k bootování bezdiskových stanic, X terminálů a dalších síťových zařízení, jako jsou například směrovače. TFTP naslouchá na UDP portu číslo 69 a je velmi málo zabezpečen. Útočníci se velmi často pokoušejí právě pomocí TFTP získat soubor /etc/passwd cílového systému. To se jim snadno podaří v případě, že je TFTP na cílovém serveru chybně nakonfigurován.

FTP

FTP neboli protokol pro přenos souborů (Fil Transfer Protocol) je jeden z nejpoužívanějších protokolů.
Umožňuje kopírování souborů z a na vzdálený systém. FTP je často zneužíván k získání neoprávněného přístupu k systému nebo k ukládání nelegálních souborů. Mnohé ftp servery umožňují takzvaný anonymní (anonymous) přístup, kdy není vyžadována žádná autentizace. Typicky je přístup omezen pouze na určitou část stromové struktury souborového systému serveru. Existují však i konfigurace, které umožňují pohyb po celé adresářové struktuře systému. Útočník pak může získat důležité konfigurační soubory, včetně /etc/passwd. Některé FTP servery navíc obsahují adresář, do kterého může ukládat soubory kdokoli. V kombinaci s anonymním přístupem je jen otázkou času, kdy na takovém serveru dojde k bezpečnostnímu incidentu. V nejhorším případě se může útočníkům podařit uložit do domovského adresáře některého z uživatelů soubor .rhosts a zajistit si tak možnost přístupu pomocí programu rlogin a jemu podobných. Mnoho FTP serverů je také zneužíváno softwarovými piráty, kteří do přístupných adresářů ukládají nelegální software. Pokud se zatížení vaší sítě během dne ztrojnásobí, může to být indikátorem toho, že sloužíte jako překladiště pro poslední „warez" (kradený software).

Sendmail

Kde začít? Sendmail je poštovní server, který je používán na mnoha unixových systémech. Je to jeden z nejpomlouvanějších programů, které byly kdy používány. Je snadno rozšiřovatelný, umožňuje rozsáhlou konfigurovatelnost a je neuvěřitelně komplexní. Problémy s bezpečností sendmai 1 u začaly někdy v roce 1988 a umožnily neautorizovaný přístup k tisícům systémů. Jeden čas byla  blíbeným vtipem průpovídka:
Jaká je chyba týdne sendmailu?" Bezpečnost programu se během posledních několika let neuvěřitelně zvýšila, ale více než 80 000 řádek kódu představuje stále problém. Možnost objevení dalších bezpečnostních děr tedy stále existuje.

RPC - služby vzdáleného volání procedur

RPC je mechanismus, který umožňuje programu běžícímu na jednom počítači vykonávat kód na jiném počítači v síti. Jedna z prvních implementací RPC byla uskutečněna firmou Sun Microsystems a využívala systému nazývaného XDR (External Data Representation - prezentace externích dat). RPC bylo navrženo pro komunikaci v systémech NIS (Network Information System - síťový informační systém) a NFS (Network File System - síťový souborový systém). Od doby, kdy firma Sun RPC implementovala, byl tento systém přejat i mnohými dalšími firmami. Přejímání RPC je z hlediska interoperability systémů od různých výrobců jistě dobrá věc, ale v době uvedení obsahovalo RPC jen velmi málo bezpečnostních mechanismů. Proto se firma Sun společně s ostatními snaží pomocí záplat zvýšit bezpečnost celého systému. Přesto zůstává spousta nevyřešených problémů.

NFS

Citujme firmu Sun Microsystems: „Síť je počítač." Bez použití sítě je využití počítače méně zajímavé. Možná právě proto je NFS jedním z nejpopulárnějších síťových souborových systémů. Umožňuje přístup ke vzdáleným adresářům tak transparentně, jako by byly uloženy lokálně. Verze 1 a 2 byly původně vytvořeny firmou Sun a byly dostatečně zdokonalovány. NFS verze 3 je přítomný téměř v každé současné mutaci Unixu. Bohužel je každý systém, který umožňuje vzdálený přístup k exportovaným souborovým systémům, v ohrožení. Zneužití NFS je jedním z nejčastějších útoků. Bylo objeveno mnoho chyb přeplnění bufferu, které se týkají NFS serveru mountd. Navíc NFS je vybudováno nad RPC a může být útočníkem snadno donuceno k vyexportování souborového systému z cílového počítače. Přístupová politika k exportovaným souborovým systémům ve velké míře závisí na datovém objektu známém jako „file handle". Tento objekt jednoznačně identifikuje každý soubor a adresář na síťovém serveru. Pokud se nám ho podaří odposlechnout nebo uhádnout, můžeme jednoduchým způsobem získat přístup k odpovídajícím souborům.

Chyby v X

X Window systém má mnoho vlastností, které umožňují několika programům sdílet jeden grafický displej. Hlavním problémem X systému je však jeho bezpečnostní model, založený na filozofii všechno, nebo nic. Jakmile má klient garantován přístup k serveru, začíná peklo. X klienti mohou zachytávat vstupy z klávesnice konzolového uživatele, zavírat okna, přesměrovávat zobrazovaná okna jinam, a dokonce přemapovávat klávesnice a donutit tak uživatele vykonat nechtěné příkazy. Většina problémů vzniká kvůli nedostatečnému mechanismu kontroly přístupových práv nebo díky absolutní lenosti správce systému. Nejjednodušší a také nejčastěji používanou metodou řízení přístupu je autentizace pomocí xhost. Tato metoda je založena na autentizaci pomocí IP adresy a je nejslabší formou autentizace v systému X Window. Z vlastní pohodlnosti většinou použije správce systému příkaz xhost +, kterým povolí přístup k X serveru libovolnému klientu. A co je horší, mnohé X servery běžící na platformě PC používají xhost + implicitně. Útočník pak může tuto zdánlivě nevinnou chybu využít k narušení bezpečnosti cílového systému.

Zneužití DNS

DNS je velmi populární služba. Její všudypřítomnost ji přímo předurčuje k tomu, aby byla napadána. Mnoho útočníků pravidelně vyhledává chyby v nerozšířenější implementaci DNS serveru pro Unix, kterou je BIND (Berkeley Internet Name Domain). DNS je navíc jednou z mála služeb, kterou je bezpodmínečně nutné provozovat v případě připojení organizace do Internetu. Takže chyba v programu bind téměř vždy vede k narušení bezpečnosti serveru. Výzkum zabezpečení počítačů v Internetu z roku 1999 uvádí, že více než 50 % DNS serverů připojených do Internetu je náchylných k nějakému typu útoku!

DNS TSIG

Začátkem roku 2001 bylo objeveno několik chyb zneužívajících přeplnění bufferu (http://www.cert.org /advisories/CA-2001-02.html). Chyby se týkají následujících verzí programu BIND:
BIND 8 8.2, 8 . 2 . 1 , 8 . 2 . 2 až 8 . 2 . 2 - P 7 , 8 . 2 . 3 - T 1 A až 8 . 2 . 3 - T 9 B
BIND 4 Přeplněni b u f f e r u : 4 . 9 . 5 až 4 . 9 . 7
F o r m á t o v a c í ř e t ě z c e 4 . 9 . 3 a ž 4 . 9 . 5 - P 1
Jedna z nejodpornějších chyb se týká TSIG (Transaction Signatuře) (RFC 2845) v BIND 8. Tato chyba může být zneužita po síti, společně s chybou zvanou „infoleak", která je zmíněna ve výše uvedeném dokumentu od CERT. Infoleak umožní útočníkovi získat informace ze zásobníku programu named, které jsou následně použity k útoku pomocí přeplnění TSIG bufferu. K chybě jsou náchylné rekurzivní i nerekurzivní DNS servery.

Nedostatky SSH

SSH je jedna z nejoblíbenějších služeb realizujících bezpečný vzdálený přístup. Má miliony uživatelů na celém světě a mnohé bezpečné systémy na ni spoléhají při zabezpečování dat a autentizačních údajů. Tento program však obsahoval některé závažné chyby, umožňující získání privilegií superuživatele.

Útoky na síťová rozhraní v promiskuitním režimu

Programy, jako jsou tcpdump, snort a snoop, umožňují správci systému analyzovat data procházející jeho sítí. Tyto programy jsou extrémně populární a poskytují cenné informace v případě síťových problémů. Na podobném principu pracují IDS, které v analyzovaných datech vyhledávají anomálie a specifické paterny svědčící o právě probíhajícím síťovém útoku. Aby mohly tyto programy úspěšně fungovat, většinou potřebují ke svému běhu privilegia superuživatele. Není tedy překvapením, že mohou být zneužity útočníkem, který je schopen do sítě, kde jsou instalovány, odeslat zákeřně formované pakety.

Spatně zvolená hesla

Na základě naší diskuse o útocích hrubou silou by mělo být jasné, proč představují špatně vybraná hesla nebezpečí. Je úplně jedno, jestli útočník prolomí heslo po síti nebo lokálně, špatně zvolená hesla jsou vždy riskantní. Protože jsme již o útoku hrubou silou mluvili, začneme rovnou s luštěním hesel. Luštění hesel je všeobecně známo jako slovníkový útok. Zatímco útok hrubou silou je interaktivní útok, slovníkový útok lze provést neinteraktivně (offline). Jedná se o lokální útok, protože útočník musí získat soubor /etc/passwd nebo jeho skrytý ekvivalent (shadow). Je samozřejmě možné získat /etc/passwd po síti (například pomocí FTP nebo HTTP), ale máme pocit, že luštění hesel lze nejlépe objasnit na principech lokálního útoku. Luštění hesel se od hrubouho útoku liší tím, že útočník nepoužívá žádnou systémovou službu (login, su atd.). Místo toho se útočník snaží rozluštit heslo daného konta pomocí zašifrování existujícího slova (ze slovníku) nebo náhodně vygenerovaného textu a následného porovnání výsledku se zašifrovaným heslem z /etc/passwd.

Lokální útoky založené na přeplnění bufferu

Lokální útoky využívající přeplnění bufferu jsou extrémně populární. Princip tohoto typu útoku byl již popsán v sekci o síťových útocích, takže se nebudeme opakovat. V této sekci si uvedeme příklady toho, jak popsaných principů využít lokálně. Shadow Penguin Security zveřejnili v květnu roku 1999 článek popisující přeplnění bufferu v knihovně libc v souvislosti se systémovou proměnnou LC_MESSAGES. Jakýkoli program s nastaveným SUID bitem, který je dynamicky linkován s libc a ctí proměnnou LC_MESSAGES, je náchylný k tomuto typu útoku. Nebezpečí je o to větší, že se týká velkého množství programů. Ukažme si, jak lze chyby zneužít.

Symbolicky link

Nepotřebné soubory, zaneřáděný diskový prostor, dočasné soubory: většina systémů je přeplněna elektronickým odpadem. V Unixu je naštěstí podstatná část všech dočasných souborů vytvářena v adresáři /tmp. Toto místo je však proto prodchnuto nebezpečím. Mnoho superuživatelských programů s nastaveným SUID zde vytváří dočasné soubory, aniž by provádělo sebemenší kontrolu. Největší problémy způsobují programy, které slepě následují symbolické linky. Symbolické linky jsou vytvářeny příkazem 1 n (s parametrem -s) a fungují jako odkazy na jiné soubory. Vytvořme symbolický link /tmp/foo, který odkazuje na /etc/passwd: [quake]$ ln -s /tmp/foo /etc/passwd

Útoky na deskriptory souborů

Deskriptory jsou celá kladná čísla včetně nuly, která systém používá k identifikaci souborů. Deskriptory 0, 1 a 2 odpovídají standardnímu vstupu, výstupu a chybovému výstupu. V případě, že jádro operačního systému otevře existující soubor nebo vytvoří nový, vrátí volajícímu programu konkrétní deskriptor, který lze dále použít pro manipulaci se souborem. Pokud je soubor otevřen privilegovaným procesem ke čtení/zápisu (O_RDWR), může útočník do tohoto souboru zapsat, zatímco je modifikován. Je tak možné změnit kritické systémové soubory a získat práva superuživatele.

Problémy při zpracovávání signálů

Pomocí signálů je procesům v Unixu oznamováno, že nastala určitá situace. Umožňují tedy řídit asynchronní události. Pokud například chtějí uživatelé pozastavit běžící proces, stisknou CTRL-Z. Stisknutí této kombinace kláves vyvolá odeslání signálu SIGTSTP všem procesům, které běží na popředí. V tomto případě je signálu použito k ovlivnění běhu programu. Pokud se jedná o ovlivnění nebo změnu způsobu běhu programu, měli bychom zpozornět. Schopnost ovlivnit způsob běhu programu patří k hlavním bezpečnostním problémům týkajícím se zpracování signálů. Poznamenejme ještě, že SIGTSTP je pouze jedním z více než 30 signálů.

Manipulace se soubory core

Vytvoření dumpu paměti běžícího procesu je mnohem více než jen malá nepříjemnost. Může to být velká bezpečnostní díra. Za běhu systému je v operační paměti počítače uloženo velké množství kritických informací. Příkladem mohou být zašifrovaná hesla uživatelů systému načtená ze stínového souboru hesel. Jeden z příkladů chybné manipulace s dumpy (core soubory) byl nalezen v jedné ze starších verzí FTPD. FTPD démon umožňoval útočníkovi vytvořit v hlavním adresáři (/) soubor core s přístupovými právy umožňujícími jeho čtení jakýmkoli uživatelem systému pouhým zadáním příkazu PASV před tím, než došlo k přihlášení k serveru. Soubor core obsahoval části stínového passwd souboru, včetně zašifrovaných hesel uživatelů. Pomocí slovníkového

Sdílené knihovny

Princip sdílených knihoven umožňuje běžícím programům volat kusy kódu ze společné knihovny. Tento kód je linkován do sdílené knihovny počítače během překladu a je na něj odkazováno při běhu programu. Hlavní výhodou použití sdílených knihoven je šetření diskového prostoru i operační paměti počítače a jednodušší údržba kódu. Aktualizace sdílené knihovny aktualizuje i program, který ji používá. Tyto výhody jsou samozřejmě vyváženy nedostatky v bezpečnosti systému. Pokud útočník změní kód ve sdílené knihovně nebo pomocí systémové proměnné odkáže běžící programy na podvrženou knihovnu, může získat privilegia superuživatele.

Špatná konfigurace systému

Pokusili jsme se popsat nejběžnější bezpečnostní chyby a metody, které jich využívají k získání privilegií superuživatele. Sami vidíte, že seznam těchto chyb je poměrně obsáhlý, ale přesto nepokrývá všechny problémy související s bezpečností systému. Dalším zdrojem problémů je nedostatečná nebo chybná konfigurace. Systém může být po instalaci extrémně bezpečný, ale pokud správce povolí zápis do souboru /etc/passwd jakémukoli uživateli, veškerá bezpečnost vyletí komínem. Lidský faktor je to, co způsobuje zkázu většiny systémů.

Přístupová práva k souborům a adresářům

Jednoduchost a síla Unixu pramení ze způsobu práce se soubory (binárními programy, textovými konfiguračními soubory, zařízeními). Všechno je soubor s odpovídajícími přístupovými právy. Pokud jsou přístupová práva špatně nastavena, může být ovlivněna bezpečnost celého systému. Na následujících řádcích si popíšeme dvě oblasti, které způsobují největší počet problémů. Jedná se o soubory s nastaveným SUID bitem a soubory s právy, která umožňují zápis komukoli. Nebudeme se podrobně zabývat bezpečností speciálních souborů (adresář /dev), ale správné nastavení jejich přístupových práv je také důležité. Útočník, který může nová zařízení vytvářet nebo může číst kritické informace z paměti (/dev/kmem) nebo z disků, jistě snadno získá práva superuživatele. Důkazem tohoto tvrzení je program http://mixter.warrior2k.com/rawpowr.c. Pokud ho budete zkoušet, buďte opatrní, protože může poškodit váš souborový systém. Spouštějte ho pouze na testovacích počítačích.

Útoky na shell

Unixový shell (příkazový interpreter) je mocný nástroj, který kromě jiného umožňuje konfigurovat, jakým způsobem má příkazy zpracovávat. Čím je však program komplexnější, tím větší je i pravděpodobnost jeho zneužití. Shell bývá například často zneužit pomocí proměnné IFS (Internal Field Separator).

IFS útok

Obsah IFS proměnné definuje, jaké oddělovače bude shell používat při vyhodnocování příkazové řádky. Implicitně je hodnota IFS nastavena na mezeru. Pokud bude mít útočník možnost změnit hodnotu IFS, může donutit některý z SUID programů k vykonání trojského koně, který mu zajistí práva superuživatele. Uveďme příklad, který zneužívá programu loadmodul e ze SunOS 4.1.x.

Rootkity

Již ovládnutý systém se stává základnou pro další útoky, takže útočník zde musí nainstalovat a skrýt své rootkity. Rootkit pro Unix se většinou skládá ze čtyř platformově závislých skupin programů: (1) trojské koně (například upravené programy login, netstat a ps), (2) zadní vrátka (například záznamy v konfiguračním souboru pro inetd), (3) síťové analyzátory a (4) čističe systémových logů.

Trojské koně

Jakmile jednou útočník získá privilegia superuživatele, může udělat téměř z každého příkazu operačního systému trojského koně. Je proto nesmírně důležité kontrolovat minimálně velikost a čas poslední změny všech binárních souborů, zvláště však programů login, su, telnet, ftp, passwd, netstat, ifconfig, ls, ps, ssh, find, du, df, syne, reboot, halt, shutdown atd. Ve většině rootkitu se často používá upravená verze programu 1ogin. Program autorizuje uživatele tak, jak je obvyklé, ale navíc zaznamená do souboru uživatelovo jméno a heslo. Existuje i upravená verze ssh, která nabízí stejnou funkci. Jiní trojští koně mohou spustit TCP server, který po napojení vrací příkazový řádek. Může být například nainstalována verze programu 1 s, která při každém spuštění zkontroluje, zda běží netcat, který vrací
bi n/sh. Pokud neběží, je programem 1 s spuštěn. Následující příkazový řádek spustí na pozadí netcat, který po útočníkově napojení na port 222 vrátí /bi n/sh:

Analyzátory síťového provozu

Jakmile útočník získá vládu nad systémem, nejedná se pouze o lokální katastrofu. Pomocí informací získaných analyzátorem síťového provozu - snifferem (název vznikl podle populárního síťového analyzátoru firmy Network General, nyní součásti Network Associates Inc.) - lze podnikat útoky na počítače, které s napadeným systémem komunikují nebo se nacházejí ve stejném síťovém segmentu.

Zahlazování stop

Útočníci většinou nechtějí, abyste byli prostřednictvím systémových logů informováni o jejich aktivitách, takže relevantní informace z logů odstraňují. Součástí každého dobrého rootkitu je několik „čističů logů". Mezi nejznámější patří zap, wzap, wted a remove. V mnoha případech však plně postačuje textový editor, jako je v i nebo emacs.

Rootkity jádra

Dosud jsme si popisovali rootkity, které nějakým způsobem modifikují příkazy operačního systému (vytvářejí trojské koně). Nutno poznamenat, že tyto metody ovládnutí systému jsou již pasé. Poslední verze rootkitů modifikují jádro operačního systému, takže ovlivní běh všech systémových programů, aniž by musely opravovat jeden program po druhém. Většinou je zneužíván mechanismus dynamicky připojovaných modulů (LKM - Loadable Kernel Module). Tento mechanismus umožňuje přidat nové funkce jádra pouhým dynamickým připojením nového modulu. Není tedy nutné vytvářet kompletně nové jádro překladem ze zdrojových kódů. Výhodou je možnost kdykoli za běhu systému přidat nebo ubrat modul v závislosti na tom, zda je daná funkce zrovna požadována, či nikoli. Překladem tak může být vytvořeno malé kompaktní jádro, do kterého jsou v případě potřeby dynamicky přidávány další moduly. LKM je podporováno v mnoha variantách operačního systému Unix, včetně Linuxu, FreeBSD a Solarisu. Tento mechanismus však může být útočníkem zneužit ke kompletnímu zmanipulování jak systému, tak i všech běžících procesů. Je možné připojit moduly, které budou zachytávat systémová volání a modifikovat je za účelem ovlivnění reakce systému na určité příkazy. Příklady takovýchto rootkitů jsou knark pro Linux (http://packetstormsecurity. org/ lJNIX/penetration/rootkiLs/knark-0.59-tar.gz) a Solaris Loadable Kernel Modules (http://packetstormsecurity. org/groups/thc/slkm-l.O.tar.gz) od THC.