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á.