Попались на удочку: как мы заплатили 100 тысяч рублей за фишинг

от автора

Сейчас в программе открытых кибериспытаний Innostage есть одно главное недопустимое событие и три промежуточных с меньшим вознаграждением. И вот 19 июля этичный хакер prorok забрал положенные 100 тысяч рублей за компрометацию учётной записи. Как ему удалось это сделать? Рассказываем подробнее.

Чтобы забраться к нам в инфраструктуру, prorok использовал старый добрый фишинг.

Подготовка к атаке: письмо, адреса и рычаги давления

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

В нашей программе открытых кибериспытаний фишинг разрешён только через корпоративную почту, так что у prorok был сразу определён канал действия. Все необходимые данные для рассылки хакер нашёл с помощью OSINT. 

Адресаты

В адресном листе было около 1000 получателей. Большая часть из них была обнаружена с помощью The Harvester, инструмента, который позволяет автоматизировать OSINT. Контакты также собирались через соцсети, в частности, LinkedIn и ВК.

«Я не стал отсеивать этот список, решил запустить по тому, что есть — хотелось быстрее протестировать взлом. Меня заблокировали где-то на середине, то есть не до всех пользователей дошли письма. Если бы потратил время на отсев, меня, скорее всего, вычислили бы не так быстро, а так когда ИБ-служба увидела рассылку в том числе уволенным сотрудникам, они сразу всё распознали».

Письмо

Эксперты SOC и сотрудники, которые заметили фишинг, сошлись во мнении, что письмо было очень качественным и почти не отличалось от наших корпоративных рассылок. 

  1. Отправитель

Отправителем значился Отдел технической поддержки. Почтовый домен выглядел как innostage.com.ru, но поскольку дополнительный домен [.com.] добавлен в середину адреса после .ru, он вызвал гораздо меньше вопросов.

  1. Специальные плашки

Все внешние письма Innostage маркируются специальной меткой. Prorok обнаружил ее ещё в начале июля, когда проводил разведку и отправил письмо на общий адрес Innostage. В ответе сохранилась версия оригинального письма в том формате, который видит его внутренний получатель.

  1. Текст письма

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

  1. Новый почтовый сервер объяснял странный, отличающийся домен.

  2. Новый сервер для vpn объяснял некорректную ссылку.

  3. У «новых» почтового и vpn сервера были схожие домены. Кроме того, даже в подписи использовался тот же домен [.com.ru] — из-за этого разница с настоящим адресом не бросилась в глаза.

  4. В письме была отсылка к автоматической маркировке«Внешняя почта».

А ещё использовались рычаги давления:

  1. Потеря всех писем и встреч в календаре — для сотрудников в такой большой команде, как Innostage, это могло остановить работу.

  2. Рассылка была в пятницу, а потенциальный переезд в «выходные», так что варианта отложить действия из письма не было.

Время атаковать!

Всего волн было две — в 11:08 и в 13:21. 

В первую волну сотрудники получили 287 писем с фишинговой ссылкой на vpn.innostage-group.com.

Prorok смог обойти корпоративное решение по защите почты путем специально сформированной ссылки, которая приводила на фишинговый ресурс. 

Как получить аутентификационные данные

Домены отправителей и целевые URL мимикрировали под легитимный ресурс компании vpn.innostage-group.ru.

«Я предполагал, что такая организация, как вы, не сделает VPN просто по доменной учётной записи, и, скорее всего, там будет второй фактор». 

Когда пользователь вводил учетные данные в форму (даже несуществующие) и нажимал на LOG IN, его автоматически перенаправляло на страницу для ввода кода 2FA. Тут тоже срабатывала хитрость: крутилась иконка загрузки, создавалось ощущение процесса входа. Через 20 секунд система снова просила код 2FA, прикрываясь ошибкой. Уловка сработала — несколько сотрудников вводили код по два раза.

Всего было скомпрометировано 3 учетных записи. В одном случае сотрудник передал все аутентификационные данные, включая 2FA-код (дважды!). 0 процентов осуждения, 100 процентов назначения курса по фишингу в корпакадемии.

В 12:02 prorok подключился к VPN с адреса 87.251.78[.]223 с недоменного устройства.

Закрепиться внутри сети: хорошая попытка, но не свезло

