В последние годы обширный список доменов первого уровня (top level domains, TLD) регулярно пополняется: всё чаще в дополнение к обычным доменам .com, .org, .ru, .net стали встречаться домены .aero, .club итд. Они пользуются спросом у различных бизнесов, которые хотят выделиться необычным адресом сайта, подчеркнуть свою сферу деятельности или просто опоздали к разделу вкусных адресов в старых доменных зонах.
Следуя за спросом, Google анонсировал в мае 8 новых доменов, включая два неотличимых от популярных расширений файлов адреса: .zip и .mov. Оба эти домена были делегированы ещё в 2014 году, а сейчас их открыли свободной регистрации доменов второго уровня: теперь любой может приобрести домен .zip или .mov всего за несколько долларов.
От всех остальных доменов верхнего уровня эти два отличаются тем, что соответствующие URL крайне трудно отличить от имен файлов с таким же разрешением. IT и ИБ-специалисты немедленно подняли тревогу о проблемах этого TLD: возможная путаница, ошибки в обработке ссылок и новые схемы фишинга.
Причём проблемы с ним достаточно очевидны: первый же комментарий к новости об этом на Хабре был о том, что будет вполне ощутимый поток людей, которые вставляют название файла в адресную строку браузера, надеясь что он найдется локально - а попадают на веб сайт, содержащий любые вредоносные скрипты.
.zip и .zip: перепутать нельзя отличить
Файлы с расширениями zip и mov известны уже несколько десятилетий: zip — это де-факто стандарт для архивов, а mov является одним из самых популярных контейнеров для видео. Домены mov и zip по задумке Google предназначены для «технарей» (techies), но приобрести их, по сути, может кто угодно для любых целей.
Таким образом, теперь, встретив упоминание, например, update.zip, только по контексту можно понять, идет ли речь о сайте или о файле. Но контекст понимают люди, компьютеры этого обычно не могут. Поэтому такое упоминание может вызвать проблемы в самых разных приложениях, например в этом примере Лаборатории Касперского в Twitter:
Понятно, что в этом твите речь идет о файлах, но Twitter превращает их имена в ссылки на веб-сайты. Если зарегистрировать домены test.zip и video.mov, то кликнувших по ссылке на файл может ждать, например, тематический фишинг.
Сможете ли вы быстро определить, какой из приведенных ниже URL-адресов является законным, а какой — вредоносным фишинговым, который сбрасывает evil.exe?
https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1271.zip
https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.1.zip
Это пример из популярной статье на Medium, в которой подробно разобрали, как злоумышленник может использовать этот TLD в сочетании с оператором @ и символом Юникода ∕ (U+2215) для создания очень убедительного фишинга.
Как вы можете видеть в разбивке URL-адреса ниже, все, что находится между схемой https:// и оператором @, рассматривается как информация о пользователе, а все, что находится после оператора @, немедленно обрабатывается как имя хоста. Однако современные браузеры, такие как Chrome, Safari и Edge, не хотят, чтобы пользователи случайно аутентифицировались на веб-сайтах одним щелчком мыши, поэтому они игнорируют все данные в разделе информации о пользователе и просто направляют пользователя на часть имени хоста URL-адреса. Например, URL-адрес https://google.com@bing.com фактически перенаправит пользователя на сайт bing.com.
Однако, если мы начнем добавлять косую черту к URL-адресу, который идет перед оператором @, например https://google.com/search@bing.com, наш браузер начнет анализировать все после косой черты как путь, и теперь часть URL-адреса bing.com будет игнорироваться, и пользователь будет перенаправлен на google.com.
Итак, допустим, мы хотели создать фишинговый URL-адрес, содержащий косую черту перед оператором @, чтобы выглядело так, как будто жертва посещает путь URL-адреса google.com, но мы хотели, чтобы он направлял жертву на bing.com.
Согласно этому отчету об ошибках Chromium от 2016 года, символы Юникода U+2044 (⁄) and U+2215 (∕) разрешены в именах хостов, но не рассматриваются браузером как косая черта. Оба этих символа Юникода напоминают легитимный символ косой черты U+002F (/).
Если мы создадим URL-адрес, например:
он направит пользователя на bing.com, так как косая черта U+2215 рассматривается как часть пользовательской информации URL-адреса, а не как начало пути.
Если не знать, что ищешь, то на чересчур «косые» косые черты можно и не обратить внимания. Пользуясь этим, можно создать очень убедительную подделку законного файла .zip с новым TLD Google .zip.
Возьмём для примера пакет кода Github. Если пользователь хочет загрузить копию программного обеспечения с открытым исходным кодом Kubernetes, он должен посетить раздел выпусков Github и загрузить URL-адрес из:
https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.1.zip
Возьмем вышеприведенный URL-адрес и заменим все косые черты после https:// на косые черты U+2215 (∕) и добавим оператор @ перед v.1.27.1.zip.
https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1.27.1.zip
Посещение приведенного выше URL-адреса приведет нас к части URL-адреса, посвященной имени хоста, v1.27.1.zip. К сожалению, домен 1.zip уже заявлен, но мы можем заявить права на аналогичный URL v1271.zip за 15 долларов.
Мы можем развернуть EC2 с помощью простого приложения Python Flask и указать DNS-запись v1271.zip на наш EC2. Приложение Flask ответит на любой веб-запрос вложением evil.exe
Sample Flask App running on an EC2
Наш вредоносный URL-адрес ниже выглядит почти неотличимым от законного URL-адреса:
вредоносный:
https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1271.zip
легитимный:
https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.1.zip
Только странноватость начертания шрифта делает его примечательным для человеческого глаза. В почтовом клиенте мы могли бы сделать его еще более убедительным и изменить размер шрифта @ в адресе 1, что делает его фактически невидимым для пользователя, но все еще присутствующим как часть URL-адреса.
Здесь мы видим демонстрацию того, как пользователь получает пример фишинга, а evil.exe сразу загружается с сервера v1271.zip.
На сайте «Касперского» рассказывается, что исследователь безопасности mr.d0x нашел еще один вариант эксплуатации домена .zip для фишинга. Описанная им техника получила название архиватор-в-браузере и предполагает использование сайтов, имитирующих интерфейс программ для работы с архивами.
Пользователь, считая, что открывает файл .zip, попадает на одноименный сайт и вместо списка файлов видит, по сути, ссылки. За ними может скрываться что угодно — линк на скачивание исполняемого зловреда, или запрос на ввод рабочих учетных данных для доступа к документу. Интересен также и описанный тем же автором механизм доставки вредоносного линка при помощи Windows File Explorer. Если атакующему удастся убедить жертву запустить поиск несуществующего файла .zip, то File Explorer автоматически откроет сайт с имитацией архиватора, размещенный на одноименном домене.
Строго говоря, возможность фишинга с помощью доменов первого уровня, существовала и раньше:
-
один из старейших доменов, .com, по совместительству является легитимным расширением исполнимых файлов в MS-DOS (и в старых версиях Windows)
-
домен острова Святой Елены (.sh) совпадает с расширением Unix-скриптов,
-
домен острова Монтсеррат .ms совпадает с расширением исполняемых файлов Windows,
-
домен .download, доступный с 2015 года, используется в качестве расширения незавершённой загрузки файлов из интернета.
Все они позволяют делать похожие схемы фишинга:
https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1234.download
https://github.com∕microsoft∕office∕archive∕refs∕tags∕@v1234.ms
Как и возможность просто делать ссылки абсурдно длинными, пряча в них что угодно — возможность, которая только усугубляется в email-рассылках.
Однако появление домена .zip всё же означает новое качество этих рисков, потому что позволяет выдавать веб-ссылки за один из самых распространённых файловых форматов, известных даже самым непродвинутым юзерам. С тем же успехом можно создать домены .torrent, .exe, .dmg и .html.
Уже не теоретическая угроза
Найдены первые фишинговые сайты в зоне .zip, эксплуатирующие тематику обновлений Microsoft Office.
Обнаружение
-
Проверяйте домены на символы U+2044 (⁄) и U+2215 (∕). как видно даже на примерах в этой статье, они достаточно сильно бросаются в глаза, если знать, что ищешь.
-
Обращайте внимание на домены, содержащие операторы @, за которыми следуют файлы .zip.
-
Всегда будьте осторожны при загрузке файлов с URL-адресов, отправленных неизвестными получателями, и наведите указатель мыши на URL-адреса, прежде чем щелкнуть, чтобы увидеть расширенный путь URL-адреса.
Как решить эту проблему глобально?
Для этого надо вернуться к её истокам: все проблемы доменов .zip и .mov сводятся к тому, что кто-то в 2014 году решил, что будет прикольно запустить новые домены первого уровня из узнаваемых сокращений — и никто за последующие почти 9 лет до их фактического запуска их не остановил.
Запуск подобных доменов — это хороший маркетинговый ход: многие захотят креативный выделяющийся адрес для своего проекта по цене обычного домена. Для условного поисковика авиабилетов возможность запустить сайт в зоне .aero — инфоповод, равноценный обновлению самого сайта, только гораздо дешевле. Но теперь погоня за продаваемостью таких адресов уже зашла на территорию угроз цифровой безопасности — туда, где не место развлечениям. Не всё должно продаваться и покупаться.
Вероятно, самым надёжным и устойчивым решением будет добиться от ICANN разделегирования доменов .zip и .mov и введения строгих ограничений на все новые «прикольные» домены, исключающие пересечение с уже существующими файловыми форматами.
Текст: @EgorKotkin
Иллюстрации: Антон Дмитриев
-
Для оплаты зарубежными картами или криптовалютой: xeovo.com. Скидка 10% по промокоду HABR2023
-
Для оплаты рублями: VPNPay
Автор:
xeovo