Software zaručeně obsahuje chyby. V softwaru může být mnoho tisíc řádků kódu a lidská omylnost znamená, že alespoň některé z nich nebudou úplné, jak bylo zamýšleno. Životní cyklus vývoje softwaru je proces navržený tak, aby se pokusil minimalizovat tyto problémy pravidelným testováním.
Problém je v tom, že testování často provádějí vývojáři, kteří se možná naučili, jak něco kódovat, ale nemuseli se naučit praktiky bezpečného kódování. I v důkladně testovaných systémech může pohled vnějšího pozorovatele a vnesení nového pohledu pomoci identifikovat nové problémy.
Běžným způsobem, jak se to dělá, je penetrační test, obvykle zkrácený na pentest. To zahrnuje získání profesionálního, etického hackera, pentestera, aby se podíval na systém a našel jakékoli bezpečnostní problémy.
Tip: Je to „pentest“ a „pentester“, nikoli „test perem“. Pentester netestuje pera. „Test perem“ je o něco přijatelnější než „test perem“, ale obecně je třeba se mu také vyhnout.
Cíl letnic
Cílem každého pentestu je identifikovat všechny bezpečnostní chyby v testovaném systému a nahlásit je klientovi. Obvykle jsou však zakázky poněkud časově omezené na základě nákladů. Pokud má společnost interní tým pentester nebo pentest, mohou pro společnost trvale pracovat. Přesto má mnoho společností s takovým měřítkem široké portfolio systémů, které musí být testovány. To zahrnuje jak prodávané produkty, tak obchodní systémy společnosti.
Nemohou proto strávit všechen svůj čas testováním jedné věci. Mnoho společností dává přednost tomu, aby zakázku provedla externí společnost provádějící testování. To je stále časově omezené v závislosti na ceně. Náklady jsou způsobeny skutečností, že pentest je velmi manuální proces a že soubor dovedností je nedostatkový.
Obvykle bude pentest omezen na konkrétní časový rámec. To se provádí na základě dotyčného cíle a toho, jak dlouho by mělo trvat, než budete mít přiměřenou jistotu, že jste vše našli. Časová osa pro nalezení zranitelností je obecně zvonová křivka. Okamžitě se toho moc nenajde, když se pentester rozhlíží po aplikaci. Potom lze velké většiny nálezů dosáhnout v určitém časovém horizontu, než dojde k omezení. V určitém okamžiku náklady na více času stráveného hledáním nestojí za šanci, že není k nalezení nic jiného.
Někdy je i uvedená cena za doporučenou dobu příliš vysoká. V tomto případě může být test „časově ohraničený“. Zde klient akceptuje, že netestuje tolik, kolik je doporučeno, ale chce, aby pentesterové udělali to nejlepší, co mohou ve zkráceném časovém rámci. Obvykle je to součástí zprávy jako upozornění.
Manuální proces
Některé nástroje jsou k dispozici pro automatické provádění bezpečnostních testů. Ty mohou být užitečné. Často však mají vysokou míru falešně pozitivních a falešně negativních výsledků. To znamená, že musíte trávit čas prohrabáváním se ověřováním problémů s vědomím, že to nemusí být komplexní. Většina těchto nástrojů hledá specifické indikátory, jako jsou známé zranitelné verze softwaru nebo známé zranitelné funkce. Existuje však mnoho způsobů, jak tyto problémy nelze v praxi zmírnit.
Bezpečnostní slabiny se mohou sejít z hromady zdánlivě neškodných kousků. Nejlepší způsob, jak to zjistit, je ruční lidské úsilí. Pentesterové používají nástroje, ale vědí, jak interpretovat výsledky, ručně je ověřovat a provádět nezávislé ruční akce. Toto ruční úsilí odděluje pentest od skenování zranitelnosti nebo hodnocení zranitelnosti.
Druhy letnic
Pentest obvykle zahrnuje testování celého produktu tak, jak by byl nasazen. V ideálním případě se tak děje v reálném produkčním prostředí. To však není vždy praktické. Za prvé, existuje obava, že by pentest mohl srazit cíl offline. Obecně je tento strach v podstatě neopodstatněný. Pentesty obecně negenerují příliš mnoho síťového provozu, možná ekvivalent několika dalších aktivních uživatelů. Pentesters také nebudou záměrně testovat problémy typu denial-of-service, zejména v produkčním prostředí. Místo toho obvykle nahlásí podezření na problémy s odmítnutím služby, aby klient mohl problém prošetřit sám.
Kromě toho stojí za zmínku, že pokud je systém připojen k internetu, neustále podléhá „bezplatným pentestům“ skutečných black hat hackerů a jejich robotů. Dalším důvodem, proč se vyhnout produkčnímu prostředí, jsou problémy s ochranou soukromí u živých uživatelských dat. Pentestři jsou etičtí hackeři v rámci NDA a smluv, ale pokud existuje testovací prostředí a je podobné, lze ho použít.
Tip: „Bezplatný pentest“ je vtipný způsob, jak naznačit, že jste pod útokem černých klobouků na internetu.
Pentesty lze provádět v podstatě proti jakémukoli technologickému systému. Webové stránky a síťová infrastruktura jsou nejběžnější typy testů. Získáte také testy API, testy „tlustého klienta“, testy mobilních zařízení, testy hardwaru a další.
Variace na téma
Ve skutečnosti phishing, OSINT a cvičení červeného týmu spolu souvisí, ale mírně se liší. Pravděpodobně jste si vědomi hrozby phishingu. Některé testy zahrnují testování, aby se zjistilo, jak zaměstnanci reagují na phishingové e-maily. Sledováním toho, jak uživatelé interagují – či nikoli – s phish, je možné se naučit, jak přizpůsobit budoucí phishing školení.
OSINT je zkratka pro Open Source INTelligence. Test OSINT se točí kolem seškrabování veřejně dostupných informací, aby se zjistilo, jak lze shromáždit cenná data a jak je lze využít. To často zahrnuje generování seznamů zaměstnanců z míst, jako je LinkedIn a webové stránky společnosti. To může útočníkovi umožnit identifikovat vysoké osobnosti, které by mohly být dobrými cíli pro spear-phishingový útok, phishing speciálně přizpůsobený jednotlivým příjemcům.
Zapojení červeného týmu je obvykle mnohem podrobnější a může zahrnovat některé nebo všechny další složky. Může také zahrnovat testování fyzické bezpečnosti a dodržování bezpečnostní politiky. Na politické stránce to zahrnuje sociální inženýrství. To se snaží přesvědčit vaši cestu do budovy. To může být tak jednoduché jako poflakování se v kuřáckém prostoru a návrat s kuřáky po kouřové přestávce.
Může to být vydávat se za úředníka nebo někoho žádat, aby vám přinesl dveře, zatímco nesete podnos na šálek kávy. Na straně fyzické bezpečnosti to může dokonce zahrnovat pokus o fyzické vloupání, testování pokrytí kamer, kvalitu zámků a podobně. Zapojení červeného týmu obvykle zahrnuje tým lidí a může probíhat v mnohem delších časových intervalech než běžné pentesty.
Červené týmy
Cvičení červeného týmu se může zdát méně etické než standardní pentest. Tester aktivně loví nic netušící zaměstnance. Klíčové je, že mají povolení od vedení společnosti, obvykle na úrovni představenstva. To je jediný důvod, proč je v pořádku, když se červený týmový člen skutečně pokouší vloupat dovnitř. Nic však nedovoluje, aby to bylo násilné. Cvičení červeného týmu se nikdy nebude snažit zranit nebo podmanit hlídače, obejít je nebo oklamat.
Aby se zabránilo zatčení červeného teamera, budou mít obvykle u sebe podepsanou smlouvu s podpisy od schvalujících členů představenstva. Pokud jsou chyceni, lze to použít k prokázání, že mají povolení. Samozřejmě, někdy se to používá jako dvojitý blaf. Červený týmový hráč může mít u sebe dva doklady o povolení, jeden pravý a jeden falešný.
Když jsou chyceni, nejprve předají falešný svolení, aby zjistili, zda mohou přesvědčit bezpečnost, že je legitimní, i když tomu tak není. Za tímto účelem bude často používat skutečná jména představenstva společnosti, ale bude obsahovat ověřovací telefonní číslo, které se dostane k jinému červenému týmu, který byl informován, aby ověřil úvodní příběh. Samozřejmě, pokud to bezpečnost prohlédne, je předán skutečný doklad o povolení. S tím se však může zacházet s velkou nedůvěrou.
V závislosti na tom, jak byl červený tým chycen, může být možné pokračovat v testu za předpokladu, že obešli jednotlivého hlídače, který je chytil. Je však možné, že identita testera může být „prozrazena“, což jej v podstatě odstraní z jakéhokoli dalšího osobního testování. V tomto okamžiku se může vyměnit jiný člen týmu s nebo bez informování bezpečnosti.
Závěr
Pentest je zakázka, ve které je odborník na kybernetickou bezpečnost požádán, aby otestoval bezpečnost počítačového systému. Test zahrnuje ruční vyhledávání a ověřování přítomnosti zranitelností. V rámci toho mohou být použity automatizované nástroje. Na konci testu je poskytnuta zpráva s podrobnostmi o zjištěných problémech a poskytující rady k nápravě.
Je důležité, aby tato zpráva nebyla pouze automatickým výstupem z nástroje, ale byla ručně testována a ověřena. Testovat lze jakýkoli počítačový systém, hardware, síť, aplikaci nebo zařízení. Dovednosti potřebné pro každou se liší, ale často se doplňují.