Exploit.SWF.Agent.br Pdfka.asd Pidief.cvl TDSS TDSS removal binary planting bios infection blind sqli bootkit bootkit remover browser exploitation com hijacking disassembling dll hijacking drive-by downloads hack online banks heap-spray hijack botnet ibank kernel protection kernel-mode rootkit keylogger malware analysis rootkit detection trojan virus removal

Атака клонов. Омографическая атака на интернационализированные доменные имена.

Алексей Фельдгендлер
разработчик Opera Software
alexey@feldgendler.ru

Как работает IDN
Старая атака с новыми возможностями
Противодействие омографической атаке
Заключение
Список ссылок

Во многих разделах информационных технологий мы были свидетелями схожих путей развития. Сначала что-нибудь становится возможным для латинского алфавита, а затем технология расширяется для поддержки других систем письменности, зачастую ценой значительного усложнения. Сегодня мы можем включать, например, кириллицу в электронные письма, SMS-сообщения, имена файлов. Технологии, делающие это возможным, часто разрабатываются как надстройки над существующими стандартами, поддерживающими только ASCII. Увы, добавляемый при этом новый уровень сложности может открывать новые возможности для злоупотреблений. Не исключение и новшество XXI века - интернационализированные доменные имена (IDN).

В статье пойдёт речь о так называемой омографической атаке на эту технологию. Омографическая атака, суть которой заключается в использовании сходства доменных имен с целью введения пользователя в заблуждения - давно известная технология фишинга. Мы покажем, как новые возможности, предоставляемые IDN, делают омографическую атаку особенно опасной, и опишем, какие меры противодействия принимают администрации доменов верхнего уровня и производители браузеров.

Как работает IDN

IDN (internationalized domain names) - это доменные имена, которые могут содержать другие алфавитные символы, помимо базовой латиницы[1]. Возможность регистрировать домены с такими именами важна прежде всего для носителей языков, чьи системы письменности не основаны на латинице, например, русского или китайского. Но и дополнения к базовой латинице употребляются во многих европейских языках: например, в 2004 году норвежская сеть магазинов Elkjøp зарегистрировала домен elkjøp.no. Первым доменом верхнего уровня, где стала возможна регистрация IDN, стал .jp, разрешивший в 2003 году использовать в доменных именах символы японской письменности.

Протокол DNS[2], регламентирующий запросы к серверам доменных имён и ответы на них, - пожалуй, наиболее широко распространённый в Интернете. Поскольку существующая инфраструктура доменных имён рассчитана на работу только с набором символов ASCII, добавить ко всем серверам поддержку Unicode не представляется возможным. Поэтому пришлось разработать такую технологию, которая кодирует имена, пользуясь только символами ASCII. Например, домен elkjøp.no «на самом деле» зарегистрирован как xn--elkjp-yua.no. Такая запись доменного имени называется Punycode[3]. ASCII-запись интернационализированных доменных имён начинается префиксом «xn--», чтобы показать, что в имени используется Punycode (обычно два дефиса подряд в доменном имени запрещены). В таком виде имя неприглядно, но может использоваться даже с программным обеспечением, написанным до появления IDN.

Когда мы набираем в адресной строке доменное имя, содержащее символы вне ASCII, браузер преобразует имя в Punycode и в таком виде использует в запросах к доменным и HTTP-серверам. Аналогично, если браузер перенаправлен на адрес http://xn--l-4ga.no, он покажет в адресной строке понятное пользователю «http://øl.no».

Сама по себе кодировка Punycode не накладывает ограничений на входные данные и может применяться для кодирования любой последовательности символов Unicode. Поэтому перед кодированием доменные имена проходят процедуру Nameprep[4], которая приводит текст к нижнему регистру и удаляет некоторые невидимые символы, например, пробелы нулевой ширины и мягкие переносы. Кроме того, в ходе этой процедуры составные символы нормализуются, то есть приводятся к одной, строго определённой форме кодирования, а именно Unicode normalization form KC. Так, последовательность кодов U+0041 (A) и U+030A (кружок-комбинатор) превращается в символ U+00C5 (Å). В него же превращается и символ U+212B (знак ангстрема), выглядящий точно так же.

