Введение

Визуально похожие буквы в доменных именах

Атака с использованием гомографов интернационализированных доменных имен (IDN) – это способ, с помощью которого злоумышленник может ввести в заблуждение пользователей компьютеров относительно того, с какой удаленной системой они взаимодействуют, используя тот факт, что многие различные символы выглядят одинаково (то есть являются гомографами, отсюда и название атаки, хотя технически более точным термином для различных, но похожих символов является гомоглиф). Например, в кириллическом, греческом и латинском алфавитах есть буквы, имеющие одинаковую форму, но разное значение. Этот вид атаки также известен как спуфинг сценария (script spoofing). Unicode включает в себя множество систем письменности, и по ряду причин похожие символы, такие как греческая Ο, латинская O и кириллическая О, не получили одинаковые кодовые обозначения. Их неправильное или злонамеренное использование представляет собой потенциальную угрозу безопасности. Таким образом, например, обычный пользователь может, не задумываясь, перейти по ссылке, кажущейся знакомой, не подозревая, что третья буква – это не латинская "a", а кириллическая "а", и, следовательно, это совершенно другой домен, чем предполагалось. Регистрация гомографических доменных имен аналогична typosquatting, поскольку обе формы атак используют имя, похожее на имя более известного домена, чтобы обмануть пользователя. Основное различие заключается в том, что при typosquatting злоумышленник привлекает жертв, рассчитывая на естественные опечатки, часто возникающие при ручном вводе URL-адреса, в то время как при спуфинге гомографов злоумышленник обманывает жертв, представляя визуально неотличимые гиперссылки. Действительно, крайне маловероятно, что пользователь сети случайно введет, например, кириллическую букву в английское слово, такое как "citibаnk". В некоторых случаях регистрация может быть одновременно и typosquatting, и спуфингом гомографов; пары l/I, i/j и 0/O расположены близко друг к другу на клавиатуре и, в зависимости от шрифта, могут быть трудно или невозможно различить.

История

Ранней проблемой такого рода, предшествовавшей Интернету и даже текстовым терминалам, была путаница между "l" (маленькая буква "л") / "1" (цифра "один") и "O" (заглавная буква "о") / "0" (цифра "ноль"). Некоторые печатные машинки в докомпьютерную эпоху даже объединяли "L" и "1"; пользователям приходилось вводить маленькую "l", когда требовалась цифра "один". Путаница между "0" и "o" породила традицию зачёркивать нули, чтобы оператор правильно их ввёл. Ещё раньше рукописный текст предоставлял множество возможностей для путаницы. Ярким примером является этимология слова "зенит". При переводе с арабского "samt" писец перепутал "m" с "ni". Это было распространено в средневековой готической письменности, которая не соединяла вертикальные штрихи в буквах "i", "m", "n" или "u", что затрудняло их различение в последовательности. Это, а также путаница "rn"/"m"/"rri" ("RN"/"M"/"RRI") всё ещё возможна для человеческого глаза даже с использованием современных передовых компьютерных технологий. Намеренная замена похожих символов из разных алфавитов также известна в различных контекстах. Например, "Фальшивая кириллица" использовалась для развлечения или привлечения внимания, а "кодировка Волапука", в которой кириллица представлена похожими латинскими символами, применялась в первые дни Интернета для обхода отсутствия поддержки кириллицы. Другой пример – на автомобильных номерах могут быть использованы как кириллические (для внутреннего использования в странах, использующих кириллицу), так и латинские (для международных поездок) буквы. Номера, выдаваемые в Греции, ограничены использованием букв греческого алфавита, имеющих гомоглифы в латинском алфавите, поскольку правила Европейского Союза требуют использования латинских букв.

Гомографы в ASCII

ASCII содержит несколько символов или пар символов, которые выглядят похоже и известны как гомографы (или гомоглифы). Атаки подмены, основанные на этих сходствах, называются атаками подмены гомографами. Например, 0 (цифра) и O (буква), строчная "l" и прописная "I". В типичном примере гипотетической атаки злоумышленник может зарегистрировать доменное имя, которое выглядит почти идентично существующему домену, но ведет на другой сайт. Например, домен "rnicrosoft.com" начинается с "r" и "n", а не с "m". Другой пример – G00GLE.COM, который в некоторых шрифтах выглядит очень похоже на GOOGLE.COM. Используя комбинацию прописных и строчных букв, googIe.com (прописная "i", а не строчная "l") в некоторых шрифтах выглядит как google.com. PayPal стал жертвой фишинговой схемы, использующей домен PayPaI.com. В определенных узких шрифтах, таких как Tahoma (шрифт по умолчанию в адресной строке Windows XP), размещение буквы "c" перед "j", "l" или "i" приводит к появлению гомоглифов, таких как cl cj ci (d g a).

