Odposloucháváme data na přepínaném Ethernetu (6.)

V tomto díle si ukážeme, jak odposlouchávat komunikaci šifrovanou pomocí SSL a TLS. K tomu použijeme některé již dříve probrané techniky k přesměrování provozu. Také si vysvětlíme, proč nemůžeme pozměňovat důvěryhodný certifikát a proč nemůžeme odposlechnout šifrovací klíč spojení. Odposlouchávání cizích dat ale může být trestné a můžete tím porušovat smlouvu s vaším poskytovatelem připojení.

Pokud jste již zvládli teorii týkající se SSL, můžete rovnou přejít na samotný útok. V potřebné teorii se vysvětluje, proč nemůžeme útočit tím, že bychom odposlechli šifru, kterou se bude spojení šifrovat. Dále je vysvětleno, proč nemůžeme útočit poupravením důvěryhodného certifikátu.

Potřebná teorie

Co je to SSL (Secure Sockets Layer)?

Je to protokol zajišťující šifrování dat aplikačních protokolů (např. FTP, HTTP, SMTP). Pracuje na samotné vrstvě, proto může být použit pro veškeré aplikační protokoly. Vzhledem k aplikačním protokolům se tváří transparentně (tzn. aplikační protokoly o šifrování neví).

vrstvy

Protokol SSL existuje již ve verzi 3.0, také byl vytvořen protokol TLS, který vychází z protokolu SSL 3.0. Prakticky jsou si podobny. V tomto díle se zaměříme na útoky, které fungují proti oběma protokolům. Protokoly nemají určenu šifru, kterou používají, ale pro každé spojení se server s klientem domluví na šifře, kterou použijí pro dané spojení.

K čemu jsou certifikáty a jak jsou chráněny?

Protokoly SSL i TLS používají pro ověření komunikujících stran certifikáty. Certifikát obsahuje informace ohledně majitele (domény), účelu (služby), za kterým byl vydán, doby platnosti certifikátu, sériového čísla certifikátu, údajů o vydavateli a také veřejný šifrovací klíč (jedná se o klíč asymetrické šifry, kde je potřeba dvou klíčů; co se zašifruje jedním klíčem, je možno rozšifrovat pouze druhým klíčem a obráceně, druhý privátní klíč v tomto případě vlastní majitel certifikátu).

certifikát

Takový certifikát si může vytvořit každý sám. Pokud ale chceme, aby se dal certifikát pokládat za důvěryhodný, je třeba, aby byl podepsán nějakou certifikační autoritou. Podepsání probíhá tak, že se z celého certifikátu vypočítá hash. Tento hash je dále zašifrován privátním šifrovacím klíčem certifikační autority a je připojen k certifikátu jako digitální podpis.

Uživatel si certifikát ověří tak, že spočítá hash certifikátu a veřejným šifrovacím klíčem certifikační autority rozšifruje podpis. Tím získá druhý hash: pokud se oba hashe rovnají, znamená to, že je certifikát podepsán certifikační autoritou, a také to znamená, že certifikát nebyl pozměněn.

Pokud bychom certifikát pozměnili, vypočtený hash by se neshodoval se zašifrovaným hashem, který vypočítala certifikační autorita. V tomto případě by byl certifikát uznán jako nedůvěryhodný.

Co nám zabraňuje k vydávání se za autoritu? Je to právě neznalost jejího privátního šifrovacího klíče. Neumíme totiž vypočtený hash zašifrovat tak, aby po dešifrování veřejným šifrovacím klíčem certifikační autority vznikl původní hash.

Jak probíhá inicializace spojení u SSL (SSL Handshake)?

