Несмотря на постоянное совершенствование защитных механизмов, атаки методом брутфорс (перебор паролей) остаются серьезной угрозой. Особенно уязвимы облачные сервисы и веб-приложения, где злоумышленники часто нацеливаются на порталы авторизации. Недавно я заинтересовался тем, как можно обойти современные системы защиты от таких атак, и обнаружил интересный способ — GitHub Actions.
Еще по теме: Взлом GitHub с помощью GitHub Dorks
Атака брутфорс и Password Spraying
Атака методом перебора паролей, или Password Spraying, заключается в попытке подобрать пароли к большому количеству учетных записей. В отличие от классической брутфорс-атаки, здесь для каждой учетной записи проверяется лишь небольшое количество наиболее распространенных паролей. Это позволяет обходить многие системы защиты, включая блокировку учетных записей после определенного числа неудачных попыток входа.
Статья в образовательных целях. Цель этого исследования — не поощрение незаконных действий, а демонстрация уязвимостей в существующих системах защиты. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Одним из распространенных методов защиты от подобных атак является блокировка IP-адресов, с которых поступает подозрительное количество запросов на вход. Чтобы обойти эту защиту, атакующим нужно постоянно менять свой IP-адрес. Существует ряд инструментов для ротации IP-адресов, таких как fireprox, fireproxng и расширение IP rotate для Burp Suite. Но я задался вопросом: можно ли найти более доступное и эффективное решение?
GitHub Actions для обхода защиты от брута
В поиске решения я обратил внимание на GitHub Actions — инструмент для автоматизации рабочих процессов. Вот почему GitHub Actions идеально подходит для нашей задачи:
- Каждый запуск Workflow (набор задач, которые выполняются последовательно или параллельно в определeнном порядке) в GitHub Actions получает случайный IP-адрес из пула GitHub.
- GitHub Actions имеет API, позволяющий программно управлять Workflow.
- Использование GitHub Actions бесплатно для публичных репозиториев.
- GitHub располагает обширным пулом IP-адресов.
Я разработал систему из трех основных компонентов:
- Kicker — скрипт использует API GitHub для создания и запуска Workflow. Он генерирует YAML-файл с описанием Workflow, включая передачу секретных данных (логин, пароль, URL Catcher) через переменные окружения.
- Sprayer — выполняется в рамках GitHub Actions Workflow. Получает учетные данные из переменных окружения, отправляет запрос на вход в целевую систему и передает результат на Catcher.
- Catcher — веб-сервер на Flask, который принимает результаты от Sprayer, анализирует их и логирует информацию о попытках входа.
Процесс атаки выглядит следующим образом:
- Kicker генерирует множество Workflow в GitHub Actions, передавая каждому уникальную комбинацию логина и пароля.
- Каждый Workflow запускает Sprayer на отдельной виртуальной машине с уникальным IP-адресом.
- Sprayer пытается войти в целевую систему и отправляет результат на Catcher.
- Catcher собирает и анализирует результаты всех попыток входа.
Обход защиты от брута на сайте Microsoft
Для проверки эффективности этого метода я провел тестирование на портале авторизации Microsoft. Microsoft использует систему Smart Lockout, которая, по заявлениям разработчиков, не полагается исключительно на блокировку IP-адресов. Она учитывает различные факторы, включая знакомые и незнакомые локации, поведение пользователя и другие контекстуальные данные.
Несмотря на это, мне удалось успешно обойти защиту Smart Lockout с помощью разработанной системы на базе GitHub Actions. Это демонстрирует, что даже продвинутые системы защиты могут быть уязвимы к правильно организованным распределенным атакам.
Для тестирования использовался Microsoft-тенант с лицензией Entra ID P2. Смарт-блокировка Microsoft Entra была настроена с параметрами по умолчанию: 10 неверных попыток входа и блокировка на 60 минут.
Давайте посмотрим, как это работает на практике. Вот демонстрация атаки на YouTube.
Как видно на скрине ниже, запросы на вход поступают с IP-адресов GitHub Actions.
Все инструменты проекта можно найти в этом репозитории GitHub.
Заключение
Этот метод можно применить к любым системам, использующим блокировку по IP для защиты от перебора паролей. Результаты работы показывают необходимость разработки более совершенных методов защиты, не полагающихся исключительно на блокировку по IP. Рекомендуется использовать многофакторную аутентификацию, продвинутый анализ поведения пользователей и другие комплексные меры безопасности. Для специалистов в ИБ это исследование служит напоминанием о постоянно эволюционирующих методах атак и необходимости непрерывного совершенствования защитных механизмов.
Автор метода Дэниел Андерхей.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Обход OTP / 2FA при регистрации аккаунта
- Использование Auth0 для обхода ограничений входа
- Обход двухфакторной аутентификации 2FA через CSRF