hakin9 Vnitřní testy penetrace Marcin Kurpiewski
Článek byl publikovaný v čísle 1/2005 časopisu hakin9. Všechna práva vyhrazena. Bezplatné kopírování a rozšířování článku je povoleno s podmínkou, že nebude měněný jeho nynější tvar a obsah. Časopis hakin9, Software Wydawnictwo, ul. Piaskowa 3, 01-067 Warszawa,
[email protected]
Vnitřní testy penetrace Marcin Kurpiewski
Penetrační testy jsou jednou z technik používaných pro zjištění bezpečnostních děr systému. Jde o simulaci chování potenciálního vetřelce. Mají být odrazem toho, co se může stát v případě opravdového útoku a měly by zahrnovat co nejvíce známých metod průniku do systému.
V
nitřní penetrační testy jsou zkoumání sítě a informačních systému uvnitř produkčního prostředí. Taková forma testů spočívá v provádění simulace odolnosti testovaného prostředí na útoky, kterých pramenem můžou být zaměstnanci nebo jakékoliv jiné zdroje uvnitř soukromé sítě. Zkusíme prakticky provést vnitřní penetrační test (viz. Rámek Připravení testu). Operačním systémem, který budeme testovat bude FreeBSD verze 5.2.1. Jako druhý otestujeme systém MS Windows 2003 Server – i když není hlavním zkoumaným systémem, stojí za to poznat rozdíl slabých stránek podobných služeb fungujících na obou serverech.
Útok
Provedení testů
2
Po výběru testovacích nástrojů (viz. rámek Nástroje použité v testech) můžeme přejít ke zkoumání sítě. V našem případě je testujícím počítačem notebook HP Compaq nx9005 s vnější síťovou kartou připojenou přes USB (3Com 3C460) a nainstalovaným systémem Linux (kernel 2.6.9-rc2), připojeným ke switchi umístěném v oblasti DMZ (ang. demilitarized zone – demilitarizovaná zóna). Všeobecné
www.hakin9.org
schéma zkoumané sítě a umístění testera představuje Obrázek 1.
Úvodní fáze – hledání hostů
První fází testu je poznání terénu – rozpoznání adres hostů pracujících v lokální síti. Abychom to provedli, můžeme použít nástroje pro zachytávání paketů běhajících v síti. Nejpraktičtější bude zachytávání paketů APR (Adress Resolution Protocol), posílaných v síti přes počítače s cílem nalezení jiných strojů. Nebude jich mnoho, a předvedou konkrétní počítače (aby se komunikace mezi jinými stroji začala, stejně se musí nejdřív spojit pomocí ARP). Pro zachycení paketu ARP použijeme tcpdump (viz. rámek Nástroje použité v testech). Je to pasivní nástroj – nevysílá žádná
Z tohoto článku se naučíte... •
jak provádět vnitřní penetrační testy.
Měl byste vědět... • •
jak používat příkazový řádek v unixových systémech, znát pravidla fungováni protokolu TCP/IP.
Hakin9 Nr 1/2005
Penetrační testy
Připravení testů
Penetrační test je simulací činnosti vetřelce – takže badatel musí předvídat, jak se bude vetřelec chovat. Právě proto by testy měly mít agresivní charakter. Takže před jejich provedením je nutné provedení plné bezpečnostní kopie dat. Vnitřní simulace se nejčastěji provádí metodou černé skříňky (ang. black box), tudíž připouštíme, že nám chybí znalost struktury zkoumané sítě a nainstalovaného softwaru na serverech: • • •
18:01:25.024801 arp who-has domain-srv.firma.com 18:01:25.157800 arp reply domain-srv.firma.com
pasivní naslouchaní síti (sniffing), vyhledávaní nezabezpečených hostů – skenování portů, identifikace vzdáleného systému, identifikace síťových služeb, zachycování přenosu dat, hledání děr v softwaru a operačním systému.
is-at 00:04:76:00:D5:B8
Tak zase vypadá efekt práce tcpdumpu v demilitarizované zóně (DMZ) zkoumané sítě: # tcpdump arp 18:05:13.157800 arp who-has router.firma.com tell 192.168.1.111
V úvodní fázi je třeba tak zkonfigurovat počítač používaný pro provádění testů, aby při řešení názvů používal základní server DNS lokální sítě. Je to možné přidáním správného záznamu do souboru /etc/resolv.conf. Ideálním řešením by bylo, kdyby vybraný DNS server zadržoval názvy hostů a serverů v tzv. obracené oblasti (rekordy PTR). Řešení adres hostů se speciálním významem v kanonické podobě může značně zjednodušit práci v testování sítě – umožňuje identifikaci určení stroje přes jejich název.
data do sítě, ale očekává na pakety posílané jinými počítači. Působení tedy není okamžité – musíme se obrnit trpělivostí. Seznam adres
# tcpdump arp
tell 192.168.0.13
oficiálně neznáme sítě, které budeme prohledávat, oficiálně nejsme administrátory systému, které budeme testovat, vlastníme oprávnění (souhlas) pro provedení testů.
K testům se používají nástroje vyhledávající počítače v síti náchylné na útoky, skenery bezpečnostních slabin a programy zachycující data posílané po síti. Základními metodami jsou: • • • • • •
v době provádění odposlechu část z nich se nebude komunikovat s ostatními). Tady je výsledek práce programu v síti LAN:
může být velmi dlouhý a závisí na počtu počítačů v síti a intenzity pohybu. Nemusí ale zahrnovat všechny hosty (existuje možnost, že
18:05:16.142648 arp who-has mail-srv.firma.com tell 192.168.1.13 18:05:31.063157 arp reply router.firma.com is-at 00:04:C1:D1:DA:46 18:05:32.071232 arp reply mail-srv.firma.com is-at 00:06:1B:DF:36:0B
Z výsledků odposlechu můžeme domnívat, že v síti jsou počítače, ze kterých alespoň dva (mail-srv a do-
��������
��������
�����
���
��� ������ �������������� ��������
���
������
��������
�������������� �������
Obrázek 1. Schéma sítě podrobené penetračním testům
Hakin9 Nr 1/2005
www.hakin9.org
3
Výpis 1. Identifikace operačních systémů na vzdálených hostech # nmap -O -P0 192.168.0.200 192.168.1.200 Interesting ports on domain-srv.firma.com (192.168.0.200): [...] MAC Address: 00:04:76:00:D5:B8 (Portable Systems, IBM Japan Co) Device type: general purpose Running: Microsoft Windows 2003/.NET OS details: Microsoft Windows .NET Enterprise Server (build 3604-3790) Interesting ports on mail-srv.firma.com (192.168.1.200): [...] MAC Address: 00:06:1B:DF:36:0B (3 Com) Device type: general purpose Running: FreeBSD 5.X OS details: FreeBSD 5.2-CURRENT (Jan 2004) on x86 Uptime 1.009 days (since Sun Oct 3 00:18:59 2004)
Výpis 2. Jednoduché skenování portů
Útok
# nmap -sS \ -P0 192.168.0.200 192.168.1.200
4
Interesting ports on 192.168.0.200: PORT STATE SERVICE 25/tcp open smtp 42/tcp open nameserver 53/tcp open domain 80/tcp open http 88/tcp open kerberos-sec 135/tcp open msrpc 139/tcp open netbios-ssn 389/tcp open ldap 445/tcp open microsoft-ds 464/tcp open kpasswd5 593/tcp open http-rpc-epmap 636/tcp open ldapssl 1025/tcp open NFS-or-IIS 1026/tcp open LSA-or-nterm 1040/tcp open netsaint 1058/tcp open nim 3268/tcp open globalcatLDAP 3269/tcp open globalcatLDAPssl 3389/tcp open ms-term-serv Interesting ports on 192.168.1.200: PORT STATE SERVICE 7/tcp open echo 9/tcp open discard 13/tcp open daytime 19/tcp open chargen 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 37/tcp open time 53/tcp open domain 80/tcp open http 110/tcp open pop3 111/tcp open rpcbind 587/tcp open submission 3128/tcp open squid-http
main-srv) jsou servery a jeden pracuje jako router. Samozřejmě závěry vyvozujeme jedině z kanonických názvu odhalených počítačů. Teď by stálo zato vyhledat síťová zařízení, která chybí v seznamu a můžou být
ve stejné části sítě. Není to těžké – jestliže známe adresu sítě, můžeme ji podrobně skenovat použitím programu Nmap. Nmap funguje v aktivním módu. To znamená, že vysílá náležitě připravené pakety do skenovaných počítačů a na základě odpovědi identifikuje hosty. Zkusme přezkoušet všechny možné adresy segmentu 192.168.1.0/24. Použijme variantu -sS, tudíž skenování použitím paketů SYN (snižuje to pravděpodobnost odhalení pokusů skenování přes administrátora – viz článek Skenování portů z pohledu administrátora, strana 72.). Tady je efekt: # nmap -sS 192.168.1.1-254 [...] Host 192.168.1.100 appears to be up. MAC Address: 00:0A:04:71:4F:76 (3com Europe)
Použité nástroje
Pro provedení testů použijeme programy sdílené jako open source (na licenci GNU GPL). Není to dáno šetřením, ale možnostmi tohoto softwaru, které neustupují svým obdobným komerčním programům. Použité nástroje: • • •
• •
tcpdump – slouží pro zachytávání TCP paketů na zadaném síťovém rozhraní; umožňuje dekódování prakticky každého síťového protokolu, Nmap – skener portů a nástroj pro vzdálenou identifikaci operačního systému (viz. článek Skenování portů z pohledu administrátora, strana 72.), Amap – program umožňující identifikaci vzdálených síťových služeb; analyzuje otevřené porty od stránky nadefinovaných mechanizmů síťových služeb – neidentifikuje služby na základě čísla portu, ale na základě odpovědi serveru, Ettercap – vícefunkční sniffer a logger pro sítě založené na přepínačích (switchech), distribuovaný spolu s bohatým balíkem filtrů a pluginů, Nessus – aplikace skenující vzdálené síťové služby a vyhledávající chyby v jejich konfiguraci, pracuje v režimu klient-server; zakládá se na balíku pluginů – každý z nich obsahuje testy určené pro konkrétní druh výzkumu.
Užitečnost programů použitých v testech
Zkouška FreeBSD
Zkouška Windows 2003 Server
Nmap
x
x
Amap
x
x
x
x
Aplikace
Zkoumání sítě
tcpdump
x
Nessus
x
Ettercap
x
www.hakin9.org
Hakin9 Nr 1/2005
Penetrační testy
Výpis 3. Identifikace síťových služeb systému FreeBSD # amap -q -b 192.168.1.200 1-3128 amap v4.5 (www.thc.org) started at 2004-10-03 01:04:23 - APPLICATION MAP mode Protocol on 192.168.1.200:13/tcp matches daytime-unix - banner: Sun Oct 17 015920 2004\r\n Protocol on 192.168.1.200:19/tcp matches chargen - banner: !"#$%&'()*+,-./0123456789;<= Protocol on 192.168.1.200:22/tcp matches ssh-openssh - banner: SSH-1.99-OpenSSH_3.6.1p1 FreeBSD-20030924\nProtocol mismatch.\n Protocol on 192.168.1.200:7/tcp matches echo - banner: GET / HTTP/1.0\r\n\r\n Protocol on 192.168.1.200:80/tcp matches http - banner: HTTP/1.1 200 OK\r\nDate S un, 17 Oct 2004 080533 GMT\r\n Server Apache/1.3.29 (Unix)\r\nContent-Location in dex.html.en\r\nVary Protocol on 192.168.1.200:110/tcp matches pop3 - banner: +OK Solid POP3 server ready <4635.1097971161@freebsd>\r\n -ERR unknown command\r\n-ERR unknown command\r\n Protocol on 192.168.1.200:37/tcp matches time - banner: 4[ Protocol on 192.168.1.200:21/tcp matches smtp - banner: 220 ProFTPD 1.2.9 Server (ProFTPD Default Installation) [freebsd]\r\n500 GET not understood\r\n Protocol on 192.168.1.200:25/tcp matches smtp - banner: 220 freebsd ESMTP Sendmail 8.12.10/8.12.10; Sun, 17 Oct 2004 015923 +0200 (CEST) Protocol on 192.168.1.200:587/tcp matches smtp - banner: 220 freebsd ESMTP Sendmail 8.12.10/8.12.10; Sun, 17 Oct 2004 015926 +0200 (CEST) Protocol on 192.168.1.200:3128/tcp matches http - banner: HTTP/1.0 400 Bad Request\r\nServer squid/2.5.STABLE3 Protocol on 192.168.1.200:111/tcp matches rpc - banner: rZooooooooo Protocol on 192.168.1.200:53/tcp matches dns - banner: \f Protocol on 192.168.1.200:111/tcp matches rpc-rpcbind-v4
Výpis 4. Identifikace síťových služeb Windows 2003 Server # amap -q -b 192.168.0.200 1-5000 amap v4.6 (www.thc.org) started at 2004-10-09 10:47:26 - APPLICATION MAP mode Protocol on 192.168.0.200:25/tcp matches smtp - banner: 220 henry.firma.com Microsoft ESMTP MAIL Service, Version 6.0.3790.0 ready at Sat, 9 Oct 2004 111809 -0800 \r\n Protocol on 192.168.0.200:80/tcp matches http-iis - banner: HTTP/1.1 200 OK[...\\r\nServer Microsoft-IIS/6.0\r\n Protocol on 192.168.0.200:110/tcp matches pop3 - banner: +OK Microsoft Windows POP3 Service Version 1.0 <5799449@henry> ready.\r\n Protocol on 192.168.0.200:139/tcp matches netbios-session - banner: Protocol on 192.168.0.200:593/tcp matches http-ncacn - banner: ncacn_http/1.0 Protocol on 192.168.0.200:593/tcp matches jrmi - banner: ncacn_http/1.0 Protocol on 192.168.0.200:593/tcp matches ms-rpc-proxy-endpoint - banner: ncacn_http/1.0 Protocol on 192.168.0.200:1028/tcp matches http-ncacn - banner: ncacn_http/1.0 Protocol on 192.168.0.200:1028/tcp matches jrmi - banner: ncacn_http/1.0 Protocol on 192.168.0.200:1028/tcp matches ms-rpc-proxy-endpoint - banner: ncacn_http/1.0 Protocol on 192.168.0.200:88/tcp matches mysql - banner: Protocol on 192.168.0.200:135/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:445/tcp matches ms-ds - banner: SMBrS2`q4hnLO`V+L0J00.\t*H\t*H\n*H\n+7\
[email protected] Protocol on 192.168.0.200:1025/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1026/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1040/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1041/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1046/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1047/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1058/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:1064/tcp matches netbios-session - banner: \rS Protocol on 192.168.0.200:389/tcp matches ldap - banner: 0a\n Protocol on 192.168.0.200:3268/tcp matches ldap - banner: 0a\n
Jak vidíme, provedení příkazu odhalilo existenci ještě jedné adresy, kterou nezachytil program tcpdump. Jak se ukázalo je to switch 3Com Superstack II 3300. Jestliže máme data všech zařízení, které nás zajímají, přejdeme do další fáze – identifikace systémů,
Hakin9 Nr 1/2005
které nás zajímají a do fungujících na nich služeb.
Identifikace systémů a služeb
Teď se pokusíme získat podrobné informace o počítačích, které nás zajímají – druh a verze operačních sys-
www.hakin9.org
témů. Pro toto použijeme zase Nmap použitím mechanizmu fingerprint. Pro identifikaci vzdáleného systému použijeme parametr -O. Protože administrátoři velmi často blokují na serverech možnost přijímání paketů ICMP (zabezpečuje před útoky typu Ping of Death a předchází vzdále-
5
Obrázek 2. Zachycení toku údajů programem Ettercap nému zjištění dostupností počítače), obejdeme to zabezpečení použitím volby -P0. Efekt je viditelný na Výpisu 1. Nmap identifikoval zkoumané počítače jako stroje pracující s následujícími systémy FreeBSD 5.2 a MS Windows 2003. Dalším krokem je vyhledání otevřených portů na zkoumaných serverech. Zase použijeme Nmap. Použijeme parametry -sS a -P0. Efekt je vidět na Výpisu 2. Jak vidíme, oba naše zkoumané stroje mají mnoho otevřených portů. Pro vetřelce by taková informace byla neocenitelná – čím více činných služeb, tím větší pravděpodobnost úspěchu útoku. Otevřené porty však nemusí svědčit o přítomnosti služeb snadno podléhajících vloupání.
Útok
Identifikace – banery služeb
6
Dalším krokem penetračního testu je kontrola identifikátorů (ang. banners) dálkových služeb. Jsou to vizitky programů (serverů služeb) posílané klientovi po navázání spojení, které obsahují informace o verzích a typech softwaru nebo umožňují rozeznat verze na základě charakteristických vlastnosti vizitky. Nejjednodušším způsobem identifikace služeb je použití programu telnet. Spočívá to na ručním spojení
s dálkovým serverem na určitém portu. Takové činnosti jsou ale časově náročné a obtížné. Proto použijeme skener Amap automatizující tento proces. Spustíme ho příkazem: -q – který způsobí, že se nebudou ukazovat informace o zavřených portech a -b způsobí ukázání identifikátorů v formátu ASCII. Efekt činnosti programu ukazují Výpisy 3. a 4. Shromáždili jsme již mnoho údajů o serverech, které nás zajímají ve zkoumané síti – operační systémy, otevřené porty a činné služby. Z toho vyplývá, že síť jako celek není zabezpečena před skenováním. Můžeme přejít k další části testů – zkontrolování jednoduchosti zachytávaní posílaných dat (sniffing).
Zachytávaní posílaných dat
Způsob zachycení přenosu využívá protokol ARP a spočívá mezi jinými v maskování se pod adresou MAC zdrojového počítače. Existuje mnoho různých nástrojů pro spoofing ARP. Jedním z nich je paket dsniff, do kterého patří program o názvu arpspoof, který nabízí možnost spoofování ARP uvnitř lokální sítě na základě přepínače. My ale použijeme paket který nabízí integrovaný modul spoofingu ARP a zároveň srozumitelné grafické rozhraní uživatele. Je to Ettercap.
www.hakin9.org
Program nabízí mezi jinými možnost spoofingu několika hostů ve stejné době (také v celé síti). Po spuštění Ettercapu (s příkazem -G , který spouští grafické rozhraní uživatele) je třeba nejprve vyhledat hosty v síti, pod které se můžeme zamaskovat. Můžeme to udělat v záložce Hosts vybráním pozice Scan for hosts. Automatický nástroj vyhledá hosty vhodné pro spoofing. Potom musíme definovat druh spoofingu (záložka MITM) – my vybíráme ARP poisoning. Další věcí, kterou musíme udělat je uvedení cíle sniffování. K tomu slouží záložka Targets s opcí Select target(s). Po definování cíle začínáme zachycovat spojení (záložka Start, položka Start sniffing). Po krátké chvilce na spodní části obrazovky by se měly objevit údaje z vysniffovaného spojení – když se tak stalo, síť není zabezpečena před odposlechem. Na Obrázku 2 je vidět příklad zachytávaní toků dat pocházejících z lokálního serveru síťových komunikátorů (a přesněji – lokálního hub Direct Connect, který umožňuje provádění hovorů).
Odhalování děr v síťových službách
Další etapou je odhalení chyb v síťových aplikacích pracujících na zkoumaných strojích. K dosažení tohoto cíle můžeme použít libovolný bezpečnostní skener. Užijeme nejpopulárnější skener open source – Nessus. Nessus je aplikací umožňující skenování vzdálených síťových služeb a odhaluje díry v konfiguraci. Pracuje v systému klient – server. Program se skládá z funkcionálních pluginů – každý z nich obsahuje testy vyvozené pro konkrétní typ výzkumu. Pluginy jsou zapsány v jazyku NASL (ang. Nessus Attack Scripting Language). Je to skriptovací jazyk určený pro vývojáře, kteří tvoří pluginy pro tuto aplikaci. Standardně Nessus umožňuje provedení přes 1220 testů v 23 kategoriích. Seznam pluginů použitých v našem testu najdete v Tabulce 1.
Hakin9 Nr 1/2005
Penetrační testy
Tabulka 1. Seznam pluginů Nessus použitých v testech Plugin
Specifikace
Cgi abuses
Testy zkoumající odolnost známých webových aplikací na chyby skriptů CGI, PHP a modulů serverů WWW.
Gain a shell remotely
Balík testů umožňující využití chyb aplikací pro získání příkazového řádku vzdáleného systému (např. s oprávněním správce).
Denial Of Service
Test pro kontrolu odolnosti vzdáleného systému na útok jehož cílem je zamítnutí přístupu ke službám běžícím na serveru.
Remote file access
Vyhledávání aplikací, které můžou umožnit vetřelci neautorizované připojení k zásobám systému. Nejčastěji jsou to chyby aplikací, jejichž úkolem je mezi jinými síťová komunikace typu peer-to-peer.
Gain root remotely
Testy kontrolující odolnost vzdáleného systému na útoky, které využívají přeplnění bufferu.
Windows
Testy kontrolující odolnost systémů Microsoftu na útoky charakteristické pro tyto systémy a nimi užívané protokoly. Testy zahrnuji rovněž síťový software jiných producentů pro platformu MS.
General
Balík základních testů pro nejpopulárnější síťová řešení.
Backdoors
Vyhledávání programů (trojanů), které tvoří zadní vrátka v systému nebo vykrádají data jako třeba čísla kreditních karet.
FTP
Bezpečnostní testy serverových aplikací kontrolující chyby v řešeních souvisejících s přenosem souborů pomocí protokolu FTP.
SMTP problems
Vyhledávání serverových chyb aplikací elektronické pošty, které využívají protokol SMTP.
SNMP
Testy vyhledávající chyby aplikací a v protokolu SNMP.
Default UNIX Passwords
Testy systémových kont unixového serveru. Testy obsahují mezi jinými bezpečnost používaných hesel pro konto správce a pro konta se zvláštním významem.
Firewalls
Testy bezpečnostních systému sítě. Obsahují jak zkoumání bezpečnostních aplikací, tak i dedikovaných síťových zařízení.
Windows: User Manag.
Balík testů sloužící k získávání největšího množství informací o uživatelích a skupinách vzdáleného hosta.
Useless services
Testy jednoduchých služeb.
Každý plugin obsahuje od několika jednotek do několika desítek testů ve své kategorii. Některé testy jsou označeny výstražným symbolem o možném nebezpečí zkoumaného systému. Když provádíme tyhle testy, musíme počítat s pozastavením zkoumaných služeb, systému nebo dokonce se zničením dat. Konfigurace Nessusu spočívá na náležitém nastavení možnosti v záložkách aplikace. Záložky jsou tříděny na následující skupiny:
Hakin9 Nr 1/2005
•
• • • •
Nessusd host – obsahuje nastavení nezbytné k provádění správného procesu logování uživatele k demonu nessusd, Plugins – přesně určuje, které testy mají být provedeny, Prefs – preference aplikace, které jsou rozšířením nastavení pluginů, Scan options – vnitřní možnost konfigurace aplikace, Target selection – tady určujeme adresu testovaného serveru (je možno vzít adresy ze souboru) a přechovány jsou dříve
www.hakin9.org
•
prováděné práce; v tomto místě je možno exportovat zprávy Nessusu např. jako dokument HTML (spolu s grafickými výkresy), KB – nastavení týkající se uchovávání údajů o testovaných hostech; je možno použít pro zkrácení doby příštích výzkumu při opakujících se testech.
Více informací o programu můžete najít v čísle 1/2004 našeho časopisu.
7
Systém FreeBSD
Nejdříve začněme s odhalením slabin v systému FreeBSD. Test provádíme shodně s dříve popisovanými aplikacemi a s balíkem pluginů určeným v Tabulce 2. Výsledkem je seznam děravých služeb (chyby určené Nessusem jako kritické): •
•
•
SSH (OpenSSH), port 22 – na serveru je nainstalována verze balíku starší než 3.7.1, která umožňuje použitím exploitu vzdálený přístup s oprávněním správce. Sendmail, port 25 – tento MTA (Mail Transport Agent) není odolný proti útoku použitím přeplnění bufferu. Tuto metodu je možno použít podáním dlouhého řetězce znaků v parametrech příkazu ETRN. Tato chyba umožňuje vetřelci zablokování činnosti Sendmailu nebo dokonce provedení vlastního kódu v napadaném systému. Dodatečně je možno zablokovat tento poštovní server přetížením, výsledkem kopírování počtu procesů demona. stejný Sendmail, port 587 – má díru ve zpracování příkazu EXPN. Útočník může vzdáleně způsobit zablokování serveru zapsáním příliš dlouhého řetězce znaků v parametrech tohoto příkazu.
Nabídka změn konfigurace služeb serveru FreeBSD 5.2.1
FreeBSD nabízí možnost aktualizace softwaru přes svůj systém portů (ang. ports). Distribuována na instalačních CD kolekce portů je určitě neaktuální, proto jedna z prvních věcí, kterou by měl administrátor udělat po instalaci je aktualizace. Prvním krokem je prohlédnutí obsahu souboru scr/UPDATING pro zjištění případných změn. Následovně je třeba nainstalovat nástroj portupgrade, který automatizuje aktualizaci portů: # cd /usr/ports/sysutils/portupgrade # make install # make clean
Další fází je vytvoření databáze s aktuálním seznamem portů: # pkgdb -F
Provedení příkazu portupgrade -aR způsobí stáhnutí novějších verzí softwaru, postaví binární verze a nainstaluje je. Výchozí příkaz aktualizuje všechny (-a) právě nainstalovány aplikace, programy a knihovny, na kterých jsou tyto aplikace závislé (-R). Po aktualizaci serverového softwaru je třeba přebytečné síťové služby vypnout a odstranit aplikace, které nejsou nezbytné pro práci serveru (nebo uživatelů), a ve kterých často nalézáme chyby. Rozhodnutí o přiřazení programů je třeba učinit na základě specifiky používaných služeb v konkrétní firmě. Ve většině případů můžeme předpokládat, že takové služby jako: daytime, time, echo, discard, chargen můžeme vypnout. Je to zvláště doporučeno pro servery instalované v zóně DMZ nebo přímo připojené k Internetu. Protože je to jedna z nejstarších služeb unixových systémů, neobsahuje žádná zabezpečení. Když podrobně rozebereme výsledky testů, můžeme připravit konkrétní řešení, které bude mít pozitivní vliv na bezpečnost systému a uživatele. Služby je možno zajistit použitím TCP Wrapperu nebo seznamu kontroly přístupu (ACL, Access Control List) na serveru (ipfw). Níže se nachází seznam služeb, které se kvalifikují pro zabezpečení: •
•
Dodatečně Nessus varuje: •
Útok
•
•
8
OpenSSH, port 22 – s trochou snahy může vetřelec stáhnout seznam uživatelů serveru. Dokonce může získat podrobné informace o používané verzi protokolu SSH. Apache, port 80 – tato verze serveru WWW může být náchylná na útoky HTML Injection. Vetřelec může rovněž využít chybu softwaru použitím exploitu založeném na chybách v emulátorech terminálů. SunRPC, port 111 – na vzdáleném hostu funguje náchylná na útoky rpcbind (element NTFS).
• •
•
•
OpenSSH – prvním krokem by měla být aktualizace balíku na verzi 3.7.1p2 nebo novější. Vzhledem na druh služeb je třeba omezit k ní přístup. Konfigurace služeb by neměla povolovat vzdálené přihlašování uživatele root a neměla by používat protokolu SSH verze 1. Sendmail – vzhledem k častým problémům v činnosti tohoto démona a špatně přehlednou konfiguraci, se převážně doporučuje změnu tohoto MTA na jiný software, např. qmail, Postfix nebo Exim. Doporučuje se také konfigurace služby SMTP s podporou TLS a ověřování uživatelů (SMTP AUTH). Apache – je třeba aktualizovat software na verzi 1.3.31 nebo novější. Důvěrné informace nebo chráněné právem by měly být posílané mezi klientem a serverem prostřednictvím protokolu SSL s délkou klíče nejméně 128 bitů. Pro to můžeme použít modul Apache-SSL nebo zkompilovat balík s podporou tohoto protokolu. SunRPC – tato služba je hlavně využívána ke sdílení prostředků se serverem NFS. Není nezbytná ke správné práci serveru. Do souboru /etc/rc.conf připisujeme řádek: portmap _ enable="NO". Nejjednodušší a nejúčinnější metodu antispoofingu můžeme provést použitím mechanismu ACL firewallu.
Pro filtrování paketů v systému FreeBSD je používán vestavěný firewall (ipfw). Doporučuje ale použití pohodlnějšího filtru paketů – PF (Packet Filter), dostupného také ve výchozí instalaci. Aktivizace PF spočívá na dopsání pf_enable="YES" v souboru /etc/rc.conf. Detaily týkající se instalace můžeme najít na adrese http://www.openbsd.org/faq/pf/index.html.
www.hakin9.org
Hakin9 Nr 1/2005
Penetrační testy
Návrh změn konfigurace služeb serveru Windows 2003 Server
Základní pravidlo konfigurace síťových služeb se týká rovněž systémů Microsoft. Navrhujeme následující řadu činnosti: • • • • •
•
vypnutí zbytečných služeb serveru, změna hesel kont správců na takové, které jsou odolné na brute force a slovníkové útoky, změna hesel kont uživatelů, aby byla odolná výše uvedeným útokům, vynucení pravidelné změny hesel uživatelů, krytí banerů služeb; k tomu můžeme použít např. nástroj MetaEdit (Metabase Editor) verze 2.2 (kolem 2.5 MB) nebo aplikace Metabase Explorer 1.6, která je součástí IIS 6.0 Resource Kit (kolem 6 MB), změna identifikátorů služeb elektronické pošty (SMTP a POP3).
Před přistoupením k jakýmkoliv změnám měli bychom nejdříve udělat bezpečnostní kopii databáze obsahující nastavení měněných servisů. Pro větší bezpečnost je také nutná instalace náležitých oprav děravých síťových služeb – v případě systému Microsoft se stačí postarat o pravidelnou aktualizaci systému a síťových služeb (Windows Update). Dobrým zvykem je také pravidelné prohlížení informačního bezpečnostního bulletinu Microsoftu.
Jestliže není použitá, měli bychom ji vypnout. Vzdálený host je rovněž náchylný na útok s použitím některých flagů protokolu TCP. Vetřelec může posílat paket s flagem RST a zavřít tak aktivní spojení.
Windows 2003 Server
•
•
•
V případě Windows 2003 Server Nessus uvedl více služeb, které jsou náchylné na útok (kritický stav): • •
SMTP Service, port 25 – tato služba je náchylná na útok typu DoS (Denial of Service), jestliže server dostane od vetřelce příliš dlouhý řetězec znaků v parametrech příkazu HELO.
Microsoft IIS, port 80 – vetřelec může použít skript CGI o názvu count.pl ke zničení souborů na serveru. epmap, port 135 – vzdálené rozhraní RPC obsahuje chybu umožňující vetřelci spuštění vlastního kódu se systémovými oprávněními (Administrátor). ldap, port 389 – konfigurace služby LDAP umožňuje vetřelci přístup k datům uchovaným v databázi. Microsoft-ds, port 445 – systém zahrnuje knihovnu ASN.1, která umožňuje vetřelci spuštění vlastního programu na vzdáleném hostu. Navíc na serveru je aktivní konto Administrátor, které může být využité přes díru
V síti • • • • • • • • •
http://www.tcpdump.org – domácí stránka programu tcpdump, http://www.insecure.org/nmap/ – skener Nmap, http://www.thc.org/releases.php – Amap, skener síťových služeb, http://www.nessus.org – domácí stránka nástroje Nessus, http://www.monkey.org/~dugsong/dsniff/ – domácí stránka autora balíku dsniff, http://ettercap.sourceforge.net – domácí stránka snifferu Ettercap, http://documents.iss.net/whitepapers/pentestwp.pdf – dokumentace týkající se penetračních testů, http://download.microsoft.com /download /iis50 /Utility/5.0 / NT45 / EN-US/ MtaEdt22.exe – MetaEdit, http://download.microsoft.com/download/7/8/2/782c25d3-0f90-4619-ba36f0d8f351d398/iis60rkt.exe – IIS 6.0 Resource Kit Tools.
Hakin9 Nr 1/2005
www.hakin9.org
W32.Deloder. Služba umožňuje bezproblémové stahování názvu domény Windows a přesného názvu a verze operačního systému serveru, co určitě usnadní využití vhodného exploitu. Windows 2003 je také náchylný na díru nacházející se v systému FreeBSD – uzavření existujících připojení přes vysílání z falešné adresy paketů TCP s určeným flagem RST. Méně důležitou chybou je náchylnost na útok typu Etherleak, který se projevuje chybami v práci ovladače síťového zařízení po obdržení paketů obsahujících méně než 46 bytů dat. Chyba může být využita jenom vetřelcem nacházejícím se ve stejném segmentu sítě ethernet.
Analýza výsledků testů
Výsledky testů jsou zdrcující pro správce zkoumané sítě. Oba servery – FreeBSD a Windows 2003 – jsou neaktualizovány, a nejdůležitější služby se jeví velmi náchylné na útoky. I když se to nezdá, tato situace je běžná ve většině korporačních síti. Tento text, i když byl jenom příkladem, byl reálně proveden (v reálné síti jedné varšavské společnosti). Můžeme si být jistí, že je nutná rekonfigurace síťových služeb fungujících v těchto systémech. Jakékoliv sdílení služeb v zóně DMZ by mělo být rozvážně promýšleno. Abychom zabezpečili systém před vetřelci je třeba nakonfigurovat systém tak, abychom znemožnili vzdálené rozpoznání síťových služeb a operačních systémů – viz. Rámky Nabídka změn konfigurace služeb serveru FreeBSD a Nábídka změn konfigurace služeb serveru Windows 2003 Server. Všechna potřebná nářadí pro provedení penetračních testů se nacházejí na připojeném k časopisu Hakin9 Live. Povzbuzujeme i Vás k prozkoumání vlastní sítě – může se projevit, že je stejně špatně zabezpečená jako tato, kterou jsme použili k příkladu penetračních testů. n
9