С этим секретным трюком хакеры зарабатывают ? $XX,000+ — теперь твоя очередь.

Введение

При Internationalized Domain Name (IDN) homograph атаках используются символы разных языков, которые выглядят практически одинаково, например, латинская «a» и кириллическая «а». На первый взгляд результат выглядит как обычный домен или адрес электронной почты, но на самом деле происходит подмена на похожие, но технически разные Unicode символы.

Например:

Когда поставщики услуг электронной почты или аутентификации, не могут должным образом различать эти визуально похожие символы, это может привести к серьёзным уязвимостям, таким как: захват учётных записей при регистрации, сброс паролей или даже обход защиты 2FA, что представляет высокий риск, если не принять надлежащих мер.

Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Разница между атаками Punycode и атаками с использованием омографов IDN

Что такое Punycode? Punycode — это способ представления Unicode символов с использованием только набора ASCII символов (используется в системах, которые напрямую не поддерживают Unicode, например, в системе доменных имен).

Что такое атаки с использованием омографов IDN?

Эти атаки обманывают систему (а иногда и пользователя), заставляя её думать, что две визуально похожие строки одинаковы, но на самом деле они совершенно разные.

Пример:

"admin@example.com" vs "аdmin@example.com" (Cyrillic "а")

Выглядят одинаково, не правда ли?

Необходимые лабораторные настройки и инструменты

Burp Suite — для перехвата и изменения HTTP-запросов

Burp Collaborator — ваш SMTP/почтовый сервер

Punycode Generator — для кодирования Unicode символов

Для этого эксперимента не требуется IDN домен или SMTP-сервер. Я смоделирую атаку только с помощью Burpsuite.

Пошаговое руководство по эксплуатации

Давайте разберём всё шаг за шагом, от простой регистрации до полноценного захвата аккаунта.

Шаг 1: Регистрация с использованием обычного адреса электронной почты

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

security@gmail.com.bcrkly6yl8ke552nzjt7jtu52w8nwdk2.oastify.com

Проверка работоспособности учётной записи

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

Шаг 2: Использование Punycode в электронной почте и повторная регистрация

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

Видите, я просто заменил букву «a» в домене электронной почты на «à», используя созданный мной Punycode генератор. Вы также можете проверить результат с помощью любого онлайн Punycode-декодера, например, с сайта Punycoder.

Шаг 3: Перехват и замена Punycode через Burp

Важное замечание: браузеры, такие как Chrome, автоматически кодируют специальные символы, что делает этот трюк невозможным. Поэтому вам нужно использовать Burp Suite, чтобы перехватить запрос и вручную заменить поле адреса электронной почты на адрес вашей Punycode версии.

Наблюдайте за ответом

Если в ответе указано что-то вроде «Email already exists», это означает, что приложение после нормализации воспринимает исходный адрес и адрес в формате Punycode как одно и то же. Это явный признак неправильной настройки и потенциальной уязвимости.

Шаг 4: Выполните сброс пароля через Punycode-адрес электронной почты

Теперь перейдите на страницу «Forgot Password» или страницу сброса пароля. Введите Punycode версию адреса электронной почты и выполните сброс через Burp Suite, чтобы избежать кодирования символов.

security@gmàil.com.bcrkly6yl8ke552nzjt7jtu52w8nwdk2.oastify.com

Шаг 5: Захват учётной записи

Отправьте запрос, и в Burp Collaborator вы увидите SMTP-обращение со ссылкой для сброса пароля. Скопируйте эту ссылку, откройте её в браузере и сбросьте пароль.

Теперь попробуйте войти в систему еще раз, но на этот раз с использованием исходного адреса электронной почты (не в Punycode формате), и нового пароля, который вы только что установили.

И... бац! Вы только что захватили аккаунт. Разве это не один из самых чистых и опасных методов захвата аккаунта, которые вы когда-либо видели? Никакого взаимодействия с пользователем, никакого фишинга, никаких переходов по ссылкам. Просто грамотное использование адресов с punycode. Вот почему это считается критической уязвимостью, и программы платят такие высокие вознаграждения за её обнаружение.

Продвинутый метод: punycode в поле имени пользователя

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

Как это работает:

1. На этот раз зарегистрируйтесь, используя имя пользователя, модифицированное с помощью Punycode, например:

ṡecurity@gmail.com.bcrkly6yl8ke552nzjt7jtu52w8nwdk2.oastify.com

2. Снова используйте Burp Suite для перехвата и изменения запроса, поскольку браузеры по умолчанию кодируют Unicode символы.

3. Если сервер примет этот адрес и зарегистрирует учётную запись — это первая победа.

4. Затем перейдите к форме «forgot password» и на этот раз введите оригинальную версию (без Punycode):

security@gmail.com.bcrkly6yl8ke552nzjt7jtu52w8nwdk2.oastify.com

5. Если вы получили письмо о сбросе пароля в Burp Collaborator, это значит, что сервер считает обе учётные записи одинаковыми.

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

? Совет по обходу 2FA: Если сайт использует 2FA, а приложение неправильно обрабатывает нормализацию электронной почты (например, обрабатывает gmáil.com как gmail.com), злоумышленник может зарегистрироваться как victim@gmáil.com, настроить 2FA, а затем использовать свой собственный код 2FA для входа в victim@gmail.com.

Смягчение последствий: как разработчики могут это предотвратить

  • Обеспечьте строгую проверку адресов электронной почты. Разрешите использовать только ASCII символы в полях ввода адресов электронной почты (например, используя регулярные выражения или библиотеки очистки входных данных).

  • Обеспечьте нормализацию адресов электронной почты. Преобразуйте Unicode в ASCII (например, используя IDN.toASCII() или аналоги) и применяйте нормализацию во всех процессах.

  • Блокируйте IDN и Punycode, если они не требуются. Отклоняйте адреса, содержащие домены с префиксом Punycode (например, xn — example).

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

Reference

Если вы хотите глубже разобраться в том, как работает эта уязвимость, включая особенности бэкенда и детали нормализации, настоятельно рекомендую ознакомиться с подробной статьей команды Voorivex. Они проделали отличную работу, подробно разобрав всю техническую схему (https://blog.voorivex.team/puny-code-0-click-account-takeover).

Вы также можете посмотреть это видео, в котором я показал всю практическую сторону этого метода: https://youtu.be/Cj1sOFHDClM

Заключение

Атаки на IDN-адреса с использованием Punycode — один из самых интересных, малоиспользуемых и мощных способов захвата аккаунтов. Используя правильные инструменты и подход, вы сможете обнаружить серьёзные уязвимости, которые многие упускают из виду.

Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Комментарии (0)