Rozsah a forma penetračných testov

Penetračné testy slúžia na zistenie miery zraniteľnosti organizácie, t.j. ako sú informačné systémy a komunikačná infraštruktúra spoločnosti zabezpečená proti potenciálnemu útoku hackerov. Je to jedna z techník analýzy informačných systémov a komunikačnej infraštruktúry. Princíp spočíva v simulácii reálneho útoku na vyhodnocovaný systém, čím sú odhaľované zraniteľnosti systému, ktoré by mohol využiť skutočný útočník. Tento test môže byť vedený z internetu alebo z vnútornej siete organizácie pre ktorú je vykonávaný. Medzi používané techniky patrí skenovanie portov, identifikácia bežiacich aplikácií a operačného systému, testovanie zraniteľnosti systému a podobne.

Rozsah a forma penetračných testov je realizovaná podľa vopred dohodnutých pravidiel. Z vykonaného penetračného testu Vám vystavíme záverečný protokol, v ktorej sú popísané zistené zraniteľnosti a na ich základe sú navrhované opatrenia na zvýšenie úrovne zabezpečenia informačných systémov a komunikačnej infraštruktúry.

Na základe množstva informácii o systéme je možne penetračne testovanie rozdeliť’ na dva základne typy.

  • Black Box.
  • White Box.

Testovanie typu Black Box predstavuje test bez predchádzajúcej znalosti infraštruktúry testovanej organizácie. Takáto forma testu viac zodpovedá reálnemu útoku, zvyčajne ma informácie o teste len najvyššie vedenie danej organizácie a test tak vyvolá aj reakciu bezpečnostných pracovníkov, podobne ako v prípade skutočného útoku. Ako informácia o cieli je v tomto prípade k dispozícii napríklad názov organizácie a vyhodnotenie možnosti získať’ potrebne poznatky o sieti a systéme je už súčasťou samotného testu.

Druhým typom testu je White Box, ktorý predstavuje test s úplnou znalostnou vyhodnocovaného systému. V tomto prípade sú testerom k dispozícii informácie o infraštruktúre organizácie, ako napríklad rozsah IP adries organizácie, topológia siete, použitý operačný systém a iné. Týmito znalosťami obvykle disponujú len osoby s určitou spojitosťou s testovanou organizáciou, preto je white box test vhodný na zistenie možnosti útoku pochádzajúceho z prostredia organizácie, napríklad od zamestnancov.

Penetračné testovanie pozostáva z nasledujúcich etáp:

  • Získavanie základných informácií
  • Skenovanie zraniteľností (vulnerabilities)
  • Zneužitie zistených zraniteľností na prístup do IS (Penetrácia)

Získavanie základných informácie

Pokiaľ chce byt’ útočník pri svojom útoku úspešný, vyžaduje si to dokonalú znalosť’ protiľahlej strany. Preto prvým krokom skutočného útočníka býva získanie čo najväčšieho množstva informácii o cieli a až následne realizuje samotný útok. Keďže princíp penetračného testovania spočíva v simulácii reálneho  útoku  tak aj tu bude prvá fáza rovnaká, a to platí najmä v prípade black box testu, keď’ tieto informácie nie sú poskytnuté zadávateľom. Hlavným a často aj jediným zdrojom informácii v tejto fáze je Internet.

Skenovanie zraniteľností

Po získaní rozsahov IP adries, čo predstavuje akýsi zoznam potencionálnych cieľov, nasleduje fáza skenovanie. Cieľom  tejto fázy  je určenie funkcie  jednotlivých  cieľov, čo spočíva v identifikácii otvorených portov, operačného systému a následné poskytovaných služieb. Takto získané informácie neskôr umožnia určiť’ kadiaľ je vhodne viest’ útok.

Identifikácia a ohodnotenie zraniteľností

Cieľom tejto fázy je identifikovať’ a zdokumentovať’ zraniteľnosti a slabé miesta v systéme. Informácie získané z predchádzajúcich krokov, najmä použite verzie aplikácii, operačného systému a otvorene porty sú využite pri prehľadávaní databáz známych zraniteľnosti a exploitov. K jednotlivým verziám operačných systémov a aplikácii sa priradia existujúce zraniteľnosti a exploity. Následné by mal byt’ vytvorený zoznam zistených zraniteľnosti. Cely proces pozostáva z nasledujúcich krokov:

  • Určenie  zraniteľných služieb pomocou informácii získaných z predchádzajúcich fáz.
  • Vykonanie skenu zraniteľnosti pomocou automatizovaného skenera.
  • Identifikácia nezverejnených zraniteľnosti.
  • Vytvorenie zoznamu nájdených zraniteľnosti.
  • Kontrola „false positive“ a „false negative“ záznamov.
  • Vytvorenie konečného zoznamu zraniteľnosti.