Кириллица

Кириллица – наиболее часто используемый алфавит для гомоглифов, что во многом обусловлено наличием в нём 11 строчных глифов, идентичных или почти идентичных латинским аналогам. Буквы а, с, е, о, р, х и у в кириллице имеют визуальные соответствия в базовом латинском алфавите и выглядят близко или идентично буквам a, c, e, o, p, x и y. Курсивный шрифт создаёт больше гомоглифов: дтпи или дтпи (дтпи в обычном начертании), напоминающие dmnu (в некоторых шрифтах может использоваться буква д, поскольку её курсивная форма похожа на строчную g; однако в большинстве распространенных шрифтов д скорее напоминает знак частной производной, ∂). Если учитывать прописные буквы, АВСЕНІЈКМОРЅТХ может заменять ABCEHIJKMOPSTX, в дополнение к прописным буквам, соответствующим строчным кириллическим гомоглифам. Проблемными нерусскими буквами кириллицы являются і и i, ј и j, ԛ и q, ѕ и s, ԝ и w, Ү и Y, в то время как Ғ и F, Ԍ и G имеют некоторое сходство. Кириллические буквы ӓёїӧ также могут использоваться для подделки äëïö, если подделывается сам IDN. В то время как коми-пермяцкая буква де (ԁ), ша (һ), палочка (Ӏ) и ижица (ѵ) имеют сильное сходство с латинскими d, h, l и v, эти буквы либо редки, либо устарели и не поддерживаются большинством стандартных шрифтов (они не включены в WGL 4). Попытка их использования может привести к эффекту, похожему на требования выкупа.

Греческий

Из греческого алфавита только омикрон ο и иногда ню ν выглядят идентично латинской букве в нижнем регистре, используемом для URL. Шрифты, набранные курсивом, могут отображать греческую альфу α как латинскую а. Этот список расширяется, если допускаются близкие совпадения (например, греческий εικηρτυωχγ для eiknptuwxy). При использовании заглавных букв список значительно увеличивается. Греческие ΑΒΕΗΙΚΜΝΟΡΤΧΥΖ выглядят идентично латинским ABEHIKMNOPTXYZ. Греческие ΑΓΒΕΗΚΜΟΠΡΤΦΧ похожи на кириллические АГВЕНКМОПРТФХ (как и кириллические Л и греческие Λ в некоторых геометрических шрифтах без засечек), греческие буквы κ и ο похожи на кириллические к и о. Кроме того, греческие τ и φ могут быть похожи на кириллические т и ф в некоторых шрифтах, греческая δ напоминает кириллическую б в сербском алфавите, а кириллическая а курсивируется так же, как и ее латинский аналог, что позволяет заменять ее на альфу или наоборот. Полумесячная форма сигмы, Ϲϲ, напоминает как латинские Cc, так и кириллические Сс. Если сам IDN подделывается, греческая бета β может быть заменой немецкой eszett ß в некоторых шрифтах (и, фактически, кодовая страница 437 считает их эквивалентными), как и греческий вариант сигмы в конце слова ς для ç; акцентированные греческие символы όίά обычно могут использоваться вместо óíá во многих шрифтах, причем последний из них (альфа) снова напоминает только a в курсивном начертании.

Армянский

Армянский алфавит также может предоставить критически важные символы: несколько армянских букв, таких как օ, ո, ս, а также заглавные Տ и Լ, часто полностью идентичны латинским буквам в современных шрифтах, и символы, достаточно похожие, чтобы их можно было выдать за другие, например ցհոօզս, которые выглядят как ghnoqu, յ, напоминающая j (хотя и без точки), и ք, которая в зависимости от шрифта может напоминать p или f; ա может напоминать кириллическую ш. Однако использование армянского языка, к счастью, несколько менее надёжно: не все стандартные шрифты содержат армянские глифы (в отличие от греческого и кириллического шрифтов); в версиях Windows до Windows 7 армянский язык отображался отдельным шрифтом Sylfaen, и смешение армянского и латинского текста выглядело бы заметно иначе при использовании шрифта, отличного от Sylfaen или Unicode-шрифта. (Этот эффект известен как эффект "вырезки из газет"). Текущая версия Tahoma, используемая в Windows 7, поддерживает армянский язык (предыдущие версии не поддерживали). Кроме того, этот шрифт различает латинскую g и армянскую ց. Две армянские буквы (Ձշ) также могут напоминать цифру 2, Յ – цифру 3, а другая (վ) иногда – цифру 4.

