Počítačové systémy 8. Počítačová bezpečnost Obsah: programátorská chyba, zranitelnost, exploit, útok aktualizace, sociální inženýrství malware: virus, antivirus, heuristika, červ heuristika, zero-day trojský kůň, spyware, adware backdoor, rootkit, botnet © Milan Keršláger http://www.pslib.cz/ke/slajdy 27.11.2012 http://creativecommons.org/licenses/by-nc-nd/3.0/
Počítačová bezpečnost identifikace hrozeb podle původu: přírodního původu, technické selhání lidská chyba, hacking, sabotáž podle cíle: software → způsobené chybami v software lidské zdroje → sociální inženýrství technické prostředky → fyzické narušení systému
Vznik chyby v software při návrhu chybně navržený nebo vybraný program či OS speciální systémy „Secure by design“ při implementaci programátorská chyba způsobí zranitelnost program využívající zranitelnost je exploit při provozu špatná implementace či nastavení typicky chyba obsluhy počítačového systému
Programátorská chyba opomenutí kontroly, logická chyba, překlep, … nebezpečné u nedůvěryhodných vstupů např. data přicházející z počítačové sítě, Internetu webový prohlížeč, e-mailový klient, … často u složitých implementací RPC → sdílení souborů v síti – SMB (!), NFS síťové servery (Apache + PHP), ostatní (Skype, Flash...) použití nebezpečných funkcí například strcpy() & spol. v jazyce C jde o systematickou chybu (chybný přístup k řešení) existují „příručky bezpečného programování“
Počet chyb v programu statisticky podchytitelné komerční software 20 – 30 chyb na 1000 řádků jádro Linuxu 0,5 chyby na 1000 řádků automatizované testy Coverity, Carnegie Mellon University, … lze snadno spočítat, analyzovat → zdrojáky volně horší stav je v běžných aplikacích prohlížeče, editory atd. každý neočekávaný pád aplikace je hrozba potenciálně zneužitelná
Zranitelnost způsobeno programátorskou chybou děláme audity → ověřování bezpečnosti audit použitých zdrojových kódů dělá se těžko u uzavřeného kódu (typicky komerčního) certifikace systému podle nějaké specifikace většinou čistě formální záležitost (nižší úrovně) význam má u specializovaných systémů (OpenVMS) penetrační testy se typicky nedělají audit funkce a nastavení systému přidělená oprávnění musí být vždy minimální nutná zaznamenáváme a analyzujeme činnost systému standardní logy, audit log, forenzní analýza
Klasifikace zranitelností není celosvětově jednotné každý softwarový dům podle svého Red Hat a Microsoft mají stejné názvy ☺ obecně tři úrovně: ohrožení na úrovni uživatele chyba v programu (krádež, poškození dat, ...) zvýšení oprávnění lokálního uživatele uživatel (proces) se stane správcem vzdálený přístup do systému přístup neautorizovaného uživatele (přes síť)
Red Hat Linux & MS Windows low zneužití je obtížné nebo je dopad minimální moderate zneužití je zmírněno implicitním nastavením, obtížností, auditováním (záznamem operací) important ohrožení uživatelských dat nebo syst. prostředků critical ohrožení síťovým červem bez účasti uživatele
Exploit konkrétní využití zranitelnosti typicky specializovaná aplikace snadno dostupné pro starší zranitelnosti (Internet) problém toho, že exploit má náskok před aktualizací často ve formě skriptu pro masivní útok necílený útok, hledáme zranitelný počítač, službu následuje snaha o elevaci (zvýšení) oprávnění nejdřív se dostane do počítače, pak se stane správcem systému forma exploitu remote explotit → ze sítě – nejnebezpečnější local exploit → ze stejného počítače – obtížnější
Útok jde o využití zranitelnosti výsledkem škoda na aktivech (tj. „majetku“) útok může být úmyslný i neúmyslný další rozdělení útoků: pasivní odposlech komunikace aktivní přerušení → DoS, porucha, vymazání, ... změna → programu, dat, komunikace přidání do toku dat
Hacker a cracker hacker tzv. „white hat“ (tedy ten hodný) hluboké znalosti o IT opravy software, psaní systémových funkcí apod. původně člověk vyrábějící nábytek sekerou cracker (to crack – zlomit) tzv. „black hat“ (tedy ten zlý) zneužívá znalosti v IT ke svému prospěchu k dispozici automatizované skripty, stačí jen spustit... tzv. script kiddies
Minimalizace míry rizika odstranění slabých míst soustředění se na podstatné problémy cracker půjde cestou nejmenšího odporu proto nemá smysl posilovat silná místa problém necíleného útoku automatizované scanování na známé problémy zero-day nebo naopak „staré“ či „typické“ zranitelnosti útočník získá více cílů, vybere si nejzajímavější cíl je napaden, i když (zdánlivě) „není zajímavý“
Security through obscurity označení s negativním podtónem zvýšení bezpečnosti utajením zdrojového kódu, zvolené implementace, protokolu, … kód má či může mít chyby tvůrce věří, že utajením se na ně těžko přijde obdoba vojenské taktiky „zavřených úst“, resp. utajení problém je, že existují lidé, kteří kód nepotřebují tzv. reverzní inženýrství (GSM, Cisco, MSIE, Windows, SMB…) exploity kolují v uzavřené komunitě crackerů → vysoké riziko opačný přístup je bezpečnost vycházející z návrhu bezpečnost lze doložit, pak i získat vysokou certifikaci
Sociální inženýrství vlastně jde o podvodné jednání manipulace s lidmi, cílem získání informace ochranou je pouze vzdělávání uživatelů klasické uplatnění získání utajovaných informací podvodné e-maily (phishing) přístupová hesla, čísla kreditních karet, ... podstrčení flash disku nebo CD s virem atd. Kevin Mitnick využíval soc. inž. spíše, než znalosti v IT
Fyzické narušení systému klasická metoda krádeže krádeže techniky a dat celé počítače notebooky externí (zálohovací) média části sítě mimo firmu nelze fyzicky zajistit odposlechy komunikace: bezdrátová síť – snadné (i na dálku) kabelová síť – obtížnější (fyzický přístup) optická síť – lze plně ochránit (resp. detekovat)
Malware zákeřný software („malicious“, /məˈlɪʃəs/) míněn záměr autora, než charakteristika programu ve výsledku nemusí program konat škodlivě nicméně škodí již tím, že v počítači existuje počítačový virus internetový červ trojský kůň spyware adware back door
Počítačový virus dokáže se šířit bez vědomí uživatele analogie biologického viru vkládá svůj DNA/RNA kód do živých buněk připojení kódu k existujícím souborům textové dokumenty s makry, spustitelné soubory apod. samy o sobě se nešíří (to dokáže počítačový červ) škodlivá akce žádná, okamžitá, opožděná ochrana antivirovým programem
Antivirový program identifikace (a odstranění) malware (virů) detekce známých hrozeb podle známých sekvencí (např. MD5, SHA) obsaženy ve virových databázích databáze se pravidelně aktualizují nefunguje na polymorfní viry (měnící se) často false-positive (mylná detekce přítomnosti) heuristická analýza monitorování podezřelého chování či vlastností odstranění hrozby smazat soubor, do trezoru, odstranění viru, ponechání problém detekce z (již) infikovaného systému
Heuristická analýza zkusmé řešení problému (řecky heuriskó) neznáme přesnější metodu či algoritmus použije se přibližné řešení, intuice, zkušenosti různé heuristické postupy zde však zejména sledování systému sledování „podezřelých“ aktivit v systému typicky pomocí přesměrování systémových volání čím více sledujeme, tím větší zpomalení počítače též problém false-positive uživatel se naučí „odklepnout“ každé upozornění
Internetový červ samošířící se nákaza vyžaduje na cíli neopravenou kritickou hrozbu vstup do systému přes síť bez autentizace uživatele problém zero-day zranitelnosti Morrisův červ (1988) zneužíval chybu v sendmailu nakazil jeden počítač i několikrát nakazil asi 10 % počítačů připojených k Internetu vypuštěn z MIT, autor/student podmíněně odsouzen autor je nyní paradoxně profesorem na MIT :-)
Zero-day zranitelnost zneužití zranitelnosti v nultý den před tím, než se autor software o problému dozví též zneužití ve stejný den, kdy šířena oprava uživatelé si ji nestihnou nainstalovat nucený restart MS Windows snaha o eliminaci zero-day zranitelností exploit je v den zveřejnění již znám v zásadě obecný problém „dělo vs. pancíř“ obrana je vždy až krok za útokem (tj. post- mortem) heuristika problém nedovede eliminovat
Trojský kůň obdoba Trojského koně z doby antiky program má funkci, o které uživatel neví míněna taková funkce, se kterou by nesouhlasil vydává se za „užitečný program“ šetřiče obrazovky, tančící Madona, ... ve Windows usnadněno skrýváním přípony např. obrázek není obrázkem, ale programem instaluje rootkit, keylogger, botnet a podobně trojský kůň se sám nedokáže dále šířit
Spyware počítačový slídil bez vědomí uživatele sbírá (a odesílá) informace e-mailové adresy, stisknuté klávesy, ... využívá k tomu internetové připojení často součástí šířených programů např. jako doplněk, o kterém ví autor, ale ne uživatel
Adware advertising-supported software šíří se společně s nějakým programem slouží k vytvoření zisku autorovi programu zobrazování reklamního banneru dříve Opera, též ICQ změna domácí stránky prohlížeče odstranění po zaplacení
Back door zadní vrátka umožňuje obejít běžnou autentizaci uživatele do programu nebo do systému poté skrývání tohoto přístupu speciální aplikace/heslo někdy též „servisní přístup“ rozšíření „seriózního“ programu ničí důvěru v daný program nebo firmu → nebezpečné slouží k vzdálenému ovládnutí počítače vytváření botnetů
Rootkit umožnění a skrývání přístupu k počítači rozšířená verze zadních vrátek instalován typicky po úspěšném napadení zajistí přístup k počítači i po záplatování chyby aféra hudebních CD od Sony „ochrana“ proti kopírování CD kromě toho odesílal informace o činnosti uživatele v systému se tento program skrýval skrývání okopírovali běžné viry přišlo se na to kvůli chybě v programu
Botnet síť řízených počítačů vzdálené ovládání počítače skrytí ovládajícího např. přes IRC kanál nabízí vysoký výpočetní výkon původně pro distribuované síťové výpočty (clustery) jsou předmětem prodeje (výdělku) DDoS útok, šíření SPAMu apod.