Процедура Nameprep определена именно так для того, чтобы пресечь опасное злоупотребление: регистрацию доменных имён, внешне неотличимых друг от друга, но технически различных. Отправив по электронной почте ссылку на такой домен с «альтернативным» написанием имени, злоумышленник мог бы заманить жертву на сайт-имитацию. (Как мы увидим далее, Unicode-нормализации, включённой в Nameprep, недостаточно для полного исключения этого вида мошенничества.) Кроме того, Unicode содержит некоторые невидимые управляющие символы, например, маркер смены направления, задающий общее направление письма в тексте - слева направо или справа налево. Включение злоумышленником в состав доменного имени этого и других подобных управляющих символов могло бы позволить ему получить некоторую степень опасного контроля над отображением доменного имени в браузере. Поэтому важно, чтобы после обратного преобразования из Punycode в Unicode браузер удалял из строки все такие символы, ведь злоумышленник мог и не применять к своей исходной строке процедуру Nameprep.

Все современные браузеры поддерживают интернационализированные доменные имена: Firefox с версии 1.4, Opera с версии 7.11, Safari с версии 1.2, Internet Explorer с версии 7.0 (существует также дополнение к версии 6.0 для поддержки IDN). Поддержка IDN в браузере состоит из двух частей: преобразования имени из Unicode в ASCII при вводе и преобразования из ASCII в Unicode при отображении. Первая часть не несёт никакой угрозы. Браузер, в котором было бы реализовано только преобразование из Unicode в ASCII, позволял бы посещать сайты с нелатинскими именами, которые набирает пользователь, но отображал бы их в нечитаемой кодировке Punycode. Именно поддержка обратного преобразования представляет собой слабое место, уязвимое для различных атак. Например, после декодирования может оказаться, что результат содержит невидимые управляющие символы, прописные буквы (которые процедура «Nameprep» преобразует в строчные) или неканонические формы кодирования букв с диакритическими знаками. К счастью, всё это легко отсеять автоматически. Так, например, современные браузеры откажутся декодировать адрес http://xn--l-bfa.no в строку «http://Øl.no»: прописная буква «Ø» должна была превратиться в строчную, что дало бы ASCII-форму http://xn--l-4ga.no, следовательно, мы имеем дело с мошенническим сайтом, владелец которого пытается выдать его за настоящий «øl.no».

Старая атака с новыми возможностями

Атакам, основанным на внешнем сходстве доменных имён, не первый десяток лет. Общий сценарий атаки таков: злоумышленник регистрирует доменное имя, сходное по написанию с атакуемым доменом, организует на подставном домене более или менее реалистичную копию сайта-оригинала и распространяет ссылки на домен, например, посредством спама, имитирующего почтовые уведомления, рассылаемые сайтом. Целью атаки может быть сбор паролей и персональной информации, а также слежение за пользователями. Особенностью атаки, основанной на сходстве доменных имён, по сравнению с другими видами фишинга с использованием подставных веб-страниц является то, что для неё не требуется вмешательство в работу сетевых протоколов: с технической точки зрения подставной домен вполне легитимный.

Обычно для таких атак используется сходство букв с цифрами в некоторых шрифтах (буква «l» и цифра 1, буква «O» и цифра 0), сходство сочетаний букв («rn» и «m», «cl» и «d»), «незаметность» точки («wwwpaypal.com») и даже «рябь в глазах» от повторяющихся элементов («paypapal.com»). При внимательном рассмотрении адресной строки, особенно при использовании шрифтов, избегающих опасного сходства символов, все эти приёмы нетрудно распознать. Тем не менее, данный метод остаётся весьма успешным. Для противодействия ему некоторые крупные веб-сервисы превентивно регистрируют очевидные варианты ошибочного написания своих имён. Так, например, домен paypa1.com (с единицей вместо последней буквы) был зарегистрирован в 2000 году в пользу PayPal Inc компанией MarkMonitor, специализирующейся на охране торговых марок. Кроме того, в последнее время пользователям всё чаще советуют не щёлкать по ссылкам, полученным по электронной почте, а набирать адреса вручную. Впрочем, поскольку веб-сервисы продолжают включать удобные ссылки в рассылаемые почтовые уведомления, остаётся только догадываться, какая часть пользователей следует этому совету.

