Martin Hořický, partner a odborník na kyberbezpečnost ve společnosti BDO
Často se během své práce setkáváme se situací, kdy klienti zaměňují pojmy penetrační testování se skenováním zranitelností a naopak. Smutnější přitom je, že se to někdy stává i mezi lidmi v oboru. Opravdu se vám dodavatel snaží prodat plnohodnotný penetrační test, nebo se jedná „pouze“ o skenování zranitelností skryté za vyšší cenu? V čem je ten fundamentální rozdíl mezi těmito dvěma službami? Je jedna „horší“ než druhá? V jakých případech je vhodné provést skenování zranitelností a kdy má smysl přistoupit k penetračnímu testování? Především tyto otázky se pokusím zodpovědět v tomto článku.
Hned na úvod bych chtěl zdůraznit, že se opravdu nejedná o synonyma! Jedná se o dvě odlišné služby, které se výrazně liší obsahem, náročností provedení, a tudíž i cenou. Zjednodušeně řečeno, skenování a vyhledávání zranitelností cílových systémů je součástí penetračního testování, ale v rámci penetračního testování probíhá aktivní snaha o prolomení všech nalezených slabin a o cílenou infiltraci sítě. Součástí obou služeb by mělo být vždy podání detailních informací o tom, v čem hrozba spočívá a jak ji odstranit, nebo alespoň minimalizovat riziko jejího zneužití. Pojďme se nyní podívat na obě služby detailněji.
Skenování zranitelností
Představte si počítač (chcete-li server), na kterém běží určitá služba, například webový server, na kterou jste schopni se připojit. V našem případě připojení znamená zobrazení webové stránky, která je umístěna na tomto počítači. Abychom nezabíhali do přílišných technických detailů, řekněme, že aby počítač byl schopen komunikovat s okolím, musí mít pro tuto komunikaci otevřené nějaké síťové rozhraní. Budeme mu říkat port. Portů může mít počítač otevřených velké množství a na každém z nich může běžet jiná služba.
Skenování zranitelností vyhledá všechny otevřené porty počítače, jež jsou předmětem skenování, a může získat informace o typu služby, verzi aplikace, která tuto službu provozuje, verzi použitého operačního systému a další cenné informace. Na základně porovnání získaných informací s databázemi známých zranitelností pak skener dokáže říct, že například aplikace na portu číslo 80 s názvem X ve verzi y.z.w je zranitelná vůči tomu či tomu útoku.
Bystrý čtenář by se mohl ptát, je-li v počítači dostupných mnoho otevřených portů a těchto počítačů je v síti třeba více, nedá se tento proces automatizovat a snížit tak jeho časovou i finanční náročnost? Odpověď zní ANO. Je to také princip, na kterém je skenování zranitelností většinou založené. Ačkoliv samotné skenování může trvat řádově několik minut, hodin ba dokonce dní, v závislosti na rozsahu skenované sítě a typu skenování, obejde se většinou bez zásahu specialisty na kybernetickou bezpečnost.
Pojďme si jen krátce shrnout hlavní výhody a nevýhody skenování zranitelnosti:
Penetrační testování
Penetrační testování je oproti skenování zranitelnosti velmi komplexní proces, který (alespoň v současné době) nelze provádět automatizovaně. V rámci penetračního testování probíhá mimo jiné také skenování zranitelností, ale součástí jsou i aktivní pokusy o prolomení zabezpečení, infiltrace systému a převzetí kontroly. Využívá se velká škála nástrojů a technik, jejichž použití může a většinou je pro různé operační systémy odlišné. Penetrační tester si vytváří i vlastní malware, který přizpůsobuje „na míru“ klientovi a jeho používaným systémům, a ten dále využívá ke zneužití nalezených zranitelností.
Zatímco skenování zranitelností dokáže odhalovat pouze známé nedostatky systémů, v rámci penetračního testování může dojít k odhalení zatím nikým neodhalené chyby či zranitelností jedinečné pro testované prostředí. „Jedinečných zranitelností“ může paradoxně vznikat mnoho, jelikož mohou být vedlejším produktem snahy administrátorů zabezpečit, vylepšit či optimalizovat. Unikátní zranitelnosti se dají velmi často najít také ve zdrojových kódech vlastních vyvíjených systémů a aplikací. Jako příklad lze uvést vývojovou společnost, která vytváří přelomové a unikátní mobilní aplikace a má velmi kreativní vývojáře, kteří se primárně zaměřují na to, aby aplikace splňovala požadavky na funkčnost a vzhled. Bezpečnost se tak mnohdy dostává na druhou kolej.
Za zmínku stojí určitě i pojem „Red-teaming“. Jedná se o techniku aktivního prolamování zabezpečení a infiltrace systémů, ale na rozdíl od penetračního testování necílí na odhalení všech nedostatků zabezpečení. V rámci „red-teamingu“ je cílem co nejrychleji a nejefektivněji získat kontrolu nad systémem či celou sítí. Tento přístup se velmi často používá v různých „hackovacích“ soutěžích a při tréninku a studiu hackingu.
Opět si pojďme krátce shrnout hlavní výhody a nevýhody penetračního testování.
Finální srovnání
Nelze tvrdit, že by byla jedna služba horší než druhá. Každá má svou roli a vždy záleží na požadavcích klienta, co od služby očekává a jaký je jeho cíl. Pojďme si nyní shrnout ty nejdůležitější aspekty obou služeb. (1.11.2022)