Выпустили пар: мошенники используют метод Browser-in-the-Browser для кражи аккаунтов у игроков на Steam

defdfc02e5d4c4d6d093409de939dc0d.png

«Хочу рассказать историю, как я недавно лоханулся и потерял свой аккаунт Steam со 100+ играми и донатом на общую сумму больше 15 тыщ рублей». Или вот: «Несколько косарей в Стим вложено, и штук 20 игр, некоторые с дополнениями, на нем висит». Таких историй десятки, если не сотни. В июле специалисты Центра реагирования на инциденты информационной безопасности Group-IB (CERT-GIB 24/7) обнаружили более 150 мошеннических ресурсов под один из самых популярных у геймеров онлайн-сервисов — платформу Steam. Для кражи логинов-паролей от учетных записей злоумышленники используют новую фишинговую технику Browser-in-the-Browser — из-за нее фейковые страницы довольно легко спутать с легальным ресурсом. Иван Лебедев, руководитель группы по защите от фишинга CERT-GIB, и Дмитрий Ерошев, аналитик CERT-GIB, разбирались, как работает новая схема.

Half-Life, Counter-Strike, Dota 2, S.T. A.L.K. E.R. — все эти популярные игры в разные годы были выпущены на платформе Steam, созданной компанией Valve в 2003 году. Сегодня у Steam почти 120 миллионов пользователей и более 50 000 игр в «портфеле». Аккаунт начинающего геймера стоит в пределах нескольких десятков долларов, однако акки ведущих игроков оцениваются в весьма приличную сумму — от $100 000 до $300 000. Вот уже два десятка лет мошенники создают сотни фишинговых ресурсов, нацеленных на Steam, но выглядят они — давайте это признаем — довольно топорно, так что пользователи легко определяли подделку.

Угроза пришла, откуда не ждали и имя ей — Browser-in-the-Browser. Эта новая фишинговая техника была впервые описана весной этого года исследователем mr.d0x. Она позволяет создавать на фишинговом ресурсе поддельное окно браузера, на первый взгляд неотличимое от настоящего. Жулики решили воспользоваться тем, что на платформе Steam аутентификация пользователя происходит во всплывающем окне, а не в новой вкладке. Учитывая опасность для пользователей, мы решили детально проанализировать работу технологии Browser-in-the-Browser на примере фишинг-кита с ресурса, нацеленного на бренд Steam. И, разумеется, CERT-GIB предупредил компанию Valve об угрозе.

Билет на турнир по CS: как работает схема

Чтобы заманить жертв на страницу-приманку с кнопкой входа в учетную запись, злоумышленники отправляют пользователям сообщения с разными привлекательными предложениями: присоединиться к команде для участия в турнирах по LoL, CS, Dota 2 или PUBG, проголосовать за команду, купить со скидкой билеты на киберспортивные мероприятия и т. д.

a92b75f7b6ff4f57ae3cb5d3f63760b1.jpg54b75e622b824d7e79d75e3c3859443b.jpg

В другом случае во время просмотра популярного видео с игрой (запись стрима, геймплей) зрителям предлагали перейти на другой ресурс, чтобы получить бесплатный скин. Рекламу фишинг-сайта можно увидеть как на экране, так и в описании видео.

b1286edd8a71a5add36dfc6d193c282e.png

Практически любая кнопка на подобных ресурсах-приманках будет открывать форму ввода данных учетной записи, стилизованную под легальное окно Steam. Там будет фальшивый зеленый замочек, поддельное поле URL, которое можно скопировать, и даже дополнительное окно двухфакторной аутентификации Steam Guard.

Пример фишинговой страницы-приманкиПример фишинговой страницы-приманкиПример фишинговой страницы-приманкиПример фишинговой страницы-приманки

Подчеркнем: в отличие от стандартного фишингового ресурса, который бы открыл фишинговую страницу в новой вкладке (или произвел на нее редирект), в данном случае открывается поддельное окно браузера на прежней вкладке, так что у пользователя не возникает никаких подозрений. Отдельного внимания заслуживает возможность смены языка, которая позволяет отображать страницу на 27 языках.

Фишинг-страница, использующая Browser-in-the-BrowserФишинг-страница, использующая Browser-in-the-Browser

Чем техника BitB отличается от стандартного фишинга?

