Unicode — стандарт кодирования символов, включающий знаки почти всех письменных языков мира. Его использование началось после того, как стало понятно, что для разных языков нужны различные кодировки и поэтому их необходимо собрать воедино. Кодировкой называют представление цифр, букв и всех остальных символов в памяти компьютера и на понятном ему языке. Кодировки бывают разные, такие как, например, cp1251 или ISO-8859-1, но с течением времени их использование стало неудобным т.к. во-первых, для корректного отображения символов разных языков необходимо использовать разные кодировки. А во-вторых, числовое представление того или иного символа может быть одинаковым для разных букв в разных языках. Например, двоичное представление 0b11011111 в кодировке cp1251 — это буква «Я», но в то же время в кодировке ISO-8859-1 это немецкая Eszett. С появлением Unicode ситуация улучшилась и теперь все буквы и символы всех языков мира находятся в одной огромной таблице. Unicode — это стандарт, по которому символы связаны с некоторым числовым значением, а уже для представления этих чисел разработанны Unicode-кодировки, самыми распространенными из которых стали UTF-8 и UTF-16.

Информация предоставлена исключительно в ознакомительных целях. Не нарушайте законодательство!

Омографы

К чему это все? Вместе с удобством использования Unicode появились и новые возможности для злоумышленников. Многие знают или слышали про ARP/IP/DNS спуффинг. Для Unicode используется тот же метод, только в этом случае оригинальные символы заменяются на идентичные или максимально похожие из других языков. Например, в адресе example.com букву "a" можно заменить на "a", но уже русскую, и визуально они будут выглядеть идентично. Проблема не новая, ведь раньше можно было вводить пользователей в заблуждение и с помощью ASCII-кода. Например, при написании адреса example.com, букву "l" злоумышленники меняют на "I", которые, в зависимости от используемого шрифта, ничем визуально не отличаются. Это называется омограф, когда слова выглядят одинаково в написании, но имеют разное произношение. Подобная история происходила с PayPal. Эти методы спуффинга направлены исключительно на пользователей, ведь если набирать адрес на клавиатуре, то ошибиться будет довольно сложно, но пользователи любят открывать ссылки, которые присылаются на электронную почту или любым другим способом. А какой URL у открывшегося, при клике на ссылку, сайта пользователь может и не заметить.

Второй способ немного схож с предыдущим — использование Punycode. Дело в том, что в A-записях DNS разрешены только символы английского алфавита, цифры и дефис. Но если есть необходимость использовать символы из другого языка, например, при использовании домена на русском языке пример.рф, то необходим Punycode. Домен pentestit.ru в кодировке будет выглядеть как pentestit.ru, а pеntеstit.ru, где при помощи Punycode будут использоваться русские буквы "е" — как xn--pntstit-7ggc.ru.

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

С ног на голову

Также довольно распространенный вариант, которым пользуются злоумышленники, это использование «перевертышей». Дело в том, что Unicode поддерживает все языки и некоторые требуют написания не слева направо, а наоборот. Для этого в Unicode был добавлен символ U+202E: right-to-left-override, который как раз разворачивает надпись. Этим активно пользуются злоумышленники, которые, например, gpj.exe превращают в exe.jpg в названии файла. Пользователь, видя расширение .jpg, запускал файл вместе с вредоносным кодом внутри.

Сделать это можно следующим образом:

  • Создаем файл с расширением .exe, например gpj.exe
  • Находим и копируем символ U+202E:Right-to-Left-override.
  • Вставляем символ в самом начале имени файла при его изменении. Таким образом файл gpj.exe будет отображаться как gpj.exe

О компании

Коллектив Pentestit представляют сертифицированные специалисты с опытом работы в области ИТ и ИБ более 10 лет. Специализируясь в области практической информационной безопасности, мы производим поиск уязвимостей на защищенных Интернет-ресурсах, выступаем с докладами на международных форумах, разрабатываем программное обеспечение для защиты от хакерских атаки и создаем уникальные лаборатории тестирования на проникновение «Test lab», в которых принимают участие профессионалы со всего мира.

Помимо социальной инженерии, особенность Unicode используется и для обхода средств защиты от хакерских атак, например, WAF. О том, как это происходит, и как мы блокируем такие попытки с использованием машинного обучения можно узнать в статье «Мамкин» безопасник: защита сайта от хакерских атак.