Punycode и омографы: когда поддельный домен похож на настоящий
Посмотрите на два адреса: paypal.com и pаypal.com. Одинаковые? Для глаз — да. Для компьютера — нисколько: во втором адресе вторая «а» — буква кириллицы, а не латинская «a». Это два разных домена, которые могут принадлежать двум разным людям. Так устроены атаки с омографами, и чтобы их понять, нужно ненадолго отвлечься на то, как интернет записывает имена.
Unicode, ASCII и Punycode: три слова, одна простая идея
Изначально доменные имена принимали только крошечный алфавит под названием ASCII: латинские буквы от a до z без диакритики, цифры и дефис. Никаких «é» или «ü», не говоря уже об арабском, китайском или кириллице.
Но мир пишет десятками алфавитов. Unicode — большой каталог, который даёт номер каждому символу каждой письменности: латинская «a» имеет номер U+0061, кириллическая «а» — U+0430. Одинаковый рисунок, разные номера.
Чтобы доменные имена можно было писать на любом языке, не перестраивая всю сеть, придумали переводчика — Punycode. Он превращает имя в Unicode в имя, где используются только символы ASCII, и помечает его префиксом xn--. Браузер показывает красивую версию; сеть видит только переведённую.
Как устроен домен вида «xn--»
Возьмём совершенно честный пример: французский домен société.fr («общество»). Сеть не умеет читать «é». Punycode откладывает особые буквы, оставляет обычные и добавляет в конце короткий код, который говорит, куда вернуть акценты:
société.fr → xn--socit-esab.fr
Мы видим «socit» (обычные буквы), затем «esab» — код, указывающий, какие символы и куда вставить. Префикс xn-- лишь предупреждает: «внимание, это имя переведено». Так работают миллионы законных имён — на немецком, арабском, китайском, русском (например, все домены в зоне .рф). Поэтому xn-- сам по себе не подозрителен. Подозрительным он становится, когда подражает известному бренду.
Атаки с омоглифами: ложные близнецы
Омоглиф — символ, который до неразличимости похож на другой. В Unicode их множество: кириллические «а», «е», «о», «р» и «с» — идеальные двойники латинских a, e, o, p и c. Греческая «ο» подражает «o».
Мошенник покупает домен, в котором одна или несколько букв заменены двойниками. В 2017 году исследователь эффектно это продемонстрировал: он зарегистрировал xn--80ak6aa92e.com, который пишется аррӏе.com полностью кириллическими буквами, и несколько крупных браузеров тогда просто показывали в адресной строке «apple.com». С тех пор браузеры этот случай исправили.
Почему адрес может выглядеть законным
Современные браузеры применяют правила осторожности: если имя подозрительно смешивает алфавиты или слишком похоже на известный домен, они показывают форму xn-- вместо красивой версии. Это хорошая защита, но у неё есть пределы:
- вне адресной строки эти правила действуют не всегда: в тексте письма, SMS, PDF или мессенджера «замаскированная» версия показывается как есть;
- правила различаются от браузера к браузеру, от версии к версии и от приложения к приложению;
- беглый взгляд на маленьком экране не отличит два одинаковых символа. И Unicode нужен не всегда:
rnизображаетm,1изображаетl, как объясняет руководство Фишинг: как мошенники доставляют свои письма.
И, как у любого домена-ловушки, у сайта может быть действительный сертификат HTTPS и красивый замочек: они доказывают, что соединение зашифровано, а не что сайт честный.
Как по-настоящему проверить домен
Если есть сомнения, не доверяем тому, что видим, а заставляем заговорить настоящее имя:
- Не кликаем. Копируем ссылку (правый клик, «копировать адрес ссылки»).
- Вставляем её в конвертер Punycode (их много, бесплатных, в интернете): если для имени, которое должно быть самым обычным, появилась форма
xn--, это ловушка. - Выделяем домен: часть прямо перед первым «/». Подробнее об этом — в руководстве Квишинг: когда фишинг прячется за QR-кодом.
- Идём безопасным путём: через закладку, сохранённую самостоятельно, или официальное приложение. Помогает и менеджер паролей: двойник его не обманет, и на поддельном домене он ничего не предложит.
Baitback делает часть этой работы автоматически: если вставить в него письмо, он отмечает ссылки в Punycode (форма xn--) и домены-двойники знакомых ему брендов, в том числе на омоглифах, а также проверяет конечную точку после переадресаций.
Находим регистратора и хостинг
Чтобы домен исчез, ищем, кто его продал и кто его размещает. В инструментах поиска всегда используем форму xn--: это настоящее имя, которое знают реестры.
- Запрос RDAP или WHOIS по домену показывает регистратора, его адрес для жалоб («abuse») и дату создания домена. Двойник бренда, созданный на прошлой неделе, почти не оставляет сомнений.
- По IP-адресу сайта находим его хостинг или стоящий перед ним CDN, который тоже принимает жалобы и передаёт их дальше.
Регистратор здесь — самый действенный участник: домен, подражающий бренду с помощью омоглифов, — очень явный случай злоупотребления, и блокировка имени разом отключает сайт, почту и все связанные страницы.
Сообщаем о домене
Хорошая жалоба умещается в несколько строк: форма в Unicode и форма xn--, бренд, которому подражают, полный адрес страницы, снимок экрана, дата и время. Отправляем её регистратору и хостингу или CDN и предупреждаем бренд.
Если домен пришёл в письме, начинаем с Baitback: вставляем полный исходный текст письма, инструмент находит сервер отправки и его хостинг, выделяет подозрительные ссылки и готовит жалобы. Он также напоминает о платформах браузеров (Google Safe Browsing, Microsoft, Netcraft…), которые за несколько часов могут показать всем посетителям красное предупреждение.
- Две одинаковые на вид буквы могут быть для компьютера разными символами: это и есть омоглиф.
- Punycode переводит имена в Unicode в форму ASCII, начинающуюся с
xn--. xn--сам по себе не подозрителен, но подозрителен в имени, которое должно быть обычным или подражает бренду.- Домен проверяют, копируя ссылку, а не разглядывая её, и заходят через закладку или официальное приложение.
- Жалуемся регистратору, указав обе формы имени: блокировка отключает всё сразу.