Dobré penetrační testy prověří důkladně vaší síť

1. 4. 2005

Sdílet

Penetrační testy jsou někdy označovány též jako etické hackování. Ač je toto označení mírně nadsazené, velmi p...
Penetrační testy jsou někdy označovány též jako etické hackování. Ač je toto
označení mírně nadsazené, velmi přesně vystihuje jejich podstatu. Penetrační
testy jsou totiž zaměřeny na testování informační bezpečnosti použitím metod,
které mají útočníci k dispozici. Jedná se tedy o jakousi zkoušku ohněm.

Cíl penetračních testů je jednoduchý: nalézt slabá místa, chyby a organizační
nedostatky. Ty je pak následně třeba sumarizovat, čímž získáme kompletní
přehled o účinnosti či neúčinnosti stávajících bezpečnostních mechanismů. To je
velmi důležité, protože samotnou bezpečnost nelze nikterak kvantifikovat a
komplexně prověřovat. Existují sice různá dílčí kritéria a metody, ale právě
penetrační testy přinášejí zátěžové zkoušky blízké reálným.
Pro penetrační testy neexistuje žádné srovnání, žádná jasně a jednoznačně daná
metodika. Je to způsobeno tím, že útočník žádnou metodiku nemá (respektive ji
nepotřebuje mít jeho cílem není držet se nějakého pevně daného postupu, nýbrž
dostat se za každou cenu do systému).
Penetrační testování může být dvojího typu: s nulovou znalostí systému (zero
knowledge) nebo s plnou znalostí (full knowledge). Penetrační testování s
nulovou znalostí (někdy též označováno jako black box testing, protože pro
útočníka je na počátku systém jen černou skříňkou, do které nevidí) představuje
útok z pohledu externí osoby, která o systému nemá prakticky žádné informace a
musí je nejprve vyhledat, setřídit a zpracovat. Naproti tomu test s plnou
znalostí systému (white box testing) představuje stav, kdy je útočník dobře
obeznámen se systémem, jeho prvky, pravidly, slabinami.
Tyto dva rozdílné přístupy se používají coby ochrana před různými profily útoků
(viz Typické profily útočníků). Je totiž zapotřebí si uvědomit, že plných
sedmdesát procent incidentů nebo útoků začíná uvnitř organizace. Nepřítel tedy
není někde venku, ale sedí uvnitř a každý den svého šéfa zdvořile pozdraví.
Penetrační testy v žádném případě nepředstavují jen sled typizovaných útoků,
které se proti každému subjektu provádějí stejně. V praxi jde o víceméně
detektivní práci, týkající se hledání skulinek a jejich následné otevírání.
Nutné je přitom postupovat za podmínek co nejpodobnějších těm, které má (může
mít) skutečný útočník. Nikdy se je sice stoprocentně vytvořit nepodaří, ale
přiblížit se k nim lze.

Důvody pro test
Stejně jako každá další technologie i penetrační testy mají svá výrazná "pro".
Především se jedná o vynikající startovací bod při zavádění informační
bezpečnosti nebo modifikacích v ní. Mnoho organizací totiž podceňuje své
vlastní chyby a nedostatky a především schopnost vlastních pracovníků je
zneužít. Penetrační testy umožňují získat o nedostatcích a slabinách kompletní
přehled. Jimi získané výsledky napoví, co je děláno dobře a kde je naopak nutné
provést změny (nasadit nový software, provést rekonfiguraci stávajícího, změnit
organizační záležitosti aj.).
Penetrační testy také velmi pomáhají prosazovat IT bezpečnost jsou tak vítaným
pomocníkem osob zodpovědných za bezpečnost. Provedený test totiž ukáže, zda
byly minulé prostředky vynaloženy efektivně a kde je nutné vynakládat ty
budoucí. Jedním z největších současných problémů je totiž obtížnost obhajování
dalších investic do oblasti informační bezpečnosti na úrovni managementu, který
si mnohdy neuvědomuje, že bezpečnost není statickou záležitostí, ale že jde o
kontinuální proces. Co bylo považováno bezpečné včera, nemusí být bezpečné
zítra, nebo dokonce už dnes.
Dalším důvodem pro provedení penetračních testů je fakt, že chrání zdroje
organizace. Zjistíte totiž zavčasu (v ideálním případě dříve než útočník), kde
jsou místa vzniku možných problémů a samozřejmě na ně zareagujete. Ve Spojených
státech je v této souvislosti často používán argument "ochrana hodnoty akcií a
majetku akcionářů", který u nás sice není příliš rozšířený, ale velmi přesně
celou problematiku vystihuje.
Penetrační testy zároveň zjišťují, zda jsou splněny všechny stanovené
legislativní podmínky tedy zda se organizace nemůže dostat do konfliktu se
zákonem pro jejich nedodržení. Mnoho oblastí je ošetřeno právně (u nás
například zákonem na ochranu osobních údajů), přičemž tyto předpisy a normy
nestačí jen implementovat, ale je zároveň nutné zjistit, zda nasazení v praxi
funguje.
Penetrační testy také garantují větší míru jistoty partnerům. V současném
internetem propojeném světě plném rizik si mnoho organizací dává dobrý pozor na
to, s kým spolupracuje, aby nebyla ohrožena jejich bezpečnost a stabilita.
Zvláště instituce, které už měly tu pochybnou čest stát se obětí bezpečnostních
incidentů, dobře vědí, že je lepší prevence než následné řešení vzniklých
problémů.
Díky penetračním testům také lze průběžně sledovat bezpečnostní opatření a
dopad různých změn. Může jít například o změny topologie sítě, výměnu hardwaru
apod. A konečně s pomocí penetračních testů získáváte na informační bezpečnost
neotřelý pohled očima nezávislého subjektu.