Интернационализированные доменные имена приносят в старый сценарий новые возможности. Поскольку в таких именах можно использовать буквы различных алфавитов, злоумышленник может заменить одну или несколько букв доменного имени их омографами - идентично или почти идентично выглядящими буквами другого алфавита. Поскольку и латиница, и кириллица исторически происходят от греческого алфавита, неудивительно, что, к примеру, во всех трёх из них есть буква «o». С точки зрения человеческого глаза это одна и та же буква, а с точки зрения Unicode - три разных. Во многих шрифтах они выглядят совершенно одинаково, поэтому маскировочный потенциал омографов намного выше, чем у «опечаток».

Атаку с использованием IDN-омографов впервые описали в 2001 году Евгений Габрилович и Алекс Гонтмахер из израильского технологического института Технион[5]. Однако первый известный случай успешной атаки по этому методу был предан огласке только в 2005 году на хакерской конференции Shmoocon. Тогда хакерам удалось зарегистрировать подставной домен pаypal.com (xn--pypal-4ve.com в Punycode), где первая буква «а» - кириллическая[6]. Благодаря публикации на Slashdot.org к проблеме было привлечено внимание общественности, вскоре после чего как браузеры, так и администрации многих доменов верхнего уровня выработали и реализовали контрмеры.

Наиболее богатые возможности для омографической атаки предоставляет кириллица. Буквы «а», «с», «е», «і», «ј», «о», «р», «ѕ», «х» и «у» (некоторые из них относятся к вариантам кириллицы, используемым в болгарском, сербском и других языках) похожи на строчные латинские буквы, а «З», «Ч» и «б» - на цифры. В греческом алфавите точную имитацию латиницы из строчных обеспечивают только буквы «ο» и «ν», но использование прописных сильно расширяет набор. Некоторые другие греческие буквы («α», «η», «ι», «ρ», «υ», «χ») похожи на латинские, но имеют видимые отличия. Ещё несколько отдельных возможностей предоставляют иврит и армянский алфавит. Наконец, если имя самого атакуемого домена - IDN, - то немецкую лигатуру «ß» можно сымитировать греческой буквой «β», а буквы расширенной латиницы «ë» и «ï» - похожими символами кириллицы.