Обычный фишинг

BitB-фишинг

Сразу показывает фишинговую форму ввода данных или перенаправляет на нее.

Отображает форму ввода данных во «всплывающем окне браузера».

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

URL в адресной строке принадлежит стороннему сайту, на который пытается войти жертва. URL во «всплывшем окне» идентичен подлинному.

Ресурс может не иметь SSL-сертификата.

В поддельном окне всегда отображается замочек SSL-сертификата.

  • Аутентификацию во всплывающем окне вместо новой вкладки все чаще используют настоящие сайты, в том числе платформа Steam. Это вызывает меньше подозрений, так как соответствует ожиданиям.

  • Ссылка в «адресной строке» поддельного окна не отличается от легитимной, так как это не настоящее окно браузера. Ее можно выделить, скопировать, открыть в другой вкладке и проверить на легитимность.

  • В адресной строке поддельного браузера отображается замочек SSL-сертификата организации.

  • Несмотря на то, что это ненастоящее окно, кнопки закрытия и сворачивания работают корректно.

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

  • Настоящие всплывающие окна часто блокируются браузером, тогда как для поддельного блокировка не предусмотрена.

Стоит также отметить наполнение фишинговой страницы. Она полностью скопирована с подлинной — в большинстве случаев сохраняется даже предупреждение о том, что данные вводятся на стороннем ресурсе.

Подлинная страница ввода учетных данныхПодлинная страница ввода учетных данных

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

Введенные данные сразу отправляются злоумышленнику и автоматически вводятся на официальном ресурсе. При этом, если данные некорректны, жертва увидит ошибку.

Ошибка ввода учетных данныхОшибка ввода учетных данных

Если у жертвы включена двухфакторная аутентификация — ресурс выдаст запрос кода. Код создается отдельным приложением, которое может также прислать push-уведомление на устройство жертвы.

Запрос кода 2FA на фишинговом ресурсеЗапрос кода 2FA на фишинговом ресурсеПовторный запрос кода 2FA на фишинговом ресурсеПовторный запрос кода 2FA на фишинговом ресурсеЗапрос кода из SMS на фишинговом ресурсеЗапрос кода из SMS на фишинговом ресурсе

Анализ фишинг-кита

Фишинг-кит, с помощью которого создали рассматриваемый ресурс, представлен следующим деревом директорий:

Структура фишинг-китаСтруктура фишинг-кита

Стоит отметить, что в ките отсутствуют типичные для фишинга PHP-скрипты: весь сайт основан на двух HTML-страницах и нескольких JS-скриптах. Также нет какой-либо защиты от исследователей — фишинг доступен из любой локации с любыми условиями доступа. Это позволяет злоумышленникам расширить охват потенциальной аудитории взамен на уменьшение времени жизни фишинга — его быстрее обнаруживают и блокируют.

Как мы уже сказали, первая страница фишинга (index.html) может выглядеть абсолютно по-разному. Для работоспособности фишинга важно наличие лишь трех составляющих:

  1. JS-скрипта, который создает поддельное окно браузера (fnqduadizanu.js)

8e8e437194e08bb4c967a3bc84397495.png

  1. ссылки на HTML-файл с формой ввода данных (steam.html)

    e983e939ce6c207aabb308246228614b.png
  1. кнопки, при клике на которую вызывается метод создания поддельного окна браузера

    fde22e0acf04f28978c700789585c933.png

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

Отрисовка Browser-in-the-Browser

Метод window.$oA (), вызываемый при нажатии на кнопку, описан в файле fnqduadizanu.js. В момент подгрузки скрипта методу window.$oA присваивается функция E ().

f04571529a85e4f54ed11478ea72c7e9.png

Оригинальный код этой функции обфусцирован для усложнения анализа. Большинство используемых скриптом элементов собраны в большой массив, к которому обращаются посредством функций.

Оригинальный код функции, отвечающей за создание поддельного окна браузераОригинальный код функции, отвечающей за создание поддельного окна браузераДеобфусцированный кодДеобфусцированный код

В зависимости от значения в параметре window.$authType скрипт создает либо поддельное окно методом document.createElement, либо новое — методом window.open. Этот параметр возвращается при запросе к C2 злоумышленников, домен которого указан в файле steam.html. URL для обращения генерируется псевдослучайно при помощи вызова функции A(8).

