Czytanie domen i linków
Moduł 3: Rozpoznawanie phishingu · Czas czytania: 13 minut
Cel lekcji: Po tej lekcji będą Państwo potrafili określić rzeczywisty cel każdego linku: znajdą Państwo rejestrowalną domenę za pomocą publicznej listy sufiksów oraz rozpoznają sztuczki z subdomeną, ścieżką i znakiem @, lookalike, punycode, skracacze linków i otwarte przekierowania.
Kluczowe pojęcia: URL, schemat, host, domena rejestrowalna, sufiks publiczny, subdomena, ścieżka, lookalike, typosquatting, homograf, punycode (xn--), skracacz URL, otwarte przekierowanie (open redirect)
Elementy linku
Adres internetowy nazywany jest URL. Składa się ze stałych elementów:
https://inlog.mijnbank.example:443/klant/overzicht?taal=nl#saldo| Element | W tym przykładzie | Co robi |
|---|---|---|
| Schemat | https | W jaki sposób przeglądarka nawiązuje połączenie |
| Host | inlog.mijnbank.example | Z jakim serwerem się Państwo komunikują |
| Port (rzadko widoczny) | 443 | "Numer drzwi" na tym serwerze |
| Ścieżka | /klant/overzicht | Która strona na tym serwerze |
| Zapytanie (query) | ?taal=nl | Dodatkowe dane dla strony |
| Fragment | #saldo | Miejsce na stronie |
Host to jedyny element, który określa, do kogo należy strona. Ścieżkę, zapytanie i fragment ustala sam właściciel tego hosta. Może więc tam znaleźć się cokolwiek, w tym nazwa innej organizacji.
Host odczytuje się od prawej do lewej, etykieta po etykiecie. Koniec jest najważniejszy.
Domena rejestrowalna i publiczna lista sufiksów
Nie cały host wskazuje, kto jest właścicielem, lecz tylko jeden jego fragment: domena rejestrowalna. Jest to nazwa, którą ktoś zarejestrował u rejestratora. Wszystko na lewo od niej to subdomeny, które właściciel tworzy sam, w dowolnej liczbie.
Aby znaleźć domenę rejestrowalną, trzeba wiedzieć, w jakim miejscu w ogóle można zarejestrować własną nazwę. Taki fragment nazywa się sufiksem publicznym. Przykładami są com, nl i example, ale także co.uk: w Wielkiej Brytanii firma rejestruje nazwę pod co.uk. Domena rejestrowalna to wtedy sufiks publiczny plus jedna etykieta przed nim.
| Host | Sufiks publiczny | Domena rejestrowalna |
|---|---|---|
www.example.com | com | example.com |
inlog.mijnbank.example | example | mijnbank.example |
www.shop.[nazwa].co.uk | co.uk | [nazwa].co.uk |
mijnbank.co.uk.example | example | uk.example |
Reguła "weź ostatnie dwa fragmenty" jest więc błędna. Przy www.shop.[nazwa].co.uk otrzymaliby Państwo co.uk, a to nie należy do nikogo konkretnego. Ostatni przykład pokazuje z kolei, że co.uk w środku nazwy nic nie znaczy: właścicielem jest tam uk.example.
Które sufiksy są publiczne, określa Public Suffix List (publicsuffix.org), lista zapoczątkowana przez Mozillę, obecnie utrzymywana przez społeczność. Przeglądarki korzystają z niej między innymi do ustalania, które strony mogą współdzielić pliki cookie, oraz do wyróżniania ważnej części adresu. Lista zawiera też część dotyczącą sufiksów "prywatnych": usług, w ramach których klienci otrzymują własną subdomenę, na przykład niektóre hostingi blogów i stron projektów. Każdy klient w ich obrębie liczy się jako osobny właściciel.
Jeśli sufiksu nie ma na liście, obowiązuje reguła domyślna: ostatnia etykieta jest sufiksem. Dlatego przy .example domena rejestrowalna to zawsze dwie ostatnie etykiety.
Sztuczki z subdomeną, ścieżką i znakiem @
Teraz, gdy wiedzą już Państwo, gdzie znajduje się informacja o właścicielu, zobaczą Państwo, jak atakujący wprowadzają w błąd. Umieszczają oczekiwaną nazwę w innym miejscu linku.
Sztuczka z subdomeną.
https://mijnbank.example.inlog-check.example/loginNa początku widzą Państwo mijnbank.example. Proszę jednak czytać od prawej: sufiksem jest example, domena rejestrowalna to inlog-check.example i to ona należy do atakującego. Atakujący kupił tę domenę i sam dodał przed nią subdomenę mijnbank.example.
Sztuczka ze ścieżką.
https://inlog.example/mijnbank.example/klant/loginHostem jest inlog.example i nic więcej. Wszystko po pierwszym pojedynczym / to ścieżka, którą dowolnie wybiera właściciel inlog.example.
Sztuczka ze znakiem @.
https://mijnbank.example@aanvaller.example/inloggenURL może zawierać przed hostem część użytkownika, zakończoną znakiem @ (standard dla adresów URL, RFC 3986, nazywa to userinfo). Wszystko przed @ nie jest więc hostem. Przeglądarka przechodzi do aanvaller.example i nigdzie indziej. Niektóre przeglądarki ostrzegają lub usuwają część użytkownika, ale nie należy na tym polegać.
Przydatna, stała metoda postępowania: proszę znaleźć pierwszy znak / po https://. To, co jest przed nim, stanowi host (ewentualnie z częścią użytkownika i znakiem @). Jeśli występuje @, host zaczyna się dopiero po nim. Proszę czytać host od prawej do lewej, aż znajdą Państwo domenę rejestrowalną.
Lookalike, typosquatting i punycode
Lookalike to własna domena przypominająca domenę kogoś innego:
| Lookalike | Sztuczka |
|---|---|
rnijnbank.example | rn w wielu czcionkach wygląda jak m |
mijnbnak.example | dwie litery zamienione miejscami (typosquatting: liczenie na literówkę) |
mijnbank-veilig.example | dodatkowe słowo z łącznikiem: to zupełnie inna domena |
mijnbank-example.example | kropka zastąpiona łącznikiem |
mijnbank.example.inlog-check.example | prawdziwa domena jako subdomena (patrz wyżej) |
Krok dalej to homograf: domena zawierająca litery z innego alfabetu, które wyglądają tak samo. Cyrylicka litera а wygląda jak łacińskie a, ale dla komputera jest to inny znak. Nazwy domen zawierające takie znaki nazywa się międzynarodowymi nazwami domen. DNS rozpoznaje tylko litery a do z, cyfry i łącznik, dlatego taka nazwa jest przekształcana na punycode (RFC 3492): formę zaczynającą się od xn--.
mijnbаnk.example (z cyrylicką literą а)
xn--mijnbnk-6fg.example (ta sama nazwa w punycode)Jeśli widzą Państwo xn-- w adresie, oznacza to, że nazwa zawiera znaki spoza zakresu a do z. Może to być zupełnie normalne (wiele języków ma znaki diakrytyczne lub własny alfabet), ale przy nazwie, która poza tym wygląda na niderlandzką lub angielską, jest to silny sygnał ostrzegawczy. Przeglądarki mają reguły wyświetlania podejrzanych kombinacji jako punycode; Chrome na przykład pokazuje etykietę jako xn--, gdy nazwa łączy alfabet łaciński i cyrylicki. Reguły te nie wyłapują jednak wszystkiego, a w mailu lub czacie często widzą Państwo po prostu zwykłe litery.
Skracacze linków i otwarte przekierowania
Skracacze URL zamieniają długi link na krótki, na przykład https://kort.example/a8Xk2. Wygodne, ale nie widać celu. Domena rejestrowalna linku należy do skracacza, a nie do organizacji, której się Państwo spodziewają. Bank lub dostawca proszący o zalogowanie się przez skrócony link: proszę tego nie robić.
Otwarte przekierowanie (open redirect) to strona na prawdziwej witrynie, która przekierowuje odwiedzających na dowolny adres podany w linku:
https://mijnbank.example/doorsturen?naar=https://aanvaller.example/inloggenHost jest rzeczywiście mijnbank.example, ale po jednym kliknięciu znajdują się Państwo na aanvaller.example, nie zauważając tego. Również przy użyciu skracacza lub linku śledzącego z usługi newslettera można trafić w inne miejsce niż wskazuje pierwsza domena. Wniosek: po kliknięciu proszę ponownie spojrzeć na pasek adresu, zanim cokolwiek Państwo wypełnią. A kłódka? Oznacza wyłącznie, że połączenie jest szyfrowane. Fałszywe strony również mają ważny certyfikat.
W praktyce: tak to wygląda
Na komputerze wystarczy najechać kursorem na link, bez klikania; rzeczywisty cel pojawia się w lewym dolnym rogu okna lub w dymku. W większości programów pocztowych i poczty internetowej działa to podobnie. Na telefonie proszę przytrzymać link: pojawi się menu z adresem u góry. Proszę wtedy nie wybierać "otwórz".
Proszę zwrócić uwagę na dwie pułapki:
- Widoczny tekst nie jest celem. W mailu na przycisku lub w tekście może znajdować się
https://mijnbank.example, podczas gdy link pod spodem prowadzi na zupełnie inny adres. Liczy się wyłącznie to, co widzą Państwo po najechaniu kursorem lub przytrzymaniu palca. - Długie adresy są obcinane. Telefony często pokazują tylko początek. Właśnie ważny koniec wtedy znika. Proszę przewinąć lub dotknąć adresu, aby zobaczyć go w całości.
W razie wątpliwości proszę samodzielnie wpisać znany adres lub skorzystać z zakładki. CERT Polska również udostępnia poradniki dotyczące sprawdzania linków, https://cert.pl/.
Podsumowanie
- Tylko host określa, do kogo należy strona. Ścieżkę, zapytanie i wszystko przed znakiem
@wybiera sam atakujący. - Domena rejestrowalna to sufiks publiczny plus jedna etykieta. Proszę korzystać z Public Suffix List, a nie z zasady "ostatnie dwa fragmenty" (proszę pamiętać o
co.uk). - Proszę czytać host od prawej do lewej. Umieszczenie prawdziwej domeny na początku jako subdomeny to klasyczna sztuczka.
- Lookalike: zamiana liter, dodatkowe słowa, homografy.
xn--oznacza znaki spoza zakresu a do z. - Skracacze ukrywają cel, otwarte przekierowania przekierowują Państwa dalej. Po kliknięciu proszę ponownie spojrzeć na pasek adresu.
Quiz
Zadanie
Zadanie A3.2: Znajdowanie domeny rejestrowalnej. Otrzymają Państwo osiem linków. Przy każdym linku proszę wpisać domenę rejestrowalną i wskazać, czy link pasuje do rzeczywistej organizacji. Program sprawdzi odpowiedź na podstawie Public Suffix List.
Zadanie A3.2b: Trudne linki. Osiem linków ze sztuczkami: znak @, punycode, skracacze i strony przekierowujące. Przy każdym linku proszę wpisać, na jaką domenę Państwo trafiają, lub wybrać "nie można ustalić".
Więcej informacji
Kroki opisane w artykułach WebOké dotyczą środowiska WebOké; u innych dostawców działa to w podobny sposób.
- Czy ta wiadomość rzeczywiście pochodzi od WebOké? Jak rozpoznać phishing i skorzystać z kodu promocyjnego
- Kurs DNS, o nazwach domen i sposobie ich odczytywania: https://www.weboke.pl/dns-cursus
- CERT Polska, poradniki dotyczące phishingu i spoofingu: https://cert.pl/
- Public Suffix List: https://publicsuffix.org/
- RFC 3986, budowa adresu URL (między innymi userinfo): https://www.rfc-editor.org/rfc/rfc3986
- RFC 3492, Punycode: https://www.rfc-editor.org/rfc/rfc3492
- Chromium, kiedy przeglądarka pokazuje międzynarodową nazwę jako punycode: https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md
