Internet Info, s.r.o. Lupa Root Měšec Podnikatel DigiZone Slunečnice Vitalianew Bomba Navrcholu Weblogy Jagg Woko Dobrý web Computer.cz SK: MojeLinky

Hlavní navigace

Odpočúvanie šifrovaných spojení

Spojenia cez SSL sa často berú ako bezpečné a mnohé návody dávajú rady typu 'dávajte svoje citlivé údaje len tam, kde vidíte https spojenie'. Tipujem, že väčšina ľudí (a špeciálne ne-IT profesionáli) netuší, aké jednoduché môže byť odpočúvanie/modifikácia SSL spojenia, ak si poriadne nedajú pozor na certifikáty. Hocikto na routeri/gateway použitím utility stunnel a iptables to dokáže.

SSL (Secure Socket Layer) je navrhnutý ako protokol na zaistenie integrity a tajnosti prenášaných dát, rovnako ako aj na autentizáciu servera (prípadne klienta). Ak je implementovaný a používaný správne, tak tieto vlastnosti zaručuje. V opačnom prípade nie je problém niektoré z jeho vlastností narušiť.

Nadviazanie spojenia a výmena kľúčov

Najzraniteľnejšou časťou protokolu SSL je výmena kľúčov. Ako vyzerá nadväzovanie SSL spojenia:

  • klient pošle serveru správu ClientHello, kde oznamuje podporované šifrovacie algoritmy a verzie SSL
  • server odpovie správou ServerHello, oznámi svoje podporované šifrovacie algoritmy s verziami SSL a hlavne zašle svoj certifikát
  • (pokračovanie protokolu momentálne pre nás nepodstatné, podrobnosti napríklad na Wikipedii)

Akonáhle klient obdrží certifikát, mal by nejakým spôsobom overiť, že naozaj patrí danému serveru. To musí spraviť buď človek alebo to spraví sám browser ak rozpozná certifikačnú autoritu (vystaviteľa certifikátu – issuer), ktorá certifikát vydala. To znamená, že browser je schopný certifikát overiť, len ak má koreňový certifikát danej certifikačnej autority a zároveň elektronický podpis certifikátu sedí.

Certifikáty a certifikačné autority

Marketingovo znejúce pojmy certifikát a certifikačná autorita znejú mnohým ľuďom komplikovane, ale ide o jednoduchú myšlienku. Certifikačná autorita vystupuje v úlohe notára, ktorá vydaním certifikátu podpísaného certifikátu hovorí: „Na svoju zodpovednosť prehlasujem, že mnou podpísaný serverový certifikát websajt.cz potvrdzuje identitu serveru websajt.cz“. Ak sa rozhodneme veriť podpisu tejto certifikačnej autority, nainštalujeme si jej koreňový certifikát do browsera. Veľa ich je štandardne predinštalovaných – napr. vo Firefoxe pozrite v Preferences menu Advanced → Manage certificates → Authorities. (V českém Firefoxu je to: Předvolby → Ostatní → Správa certifikátů → Certifikační autority. – pozn. šéfredaktora)

Psychologický element

Ak sa klient pripojí k serveru, ktorého identitu nemôže overiť, tak užívateľovi vyskočí ten známy dialóg „Unable to verify the identity of websajt.cz as a trusted site“. Neprezradím zrejme žiadne tajomstvo, ak poviem, že viac než 99 % užívateľov (a nielen bežných Frantov!) dá OK bez rozmýšľania.

Nádherná ilustrácia: v máji 2005 sa jedna novozélandská banka omeškala (11 hodín) s nainštalovaním nového certifikátu. Za ten čas sa k elektronickému bankovníctvu pripojilo 300 klientov. Len jeden jediný z nich odmietol certifikát. Mohli by sme si síce myslieť, že užívatelia si všimli, že certifikát vypršal len nedávno, a tak zhodnotili, že riziko je malé…ale navzdory skúsenostiam by bola dosť naivita tomu veriť.

Nielen užívatelia, ale aj správci serverov …