Zraniteľnosti je vhodne zaradiť’ do kategórii podľa záväznosti.

Na testovanie zraniteľností sa využívajú špeciálne aplikácie, ktoré integrujú cely proces identifikácie zraniteľnosti a sú schopne automatizovaného testovania. Využívanie týchto aplikácii je preferovane, manuálne identifikovanie zraniteľnosti by malo slúžiť’ skôr na testovanie dobre zabezpečených systémov, alebo systémov kde tieto automatizovane nástroje zlyhajú. Použitím viacerých nástrojov je možné odhaliť’zle určené zraniteľnosti, alebo naopak nájsť’ zraniteľnosti ktoré predchádzajúca aplikácia vôbec neodhalila. 

Prelamovanie hesiel

Penetračné testovanie zahŕňa aj proces testovania bezpečnosti hesiel, na čo sa používa technikaprelamovania hesiel (password cracking). Takto spočíva v snahe získať’ heslo vo forme textu zo súboru s heslami, kde sú zvyčajné uložené v zahašovanej podobe. Hasovanie však nie je jediný spôsob akým súhesla uložené, existuje viacero spôsobov s rôznou úrovňou zabezpečenia.

Zneužitie zistených zraniteľností na prístup do IS (Penetracia)

Po úspešnej identifikácii zraniteľnosti nasleduje fáza využitia týchto zraniteľnosti k získaniu prístupu k cieľovým systémom s administrátorskými právomocami. Takto fáza je z celého penetračného testovania najzložitejšia a vyžaduje od testera veľké množstvo znalosti. Postup pri penetrácii by mal zahŕňať’ zoradenie zraniteľnosti získaných v predchádzajúcich fázach podľa pravdepodobnosti ich zneužitia. Nasleduje získanie exploitu, a to buď’  z databáz dostupných na internete, alebo naprogramovanie vlastného kódu. Posledným krokom je využitie tohto exploitu na objavenú zraniteľnosť’, čoho výstupom by mal byt’ príkazový riadok, zvyčajné  s právami užívateľa,  ktorý napadnutý program spustil. Exploity možno zaradiť’ do 2 základných kategórii, a to na lokálny a vzdialený. Lokálny exploit slúži na zvyšovanie právomoci, čo znamená, že už mame určitý prístup k danému systému a využijeme tento exploit na získanie vyšších právomoci, v ideálnom prípade administrátorský prístup. Vzdialený exploit jenebezpečnejší, pretože umožňuje využiť’ chybu v niektorej sieťovej službe bežiacej na cieľovom systéme,napríklad chybu vo web serveri, a to bez potreby lokálneho prístupu.

Väčšina zraniteľnosti prameni z nesprávnej prace so zásobníkom alebo zo zlého ošetrenia užívateľského vstupu. Prvý typ sa využíva pri útokoch typu pretečenie zásobníku (buffer overflow). Tonastáva, keď’ sa program pokúsi do zásobníku uložiť’ väčšie množstvo dať ako je veľkosť zásobníku, čímsa prepise obsah priľahlých pamäťových miest. Toto môže útočník využiť’ a do týchto miest v pamäti tak umiestniť’ kód, ktorý sa následné vykoná. Druhy typ chyb, nesprávne ošetrenie vstupných dať, je možné využiť’ napríklad k útoku typu SQL injection. Princíp tohto útoku je v zadaní takého vstupného reťazca, aby bol pozmenený výsledok dotazu nad SQL databázou. Takýmto spôsobom je napríklad možné získať’ z databázy hesla alebo iné citlivé údaje, alebo naopak úplné obísť’ proces overovania hesla.Exploity je možné získavať’ a vykonávať’ samostatne, ale v prípade penetračného testovania, kedy jepotrebne otestovať’ veľké množstvo systémov, je vhodnejšie použitie špecializovaného software.