Kdo provede test
Naznačená otázka je mnohem důležitější, než na první pohled vypadá. Když si
uvědomíte podstatu penetračních testů, tak je jasné, že volbou by měla být
dostatečně zkušená, renomovaná a důvěryhodná firma s prokazatelnými referencemi
a čistým štítem, neposkvrněným bezpečnostními problémy.
V této oblasti se velmi často přetřásá etická otázka najímání bývalých nebo i
současných hackerů. Vzhledem k obsáhlosti a složitosti tématu se jí nebudeme
hlouběji věnovat. Spokojíme se pouze s konstatováním, že jde o otázku stejně
citlivou, jako jsou celé vlastní penetrační testy.
Výběr subjektu pro provedení penetračních testů je nesmírně důležitý, protože
ho vpouštíte do svých nejintimnějších podnikových komnat k datům, databázím,
infrastruktuře... Při provádění testů s plnou znalostí jim inkriminované
informace dokonce poskytujete.
Důležitá je proto prováděcí smlouva, která není jen tak nějakým cárem papíru,
ale striktně stanovuje rozsah provedení testů, pravomoci jednotlivých stran i
zodpovědnost za případně vzniklé problémy. Mimořádné důležitosti nabývá v
případě, že zákazník požaduje i destruktivní test zanechání naprosto jasných a
neoddiskutovatelných stop v systému o tom, že se test vydařil. Přistupuje se k
němu v případě, že si je určitá organizace jistá svými bezpečnostními
opatřeními (včetně politiky zálohování) a/nebo potřebuje chránit kritická data
opravdu kvalitně (třeba armáda nebo finanční sektor).
Podoba smlouvy se odvíjí od toho, čeho je třeba dosáhnout, jaké konkrétní
informace mají být na výstupu apod.
Přestože jsou penetrační testy důležitým a mimořádně kvalitním nástrojem, právě
rizika s nimi spojená mnoho organizací odrazují. Rizika tkví například v
přístupu externích osob k systému, v možnosti úniku dat či informací
(vnitropodnikových či o testech), vlastní zaměstnanci mohou získat představu o
penetračních technikách, hrozbou může být i falešné sebeuspokojení po neúplném
nebo špatně provedeném testu a další faktory.
Bohužel už se stalo, že testeři i ve velmi renomovaných organizacích podlehli
pokušení a snažili se získané informace zneužít ve svůj prospěch. Jsou to
výjimky potvrzující pravidlo, ale bohužel existují. Každý systém je zkrátka tak
silný, jak je silný jeho nejslabší článek.

