Zabezpečení webových a aplikačních útoků
- Webová aplikace bývá vystavena veřejnému internetu, proto je častým cílem útoků; klíčovou zásadou obrany je nikdy nedůvěřovat vstupu od uživatele a veškerá data validovat a ošetřovat na straně serveru
- XSS (Cross-Site Scripting) – útočník vloží do webové stránky škodlivý skript (typicky JavaScript), který se spustí v prohlížeči jiného uživatele; umožňuje krádež přihlašovacích souborů cookie, přesměrování nebo modifikaci zobrazeného obsahu
- Uložený (stored) XSS – škodlivý kód se trvale uloží na serveru (např. v komentáři) a spouští se každému, kdo si stránku zobrazí
- Odražený (reflected) XSS – kód je součástí odkazu a spustí se jen při jeho otevření
- Slepý (blind) XSS – druh uloženého XSS, kdy se kód nespustí útočníkovi ani běžným návštěvníkům, ale až později jinde – typicky v administraci, kde správce prochází odeslané formuláře, zprávy nebo logy; útočník výsledek nevidí přímo
- Ochrana – důsledné escapování/kódování výstupu, validace vstupu, hlavička Content-Security-Policy
- SQL injection – vložení škodlivého SQL kódu do vstupního pole, které aplikace nesprávně zabuduje přímo do databázového dotazu; umožňuje obejít přihlášení, číst nebo mazat cizí data
- Ochrana – parametrizované dotazy (prepared statements), ORM vrstvy, validace vstupu, princip minimálních oprávnění databázového účtu
- CSRF (Cross-Site Request Forgery) – útočník donutí přihlášeného uživatele, aby nevědomky odeslal požadavek na jinou aplikaci, kde je přihlášen (např. skrytý formulář na podvodné stránce); zneužívá se toho, že prohlížeč automaticky posílá uložené přihlašovací cookie
- Ochrana – CSRF token vázaný na relaci, kontrola hlavičky Referer/Origin, atribut cookie SameSite
- Simulace útoků a testování – penetrační testování (řízené, autorizované vyzkoušení útoků na vlastní aplikaci) a automatizované skenery zranitelností pomáhají odhalit slabiny dříve, než je zneužije útočník; testuje se vždy jen se souhlasem vlastníka systému
- Identifikace zranitelností webové aplikace – kontrola vstupních formulářů a parametrů URL, kontrola nastavení HTTP hlaviček, kontrola verzí použitého softwaru a knihoven (zastaralé komponenty), kontrola řízení přístupu k citlivým funkcím a datům
- Personalizovaný obsah a doporučovací systémy – řada webů (sociální sítě, e-shopy, streamovací služby) zobrazuje obsah vybraný algoritmem na základě chování uživatele (historie prohlížení, nákupy, interakce)
- Rozpoznávací znaky algoritmicky doporučeného obsahu – označení typu „doporučeno pro vás“, „protože jste sledovali…“, sponzorovaný/placený obsah, odlišnost obsahu při přihlášení oproti anonymnímu zobrazení
- Riziko – tzv. bublina filtrů (filter bubble), kdy algoritmus uživateli ukazuje jen obsah potvrzující jeho dosavadní preference, což souvisí i s šířením dezinformací a manipulativního obsahu
OWASP Top 10
OWASP (Open Worldwide Application Security Project) je nezisková komunita, která vydává seznam deseti nejzávažnějších rizik webových aplikací. Verze z roku 2021:
| Pořadí | Riziko | Co to znamená | Obrana |
|---|---|---|---|
| A01 | Broken Access Control – chybné řízení přístupu | uživatel se dostane k cizím datům nebo funkcím (změnou ID v URL, přímým odkazem do administrace) | kontrola oprávnění na serveru u každého požadavku, výchozí zákaz |
| A02 | Cryptographic Failures – selhání kryptografie | citlivá data přenášená bez HTTPS, hesla uložená čitelně nebo slabým hashem | HTTPS všude, silné algoritmy, hesla jen jako hash se solí |
| A03 | Injection – vsunutí kódu | SQL injection, XSS, vsunutí příkazů systému | parametrizované dotazy, escapování výstupu, validace vstupu |
| A04 | Insecure Design – nebezpečný návrh | chyba už v návrhu (např. obnova hesla jen přes kontrolní otázku) | bezpečnost řešit od začátku, modelování hrozeb |
| A05 | Security Misconfiguration – chybná konfigurace | výchozí hesla, zapnuté ladicí výpisy, výpis adresářů, zbytečné služby | zabezpečená výchozí nastavení, vypnout nepotřebné |
| A06 | Vulnerable and Outdated Components – zranitelné komponenty | zastaralý redakční systém, knihovny a pluginy se známými chybami | aktualizace, sledování zranitelností použitých knihoven |
| A07 | Identification and Authentication Failures – chybné ověřování | slabá hesla, neomezený počet pokusů o přihlášení, špatně řešené relace | MFA, omezení pokusů, bezpečné cookies relace |
| A08 | Software and Data Integrity Failures – narušení integrity | aktualizace nebo knihovny z neověřeného zdroje, nepodepsaný kód | digitální podpisy, ověřené zdroje |
| A09 | Security Logging and Monitoring Failures – chybí logování | útok proběhne bez povšimnutí, není z čeho zjistit, co se stalo | logovat přihlášení a chyby, sledovat je (SIEM) |
| A10 | Server-Side Request Forgery (SSRF) | server lze přimět, aby stáhl adresu zadanou útočníkem – i z vnitřní sítě | povolit jen schválené cíle, oddělit vnitřní síť |
Seznam se aktualizuje přibližně po čtyřech letech; aktuální verze je na https://owasp.org/Top10/.
Protokol HTTP
HTTP (Hypertext Transfer Protocol) je protokol aplikační vrstvy, kterým prohlížeč (klient) komunikuje s webovým serverem (port 80, šifrovaná verze HTTPS port 443). Komunikace probíhá jako požadavek (request) a odpověď (response); HTTP je bezstavový – každý požadavek je samostatný, přihlášení se proto drží pomocí cookies a relací (session).
Požadavek obsahuje metodu, adresu, hlavičky (Host, User-Agent, Cookie…) a případně tělo:
GET /index.php?stranka=2 HTTP/1.1
Host: www.example.cz
Metody
| Metoda | Účel |
|---|---|
| GET | získání dokumentu; parametry jsou v URL (viditelné, uloží se do historie) |
| POST | odeslání dat na server v těle požadavku (formuláře, přihlášení, nahrání souboru) |
| PUT | nahrání nebo nahrazení dokumentu |
| PATCH | částečná změna dokumentu |
| DELETE | smazání dokumentu |
| HEAD | jako GET, ale vrátí jen hlavičky (zjištění, zda dokument existuje a kdy se změnil) |
| OPTIONS | zjištění, jaké metody server pro danou adresu podporuje |
GET a POST z pohledu webového programování viz dynamické stránky. Ani POST data nešifruje – utajení zajistí jen HTTPS.
Stavové kódy
Odpověď začíná trojmístným stavovým kódem; první číslice určuje skupinu:
| Skupina | Význam | Nejčastější kódy |
|---|---|---|
| 1xx | informační | 101 Switching Protocols (přechod na WebSocket) |
| 2xx | úspěch | 200 OK, 201 Created (vytvořeno), 204 No Content |
| 3xx | přesměrování | 301 Moved Permanently (trvale), 302 Found (dočasně), 304 Not Modified (použij verzi z mezipaměti) |
| 4xx | chyba klienta | 400 Bad Request (chybný požadavek), 401 Unauthorized (chybí přihlášení), 403 Forbidden (přístup zakázán), 404 Not Found, 429 Too Many Requests (překročen limit požadavků) |
| 5xx | chyba serveru | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable (přetížení, údržba), 504 Gateway Timeout |
Z pohledu bezpečnosti: velké množství odpovědí 401/403 v logu prozrazuje pokusy o neoprávněný přístup, množství 404 procházení webu automatickým skenerem a náhlý nárůst 503 přetížení serveru (např. DoS). Chybová stránka 500 nesmí uživateli vypisovat podrobnosti o chybě (cesty, SQL dotazy) – to je chybná konfigurace (A05).
Základní principy síťové komunikace a protokolů
- Síťová komunikace probíhá po vrstvách (referenční model OSI/TCP-IP) – každá vrstva řeší jinou část přenosu dat a spoléhá na služby vrstvy pod sebou
- Význam vybraných protokolů z pohledu bezpečnosti
- IP – adresace a směrování paketů sítí; sám o sobě neověřuje pravost odesílatele (zneužíváno u IP spoofingu)
- TCP – spolehlivý, spojovaný přenos s potvrzováním doručení; UDP – rychlý, nespojovaný přenos bez záruky doručení, často zneužívaný pro DDoS (menší režie, snadné podvržení zdrojové adresy)
- DNS – překlad doménových jmen na IP adresy; cíl útoků jako DNS spoofing/cache poisoning a DNS tunelling
- HTTP/HTTPS – přenos webového obsahu; HTTPS přidává šifrování a ověření serveru pomocí TLS certifikátu
- DHCP – automatické přidělování síťových adres; zneužitelné útokem typu DHCP spoofing/rogue DHCP server
- ARP – překlad IP adres na MAC adresy v lokální síti; cíl ARP spoofingu (podvržení MAC adresy za účelem odposlechu provozu)
- Nástroje pro ověření síťové konektivity
- ping – ověřuje dostupnost cílového zařízení a měří dobu odezvy (round-trip time) pomocí ICMP zpráv
- traceroute (tracert) – zobrazuje cestu (jednotlivé směrovače/uzly), kterou pakety procházejí k cíli, a dobu odezvy na každém uzlu; pomáhá lokalizovat místo výpadku nebo zpoždění v síti
- nmap (network mapper) – skener sítě, který zjišťuje, jaká zařízení jsou v síti dostupná a jaké porty/služby na nich běží; používá se jak při obraně (audit vlastní sítě), tak při penetračním testování
$ nmap -sV 192.168.1.10
Starting Nmap
Nmap scan report for 192.168.1.10
Host is up (0.0023s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9
80/tcp open http Apache httpd 2.4.52
443/tcp open https Apache httpd 2.4.52 (TLS)
Nmap done: 1 IP address (1 host up) scanned
-sVřekne nmapu, aby kromě otevřených portů zjistil i verzi běžící služby; z výpisu je vidět, že stroj běží SSH (vzdálená správa), webserver Apache na HTTP i HTTPS – obránce podle toho pozná, jestli neběží zbytečná/zastaralá služba, útočník totéž použije k hledání slabého místa (např. staré verze Apache se známou zranitelností)
Síťové prvky z pohledu provozu a bezpečnosti
- Switch (přepínač) – propojuje zařízení v lokální síti na základě MAC adres; z bezpečnostního pohledu umožňuje segmentaci provozu pomocí VLAN a ochranu portů (port security)
- Router (směrovač) – směruje provoz mezi různými sítěmi na základě IP adres; často integruje základní filtrování provozu (přístupové seznamy, ACL)
- Firewall – řídí a filtruje síťový provoz mezi sítěmi nebo segmenty podle definovaných pravidel (zdrojová/cílová adresa, port, protokol); může pracovat na úrovni paketů, stavů spojení (stateful) nebo až na aplikační úrovni (next-generation firewall)
- Access point (přístupový bod) – umožňuje bezdrátové připojení do sítě; vyžaduje zabezpečení šifrováním (WPA2/WPA3) a silným heslem, jinak je snadným vstupním bodem útočníka
- Proxy server – zprostředkovává komunikaci mezi klientem a cílovým serverem, může filtrovat obsah, skrývat vnitřní adresaci sítě a zajišťovat cache
- IDS/IPS zařízení – specializované prvky pro detekci a blokování škodlivého provozu (podrobněji dále)
Analýza síťového provozu a monitorování sítě
- Monitorování sítě – průběžné sledování stavu, výkonu a bezpečnosti síťové infrastruktury; umožňuje včas odhalit výpadky, přetížení i bezpečnostní incidenty
- Význam monitorování – rychlejší odhalení anomálií a útoků, podklad pro vyšetřování incidentů (forenzní analýza), kapacitní plánování, ověření dodržování bezpečnostních politik
- Analýza síťového provozu – sledování a vyhodnocování paketů a spojení procházejících sítí; lze provádět v reálném čase nebo zpětně nad zachycenými daty
- Zachytávání provozu (packet capture) – nástroje typu Wireshark zaznamenávají a umožňují prohlížet obsah a hlavičky paketů; u nešifrovaného HTTP provozu lze ve Wiresharku doslova přečíst přenášená data (odeslaný formulář, přihlašovací jméno a heslo v čitelném textu), zatímco u HTTPS je vidět jen zašifrovaný obsah a metadata spojení (adresy, porty, velikost) – přesně tenhle rozdíl je hlavní praktický důvod, proč se dnes na webu vyžaduje HTTPS všude
- Sledování toků (flow) – protokoly jako NetFlow/sFlow zaznamenávají metadata o spojeních (kdo s kým, kolik dat, jaký protokol) bez nutnosti ukládat celý obsah
- Identifikace hrozeb v síťové infrastruktuře – neobvyklý objem provozu (možný DDoS), komunikace se známě škodlivými adresami (C2 servery), neautorizovaná zařízení v síti, podezřelé DNS dotazy, opakované neúspěšné pokusy o přihlášení, laterální pohyb útočníka mezi stanicemi po počátečním průniku
Pravidla zabezpečení sítě a IPS
- Pravidla pro zabezpečení sítě (firewall/IPS pravidla) – definují, jaký provoz je povolen nebo blokován, na základě kombinace kritérií (zdrojová/cílová IP adresa, port, protokol, čas, aplikace, obsah paketu)
- Komplexní pravidlo kombinuje více podmínek najednou (např. povolit HTTPS provoz jen z určitého rozsahu adres v definovaném čase) a je řazeno v pořadí, ve kterém se vyhodnocuje (první shoda obvykle rozhoduje)
- Zásada výchozího zamítnutí (default deny) – povolit jen to, co je výslovně potřeba, vše ostatní zakázat
- IPS (Intrusion Prevention System) – bezpečnostní technologie, která v reálném čase analyzuje síťový provoz, detekuje škodlivou aktivitu a aktivně ji blokuje (na rozdíl od IDS, který jen detekuje a upozorňuje, ale provoz sám neblokuje)
- Umístění – typicky přímo v cestě provozu (inline), aby mohl útok zastavit dřív, než dosáhne cíle
- IPS signatura – vzor (charakteristický řetězec dat, sekvence chování nebo anomálie), podle kterého IPS rozpoznává konkrétní typ škodlivého provozu nebo útoku; databáze signatur se průběžně aktualizuje o nově objevené hrozby
- Význam signatur pro detekci – umožňují rychlé a přesné rozpoznání známých útoků (např. konkrétní exploit nebo malware) s nízkým počtem falešných poplachů; nevýhodou je, že proti zcela novým, dosud nepopsaným útokům (tzv. zero-day) signatury samy o sobě nefungují, proto se doplňují o detekci na základě anomálií chování
Chování protokolů ve vztahu k monitorování zabezpečení
- Znalost očekávaného chování protokolů umožňuje odhalit odchylky svědčící o útoku – např. neobvykle vysoký počet DNS dotazů na neznámé domény (možný DNS tunelling), časté neúplné TCP spojení bez dokončeného handshake (možný SYN flood v rámci DoS), ARP odpovědi neodpovídající známé topologii sítě (možný ARP spoofing)
- Šifrovaný provoz (HTTPS, VPN) komplikuje přímou obsahovou analýzu – monitorování se pak více opírá o metadata (velikost, frekvence, cílové adresy spojení) a o kontrolu na koncových bodech, kde je provoz ještě dešifrovaný
Bezpečnostní technologie ovlivňující monitorování
- Firewall a next-generation firewall – poskytují logy o povoleném/blokovaném provozu jako základní vstup pro monitorování
- IDS/IPS – generují bezpečnostní upozornění (alerty) při detekci podezřelého provozu
- SIEM (Security Information and Event Management) – centralizovaný systém, který sbírá, koreluje a vyhodnocuje log záznamy z různých zdrojů (servery, sítě, aplikace) a upozorňuje na bezpečnostně významné vzory či anomálie
- VPN a šifrování – ovlivňují, jaká data lze na síti vůbec analyzovat v čitelné podobě
- Systémy pro správu identit a řízení přístupu (IAM) – jejich logy (přihlášení, změny oprávnění) jsou důležitým zdrojem pro detekci zneužití účtů
Analýza logů a nástroje pro monitoring
- Log (protokolový záznam) – časově označený záznam o události v systému nebo síťovém zařízení (přihlášení, chyba, změna konfigurace, síťové spojení)
- Analýza logů síťových zařízení – logy z firewallu, routerů a přepínačů ukazují, jaký provoz procházel sítí, odkud a kam, jaká pravidla byla uplatněna
- Analýza logů koncových zařízení – logy operačního systému a aplikací ukazují přihlášení uživatelů, spouštěné procesy, chyby, instalace softwaru; klíčové pro odhalení kompromitace konkrétní stanice
- Postup analýzy – shromáždění logů z relevantních zdrojů, jejich časová synchronizace, hledání odchylek od běžného stavu (anomálií), korelace událostí napříč zařízeními pro rekonstrukci průběhu incidentu
- Nástroje pro monitoring a analýzu – nástroje pro zachytávání a rozbor síťového provozu (např. Wireshark), centralizované sběrné a korelační systémy typu SIEM, nástroje pro sledování výkonu a dostupnosti (network monitoring systémy), nástroje pro analýzu logů operačního systému
Security Operations Centre (SOC)
- SOC (Security Operations Centre) – specializované pracoviště (tým lidí, procesy a technologie), které nepřetržitě monitoruje, vyhodnocuje a řeší bezpečnostní incidenty v organizaci
- Hlavní činnosti SOC
- Nepřetržitý dohled nad bezpečnostními událostmi (typicky pomocí SIEM a dalších monitorovacích nástrojů)
- Detekce a klasifikace incidentů podle závažnosti
- Reakce na incidenty (incident response) – izolace napadeného zařízení, odstranění hrozby, obnova provozu
- Analýza příčin incidentu a doporučení nápravných opatření, aby se předešlo opakování
- Sledování aktuálních hrozeb a zranitelností (threat intelligence) a proaktivní vyhledávání hrozeb v síti (threat hunting)
- Typické úrovně analytiků v SOC – analytik první úrovně (základní třídění a vyhodnocení alertů), druhé úrovně (hlubší analýza a reakce na incidenty), třetí úrovně/specialisté (forenzní analýza, threat hunting, ladění detekčních pravidel)
Praktický nácvik – TryHackMe
- TryHackMe – webová platforma s cvičnými úlohami (“pokojíčky”, rooms), ve kterých se dá bezpečně (v izolovaném cvičném prostředí, ne na reálném cizím systému) vyzkoušet vše, co tahle a předchozí kapitola popisují – skenování sítě, hledání zranitelností, útoky jako SQL injection nebo XSS, i práci obránce (analýza logů, SIEM, SOC scénáře)
- Typický postup v pokojíčku – krátké vysvětlení tématu, pak řízené kroky s postupnými nápovědami (hints), na konci úkol typu “najdi vlajku” (flag – řetězec znaků skrytý v systému, který dokazuje, že se útok/postup povedl), který se zadává jako odpověď
- Nástroje, se kterými se na TryHackMe běžně pracuje – terminál s Nmapem a dalšími síťovými nástroji, Wireshark pro rozbor zachyceného provozu, Burp Suite pro testování webových aplikací (zachytávání a úprava HTTP požadavků mezi prohlížečem a serverem), Metasploit pro vyzkoušení již známých exploitů na základní úrovni
- Smysl cvičení – pochopit útok “z první ruky” ve zcela legálním a bezpečném prostředí je nejrychlejší způsob, jak si zapamatovat, proč konkrétní obranné opatření (validace vstupu, HTTPS, silná hesla, aktualizace) v praxi vůbec existuje; stejným způsobem se běžně zaškolují i junior penetrační testeři