Еврейский

Еврейский спуфинг встречается относительно редко. Надёжно использовать можно лишь три буквы этого алфавита: самех (ס), который иногда похож на букву "о", вав с диакритическим знаком (וֹ), который может напоминать "i", и хет (ח), который похож на букву "n". Для некоторых других букв и цифр можно найти менее точные имитации, но они обычно достаточно хороши только для целей иностранного брендинга и не подходят для подмены символов. К тому же, еврейский алфавит пишется справа налево, и попытки смешать его с символами, написанными слева направо, могут вызвать проблемы.

Тайский

Хотя тайский шрифт исторически отличался характерным видом с многочисленными петлями и небольшими завитушками, современная тайская типографика, начиная с Manoptica в 1973 году и продолжаясь до IBM Plex в наши дни, все чаще переходит к упрощенному стилю, в котором тайские символы изображаются глифами, сильно напоминающими латинские буквы. ค (A), ท (n), น (u), บ (U), ป (J), พ (W), ร (S) и ล (a) – среди тайских глифов, которые могут быть очень похожи на латинские.

Китайский

Китайский язык может представлять проблему из-за наличия множества иероглифов, существующих как в традиционной (стандартной) форме, так и в упрощенной. В домене .org регистрация одного из вариантов делает другой недоступным для всех; в домене .biz регистрация IDN на китайском языке обеспечивает активацию обоих вариантов (которые должны использовать один и тот же сервер доменных имен и иметь одного и того же владельца). Политика эта применяется и в домене .hk (.香港).

Другие сценарии

Другие сценарии Unicode, в которых могут встречаться гомографы, включают в себя формы чисел (римские цифры), CJK Compatibility и Enclosed CJK Letters and Months (определенные сокращения), латиницу (некоторые диграфы), символы валют, математические алфавитно-цифровые символы и формы представления букв (типографские лигатуры).

Акцентированные символы

Два имени, отличающиеся только ударением на одном символе, могут выглядеть очень похожими, особенно когда замена касается буквы «i» с точкой; точка над «i» может быть заменена диакритическим знаком (например, грависом или акутом; и ì, и í включены в большинство стандартных наборов символов и шрифтов), который можно заметить только при внимательном рассмотрении. В большинстве реестров доменов верхнего уровня wíkipedia.tld (xn--wkipedia-c2a.tld) и wikipedia.tld – это два разных имени, которые могут быть зарегистрированы разными заявителями. Исключение составляет домен .ca, где резервирование простой ASCII-версии домена не позволяет другому регистратору зарегистрировать версию с диакритическим знаком того же имени.

Не отображаемые символы

Юникод включает множество символов, которые не отображаются по умолчанию, например, символ нулевой ширины. В целом, ICANN запрещает регистрацию любых доменов, содержащих эти символы, независимо от доменной зоны верхнего уровня (TLD).

Известные гомографические атаки

В 2011 году неизвестный источник (регистрирующийся под именем "Completely Anonymous") зарегистрировал доменное имя, гомоглифное доменному имени телеканала KBOI TV, чтобы создать сайт с фейковыми новостями. Единственной целью сайта было распространение первоапрельской шутки о якобы введенном губернатором штата Айдахо запрете на продажу музыки Джастина Бибера. В сентябре 2017 года исследователь в области безопасности Анкит Анубхав обнаружил гомоглифную атаку IDN, в рамках которой злоумышленники зарегистрировали adoḅe.com для распространения трояна Betabot.

Смягчение на стороне клиента