Nie je vôbec ojedinelé naraziť na server, ktorý má „self-signed“certifikát. Self-signed certifikát znamená, že vystaviteľ (issuer) je rovnaký ako príjemca (issued-to). Jediná možnosť overiť taký certifikát je, keď administrátor serveru zverejní na hash (fingerprint) toho certifikátu, najlepšie na fyzicky inom serveri. Toto robia napríklad certifikačné autority – pretože ich certifikáty nikto nepodpísal, nemajú inú možnosť (ale certifikačné autority dávajú koreňové certifikáty na stiahnutie, nikdy ich nepoužívajú na identifikáciu serveru, len na overenie podpisu).

Inak si akurát môžme povedať „s najväčšou pravdepodobnosťou práve teraz na mňa nikto neútočí, tak certifikát prijmem, uložím si ho a budem sledovať, či sa nezmenil“. No z bezpečnostného hľadiska je to skôr z núdze ctnosť.

Druhá skupina problematických certifikátov sú „takmer self-signed certifikáty“. Je to názov, čo som si práve vymyslel, a znamená: websajt.cz si vygeneruje svoj koreňový certifikát certifikačnej autority, nazve si ju trebárs „websajt.cz CA“ a podpíše ňou serverový certifikát serveru websajt.cz. Koreňový certifikát ale pre istotu nikde nezverejní (prípadne na mieste, kde nie je v ľudských silách sa doklikať alebo dopátrať vyhľadávačmi). Efektivita rovnaká ako pri self-signed certifikátoch, tj. overiť ich môžem akurát tak, že si hodím kockou.

Takéto neoveriteľné certifikáty vznikajú väčšinou z nevedomosti – netušia, aké ľahké môže byť ich obísť. Na druhej strane, nie každý má dôvod platiť za komerčný certifikát, ale dá sa to riešiť aj inteligentne.

Dosť bolo omáčok…ako teda útok funguje?

Jedna z možností je využiť iptables a stunnel. Iptables asi netreba dvakrát predstavovať, je to štandardný nástroj na filtrovanie paketov (firewall) a rôznu manipuláciu s paketmi (routovanie, NAT). Stunnel je nástroj na pridávanie podpory SSL v k aplikáciám, ktoré SSL natívne nepodporujú (napr. vytvorenie pop3s démona z pop3 démona).

Prvý krok spočíva v presmerovaní paketov – na routeri používajúcom iptables stačí pridať do reťazca PREROUTING v tabuľke nat pravidlo, ktoré zmení cieľ z pôvodného ciel.cz (IP 10.20.30.40 v našom príklade) na localhost.

Útočník ďalej spustí dvakrát stunnel, raz ako server prijímajúci SSL spojenia (predkladá falošný certifikát) a druhý krát v klientskom móde, ktorý čaká na prichádzajúce spojenie, ktoré „obalí“ do SSL a nasmeruje na skutočný server. Na obrázku dole beží serverový stunnel na localhost:1234 a presmerováva ich na localhost:2345, kde beží stunnel v klientskom móde.

Schéma útoku MITM

Pakety od obete namiesto na pôvodné určenie (ciel.cz) prídu na načúvajúci stunnel na routeri. Ten mu pošle falošný certifikát. Ak ho obeť odsúhlasí, spojenie pokračuje a router ho môže rozšifrovať, pretože pozná kľúč.

Všetky prenášané dáta sa dajú monitorovať nástrojmi ako napr. tcpdump, snort nebo ethereal. Prípadne medzi dvomi tunelmi môže byť program, ktorý bude monitorovať/meniť len určité pakety.

Dá sa samozrejme druhý koniec tunela namiesto na https://ciel.cz vyviesť na úplne ľubovolné miesto v Internete a obeť to nemá šancu poznať.

A čo útočníci mimo routeru?

Tí tiež nie sú až takí bezradní. Existuje mnoho techník, ako počítač obete „presvedčiť“, nech posiela pakety útočníkovi namiesto routeru/skutočného serveru. V rámci lokálnej siete je možné použiť napr. ARP poisoning, ICMP redirect útok, STP spoofing. Ak útočník nie je nikde po ceste paketov k cieľu, je možný DNS cache poisoning, prípadne nejako použiť na obeť sociálne inžinerstvo a presvedčiť obeť, aby použila nejaký útočníkom ovládaný proxy server. Útočníci si medze nekladú.

