Průběh penetračních testů
Penetrační testování je metoda, která vyhodnotí zabezpečení systému, aplikace nebo síťové infrastruktury pomocí simulace útoku hackera. Pro účely penetračního testování byly vyvinuty automatické nástroje zaměřené přímo na tyto typy testů, které jsou dnes hojně využívané. Je třeba si uvědomit, že tyto aplikace jsou pouze nástrojem a pomůckou pro penetračního testera a v žádném případě by penetrační test neměl skončit automatizovaným testem. Automatizované testy jsou pomůckou penetračního testera, které provádějí rutinní úkoly a kontroly, vždy je však třeba výstupy z těchto nástrojů důkladně analyzovat a ověřit nalezené bezpečnostní mezery. V žádném případě nejsou automatické skenery schopny najít všechny bezpečnostní slabiny aplikace, nicméně upozorní penetračního testera na oblasti, které by měl začít podrobněji zkoumat.
Rozsah prováděných testů závisí vždy na individuální domluvě a potřebě klienta. Obecně se Však dá říci, že nejvíce jsou vystaveny útokům služby a aplikace přístupné z internetu. Přesnou metodu testů a postup vybereme na základě potřeb klienta a konkrétních cílů, které budou podrobeny penetračním testům.
Testování webových aplikací probíhá dle metodiky OWASP (Open Web Application Security Project). Testováno je celkem více než 90 oblastí bezpečnosti, které můžeme rozdělit do těchto základních kategorií:
- Information Gathering
- Zabývá se sběrem informací z veřejně dostupných zdrojů, které by mohl útočník použít k útoku. Např. informací, které lze nalést pomocí Google, informacím, které o sobě dává vědět server ve svých hlavičkách, informace z DNS systému apod.
- Configuration and Deploy Management Testing
- Testuje se infrastruktura, ve které jsou aplikace provozovány, platforma, na které je aplikace vybudována, podporované metody komunikace serveru, prověřují se soubory, které server obsluhuje, hledají se staré zálohy, nechráněné konfigurační soubory, administrátorská rozhraní apod.
- Identity Management Testing
- Ověřuje se ochrana uživatelských účtů, politika hesel, zamykání účtů, proces registrace uživatelů, existence testovacích účtů apod.
- Authentication Testing
- Ověření přenosu uživatelského jména a hesla, existence výchozích přihlašovacích údajů, funkce zapamatování hesla, získání zapomenutého hesla apod.
- Authorization Testing
- Testuje se úroveň oprávnění, procházení adresářů, kontrola přístupu k souborům a entitám vyžadující vyšší úroveň oprávnění apod.
- Session Management Testing
- Ověřuje se zabezpečení mechanismu práce se session, cookie atributy, odolnost vůči CSRF útokům, automatické odhlášení apod.
- Data Validation Testing
- Probíhá testování odolnosti vůči různým typům XSS (Cross-site Scripting) útokům, dále proti různým typům injection (SQL, LDAP, ORM, XML, SSI, XPATH, SMTP/IMAP, CMD...), HTTP Splitting apod.
- Error Handling
- Zjišťuje se, jak se systém nebo aplikace chová v případě, kdy dojde k neočekávané chybě, špatně zadaných vstupech apod. a určuje, zda lze tyto informace využít ke zjištění dalších informací o systému nebo přímo útoku.
- Cryptography
- Testuje se, jaké protokoly jsou používány pro zabezepčené spojení, jejich konfigurace a zda vyhovují současným bezpečnostním kritériím.
- Business Logic Testing
- Ověřuje se logika aplikace, uspořádání jednotlivých kroků v aplikací, hledají se cesty, jak lze jednotlivé kroky obejít, narušit, zda lze nahrát do aplikace škodlivý kód apod.
- Client Side Testing
- Zde se aplikace testuje vůči vykonání něchtěného JavaScript kódu, narušení HTML kódu, metod přesměrování, práci s lokálními daty uživatele aj.