Сейчас в программе открытых кибериспытаний 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.

Комментарии (12)


  1. diakin
    04.08.2024 15:00
    +3

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

    При ручном запуске этого исполняемого файла (автоматически он не запускается)

    А разве в корпоративной почте допустимо скачивать и запускать ехе-файлы пришедшие во вложениях? Ну ладно там pdf какие можно скачивать и просматривать, а тут-то.. Вообще установка сторонних программ (vpn-client ) разве может осуществляться самими пользователями? По идее это должен делать сисадмин или как там его, специально обученный сотрудник.
    Пункты 2-5 это вообще безумие какое-то.. со стороны Windows видимо.


    1. jackcrane
      04.08.2024 15:00

      А разве в корпоративной почте допустимо скачивать и запускать ехе-файлы пришедшие во вложениях?

      попробуйте запретить обычному юзеру винды (не локальному админу) запускать .exe/.com/.cmd/.ps1/.dll/.js/.wsh/.lnk/.vb* из его собственного профиля.

      при этом:

      1) использовать только ntfs пермиссии (политики настраивать трудно и они обходятся).

      2) чтобы на вновь создаваемые поддиректории и файлы (тем же юзером) пермиссии наследовались ваши а не дефолтные.

      3) чтобы юзер не смог перенастроить пермиссии обратно (а если он владелец файлов и директорий - он сможет).

      4) чтобы при применении шаблона безопасность локально или через политику ваши пермиссии не испортились и не вернулись в дефолт.

      5) чтобы при создании нового профиля с нуля ... впрочем все уже понятно ?

      разумеется есть идеи как запретить. но нет сырья и кадров.

      pdf какие можно скачивать и просматривать

      изнутри злого .pdf (.xls/.doc/.etc) будет скачано и запущено.


      1. santjagocorkez
        04.08.2024 15:00

        политики настраивать трудно и они обходятся

        Ну, что трудно — это не повод не делать, это работа сисадмина. А как обходится SRP?


        1. jackcrane
          04.08.2024 15:00

          это работа сисадмина.

          колхоз "Напрасный Труд".

          А как обходится SRP?

          гугель, яндекс - используйте их пока не запретили (лично меня они забанили).

          бинг у меня не нашел ничего, зато duckduckgo нашел.


    1. VaNnOrus
      04.08.2024 15:00

      Exe не во вложении пришел, написано сотрудник перешёл по ссылке и ввёл свои учетные данные, после этого началось скачивание


      1. diakin
        04.08.2024 15:00

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

        При ручном запуске этого исполняемого файла (автоматически он не запускается)

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

        Вот тоже момент. С какого перепугу любой процесс может лезть в инет и скачивать что попало незаметно для пользователя. И потом незаметно запускать скачанное.
        (Тут наверное фаейрвол должен быть с белым списком. Но это конечно от строгости зависит. )


      1. ifap
        04.08.2024 15:00

        Еще лучше: сотрудник может скачать .exe Оялюблю эту политику безопасности.


  1. diakin
    04.08.2024 15:00
    +1

    попробуйте запретить обычному юзеру винды (не локальному админу) запускать .exe/.com/.cmd/.ps1/.dll/.js/.wsh/.lnk/.vb* из его собственного профиля.

    Речь идет только о вложениях в письма. Это же почтовый клиент, в нем же можно запретить жмакать на вложения с определенным расширением? Или нельзя? В Яндекс-почте есть папка спам, в письмах, которые туда попадают отключены ссылки и вложения не открыть.
    PDF-ки тоже можно только на просмотр открывать. Вот есть же сервисы "просмотр pdf онлайн", закачиваешь туда свой pdf и смотришь. Там же ничего вредного из пдфки не запускается, иначе их уже всех бы положили.
    Вот читаешь, что фишинговые письма самый опасный способ, непонятно почему от них не защищаются. Неужели так сложно?


    1. jackcrane
      04.08.2024 15:00

      Речь идет только о вложениях в письма.

      перед открытием (запуском) вложения сохраняются. как раз внутрь профиля.

      то же почтовый клиент, в нем же можно запретить

      есть много альтернативных почтовых клиентов. желательно покрыть их все.

      Вот есть же сервисы "просмотр pdf онлайн", закачиваешь туда свой pdf и смотришь.

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


  1. Psykyler
    04.08.2024 15:00
    +1

    Как говорили древние философы - The dupe is not the mammoth, the dupe will never die out