„Falošné pravé“ certifikáty

Existuje ale aj možnosť, že certifikačná autorita vydá certifikát nepravému vlastníkovi. Je to skôr zriedkavosť, ale už sa to stalo – nejaký „vtipálek“ sa vydával za zamestnanca Microsoftu a získal pár certifikátov od VeriSignu. Tieto certifikáty boli vystavené za účelom podpisovania kódu, takže bolo nimi možné podpisovať vírusy alebo iný škodlivý kód. Ťažko povedať, či to niekto naozaj zneužil, alebo si len chcel posilniť ego.

Asi je jasné, že je takáto situácia predstavuje ľudovo povedané „značný průs …“ – je takmer nemožné sa brániť. Človek sa môže rozhodnúť nedôverovať VeriSignu, ale neviem, či tým viac získa než stratí. Našťastie je to dosť ojedinelé.

Záverom

Podobne sa dajú napadnúť všetky šifrovacie protokoly, ktoré sú iniciované výmenou kľúčov – SSH, rôzne vrstvy šifrovania nad ICQ, atď.

Neočakávam zatiaľ, že by podobný typ útokov bol nejak veľmi rozšírený, počítačové podsvetie momentálne používa jednoduchšie prostriedky – načo napadať router, keď môžu napadnúť rovno cieľové počítače. Ale ich techniky sa takisto vyvíjajú – po zlepšení bezpečnosti browserov sa začali zaujímať o diery v antivírovom softwari. Kým pred rokom-dvoma bola väčšina vírov „manuálnych“ (tj. človek si ich musel sám kliknúť a spustiť, občas dokonca najprv rozpakovať), dnes si už dajú crackeri námahu s DNS poisoningom, ktorý presmeruje obete na stránky, ktoré im nainštalujú 18 (!) MB spyware všetkých odrôd a chutí potichu cez nezaplátované diery v browseroch.

Anketa

Kontrolujete si fingerprinty?

       

Kurz programování v PHP 5

Akademie Root
  • nový objektový model v PHP 5
  • nové knihovny pro práci s databázemi
  • zajištění kompatibility s PHP 4
  • přechod na PHP 5 a budoucnost PHP

Detailní informace o kurzu...

Ohodnoťte jako ve škole: 1 2 3 4 5
Průměrná známka 3.17

Přehled názorů

Odpovedat na otazky mozem az v nedelu/pondelok
Ondrej Mikle 18. 8. 2005 00:41
Nie je to moc mudre
jariq 18. 8. 2005 01:19
├ 
Re: Nie je to moc mudre
Filip Huška 18. 8. 2005 05:26
│
└ 
Re: Nie je to moc mudre
W/R 18. 8. 2005 09:10
├ 
Re: Nie je to moc mudre
realista 18. 8. 2005 08:10
│
├ 
Re: Nie je to moc mudre
anonymní uživatel 18. 8. 2005 12:02
│
└ 
Re: Nie je to moc mudre
GeorgeP 22. 8. 2005 13:44
├ 
Re: Nie je to moc mudre
Martin 18. 8. 2005 08:27
│
└ 
Re: Nie je to moc mudre
Pichi 18. 8. 2005 09:11
│
 
└ 
Re: Nie je to moc mudre
anonymní uživatel 20. 8. 2005 21:52
└ 
Re: Nie je to moc mudre
jariq 18. 8. 2005 09:10
 
└ 
Re: Nie je to moc mudre
Stanislav Brabec 19. 8. 2005 12:08
lame blackhat na rootu?
noob 18. 8. 2005 02:56
cekal jsem vic :)
michal_sjx 18. 8. 2005 06:12
├ 
Re: cekal jsem vic :)
jan.xxx 18. 8. 2005 07:42
└ 
Re: cekal jsem vic :)
Marian Kechlibar 18. 8. 2005 09:19
 