Vlastní test
Provádění penetračních testů začíná sbíráním informací a to v případě nulové i
plné znalosti. Samozřejmě, že v případě plné znalosti jde o proces výrazně
jednodušší. V první fázi se jedná o pasivní proces sbírání informací (takzvané
hledání otisků).
Výborným zdrojem základních informací je internet. Pomocí běžně dostupných
nástrojů, jako jsou například wget nebo Teleport Pro, lze vytvořit identické
(nebo téměř identické) kopie webů. Jejich následná analýza pak útočníkovi
poskytuje velmi cenné základní informace nejen jaký je použit systém, v jaké
verzi či jazykové mutaci, ale třeba také hodně napoví o pečlivosti či
schopnostech správce.
Dále útočník prochází nejrůznější veřejně dostupné databáze na internetu, jako
jsou DNS záznamy. Stejně tak lze cenné informace nalézt na webových stránkách
příslušné organizace třeba jména klíčových nebo i řadových pracovníků,
používaný formát e-mailových zpráv (jméno.příjmení, jméno_příjmení,
jménopříjmení apod.) a další na první pohled bezvýznamné informace. Pro síťové
útoky pak lze použít nástroje "masového pingování" jako fping nebo icmpenum ke
zjištění, zda vytipované cíle odpovídají na zaslané dotazy. Tyto nástroje
vysílají ICMP pakety proti specifickému rozsahu adres ve snaze zjistit, co jsou
o sobě ochotny prozradit. Nástroj nmap zase pomáhá identifikovat otevřené TCP a
UDP porty. A takto bychom mohli pokračovat. Pokud je útočník jenom trochu
zběhlý (a napadaný systém jen trochu sdílný), tak se dozví opravdu hodně
informací.

Prohlubování znalostí
Zatímco sbírání informací bylo především pasivním úkonem, na něj navazuje úkon
velmi podobný, nicméně aktivní. Jde o prohlubování znalostí. Jakmile má útočník
(a nezáleží na tom, zda jde o nebezpečného hackera či specialisty provádějící
penetrační testování) k dispozici sbírku základních informací, začne jít do
detailů. A to do takových, které nejsou veřejně přístupné, ale které je možné
získat právě na základě výše uvedených veřejných informací. Tyto jsou zkrátka
odrazovým můstkem.
Útočník se snaží o získání uživatelských jmen (velmi často mívají stejný formát
jako e-mailová adresa viz výše), informací o síťovém sdílení či běžících
službách (jako je IIS 4.0, Apache 1.3.X či BIND 8.2.1). Informace je přitom
možné stále ještě získat (v nezabezpečených systémech) velmi jednoduše pouhým
posíláním dotazů, pokusy o navázání spojení, pomocí primitivních mechanismů,
jako je anonymní připojení apod. Neuvěřitelné množství informací lze získat
například o nezabezpečených systémech Windows NT/2000 při pouhém použití null
session, která je někdy též označována jako anonymní. To může být provedeno buď
manuálně, nebo pomocí nástroje, jako je gnit.
Zmiňované sbírání informací a prohlubování znalostí jsou nejdůležitější fází
každého útoku. Jejich (ne)kvalita pak do zásadní míry ovlivňuje (ne)úspěch
útoku a (ne)kvalitu provedeného testu. V případě penetračních testů jsou přitom
mimořádně odvislé od schopností testera. Od jeho znalostí, rozhledu, nadhledu,
umění vidět souvislosti, číst mezi řádky, intuitivně doplňovat chybějící
střípky v mozaice, schopnosti vžít se do role útočníka...

Zranitelná místa
Následuje fáze mapování zranitelných míst. Na základě předchozích informací
dojde k vyhledání veřejně známých (a někdy i neznámých, tedy k objevení nových)
nedostatků. Znovu je třeba zdůraznit, že úspěch mapování zranitelných míst je
nerozlučně spjatý s kvalitní přípravou. Co jste podcenili v prvních dvou
fázích, teď už nedoženete ani při mimořádně příznivé konstelaci hvězd (pardon,
sítě).
Nejjednodušším způsobem je přitom porovnání nalezených atributů s veřejně
známými zdroji bezpečnostních nedostatků, jako je Bugtraq, Computer Emergency
Response Team (CERT) a varování bezpečnostních firem nebo výrobců operačních
systémů. Čili pokud například odhalíte linuxový BIND 8.2.1, stačí jen nalézt
seznam pro něj známých bezpečnostních nedostatků (například seznam buffer
overlow na CERT) a ověřit, zda proti nim je či není ošetřený.
Pokud zjistíte informace o používaných systémech, není nic jednoduššího, než se
na internetu podívat na některý z veřejně přístupných seznamů defaultních hesel
(jeden můžete nalézt například na www.pheno elit.de/dpl/dpl.html). Přestože by
se mohlo zdát, že v současném nebezpečném prostředí jen absolutní hazardér
ponechá všeobecně známá základní hesla, má tato metoda překvapivě vysokou
úspěšnost. Mapování zranitelných míst hodně napoví o stavu, v jakém je celý
systém, jaký je jeho správce, jaké je nastavení či politika záplatování.