Níže bude v bodech popsáno, jak se navazuje nové šifrované spojení. Všechny tyto kroky jsou provedeny, ještě než je spojení předáno aplikační vrstvě. Ještě bych rád upozornil, že spojení se navazuje pomocí asymetrické šifry (vytvoření a předání šifrovacího klíče), a když je spojení navázáno, používá se symetrická šifra z důvodu, že symetrické šifry jsou méně početně náročné.

  1. Klient pošle serveru informace o tom, jaké podporuje šifrovací algoritmy, verzi SSL, a nějaká náhodná data.
  2. Server pošle to samé klientovi a navíc ještě pošle svůj certifikát.
  3. Klient si ověří, zda je certifikát pravý a ještě další informace (viz odstavec Jak probíhá ověřování serveru?). Jestliže něco nesedí, uživatel je na to upozorněn. V případě, že je vše v pořádku, pokračuje se bodem 4.
  4. Nyní se použijí všechna náhodně vygenerovaná data, která do této chvíle klient vytvoří (v závislosti na dohodnutém šifrovacím algoritmu), tzv. „premaster secret“ (jedná se o takový polotovar šifrovacího klíče) pro toto spojení. Vše je zašifrováno veřejným šifrovacím klíčem serveru (získaným z certifikátu) a posláno.
  5. Pokud server požaduje ověření klienta, klient v tomto bodu zašifruje svým privátním klíčem unikátní data pro toto spojení, která zná i server, a pošle je spolu se svým certifikátem. Server data rozšifruje veřejným klíčem z certifikátu klienta a pokud se data shodují, je klient ověřen. Pokud ověření klienta selže, spojení je ukončeno.
  6. V tomto kroku server rozšifruje svým privátním klíčem zašifrované „premaster secret“ a určitými kroky z něj vygeneruje tzv. „master secret“. Stejným postupem vygeneruje „master secret“ i klient.
  7. Nyní si klient i server vygenerují šifrovací klíč pro spojení, k tomu použijí dříve vygenerovaný „master secret“.
  8. Klient pošle serveru zprávu, že budoucí data již budou šifrována pomocí šifrovacího klíče spojení a že inicializace spojení je u konce.
  9. Server pošle klientovi zprávu, že budoucí data již budou šifrována pomocí šifrovacího klíče spojení a že inicializace spojení je u konce.
  10. Nyní je spojení vytvořeno a další data jsou šifrována domluvenou symetrickou šifrou.

Z uvedených bodů plyne, že útočník nemůže odposlechnout šifrovací klíč spojení, jelikož „premaster secret“ je posláno zašifrované pomocí veřejného šifrovacího klíče serveru. Aby mohlo být rozšifrováno, musel by znát útočník privátní šifrovací klíč serveru. Ten je ale po celou dobu uložen na serveru a na síti se nevyskytuje.

Jak probíhá ověřování serveru?

Ověřování serveru slouží k ujištění, že komunikujeme s tím, s kým jsme zamýšleli. Při ověřování serveru se postupuje následujícími kro­ky:

ověření
  1. Klient si ověří, zda certifikát již nemá prošlé datum platnosti.
  2. Klient se podívá do svého seznamu certifikačních autorit, kterým důvěřuje, a hledá tam autoritu, která podepsala certifikát serveru. Pokud ji nenajde, znamená to, že certifikát je nedůvěryhodný, jelikož jej podepsala certifikační autorita, které klient nedůvěřuje. Pokud je certifikační autorita nalezena, pokračuje se bodem číslo 3.
  3. Klient použije veřejný šifrovací klíč certifikační autority (ten je uložen v certifikátu certifikační autority a tento certifikát je uložen v jeho seznamu důvěryhodných certifikačních autorit) a rozšifruje jím digitální podpis certifikátu serveru. Tímto získá původní hash (hash získaný z certifikátu v době podepisování) certifikátu. Dále vypočítá aktuální hash certifikátu serveru a porovná je. Pokud se neshodují, znamená to, že byl certifikát pozměněn nebo je podpis falešný, a certifikát je uznán jako nedůvěryhodný.
  4. V tomto bodě se testuje, zda souhlasí jméno serveru uvedené v certifikátu se serverem, ke kterému jsme připojeni. Pokud se neshodují, může to znamenat, že se někdo snaží odposlouchávat naše data, a uživatel je na to upozorněn.
  5. Ověřování serveru je u konce. Pokud byl při ověřování uznán certifikát jako nedůvěryhodný, vypršela jeho platnost a nebo se neshodují jména (viz bod 4), je uživatel na tyto věci upozorněn.
