TLS – Wyciek informacji przez rozszerzenie Server Name Indication (SNI)
Napisał: Patryk Krawaczyński
09/10/2017 w Bezpieczeństwo Brak komentarzy. (artykuł nr 642, ilość słów: 461)
M
oże się nam wydawać, że skoro używamy szyfrowanego połączenia TLS/SSL to tylko serwery DNS mogą zdradzać naszą aktywność w sieci. Nic bardziej mylnego. Powodem bardzo szybkiej identyfikacji odwiedzanych przez nas stron może być rozszerzenie TLS – SNI (ang. Server Name Indication) pozwalające na instalację wielu certyfikatów SSL na pojedynczym adresie IP (mogliśmy wcześniej się z nim spotkać przy analizie Cloudflare).
Skoro wiele certyfikatów może zostać osadzonych na pojedynczym adresie IP to podczas uścisku dłoni nasz klient musi wysłać informację z jakim hostem chce nawiązać połączenie (tak, jak nagłówek Host
w komunikacji HTTP), aby dopasować certyfikat do dalszej komunikacji TLS. Właśnie ta część informacji jest przesyłana w niezaszyfrowanej formie i może być bardzo prosto przechwycona. Dla przykładu wykorzystamy narzędzie BetterCAP, które od wersji 1.6.1 potrafi ekstrahować informacje z SNI. Instalację przeprowadzimy na systemie Ubuntu 16.04 LTS:
apt install build-essential ruby-dev libpcap-dev gem install bettercap
Po poprawnej instalacji możemy uruchomić program, jako sniffer (-X
) przechwytujący lokalny ruch (-L
):
root@darkstar:~# bettercap -XL --no-spoofing _ _ _ | |__ ___| |_| |_ ___ _ __ ___ __ _ _ __ | '_ \ / _ \ __| __/ _ \ '__/ __/ _` | '_ \ | |_) | __/ |_| || __/ | | (_| (_| | |_) | |_.__/ \___|\__|\__\___|_| \___\__,_| .__/ |_| v1.6.2 http://bettercap.org/ [I] Starting [ spoofing:✘ discovery:✔ sniffer:✔ tcp-proxy:✘ udp-proxy:✘ http-proxy:✘ https-proxy:✘ sslstrip:✘ http-server:✘ dns-server:✘ ] ... [I] [enp0s3] 10.0.2.15 : 08:00:27:BE:04:D7 / enp0s3 ( PCS Systemtechnik GmbH ) [I] [GATEWAY] 10.0.2.2 : 52:54:00:12:35:02 ( ??? ) [I] [DISCOVERY] Precomputing list of possible endpoints, this could take a while depending on your subnet ... [I] [DISCOVERY] Done in 2.9 ms [I] [DISCOVERY] Targeting the whole subnet 10.0.2.0..10.0.2.255 ... [I] Acquired 2 new targets : [NEW] 10.0.2.3 : 52:54:00:12:35:03 ( ??? ) [NEW] 10.0.2.4 : 52:54:00:12:35:04 ( ??? ) [local > 172.217.21.46:https] [HTTPS] https://play.google.com/ [local > 37.187.104.217:https] [HTTPS] https://nfsec.pl/ [local > 212.77.98.9:https] [HTTPS] https://www.wp.pl/
Przechwycone strony pochodzą z poleceń typu: links https://[adres]
– wydawanych w drugiej konsoli. Jeśli odwiedzanym adresem była strona nie korzystająca z SNI po stronie serwera to sniffer nie odnotowywał żadnej aktywności. Niestety my jako “zwykli” klienci nie jesteśmy w stanie przewidzieć, na jaką konfigurację serwera trafimy.
Więcej informacji: TLS, Server Name Indication and Why We Need to Encrypt It, Server Name Indication