Do útoku
Poslední fází je využití zranitelností. Všechny předchozí úkony směřovaly k
tomu, abyste si do stanoveného systému otevřeli dveře a teď už zbývá jimi
projít a podívat se, kam vedou. Nashromážděné informace tak útočník použije k
získání přístupu do systému (ať již na uživatelské či administrátorské úrovni),
ke kopírování či modifikaci dat apod.
Srozumitelné výsledky penetračních testů jsou nade vše. Musejí obsahovat jasně
kvantifikovatelné hrozby, nikoliv jen vágní mnohoznačná konstatování. Musejí
být podrobné, aby byly pochopitelné pro osoby s technickým vzděláním
(administrátoři) i bez něj (management). A musejí obsahovat doporučení a závěry.

Sumarizace
Penetrační testy nejsou všelékem a mají svá omezení. Nikdy nelze sledovat
všechno. Nikdy nevyloučíte, že i při sebepečlivěji provedeném testu hacker či
zaměstnanec nevymyslí/neobjeví něco nového. I na první pohled malé
administrativní nebo technické změny mohou celý systém postavit z hlediska
bezpečnosti do úplně jiného světla.



Podmínky úspěšného penetračního testu
n Penetrační test musí pokrývat celé spektrum hrozeb. Nelze se zaměřit na jednu
oblast a ostatní ignorovat nebo ošetřit jen letmo.
n Z testu musí být jasné a srozumitelné výstupy. Nestačí provést test jen sám
pro sebe, ale je nutné s jeho pomocí získat jasné výsledky: stav bezpečnosti,
doporučení k nápravě apod.
n Penetrační testy musejí být prováděny skutečnými profesionály. Nelze
aplikovat filozofii "když se něco najde, je to dobře". "Něco" se totiž najde
vždy. Je zapotřebí používat aktuální nástroje a počítat s aktuálními hrozbami.
n Penetrační testy by měly mít minimální dopad na provoz organizace. Zkrátka
musejí být prováděny za běžného chodu.
n Kromě vlastního hledání chyb je prováděno také testování bezpečnostní
infrastruktury, schopnosti prevence, detekce i reakce, dále pak bezpečnostní
politiky i postupů.

Typické profily útočníků
n Scrip Kiddies jedná se o nejprimitivnější útočníky, kteří mají velmi
limitované znalosti o informačních technologiích a kteří v žádném případě
nepředstavují (respektive neměli by představovat) bezpečnostní riziko. Nejsou
totiž schopni žádných samostatných akcí nebo hlubších analýz, protože jsou
odkázáni na jinými odhalené slabiny, vytvořené návody nebo předpřipravené
nástroje. Pokud najdou chybu, ihned bezhlavě zaútočí.
n Master Cracker jde o nejnebezpečnější kategorii. Mají vynikající znalosti
problematiky, informačních technologií a používaných systémů. Dokáží analyzovat
problémy, hledat nové nedostatky, vytvářet vlastní útočné skripty připravené na
míru systému. Dokáží být velmi trpěliví, protože mají jasný cíl a vědí, že
právě trpělivost se jim vyplatí. Postupují systematicky a dlouhé měsíce čekají
na svoji příležitost.
n Malicious Insider člověk "uvnitř" se zlými úmysly. Zpravidla zneuznaný,
nedoceněný nebo jinak ublížený zaměstnanec. Obecně se o něm dá říci, že nemá
hluboké znalosti o informačních technologiích (byť je sám zpravidla přesvědčen
o opaku), ale jeho velkou devizou je to, že má výborné znalosti o systému, jeho
struktuře, slabinách i silných místech (pro podobného člověka není například
problém přečíst si heslo svého kolegy přilepené zespodu k podložce myši nebo ke
klávesnici). A právě v tom je jeho největší nebezpečí.
n Naive Employee naivní zaměstnanec. Člověk, který nemá zlé úmysly a má
prakticky nulové znalosti informačních technologií. A právě touto svou
neznalostí poškozuje informační systém. Zkrátka je neschopný korektně pracovat
i s nejjednoduššími aplikacemi. Typickým příkladem je člověk, kterému nikdo ani
po několika virových incidentech není možno vysvětlit, že na všechny přílohy u
e-mailů se prostě nekliká.