Atak Homograficzny
Atak homograficzny jest oparty na standardach współczesnego Internetu, które umożliwiają tworzenie (i wyświetlanie w przeglądarkach) adresów URL zawierających znaki pochodzące z innych alfabetów niż łaciński (czyli spoza ASCII). Różne alfabety mogą zawierać różne, bardzo podobne do siebie znaki. Napastnicy mogą wobec tego rejestrować własne domeny, łudząco podobne do istniejących adresów internetowych. Kolejnym krokiem ataku jest skopiowanie oryginalnych stron internetowych z prawdziwych adresów i umieszczenie ich podrobionych wersji na fałszywych adresach. Podmienione w ten sposób strony należą zwykle do banków, korporacji, serwisów mejlowych lub informacyjnych. Fałszywe strony internetowe mogą być następnie użyte do kradzieży danych odwiedzających je użytkowników lub rozpowszechniania fałszywych informacji.
Proste ataki homograficzne
W najprostszych wersjach tego typu ataków, fałszywy URL składa się jedynie z prostych znaków ASCII. Napastnik używa symboli podobnych z wyglądu do oryginalnych liter i znaków, które znajdują się w atakowanych adresach URL. Często litera q może być pomylona z g, podobnie o może być pomylone z 0.
Adresy URL podobne do tych poniżej mogą oszukać mniej spostrzegawczych użytkowników:
http://bl00mberg.com
Adresy URL ze znakami spoza ASCII
Możliwość używania znaków spoza alfabetu łacińskiego w adresach stron www została wprowadzona w 2003 roku, ze względu na wzrastającą liczbę użytkowników Internetu, którzy nie znali języka angielskiego. Modyfikacja umożliwiła rejestrowanie i używanie nazw domen, które mogły być zrozumiałe przez większą liczbę zainteresowanych. Stało się możliwe tworzenie adresów internetowych, które były kombinacjami znaków ASCII i spoza ASCII oraz adresów, które składały się jedynie z symboli narodowych:
http://газета.ру
http://budyń.pl
Wszystkie adresy www zawierające znaki spoza alfabetu łacińskiego muszą zostać zakodowane w specjalny sposób aby mogły zostać przetworzone przez serwery DNS. Format zapisau takich adresów nosi nazwę Punycode. Przeglądarki przekształcają w tle wszystkie adresy URL zawierające znaki spoza ASCII przed wysłaniem zapytania do serwerów DNS. Nazwa domeny w Punycode zawsze zaczna się od xn--, a następnie składa się ze znaków ASCII z oryginalnego adresu, po których następują zakodowane pozostałe znaki Unicode z adresu URL. Przykładowo ostatni adres z przykładu powyżej miałby następującą postać w Punicode:
Domeny, których nazwy zawierają znaki spoza alfabetu łacińskiego są oficjalnie nazywane Internationalized Domain Names (IDN). Różne przeglądarki traktują tego typu adresy w różny sposób. Zwykle każdy producent implementuje swoje własne algorytmy dla określenia w jaki sposób URL będzie wyświetlany. Zazwyczaj jedno z dwóch podejść (z niewielkimi modyfikacjami) jest stosowane:
- Wszystkie znaki URL są wyświetlane przy użyciu Unicode; lub
- Wszystkie znaki URL są wyświetlane przy użyciu Unicode jedynie w przypadku, kiedy wszystkie one należą do tego samego języka, który został wskazany przez użytkownika w ustawieniach przeglądarki; w przeciwnym wypadku adres URL wyświetlany jest przy użyciu Punycode.
Ataki homograficzne przy użyciu znaków sposa ASCII
Różne języki zawierają litery, które wyglądają identycznie lub przynajmniej bardzo podobnie, mimo, że są kodowane w zupełnie różny sposób. Wobec tego jest możliwe utworzenie wielu różnych adresów URL, które składają się z niejednakowych znaków, które jednak są nierozróżnialne wizualnie.
Przykładowo, alfabet łaciński i cyrylica zawierają kilka liter, które są zapisywane w ten sam sposób, ale mają zupełnie inne znaczenie i są kodowane w Unicode w inny sposób:
- (w alfabecie łacińskim) a: U+0061, (w cyrylicy) а: U+0430
- (w alfabecie łacińskim) c: U+0063, (w cyrylicy) с: U+0441
- (w alfabecie łacińskim) p: U+0070, (w cyrylicy) р: U+0440
Biorąc pod uwagę 100 000 znaków zdefiniowanych w Unicode (z których wiele jest do siebie podobnych), potencjalny napastnik ma spory potencjał w tworzeniu przeróżnych fałszywych adresów URL i nawet najbardziej uważni użytkownicy mogą zostać oszukani. Obecnie, zarówno organizacje rejestrujące domeny DNS, jak i producenci przeglądarek internetowych nie zdołali zapobiec tego typu oszustwom.
Na koniec należy zauważyć, że napastnik może wykorzystać znak, który wygląda prawie tak samo jak prawdziwy znak ukośnika w alfabecie ASCII / (U+002F) - operator dzielenia matematycznego ∕ (U+2215). Pozwala to napastnikowi tworzyć poddomeny, które wyglądają jak prawdziwe nazwy domen, przy użyciu wybranych przez niego serwerów i domen najwyższego poziomu. Fałszywy adres URL mógłby wyglądać podobnie do adresu poniżej:
Znak znajdujący się za .com to operator dzielenia matematycznego. W pasku adresu przeglądarek internetowych może on zostać przedstawiony bardzo podobnie do zwykłego znaku ukośnika, sprawiając, że cały adres URL może zostać błędnie odczytany jako katalog o nazwie domena-najwyzszego-poziomu.com znajdujący się w głównym katalogu strony w domenie example.com:
Ochrona przed atakami homograficznymi
Najlepszym zabezpieczeniem przeciwko atakom homograficznym wydaje się właściwe stosowanie ostrzeżeń lub obsługiwanie w inny szczególny sposób adresów uznanych za szkodliwe przez przeglądarki internetowe. Niestety obecnie funkcjonalności tego typu pozostawiają wiele do życzenia. Co gorsze, zachowanie różnych typów przeglądarek różni się w zależności od producenta, co może powodować dodatkowe zamieszanie i utrudniać użytkownikom rozpoznanie oszustwa.