├ 
Re: cekal jsem vic :)
jacobs 18. 8. 2005 22:50
 
└ 
Re: cekal jsem vic :)
michal_sjx 19. 8. 2005 06:53
 
 
├ 
Re: cekal jsem vic :)
Marian Kechlibar 19. 8. 2005 10:19
 
 
└ 
Re: cekal jsem vic :)
Marabu 21. 8. 2005 15:30
 
 
 
└ 
Re: cekal jsem vic :)
nobody 22. 8. 2005 15:28
Dejte opici kulomet s ostrými a pak rychle utíkejte
Vlastimil Klíma 18. 8. 2005 07:28
├ 
Aktivni odposlech
Michal Vymazal 18. 8. 2005 09:24
└ 
Re: Dejte opici kulomet s ostrými a pak rychle utíkejte
anonymní uživatel 18. 8. 2005 17:54
 
└ 
Re: Dejte opici kulomet s ostrými a pak rychle utíkejte
HKMaly 19. 8. 2005 15:22
Fajn clanok
Martin Ždila 18. 8. 2005 08:41
zajimave.
Vit Tauer 18. 8. 2005 09:38
Self-signed certifikát
anonymní uživatel 18. 8. 2005 09:39
└ 
Re: Self-signed certifikát
david 18. 8. 2005 10:47
 
└ 
Re: Self-signed certifikát
JD 18. 8. 2005 11:48
bezpecnost fingerprintov
ventyl 18. 8. 2005 09:51
Hezka ukazka
Pavel Vondruška 18. 8. 2005 11:31
└ 
Re: Hezka ukazka
Bilbo 18. 8. 2005 12:54
 
├ 
Re: Hezka ukazka
Jarek 18. 8. 2005 13:33
 
│
└ 
Re: Hezka ukazka
sss 18. 8. 2005 22:06
 
│
 
└ 
Re: Hezka ukazka
Jarek 19. 8. 2005 11:43
 
│
 
 
└ 
Re: Hezka ukazka
Bilbo 20. 8. 2005 14:12
 
│
 
 
 
└ 
Re: Hezka ukazka
Vondruška 21. 8. 2005 21:27
 
│
 
 
 
 
└ 
Re: Hezka ukazka
Jarek 22. 8. 2005 16:28
 
└ 
Re: Hezka ukazka
anonymní uživatel 18. 8. 2005 17:58
prima
frank 18. 8. 2005 21:48
pekne povedane
m 19. 8. 2005 00:03
├ 
Re: pekne povedane
Ondřej Čečák 19. 8. 2005 11:56
└ 
Re: pekne povedane
IMS 19. 8. 2005 11:58
 
└ 
Re: pekne povedane
m 20. 8. 2005 12:31
 
 
└ 
Re: pekne povedane
IMS 26. 8. 2005 14:51
 
 
 
└ 
Re: pekne povedane
haremheb 16. 11. 2005 04:02
Výborně napsáno
Vladimír Stwora 19. 8. 2005 00:49
└ 
Re: Výborně napsáno
Marian Kechlibar 19. 8. 2005 10:36
 
├ 
Re: Výborně napsáno
HKMaly 19. 8. 2005 15:34
 
└ 
Re: Výborně napsáno
Vladimír Stwora 19. 8. 2005 18:01
Priklad za vsetky: VUB
Teddy 19. 8. 2005 19:10
├ 
Re: Priklad za vsetky: VUB
Honza (Jerry) Jaroš 21. 8. 2005 10:58
└ 
Re: Priklad za vsetky: VUB
IMS 26. 8. 2005 15:01
 
└ 
Re: Priklad za vsetky: VUB
haremheb 16. 11. 2005 03:41
 
 
└ 
Re: Priklad za vsetky: VUB
ivan 6. 12. 2006 16:52
Zhrnutie & hromadna odpoved
Ondrej Mikle 23. 8. 2005 16:20
└ 
Re: Zhrnutie & hromadna odpoved
JCC 29. 3. 2006 02:21
VUB 2
haremheb 16. 11. 2005 03:34
       
Zasílat nově přidané příspěvky e-mailem