Всем привет!
Это заключительный материал из нашего импровизированного цикла «Standoff-онбординг». В первой статье мы разобрали, как реализовывать фишинг и ломать внешний периметр, а во второй — взламывали внутренний периметр и АСУ ТП, а также говорили про дополнительные полезные источники и матрицу MITRE ATT&CK.
Напоследок мы решили подготовить вам подробный рассказ о том, как правильно взаимодействовать с порталом Standoff 365 и как попасть на соревнования, а также составили инструкцию по написанию баг-репорта и очень полезный чек-лист для подготовки к кибербитве. Подробности под катом, а с вами как всегда Антипина Александра (N3m351d4) — капитан команды Cult ?
Взаимодействие с порталом Standoff 365
Во время соревнований вы будете взаимодействовать не только с виртуальной инфраструктурой, но и с порталом Standoff 365.
Для того чтобы участвовать в кибербитве, необходимо подать заявку. У вас должна быть учетная запись на сайте Standoff 365, а также группа, в которую вы добавите членов команды, с логотипом и описанием:
После того как примут заявку, вам станут доступны все разделы и материалы на странице кибербитвы:
конфигурационный файл VPN;
дополнительные ресурсы: словари для перебора паролей, учетные записи и банковские реквизиты;
описания заданий.
Перед соревнованиями уточните у организаторов, какой протокол будет использоваться для подключения к инфраструктуре. Убедитесь, что провайдеры членов команды его не блокируют.
Доступные задания делятся на два типа: на поиск уязвимостей и на реализацию критических событий.
Как сдавать отчеты об уязвимостях
Получить баллы за найденную уязвимость можно двумя способами:
Отправить на портал флаг (сдать отчет с автопроверкой): они встречаются на узлах внешнего периметра (гейтах). Подробнее о том, как получить флаг на проэксплуатированном узле, — в статье «Как заработать баллы» на справочном портале.
Написать отчет об уязвимости для жюри — если узел находится во внутреннем периметре (DMZ).
К отчету для жюри необходимо приложить скриншот, демонстрирующий эксплуатацию уязвимости, или другое доказательство. Например, такие:
внедрение SQL-кода: скриншот с содержимым базы данных;
удаленное выполнение кода (RCE): вывод команд whoami и hostname;
повышение привилегий (LPE): вывод команд whoami и id.
Пример отправленного мной отчета об уязвимости Path Traversal:
Как сдавать отчеты о критических событиях
На странице критического события есть вкладки «Описание» и «Задание». Для того чтобы правильно понять, что требуется сделать, я рекомендую внимательно читать их содержимое.
Для реализации критического события необходимо предварительно прочитать описание сегмента и самого события. Так как в задании не указываются адреса нужных узлов, важно правильно интерпретировать текст: из него часто понятно, связан узел с веб-приложением, устройством из DMZ или со SCADA. Бывает и так, что в описании указаны должность и имя целевого пользователя.
Так, например, если в тексте говорится об утечке персональных данных сотрудников из ERP-системы, мы можем предположить, что она находится во внутреннем периметре, в сегменте с серверами. Доступ к ней есть у пользователей, которые занимаются наймом сотрудников. А если сказано получить доступ к компьютеру главного бухгалтера, значит, нужно обратить внимание на пользовательский сегмент. Или, допустим, по заданию необходимо остановить работу гидроагрегата на ГЭС — это ведет нас в технологический сегмент сети.
В разделе «Заполнение шагов» на справочном портале можно прочитать о том, как заполнять отчеты о реализации критических событий и об основных ошибках.
Для каждого шага в отчете есть большая форма. Заполнять их достаточно долго и муторно, но нужно запастись терпением.
Ниже — пример написанного нашей командой отчета о реализации критического события «Утечка персональных данных офисных сотрудников»:
УК City | Утечка персональных данных офисных сотрудников
Шаг № 1
Выполненное действие
Проведение фишинговой атаки с вложением
Время атаки или временной интервал
17 мая, 14:50 – 17 мая, 14:55
Описание атаки и используемой уязвимости (или CVE)
Пользователю был отправлен фишинговый документ .doc под видом резюме c адреса ckirkland@apps.stf на адрес T_Santos@city.stf
Источник атаки (IP-адрес или FQDN)
XXX.XXX.XXX.XXX
Используемый доступ или учетная запись
T_Santos
Цель атаки (IP-адрес или FQDN)
10.156.14.135
Путь к файлу (необязательно)
C:\ProgramData\server.dll
Результат атаки
Получен доступ к машине 10.156.14.135 от лица пользователя T_Santos (17.05.2023 16:50)
Шаг № 2
Выполненное действие
Повышение привилегий на ресурсе
Время атаки или временной интервал
17 мая, 16:53 – 17 мая, 16:55
Описание атаки и используемой уязвимости (или CVE)
При помощи Sweet Potato были повышены привилегии на узле
Источник атаки (IP-адрес или FQDN)
XXX.XXX.XXX.XXX
Используемый доступ или учетная запись
T_Santos
Цель атаки (IP-адрес или FQDN)
10.156.14.135
Путь к файлу (необязательно)
—
Результат атаки
Получен доступ к машине от имени системы
Шаг № 3
Выполненное действие
Получение дампа учетных данных
Время атаки или временной интервал
17 мая, 17:10 – 17 мая, 17:30
Описание атаки и используемой уязвимости (или CVE)
С помощью mimikatz дампим пароли пользователей на машине
Источник атаки (IP-адрес или FQDN)
XXX.XXX.XXX.XXX
Используемый доступ или учетная запись
SYSTEM
Цель атаки (IP-адрес или FQDN)
10.156.14.135
Путь к файлу (необязательно)
—
Результат атаки
Получен пароль city\t_santos:XXXXXXXXXXXXXXX
Шаг № 4
Выполненное действие
Сбор информации об узлах
Время атаки или временной интервал
18 мая, 14:19 – 18 мая, 14:21
Описание атаки и используемой уязвимости (или CVE)
С хоста было произведено сканирование сегментов City с целью обнаружения веб-приложений
portscan 10.126.11.0/24,10.156.12.128/25,10.156.13.0/25,10.156.13.128/25,10.156.14.0/25,10.156.14.128/25,10.156.15.0/25,10.156.15.128/25,10.156.18.0/25,10.156.16.0/25,10.156.16.128/25,10.156.17.0/25,10.156.17.128/25,10.156.12.0/25,10.156.18.128/25 80,443
Источник атаки (IP-адрес или FQDN)
10.156.14.135
Используемый доступ или учетная запись
SYSTEM
Цель атаки (IP-адрес или FQDN)
10.156.12.166
Путь к файлу (необязательно)
—
Результат атаки
Обнаружена ERP-система Axelor на хосте 10.156.12.166
Шаг № 5
Выполненное действие
Повышение привилегий на ресурсе
Время атаки или временной интервал
18 мая, 14:40 – 18 мая, 14:46
Описание атаки и используемой уязвимости (или CVE)
Используя SOCKS5-соединение, организованное с помощью Beacon (Cobalt Strike), получили доступ к веб-приложению axelor.city.stf (10.156.12.166). В приложении удалось аутентифицироваться с учетными данными T_Santos: XXXXXXXXXXXXXXX
Используя запрос, представленный ниже, получили права администратора:
Источник атаки (IP-адрес или FQDN)
10.156.14.135
Используемый доступ или учетная запись
T_Santos
Цель атаки (IP-адрес или FQDN)
10.156.12.166
Путь к файлу (необязательно)
—
Результат атаки
Для пользователя T_Santos получены права администратора в веб-приложении
Шаг № 6
Выполненное действие
Реализация недопустимого события
Время атаки или временной интервал
18 мая, 15:25 – 18 мая, 15:25
Описание атаки и используемой уязвимости (или CVE)
Используя запрос GET /axelor/XXX/XXX/XXX
, определили эндпоинты для выполнения запроса GET /axelor/ZZZ/ZZZ/ZZZ
и получения данных. Используя запросы GET /axelor/ННН/ННН/ННН
и GET /axelor/YYY/YYY/YYY
, получили персональные данные офисных сотрудников
Результат атаки
Удалось получить информацию о сотрудниках, включая данные полей Name, Birth date, Marital status, Social security number, Pay company, Employment, Company department, Annual gross salary. Полученные данные в формате JSON: employee.json, EmployeeContract.json. Записи в этих файлах связаны по полю employmentContractList.
Примеры записей:
Из
employee.json
:
Name: P0003 - Fischer Carie;
Birth date: 1990-05-08
Marital status: 2
Social security number: 873360-167033
employmentContractList:
0:
fullName: P0003 - Fischer Carie-2019-09-16
id: 2
Из
employee_contract.json
:
Pay Company:
code: CT
name: City
id: 1
Employment: Junior 1 BANK
Company department:
code: BANK
name: Bank department
id: 2
Annual gross salary: 600000.00
Проблемы и поддержка
Во время кибербитвы инфраструктуру атакует много хакеров, из-за этого некоторые серверы могут падать, а веб-сервисы — не отвечать. В таком случае необходимо уточнить у технической поддержки, корректно ли функционирует узел с заданием.
Как попасть на соревнования
Чтобы попасть на соревнования, нужно:
следить за новостями в телеграм-канале Standoff 365, чтобы не пропустить анонс битвы и начало подачи заявок;
создать логотип, придумать описание команды и быть готовыми рассказать о себе, своих достижениях и о мотивации участвовать в Standoff;
собрать команду из 10 человек (или знать минимум 10 человек, которые согласятся поддержать вас, выделить время и принять участие в кибербитве).
Про команду мы поговорим чуть позже, а сейчас — про правила.
Правила соревнований
Standoff является одной из самых масштабных кибербитв, поэтому правила участия также достаточно объемны. Ознакомиться с ними можно на справочном портале Standoff 365 либо на странице анонсированной кибербитвы.
После регистрации ваша команда получит PDF-файл с правилами Standoff и приглашение на встречу с организаторами, где расскажут о битве и ответят на вопросы. Важно отметить, что участники команды должны не только ознакомиться со всей нужной информацией, но и понять ее, а капитан должен это проконтролировать ?
Следует помнить, что во время соревнований нельзя удалять и останавливать сервисы, мешать другим командам или, наоборот, обмениваться с ними решениями. Не стоит генерировать много трафика автоматизированными утилитами: на полигоне практически нет задач, которые требуют агрессивного сканирования (например, с помощью Acunetix или Invicti).
Навык поиска уязвимостей вручную здорово поможет вам как на Standoff, так и в профессиональном плане: сокращение объема трафика, генерируемого при тестировании на проникновение, даст вам плюс тысячу к скрытности. Кроме того, вы покажете, что способны на нечто большее, чем просто на нажатие кнопки «Старт».
Перед началом соревнований вы получите результаты сканирования внешнего периметра инфраструктуры — это сделано для того, чтобы вы смогли пропустить этап разведки в первые часы кибербитвы и сразу приступить к заданиям. Если будете генерировать слишком много трафика, организаторы ограничат пропускную способность VPN-канала и, возможно, оштрафуют вас. Будьте аккуратны!
Команда
Команда, состоящая из 10 человек, — одно из обязательных условий участия. Как же ее собрать? Для этого потребуется:
позвать коллег, однокурсников, дать клич в профильных каналах и чатах — желательно с указанием требований к участникам;
-
убедиться, что в команде есть люди, умеющие:
ломать веб-сервисы и повышать привилегии в Linux-системе;
ломать Active Directory, повышать привилегии в Windows-системе и перемещаться внутри периметра;
создавать вредоносные вложения для фишинга и обходить антивирусы (например, Windows Defender);
пользоваться C2-фреймворками, например Metasploit или Cobalt Strike.
Чтобы быть уверенными в том, что во время соревнований в команде будет нужное количество человек, заранее возьмите отпуск или отгул на работе или отпроситесь с учебы, а также позовите несколько запасных игроков. В моей команде случались форс-мажоры, и в нужное время отсутствовало до семи человек.
Чек-лист для подготовки к кибербитве от команды Cult
✅ Начать готовиться заранее
К прошлому Standoff мы готовились три месяца, к позапрошлому — месяц, к следующему начали за полгода. Чем дольше длится подготовка с планированием, обсуждением стратегии и заучиванием плана действий, тем меньше шансов, что участники растеряются. Капитан должен учитывать, что люди ведут себя по-разному. Например, если один человек запутается, то он задаст вопрос. Другой же постесняется сказать о своих проблемах и усугубит ситуацию. Очень важно узнать о каждом участнике побольше и сработаться заранее.
✅ Порешать задачи вместе
Совместное решение задач поможет определить уровень вашего взаимодействия. Делать это можно на любой платформе, но подготовка на онлайн-полигоне Standoff даст преимущество: на соревнованиях могут встретиться похожие задания. Скорее всего, в первый раз вы будете похожи на лебедей, щук и раков: «в товарищах согласья нет». Капитан должен проанализировать, почему так происходит, и создать алгоритмы действий для любой ситуации.
✅ Определить порядок коммуникации
Для того чтобы во время кибербитвы в команде не начался хаос, необходимо заранее определиться с методами и порядком коммуникации. Согласно правилам и общей концепции игры, на полигоне всегда есть несколько технологических сегментов, а основные виды заданий связаны с поиском уязвимостей и реализацией критических событий. Поэтому целесообразно создать канал в Discord или телеграм-чат со специальной структурой, чтобы систематизировать обсуждение разноплановых задач.
✅ Собрать базу знаний
База знаний с удобным поиском и навигацией, пожалуй, — самое ценное, что может быть у команды. Она должна содержать однострочные программы (они же one-liners, например на поднятие шеллов, поиск файлов для дальнейшего продвижения по сети, развертывание прокси-сервера), райтапы заданий с онлайн-полигона Standoff, правила битвы, список и описания команд, перечень полезных ресурсов. База знаний должна быть неперегруженной, а тексты — емкими и понятными для любого в команде.
✅ Использовать визуализацию данных
Вы уже знаете, что в начале кибербитвы получите от организаторов результаты сканирования внешнего периметра инфраструктуры. Допустим, в них будет 50 узлов с веб-приложениями. Как же не запутаться в том, что нужно выполнить, что было выполнено и с чем возникли проблемы? В докладе «Коллаборативные платформы для анализа защищенности» я рекомендую любую коллаборативную платформу. Не обязательно использовать все ее функции: достаточно оставлять тег с никнеймом человека, который занимается узлом, напротив IP-адреса.
Помимо веб-приложений, вам придется иметь дело с Active Directory. Для того чтобы визуализировать структуру домена и логические связи внутри него, потребуется BloodHound. Утилиту можно использовать локально или развернуть на сервере для всех участников команды.
✅ Найти и использовать материалы других команд
Для того чтобы получить более широкое представление о соревнованиях, было бы неплохо ознакомиться с райтапами и со статьями других команд. Некоторые смело пишут о том, как нарушают правила (изменяют порты, обрывают соединения других игроков, меняют пароли в системах), но их примеру следовать не стоит. Нужно лишь взять информацию на заметку. Помимо этого, в подобных материалах могут встречаться примеры решенных задач, схемы сетей и сегментов.
✅ Подготовить нагрузку для фишинга и С2-инфраструктуру
Как правило, фишинг на Standoff — это отправка резюме пользователю из группы HR. Отмечу, что на узлах работает антивирус, но изредка его отключают другие команды. За некоторое время до начала кибербитвы следует подготовить несколько вариантов полезной нагрузки с его обходом. Вовремя разосланные фишинговые письма дают команде большое преимущество.
Желательно, чтобы у вас также был С2-сервер. Во внутренней сети очень много узлов, и такой сервер значительно упростит перемещение внутри периметра.
✅ Подготовить инфраструктуру команды
Мы уже перечислили достаточно большое количество утилит, которые было бы неплохо развернуть и протестировать до соревнований. Если ваша команда строит подобного рода инфраструктуру впервые — обязательно убедитесь в том, что вас не забанят, что ничего лишнего «не торчит» в интернете и что китайские сканеры не могут вас обнаружить?
✅ Придумать тактику
До игры нужно определиться с порядком действий. Как только все подключатся к полигону, могут возникнуть проблемы с доступом. Именно поэтому желательно, чтобы часть команды в первые же минуты разослала фишинговые письма в каждую из представленных компаний. Остальные свободные участники, специализирующиеся на вебе, могут начать решать задачи с внешнего периметра сети. По мере продвижения во внутреннюю сеть и обнаружения там веб-сервисов на них можно переключать людей с внешнего периметра на внутренний с помощью пивотинга.
Заключение
На этом все. Надеюсь, наши статьи были полезны. Делитесь ими со своими товарищами по команде, забирайте на вооружение чек-лист, а также рассказывайте про свой опыт в комментариях. Мы будем рады почитать ?
До встречи на кибербитве!
Предыдущие статьи из цикла Standoff-онбординг:
Standoff-онбординг: знакомство, фишинг и взлом внешнего периметра
Standoff-онбординг: взлом внутреннего периметра, АСУ ТП и матрица MITRE ATT&CK
N3m351d4 @L1-1on
Капитан команды Cult на Standoff