Браузеры на основе Chromium позволяют превратить почти любую веб-страницу в нечто похожее на нативное приложение: собственное окно, собственная иконка в Dock, без видимого браузерного интерфейса. Эта функция предназначена для легитимных сайтов, которыми вы часто пользуетесь. Исследователь безопасности mr.d0x задокументировал 11 июня 2024 года, как тот же механизм можно превратить в набор для фишинга: установить страницу как приложение, а затем нарисовать поддельное окно браузера прямо внутри HTML самого приложения — вплоть до адресной строки.
Как строится иллюзия установленного приложения
В задокументированной технике жертву приводят на страницу, предлагающую установить её как приложение, причём сам запрос на установку показывает поддельное имя, например «Microsoft Login». После установки приложение открывается в собственном окне без интерфейса браузера. Поскольку настоящей адресной строки, которую можно было бы подделать, там нет, страница рисует собственную с помощью CSS: убедительную подделку, размещённую ровно там, где была бы адресная строка браузера, показывающую любой URL, какой захочет атакующий. Для того, кого приучили «проверять адресную строку», приложение как будто проходит эту проверку, потому что то, на что он смотрит, вообще не является адресной строкой браузера.
Что на самом деле делает это убедительным
- Устанавливается как обычное ПО: иконка в Dock или папке Приложений, собственное окно, иногда push-уведомления — и всё это не требует выхода из обычного процесса установки в браузере.
- Имя и иконка в запросе на установку — это то, что объявит манифест атакующего. Ничто на этапе установки не проверяет, соответствует ли имя реальному сайту.
- После запуска поддельный интерфейс сохраняется на протяжении всей сессии: нет вкладок браузера, панели закладок или иконок расширений, которые могли бы разрушить иллюзию.
Проверяем, что реально установлено, из терминала
На macOS Chrome и браузеры на основе Chromium устанавливают такие «приложения» как обычные бандлы приложений, и каждый из них записывает настоящий URL, с которого был установлен, внутри собственного Info.plist — независимо от того, какое имя показывает Finder. Мы проверили это на реальном, установленном на данный момент приложении на этом Mac (установленном через браузер ярлыке на панель Cloudflare):
ls ~/Applications/*.localized/
Cloudflare.app
plutil -p ~/Applications/"Brave Browser Apps.localized"/Cloudflare.app/Contents/Info.plist | grep -i CrAppMode
"CrAppModeShortcutName" => "Cloudflare"
"CrAppModeShortcutURL" => "https://dash.cloudflare.com/"Поле CrAppModeShortcutURL — это факт, который поддельная адресная строка не может изменить: оно устанавливается один раз, во время установки, на основе собственного манифеста страницы, и именно его приложение реально открывает при каждом запуске. Приложение под названием «Bank Login», чей CrAppModeShortcutURL указывает не на настоящий домен вашего банка, само себя выдало.
- Выведите список всех установленных веб-приложений:
ls ~/Applications/*.localized/*/, для каждого используемого вами браузера на основе Chromium (Chrome Apps.localized,Brave Browser Apps.localized,Edge Apps.localizedи аналогичных). - Для всего, установку чего вы чётко не помните, или что работает со входом в систему, проверьте настоящий URL:
plutil -p "<путь>/Contents/Info.plist" | grep -i CrAppMode. - Следите за настоящим источником, который Chromium ненадолго показывает при открытии приложения, и читайте именно его, а не собственный нарисованный интерфейс приложения.
Почему это сетевая проблема, а не только проблема интерфейса
Как бы ни выглядело окно, странице для сбора учётных данных всё равно нужно отправить собранное куда-то по сети, с процесса, работающего на вашем Mac. Файрвол, который спрашивает только «подписан ли и доверен ли бинарник этого приложения», здесь не поможет: установленный PWA работает внутри собственного подписанного, доверенного исполняемого файла браузера. Что может помочь — это наблюдение за самим соединением: какой процесс его устанавливает и куда оно реально идёт, независимо от того, чем себя выдаёт окно на экране.
Какое место здесь занимают FireAI и HisnLabs
Whatever a fake login screen looks like, it still has to send the password it captured somewhere; FireAI shows you exactly which process is trying to phone home and to what destination, installed web app or not, and lets you say no before anything leaves your Mac.
FireAI — это собственный продукт HisnLabs: ИИ-файрвол, работающий прямо на вашем Mac. Он показывает простым языком каждое соединение, которое устанавливают ваши приложения, и позволяет вам решать, что покидает ваш Mac, — его ИИ работает локально, поэтому ваш трафик никогда не отправляется ни нам, ни кому-либо ещё. Команда исследователей безопасности HisnLabs — это те, кто поддерживает точность этих решений: они каталогизируют, какие домены являются обычной телеметрией, а какие — реальным сервисом, отслеживают страну и сеть, стоящие за соединением, и обучают локальную модель (функцию Autopilot) на реальных шаблонах трафика — и ничего из этого не покидает ваш Mac.
Вы можете прочитать о технических решениях, лежащих в его основе, или попробовать FireAI в течение 17 дней на странице FireAI от HisnLabs.