Условие промежуточного события — компрометация и закрепление. Второе багхантеру не удалось: SOC оказался на шаг впереди и успел проанализировать и заблокировать зловред, скачиваемый на фишинговом ресурсе. 

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

Но вот как это должно было быть.

После ввода учётных данных и нажатии на кнопку входа автоматически начинается загрузка исполняемого файла «vpn-client-2.1.1.exe», мимикрирующего под легитимный VPN-клиент, и перенаправление на страницу для ввода кода 2FA.

При ручном запуске этого исполняемого файла (автоматически он не запускается) выполняется следующая цепочка событий:: 

  1. Объект «vpn-client-2.1.1.exe» копирует своё тело в директорию «C:\Users\Public\vpn-client-2.1.1.exe» (запись в данную директорию имеют все пользователи).

  2. Выполняется HTTP GET-запрос на ресурс 5.8.38[.]130:8000 для получения вредоносной DLL-библиотеки: HTTP://5.8.38[.]130:8000/REMOTE.DLL.

  3. Библиотека remote.dll загружается в память без сохранения на уровне файловой системы.

  4. Выполняется загрузка архива с Python: https://www.python.org/ftp/python/3.10.2/python-3.10.2-embed-amd64.zip с последующей распаковкой содержимого в директорию C:\Users\Public\Python\.

  5. Запуск скрипта через интерпретатор Python, который загружает шелл-код в память, настраивает распределение памяти и создание потока с помощью функций Windows API (VirtualAlloc, CreateThread, WaitForSingleObject) и выполняет шелл-код в новом потоке внутри процесса.

Ответный ход SOC: как реагировала команда Innostage

«Я не был готов к такой оперативной работе отдела безопасности. Они достаточно быстро реагировали и блокировали меня». 

Первые сообщения в SOC о возможном фишинге поступили в SOC в районе 11:30: бдительные сотрудники не переходили по ссылкам, а сразу отправляли подозрительное сообщение в Центр противодействия киберугрозам компании. 

В 12:06 уже появились первые сообщения о фишинге в корпоративных чатах.

Параллельно SOC уже реагировал на инцидент. У нас в Innostage для управления реагированием внедрён собственный продукт Orchestrator, который позволяет действовать комплексно в случае атак, управляя всеми СЗИ из одного окна.

В 12:18 почтовый адрес отправителя support@innostage-group.com[.]ru был занесен в черный список на почтовом средстве защиты.

В 12:32 начались блокировки фишингового ресурса по доменному имени и по IP-адресу на всех межсетевых экранах компании. В 12:34 заблокировали почтовый сервер, с которого шла рассылка.

‘Доменное имя vpn.innostage-group.com.ru успешно заблокировано’

‘Хост 31.31.196.104 успешно заблокирован’

‘Доменное имя server141.***.ru успешно заблокировано’

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

В 12:39 нашли скомпрометированные учётные записи — все три пришлись на первую волну. Разорвали все VPN-сессии и заблокировали пользователей в нашем домене.

Спустя 40 минут пошла вторая волна рассылки: теперь уже с почтового адреса support@lnnostage-group.com[.]ru (31.31.196[.]33) было разослано ещё 300 писем по новому списку получателей. Вторая волна закончилась быстрее, чем первая: сотрудники SOC понимали, с чем имеют дело, и заблокировали все ресурсы — и адрес отправителя, и почтовый сервер, и фишинговый сайт, а также удалили все фишинговые письма всего за 15 минут.

‘Адрес 5.8.38.130 успешно заблокирован’

‘Доменное имя vpn.lnnostage-group.com.ru успешно заблокировано’

В процессе расследования сработали наши правила корреляции, которые выявили аномальное подключение скомпрометированного пользователя к VPN: устройство и IP-адрес отличались от собранного в профиле. Адрес подключения также был добавлен в черный список на МСЭ.

Вывод

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

Второе — ещё раз убедились, что фишингу как и любви, покорны все. Так что важно сохранять бдительность и регулярно проводить тренировки внутри компании.

Кстати, в июле количество атак на Innostage выросло до 330 тысяч, это почти в 15 раз больше, чем за июнь. «Этичные» хакеры активно проводят разведку нашей инфраструктуры. Зовем и вас попробовать свои силы в программе открытых кибериспытаний на платформе для исследователей безопасности Standoff Bug Bounty.


ссылка на оригинал статьи https://habr.com/ru/articles/833632/