Итак, у большинства гласных и у некоторых согласных латинского алфавита есть омографы, главным образом в кириллице. Использование омографов вместо части букв латиницы, входящих в доменное имя, порождает множество смешанных имён. С ростом длины доменного имени число возможных омографических имитаций возрастает экспоненциально, а значит, так же растёт и дороговизна превентивной скупки похожих доменных имён самим владельцем популярного домена. Так, для paypal.com возможно 31 альтернативное написание (без привлечения единицы вместо буквы «l»), для livejournal.com - 95 (учитывая возможность использования греческих «ο» и «ν», для moneysupermarket.com - 383, для computerandvideogames.com - 9215 (!).

Омографическая атака с использованием IDN опаснее обычного фишинга, основанного на сходстве доменных имён, так как, во-первых, IDN-омографы могут быть совершенно неотличимы от оригинала, а, во-вторых, использование IDN порождает экспоненциальный рост числа возможных вариантов доменного имени при увеличении его длины. Проблема усугубляется сравнительной новизной технологии, а также тем, что как веб-мастера, так и пользователи могут не обладать достаточными знаниями об иностранных языках, чтобы распознать угрозу.

Отдельно следует заметить, что в китайской, японской и корейской письменности существует похожая проблема: один и тот же символ иногда имеет несколько альтернативных написаний, которые считаются отдельными символами Unicode. Например, китайские иероглифы U+6559 (教) и U+654E (敎), обозначающие «учить», «учение», логически взаимозаменяемы. Замена одного такого символа другим может породить имя, трудноотличимое от оригинала для носителя языка. Аналогично, некоторые символы персидского языка, письменность которого основана на арабской, слегка отличаются от соответствующих арабских форм и предоставляют некоторый потенциал для маскировки подставных доменов.

Противодействие омографической атаке

При атаках, основанных на сходстве доменных имён, владелец подлинного сайта практически лишён возможностей к обороне, за исключением совета своим пользователям никогда не щёлкать по ссылкам в электронной почте. Поэтому ответственность за предотвращение злоупотреблений лежит на производителях браузеров и регистраторах доменов.

Наиболее радикальным вариантом защиты против омографической угрозы был бы полный отказ от декодирования IDN при отображении. Тогда подставное имя всегда начиналось бы с «xn» и заканчивалось нечитаемой последовательностью символов, что резко отличало бы его от оригинала. К сожалению, этот вариант сводит на нет практически все преимущества IDN.

Браузер мог бы реализовывать ту или иную эвристику, призванную отличить возможное злоупотребление. Например, разумным представляется отказ от декодирования имён, содержащих символы разных алфавитов вплотную друг к другу, и отображение таких имён в виде Punycode. Однако эвристика неизбежно давала бы иногда как ложнонегативные результаты (разрешение злоупотреблений), так и ложнопозитивные (запрет легитимных имён). Последние особенно опасны: если пользователь привыкнет к тому, что имена некоторых легитимных доменов отображаются в виде «каши» из латиницы и цифр, то появление в адресной строке других Punycode-последовательностей легко сможет пройти незамеченным, так как для человеческого глаза все бессмысленные цепочки символов выглядят похоже друг на друга. С другой стороны, некоторые имена можно сымитировать одними только символами кириллицы, без смешения алфавитов.

Администрации многих доменов верхнего уровня[7], со своей стороны, решили противостоять омографическим атакам путём введения ограничений на регистрируемые имена. Задача, стоящая перед администрацией государственного домена верхнего уровня (ccTLD), такого, как .de, облегчается тем, что такой домен вполне разумно считать предназначенным для регистрации названий на национальном языке страны. Так, например, домен .no разрешает использование букв «æ», «ø», «å», используемых в норвежском языке, а также некоторых других символов расширенной латиницы, встречающихся в прочих языках Скандинавии. Обычно домены верхнего уровня в странах, пользующихся латинским алфавитом, ограничивают репертуар разрешённых символов тем или иным подмножеством расширенной латиницы. Так же поступает международный домен .org. Такой подход в целом безопасен, поскольку среди символов расширенной латиницы нет точных омографов.

В несколько особенных условиях находится греческий домен .gr. В нём разрешены имена из произвольной смеси латинского и греческого алфавитов, однако при регистрации любого имени все омографы этого имени автоматически становятся недоступными для регистрации кому-либо, кроме владельца зарегистрированного домена. Иными словами, пространство имён разделено на классы омографической эквивалентности, и имена в одном таком классе не могут принадлежать разным владельцам. Аналогичный подход практикуют китайский домен .cn, тайваньский .tw, японский .jp и корейский .kr в отношении омографических написаний внутри дальневосточных языков. Для противодействия злоупотреблениям доменными именами на этих языках группа Joint Engineering Team (JET) разработала свод правил, принятых на вооружение администрациями упомянутых доменов[8].

Интересный подход избрала администрация иранского домена .ir: доменные имена непосредственно в домене .ir могут содержать только символы ASCII, а для имён на персидском создан специальный поддомен .ایران.ir («Иран.ir»), где латиница запрещена. Кроме того, при регистрации доменного имени на персидском языке на имя заказчика автоматически регистрируется до шести вариантов, получаемых заменой персидских букв «ک» и «ی» арабскими аналогами.

Тайский домен .th разрешает как базовую латиницу, так и символы тайского языка, поскольку никакая их смесь не может представлять омографической опасности. Болгарский домен .bg разрешает имена, состоящие либо только из кириллицы, либо только из латиницы, причём кириллическое имя обязано содержать хотя бы одну букву, не имеющую омографа в латинице (например, <я>).

Международный домен .biz разрешает, помимо латиницы, символы китайского, японского и корейского языков, однако они не представляют опасности с точки зрения возможности омографической имитации латиницы. Заказчику предлагается выбрать один из 15 разрешённых языков, а затем указать имя, полностью состоящее из символов, разрешённых для выбранного языка. Похожую политику применяет и международный домен .info. Польский домен .pl - один из самых либеральных, - руководствуется подобными правилами и разрешает и кириллицу, и греческий алфавит, и даже иврит.

После определённого периода, в течение которого в домене .ru можно было зарегистрировать кириллический домен, Координационный центр национального домена сети Интернет (http://cctld.ru) ограничил набор допустимых символов латинскими буквами, цифрами и дефисом. Для регистрации русскоязычных имён предназначен новый домен верхнего уровня .рф, который уже утверждён ICANN и будет делегирован в апреле 2010 года. Сейчас организациям доступна возможность предварительной регистрации имён в этом домене. Особенностью домена .рф является то, что имена в нём могут состоять только из кириллицы, цифр и дефисов - латиница запрещена. Само имя домена .рф было выбрано так, чтобы избежать омографии с другими доменами верхнего уровня - по этой причине не были приняты варианты «.ро» и «.ру». Домен .рф стал одним из первых интернационализированных доменов верхнего уровня, одобренных ICANN, вскоре после египетского домена .مصر («Египет»). На очереди заявки на создание болгарского домена .бг и украинского .укр.

В таблице приведён список доменов верхнего уровня, администрации которых противодействуют омографической атаке (автор приносит извинения за возможную неполноту списка). К сожалению, многие домены по-прежнему разрешают регистрацию любых имён без ограничений. Особенно прискорбно, что контрмерами до сих пор не озаботилась американская компания VeriSign, администрирующая самый крупный в мире домен верхнего уровня .com, а также популярные домены .net, .tv, .name, .cc и .jobs. Не приведены также такие домены, как .me и .ru, полностью запрещающие регистрацию IDN и этим исключающие возможность омографической атаки.

Домен

Страна

Правила

.ac

Остров Вознесения

Только расширенная латиница

.ar

Аргентина

Только расширенная латиница

.at

Австрия

Только расширенная латиница

.bg

Болгария

Только латиница либо только кириллица (кириллическое имя должно содержать хотя бы одну букву, не имеющую латинского омографа)

.biz

Международный

Выбор из 15 языков

.br

Бразилия

Только расширенная латиница

.cat

Каталанское языковое сообщество

Только расширенная латиница

.ch

Швейцария

Только расширенная латиница

.cl

Чили

Только расширенная латиница

.cn

Китай

Латиница и китайский, защита от регистрации омографов разными заказчиками (правила JET)

.de

Германия

Только расширенная латиница

.dk

Дания

Только расширенная латиница

.es

Испания

Только расширенная латиница

.eu

Евросоюз

Только расширенная латиница, либо только кириллица, либо только греческий

.fi

Финляндия

Только расширенная латиница

.gr

Греция

Латиница и греческий, защита от регистрации омографов разными заказчиками

.hk

Гонконг

Латиница и китайский, защита от регистрации омографов разными заказчиками (правила JET)

.hu

Венгрия

Только расширенная латиница

.info

Международный

Выбор из 10 языков

.io

Британская территория в Индийском океане

Только расширенная латиница

.ir

Иран

Только ASCII в домене .ir, только персидские символы в поддомене .ایران.ir («Иран.ir»), автоматическая регистрация арабских омографов на имя владельца домена

.is

Исландия

Только расширенная латиница

.jp

Япония

Латиница и японский, защита от регистрации омографов разными заказчиками (правила JET)

.kr

Корея

Латиница и корейский, защита от регистрации омографов разными заказчиками (правила JET)

.li

Лихтенштейн

Только расширенная латиница

.lt

Литва

Только расширенная латиница

.lv

Латвия

Только расширенная латиница

.museum

Международный

Только расширенная латиница либо только иврит

.no

Норвегия

Только расширенная латиница

.nu

Ниуэ

Только расширенная латиница

.org

Международный

Только расширенная латиница

.pe

Перу

Только расширенная латиница

.pl

Польша

Выбор из 37 языков

.pr

Пуэрто-Рико

Только расширенная латиница

.sa

Саудовская Аравия

Латиница и арабский (нет омографии)

.se

Швеция

Только расширенная латиница либо только иврит

.sh

Остров Святой Елены

Только расширенная латиница

.th

Таиланд

Латиница и тайский (нет омографии)

.tm

Туркменистан

Только расширенная латиница

.tw

Тайвань

Латиница и китайский, защита от регистрации омографов разными заказчиками (правила JET)

.ve

Венесуэла

Только расширенная латиница

.vn

Вьетнам

Только расширенная латиница

.рф

Россия

Только кириллица

.مصر

Египет

Только арабский


Поскольку не все администрации доменов верхнего уровня ограждают пользователей от омографических атак, производители браузеров вынуждены держать второй рубеж обороны. Реализованные в современных браузерах решения представляют собой различные компромиссные варианты между безопасностью и нуждами международного сообщества. Браузеры Firefox и Opera используют белый список доменов верхнего уровня, проводящих политику, препятствующую омографическим атакам. Если домен верхнего уровня не входит в этот список, то интернационализированные доменные имена в нём отображаются в форме Punycode. Это, в частности, означает, что интернационализированные имена в домене .com отображаются как Punycode. Увидев в адресной строке «xn--pypal-4ve.com» вместо «paypal.com», пользователь легко распознает подмену. Ведёт белый список Mozilla Foundation[9].

Internet Explorer применяет вместо белого списка эвристику и запрещает имена из смеси символов разных алфавитов, не разделённых точкой, с исключениями для языков, где такое смешение обычно. Следует заметить, что эта эвристика не защищает от атаки, при которой доменное имя полностью набирается кириллическими омографами («axe.com»).

Safari позволяет настраивать список алфавитов, разрешённых к отображению в составе IDN; кириллица и греческий алфавит в этот список по умолчанию не входят. Хотя это решение обезопасило американских и многих европейских пользователей, оно не решает проблему, в частности, для русскоязычных пользователей, оставляя их либо уязвимыми, либо без возможности пользоваться доменами с именами на родном языке.

Теоретически, меры противодействия, реализованные в браузерах, - временные. Когда все домены верхнего уровня станут пресекать регистрацию опасных имён, эти меры станут не нужны. Однако как скоро это произойдёт, предсказать трудно. Особенно сложная задача по выработке безопасной политики стоит перед компанией VeriSign, поскольку домен .com и другие домены верхнего уровня, которые она администрирует, - международные и должны удовлетворять потребности заказчиков изо всех стран мира.

Заключение

Омографическая атака основана на эксплуатации возможности включать в доменные имена символы Unicode по технологии IDN. Злоумышленник может зарегистрировать подставной домен, отличающийся от оригинала заменой латинской буквы сходной по написанию буквой другого алфавита, чаще всего кириллицы. Поскольку такое доменное имя может быть внешне неотличимо от оригинала, метод предоставляет богатые возможности для фишинга.

Администрации многих доменов верхнего уровня проводят политику, препятствующую регистрации доменных имён, которые могут быть использованы для омографической атаки. Тем не менее, домен .com и многие другие популярные домены по-прежнему допускают регистрацию имён-омографов, поэтому современные браузеры реализуют те или иные меры для недопущения отображения таких имён в угодном злоумышленнику виде.

Список ссылок

1. RFC3490. P. Faltstrom, P. Hoffman, A. Costello. Internationalizing Domain Names in Applications (IDNA), 2003
2. RFC1034. P. Mockapetris. Domain Names - Concepts and Facilities, 1987
3. RFC3492. A. Costello. Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA), 2003
4. RFC3491. P. Hoffman, M. Blanchet. Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN), 2003
5. E. Gabrilovich, A. Gontmakher. The Homograph Attack, Communications of the ACM, 45(2):128, 2002
6. E. Johanson. The State of Homograph Attacks, 2005
7. Internet Assigned Numbers Authority. Repository of IDN Practices, 2010
8. RFC3743. K. Konishi, K. Huang, H. Qian, Y. Ko. Joint Engineering Team (JET) Guidelines for Internationalized Domain Names (IDN) Registration and Administration for Chinese, Japanese, and Korean, 2004
9. Mozilla Foundation. IDN-enabled TLDs, 2010


Last updated: 17.03.2012