Простейшая защита – это если веб-браузеры не поддерживают IDNA или другие подобные механизмы, либо пользователи отключают соответствующую поддержку в своих браузерах. Это может означать блокировку доступа к сайтам IDNA, но обычно браузеры разрешают доступ и просто отображают IDN в формате Punycode. В любом случае, это равносильно отказу от доменных имен, не использующих ASCII. Mozilla Firefox, начиная с версии 22, отображает IDN, если TLD предотвращает гомографические атаки, ограничивая используемые символы в доменных именах или если метки не смешивают системы письма разных языков. В противном случае IDN отображаются в формате Punycode. Google Chrome, начиная с версии 51, использует алгоритм, аналогичный используемому в Firefox. В более ранних версиях IDN отображался только в том случае, если все его символы принадлежали к одному (и только одному) из предпочтительных языков пользователя. Браузеры Chromium и основанные на Chromium, такие как Microsoft Edge (с 2019 года) и Opera, также используют тот же алгоритм. Safari отображает проблемные наборы символов в формате Punycode. Это можно изменить, изменив настройки в системных файлах Mac OS X. Internet Explorer, начиная с версии 7, поддерживает IDN, за исключением меток, смешивающих системы письма разных языков. Такие метки отображаются в формате Punycode. Существуют исключения для локалей, где символы ASCII обычно смешиваются с локализованными системами письма. Internet Explorer 7 поддерживал IDN, но накладывал ограничения на отображение доменных имен, не использующих ASCII, на основе пользовательского списка разрешенных языков и предоставлял антифишинговый фильтр, проверяющий подозрительные веб-сайты по удаленной базе данных известных фишинговых сайтов. Старая версия Microsoft Edge преобразует весь Unicode в Punycode. В качестве дополнительной защиты Internet Explorer 7, Firefox 2.0 и выше, а также Opera 9.10 включают антифишинговые фильтры, которые пытаются предупредить пользователей при посещении вредоносных веб-сайтов. По состоянию на апрель 2017 года некоторые браузеры (включая Chrome, Firefox и Opera) отображали IDN, состоящие исключительно из кириллических символов (не в формате Punycode), что позволяло проводить атаки с использованием гомографов. Chrome ужесточил ограничения IDN в версии 59 для предотвращения подобных атак. Для Google Chrome и Firefox доступны расширения для браузера, такие как No Homo Graphs, которые проверяют, не посещает ли пользователь веб-сайт, являющийся гомографом другого домена из списка, определенного пользователем. Эти методы защиты действуют только в пределах браузера. Гомографические URL-адреса, содержащие вредоносное ПО, могут распространяться, не отображаясь в формате Punycode, через электронную почту, социальные сети или другие веб-сайты и оставаться незамеченными до тех пор, пока пользователь не нажмет на ссылку. Хотя поддельная ссылка будет отображаться в формате Punycode после нажатия, к этому моменту страница уже начнет загружаться в браузере.

Уменьшение на стороне сервера/оператора реестра

База данных IDN-гомоглифов — это библиотека Python, позволяющая разработчикам защищаться от этого, используя машинное обучение для распознавания символов. ICANN внедрила политику, запрещающую любому потенциальному интернационализированному TLD выбирать буквы, которые могут быть похожи на существующий латинский TLD и, таким образом, использоваться для гомоглифных атак. Предложенные IDN TLD .бг (Болгария), .укр (Украина) и .ελ (Греция) были отклонены или их рассмотрение было приостановлено из-за их предполагаемого сходства с латинскими буквами. Впоследствии все три (а также сербский .срб и монгольский .мон) были приняты. Трёхбуквенные TLD считаются более безопасными, чем двухбуквенные, поскольку их сложнее сопоставить с обычными латинскими доменными именами ISO 3166; хотя потенциал для сопоставления с новыми общими доменными именами сохраняется, такие общие домены значительно дороже, чем регистрация доменного имени второго или третьего уровня, что делает экономически нецелесообразным регистрировать гомоглифный TLD исключительно для создания мошеннических доменов (что само по себе привлечёт внимание ICANN). Российский регистратор Координационный центр доменных имен RU принимает только кириллические имена для домена верхнего уровня .рф, запрещая их смешивание с латинскими или греческими символами. Однако проблема в com и других gTLD остаётся нерешённой.

Уменьшение последствий на основе исследований

В своем исследовании 2019 года Suzuki et al. представили ShamFinder – программу для распознавания IDN, проливая свет на их распространенность в реальных сценариях. Аналогично, Chiba et al. (2019) разработали DomainScouter, систему, способную обнаруживать разнообразные гомографические IDN в доменных именах, проанализировав около 4,4 миллиона зарегистрированных IDN в 570 доменах верхнего уровня (TLD). Благодаря этому DomainScouter успешно идентифицировала 8284 гомографических IDN, включая многие ранее не выявленные случаи, направленные на бренды, использующие языки, отличные от английского.