upozornění

Útok teoreticky

Útok na SSL a TLS

Odposlouchávání se provádí tak, že klienta přesměrujeme nějakým útokem (například DNS Spoofing, ARP Cache poisoning atd.) na náš počítač, ještě než začne navazovat spojení se serverem. Náš počítač poslouží jako proxy server. Šifrování bude provedeno tak, že klient bude komunikovat šifrovaně s námi a my budeme komunikovat šifrovaně se serverem. To znamená, že se pro klienta budeme tvářit jako server a pro server se budeme tvářit jako klient.

útok

Tento útok má slabinu: klientovi nemůžeme poslat pravý certifikát serveru, jelikož neznáme jeho privátní šifrovací klíč. Proto si musíme vygenerovat vlastní certifikát, není ovšem problém vše vyplnit tak, aby vypadal stejně jako certifikát serveru. Pořád to bude mít ovšem tu vadu, že certifikát nebude důvěryhodný, jelikož není podepsán žádnou certifikační autoritou, a uživatelovi to bude ohlášeno.

Dá se to obejít tím, že klientovi nějakým sociálním útokem podstrčíme falešnou certifikační autoritu mezi důvěryhodné certifikační autority. Potom už pro nás není nic problém a certifikát bude brán jako naprosto důvěryhodný.

Praxe

Dnes si představíme nástroj, se kterým jsme ještě nepracovali. Byla by škoda na něj zapomenout, jelikož je stále vyvíjen a je velice mnohostranný a je k dispozici pro systémy Windows. Jedná se o program Cain & Abel.

EBF16

Cain & Abel
  1. spustíme odposlouchávání,
  2. vybereme položku Sniffer,
  3. přepneme se na Hosts, najedeme na tabulku a dáme pravé tlačítko a vybereme Scan MAC Addresses,
  4. přepneme se na položku ARP,
  5. klikneme do míst, kde je na obrázku bod 5,
  6. klikneme na tlačítko plus v panelu,
  7. vybereme první počítač, kterému chceme přesměrovat provoz,
  8. vybereme druhý počítač a potvrdíme tlačítkem OK, tím se přesměruje provoz mezi těmito počítači (obousměrně). Nejčastěji volíme jako jeden počítač gateway,
  9. nyní zapneme přesměrování provozu.

Tento program bude od nynějška odchytávat hesla na protokolech, které zná. Dále bude umožňovat prohlížet šifrovaný provoz. Certifikáty mu nemusíme podstrkávat. On si je v závislosti na požadavku vygeneruje sám. Udělá to tak, že si stáhne originální certifikát a veškeré údaje zkopíruje (certifikát nebude pouze podepsán důvěryhodnou certifikační autoritou).

Závěr

Na závěr bych chtěl upozornit, aby si uživatelé uvědomili, jak moc je lehké odposlouchávat i šifrovaná data. Přitom protokol je bezpečný, ale slabina je v uživatelích. Pokud uživatel potvrdí, že chce nadále pokračovat, i když je certifikát nedůvěryhodný, dostává se do velkých potíží. Proto prosím dávejte si na toto pozor!

Anketa

Při návštěvě stránek vám prohlížeč nahlásí, že certifikát se nepodařilo ověřit (tzn. je nedůvěryhodný). Vy přitom víte, že vždy předtím byl certifikát v pořádku. Odpovíte prohlížeči, že chcete pokračovat?

34 názorů Vstoupit do diskuse
poslední názor přidán 26. 7. 2006 13:28

Školení SEO - jak na optimalizaci pro vyhledávače

  •  
    Analýza klíčových slov - jaká slova vybrat.
  • Metody linkbuildingu - jak získat zpětné odkazy.
  • Vyhodnocování SEO - nesledujte jen pozice.

Detailní informace o školení SEO »