Ataki po stronie klienta w publicznych punktach dostępowych

Post on 16-Jan-2017

689 views 0 download

Transcript of Ataki po stronie klienta w publicznych punktach dostępowych

Ataki po stronie klienta w publicznych punktach dostępowych

Paweł Rzepa

Agenda• Kim jestem• Zarys problemu• Środowisko testowe• SSLstrip• SSLsplit• Metody obrony przed atakami MitM• Dnsspoof• Złośliwy kod w Captive Portals• Wnioski• Dla zainteresowanych

Kim jestem?

• Specjalista ds. bezpieczeństwa w organizacji EY.

• Na co dzień zajmuję się szukaniem podatności w wewnętrznych aplikacjach EY.

• Kontakt: pawel.rzepa@outlook.comhttps://pl.linkedin.com/pub/pawel-rzepa/5b/696/532

Zarys problemu, czyli skąd pomysł na tą prezentację?• Mit 1. Jak aplikacja działa na HTTPS to niemożliwe są ataki

MitM.• Mit 2. Jeżeli aplikacja używa flagi secure to niemożliwe są

ataki MitM.

Niestety nie zawsze jest to prawdą! A ponadto:

• Większość aplikacji, które testuję zezwalają na transmisję HTTP (poprzez wymuszenie http:// w adresie, lub zmianę User Agent) i/lub nie mają zaimplementowanej flagi secure.

Flaga secure• Atrybut „secure” w nagłówku Set-Cookie wymusza użycie

protokołu HTTPS do transmisji ciasteczek.

Więcej o implementacji flagi secure: https://www.owasp.org/index.php/SecureFlag

Środowisko testowe – WiFi Pineapple

• To zwyczajny Router WiFi z niezwyczajnym soft’em

Więcej na https://www.wifipineapple.com/

WiFi Pineapple – połączenie z Internetem

• Może korzystać z Internetu mobilnego (modem 3/4G)• Może pracować jednocześnie jako klient innego AP i

rozgłaszać swoją sieć.• Może w ogóle nie mieć podłączenia do Internetu i

dalej być wartościowy.

WiFi Pineapple – połączenie z klientem

• Rozgłaszanie otwartej sieci WiFi pod zachęcającą nazwą (np. „Miejski Internet”).

• Fałszywy AP – podstawienie pod istniejącą sieć.• Podszycie się pod sieć szukaną przez urządzenie

końcowe (Karma).

SSLstrip

• SSLstrip po prostu wymusza przekierowanie żądania na port HTTP.

• Wciąż możliwe w niektórych aplikacjach.

SSLstrip

• Przykład:

SSLstrip

• I jeszcze jeden...

SSLsplit

• SSL/TLS proxy.• Przedstawia się klientowi dynamicznie

wygenerowanym certyfikatem.• Nie działa na portale, używające HSTS, ale...

SSLsplit

• ...nie wszystkie portale używają HSTS...

Co jest nie tak? Co robić? Jak żyć?!

• Stosować nagłówek HTTP Strict Transport Security (HSTS). Wymusza transmisję HTTPS oraz nie zezwala na akceptację niezaufanego certyfikatu.

Co jest nie tak? Co robić? Jak żyć?!

• Stosować Certificate Pinning – „na sztywno” przypisany certyfikat do klienta (aplikacji mobilnej, przeglądarki). Połączenie jest ustanowione tylko gdy certyfikat jest zaufany.

• Stosować tylko certyfikaty podpisane przez zaufane Certificate Authority – piękne, ale czy realne?

Chain of trust• Hierarchicznie Certificate Authority gwarantują, że dany certyfikat

jest prawdziwy.

• Podpisanie certyfikatu wiąże się z dodatkowymi kosztami, dlatego nie każdy decyduje się na ten krok (powszechny problem w aplikacjach mobilnych).

Czy grozi nam coś jeszcze?• Załóżmy, że mamy to wszystko – czy grozi nam jeszcze jakieś

niebezpieczeństwo?• Odp: Oczywiście • Dnsspoof• Captive Portals ze złośliwym kodem• Podatności w samym SSL (więcej na ten temat

https://www.digicert.com/cert-inspector-vulnerabilities.htm#certificate_vulnerabilities)

• Podatności w TLS, czyli Key Compromise Impersonation (więcej https://kcitls.org/)

• Podstawienie plików aktualizacyjnych na złośliwe (np. peinjector https://peinjector.eu/ czy evilgrade http://www.infobyte.com.ar/down/isr-evilgrade-Readme.txt)

Dnsspoof – stary, ale wciąż jary!

• Czyli przekierowanie dowolnej nazwy domeny na kopię własnej strony.

Dnsspoof

Dnsspoof

Obrona prrzed Dnsspoof• HTTPS w adresie!• VPN z proxy z przypisanym DNS (np. korporacyjny VPN)• Mimo to zawsze ktoś się nabierze

Captive Portals z BeEF hook

• Captive Portal czyli strona, która wyświetli się jako pierwsza zanim nastąpi przekierowanie na żądaną stronę.

Captive Portals z BeEF hook

• Nic nie stoi na przeszkodzie, aby umieścić tam dowolny kod, np. BeEF hook.js

Captive Portals z BeEF hook

Captive Portals z BeEF hook

Obrona przed złośliwym kodem na Captive Portals

• Wyłączona obsługa skryptów?• Chrome extension?

http://blog.cylance.com/vegan-chrome-extension-to-defeat-beef

• Zaktualizowana przeglądarka + zdrowy rozsądek

Wnioski• Komunikacja nieszyfrowana to zeszła epoka! • Szyfrowanie to metoda na ataki MitM, ale tylko jeśli jest

WŁAŚCIWIE zaimplementowane!• Sama flaga secure to za mało. Należy ją uzupełnić o nagłówek

HSTS!• Stosuj certificate pinning!• Multi-factor Authentication do poufnych operacji!• Duża ostrożność w stosowaniu publicznych punktów dostępu!• Wyłącz łączenie się przez WiFi jeśli z niego nie korzystasz!

Dla zainteresowanych tematem• Wszystko, co powinieneś wiedzieć o komunikacji

szyfrowanej: https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet

• Dobrze wytłumaczone działanie HSTS: http://sekurak.pl/hsts-czyli-http-strict-transport-security/

• Ataki na Pineapple też są możliwe: http://www.networkworld.com/article/2462478/microsoft-subnet/hacker-hunts-and-pwns-wifi-pineapples-with-0-day-at-def-con.html