Домен C2 злоумышленниковДомен C2 злоумышленниковURL, к которому обращается фишинг за значением $authTypeURL, к которому обращается фишинг за значением $authType

Поддельное окно состоит лишь из трех элементов:

  1. Заголовок окна с кнопками управления.

  2. Адресная строка.

  3. Содержимое steam.html, встраиваемое при помощи тега iframe.

Структура окна Структура окна «браузера в браузере»

Какой именно файл будет подгружен в iframe, определяется переменной window.$sd, задаваемой в index.html. Такая структура позволяет злоумышленникам создать фишинг на другой бренд лишь путем замены HTML-файлов, без изменения скриптов.

Обработкой введенных данных и запросом дополнительных кодов занимается скрипт steam.js. Введенные в формы данные отправляются на C2 злоумышленников, URL которого указывается в полях $domainToLoginи $loginLink в файле steam.html.

ffd5c00ca26840e745d2939345d521ae.png

Учетные данные отправляются как есть, без дополнительных проверок. Код 2FA и SMS проверяются на длину (5 или 7 символов), а также по регулярному выражению:

c151500e560c76570d334bf1c95fe947.png

Украденные данные вводятся на стороне C2, и в зависимости от результата на фишинговый ресурс возвращается ответ с кодом дальнейших действий.

Код в ответе от C2

Пояснение

85

Удалось пройти первый этап аутентификации, необходимо ввести код 2FA. Отображается форма ввода 2FA.

88

Не удалось пройти второй этап аутентификации, необходимо повторно запросить код 2FA. Отображается ошибка ввода 2FA.

987

Действия вызвали подозрения системы безопасности, отправлено SMS на номер жертвы. Отображается форма ввода SMS.

0, 1, 69, 74, 92, 988

Успешная аутентификация. Производится редирект на URL, указанный в ответе от C2. 

Другие коды

Не удалось пройти первый этап аутентификации. Отображается ошибка ввода учетных данных.

В отличие от схем Phishing-as-a-Service, в которых фишинг-киты разрабатываются для продажи, фишинг-киты на Steam держат в большем секрете. Кампании проводят группы злоумышленников, собираемые на форумах в дарквебе или в Telegram. Свои действия они координируют в Telegram или Discord.

6ac9a6c5903dbd63b2bf8d5c23a9aba1.pnge1cea38d90b5ea775eb97f0c4a84722b.pnga659d1d3ccb7fb068678b4520b9ac2d7.pngd4d546f329f2fd5a43bba187756426b2.png

Рекомендации: как отличить поддельное окно браузера

  1. Сверить дизайн заголовка и адресной строки открывшегося окна. Подделка может отличаться от стандартной для вашего браузера. Стоит обратить внимание на шрифты и вид кнопок управления.

  2. Проверить, открылось ли новое окно в панели задач. Если нет — окно поддельное.

  3. Попытаться увеличить/сузить окно — поддельное не предоставляет такой возможности. Также его не получится развернуть на весь экран соответствующей кнопкой в заголовке.

  4. Так как окно ограничено экраном браузера, его не получится передвинуть на элементы управления изначального окна.

  5. Кнопка сворачивания поддельного окна просто закрывает его.

  6. Замочек, отображающий сертификат, — обычное изображение. При нажатии на него ничего не произойдет, тогда как настоящий браузер предложит посмотреть информацию об SSL-сертификате.

  7. Поддельная адресная строка не функциональна. В некоторых случаях она не позволяет ввести другой URL, но даже если позволит — перейти на него в этом же окне будет невозможно.

  8. Окно перестанет появляться при отключении исполнения JS-скриптов в настройках браузера.

Будьте бдительны, не попадитесь! Что касается компаний, то бороться с новыми фишинговыми техниками им помогает комплексное решение Group-IB Digital Risk Protection для защиты цифровых активов. Всю работу по сканированию ресурсов, закрытых форумов и чатов, анализу данных и обнаружению нелегитимное использованию бренда выполняютсредства автоматического мониторинга (парсеры, веб-краулеры, API). В зависимости от типа инцидента предпринимаются оперативные меры реагирования — от прямой блокировки ресурса до удаления нелегальных сайтов и приложений из поисковой выдачи.

© Habrahabr.ru