Метод грубой силы как недооцененный тип атаки (захват учетной записи)
Всем привет. Я решил поднять тему атак методом перебора, хотя многие часто настаивают — иногда довольно агрессивно — на том, что это никогда не работает, что нет смысла об этом писать, что это ужасный тип атаки и так далее.
Но я не собираюсь сейчас никого убеждать в том, что атаки методом перебора по-прежнему актуальны и могут быть очень эффективными. Ключ к успеху — понимание того, где и как правильно их применять. Я не буду вдаваться в философию — давайте сразу перейдем к делу.
Эта статья не является руководством по правильному проведению атак методом перебора. Здесь я опишу примеры, с которыми я лично столкнулся во время тестирования на проникновение и участия в программах поиска уязвимостей.
Раньше я не уделял особого внимания атакам методом перебора. В начале этой осени, во время тестирования на проникновение, я обнаружил форму регистрации/авторизации пользователя, в которой использовался номер телефона. Как вы, наверное, уже догадались, логика такого типа авторизации проста: пользователь вводит свой номер телефона и получает код подтверждения по SMS. Длина кода может варьироваться, но чаще всего это от 4 до 6 цифр. Как вы, вероятно, уже понимаете, этот SMS-код потенциально может быть подобран методом перебора — чем короче код, тем легче его угадать. Помимо авторизации, тот же механизм часто используется в модулях сброса паролей.
Если код состоит из 6 цифр, вероятность его перебора не составляет 100%. Она зависит от нескольких факторов:
время безотказной работы сервера
Срок действия кода — он везде разный, и иногда ответ даже показывает, как долго код остается действительным.
наличие WAF, если таковой имеется.
инструменты, использованные для осуществления атаки
Я использую программу Burp Suite Intruder, а если код состоит из 6 цифр (что означает 1 миллион возможных комбинаций), то применяю Burp Suite Turbo Intruder.
После обнаружения этой уязвимости во время пентестинга я решил проверить наличие аналогичной проблемы в программах по поиску уязвимостей. И вот она — к моему удивлению, я обнаружил отсутствие защиты от перебора SMS-кодов на четырех разных сайтах, принадлежащих Mail. Эта уязвимость позволяла захватить любую учетную запись (захват учетной записи); единственное, что требовалось, — это знать номер телефона пользователя.
Позже я подробно опишу каждый случай — как я обнаружил неочевидные уязвимости в логике приложения, как методом перебора подобрал 6-значный код (1 миллион комбинаций), который был действителен всего 3 минуты, и как правильно выполнить перечисление с помощью Turbo Intruder.
А пока я покажу, как можно осуществить перебор паролей с помощью Intruder.
Сначала перехватите запрос, в котором происходит проверка кода, и отправьте его в Intruder. Обычно он выглядит примерно так.
POST/api/confirmCode HTTP/1.1 Host: examplebrute.com
{"phone":79991234567,"code": $1111§}
В данном случае мы можем увидеть, где находится параметр кода. Выбираем его для атаки и переходим на вкладку «Полезные нагрузки».
На этой вкладке нам нужно создать полезную нагрузку. Поскольку мы перебираем числовой параметр методом грубой силы, выбираем тип полезной нагрузки «Числа» и указываем диапазон, который хотим проверить.
Здесь всё выглядит хорошо. Теперь переходим ко вкладке «Параметры».
На данном этапе все зависит от времени безотказной работы и производительности сервера. Если сервер работает быстро, можно смело установить большое количество потоков.
Начать атаку… подождите… Захват аккаунта.
Всем привет. Я решил поднять тему атак методом перебора, хотя многие часто настаивают — иногда довольно агрессивно — на том, что это никогда не работает, что нет смысла об этом писать, что это ужасный тип атаки и так далее.
Но я не собираюсь сейчас никого убеждать в том, что атаки методом перебора по-прежнему актуальны и могут быть очень эффективными. Ключ к успеху — понимание того, где и как правильно их применять. Я не буду вдаваться в философию — давайте сразу перейдем к делу.
Эта статья не является руководством по правильному проведению атак методом перебора. Здесь я опишу примеры, с которыми я лично столкнулся во время тестирования на проникновение и участия в программах поиска уязвимостей.
Раньше я не уделял особого внимания атакам методом перебора. В начале этой осени, во время тестирования на проникновение, я обнаружил форму регистрации/авторизации пользователя, в которой использовался номер телефона. Как вы, наверное, уже догадались, логика такого типа авторизации проста: пользователь вводит свой номер телефона и получает код подтверждения по SMS. Длина кода может варьироваться, но чаще всего это от 4 до 6 цифр. Как вы, вероятно, уже понимаете, этот SMS-код потенциально может быть подобран методом перебора — чем короче код, тем легче его угадать. Помимо авторизации, тот же механизм часто используется в модулях сброса паролей.
Если код состоит из 6 цифр, вероятность его перебора не составляет 100%. Она зависит от нескольких факторов:
время безотказной работы сервера
Срок действия кода — он везде разный, и иногда ответ даже показывает, как долго код остается действительным.
наличие WAF, если таковой имеется.
инструменты, использованные для осуществления атаки
Я использую программу Burp Suite Intruder, а если код состоит из 6 цифр (что означает 1 миллион возможных комбинаций), то применяю Burp Suite Turbo Intruder.
После обнаружения этой уязвимости во время пентестинга я решил проверить наличие аналогичной проблемы в программах по поиску уязвимостей. И вот она — к моему удивлению, я обнаружил отсутствие защиты от перебора SMS-кодов на четырех разных сайтах, принадлежащих Mail. Эта уязвимость позволяла захватить любую учетную запись (захват учетной записи); единственное, что требовалось, — это знать номер телефона пользователя.
Позже я подробно опишу каждый случай — как я обнаружил неочевидные уязвимости в логике приложения, как методом перебора подобрал 6-значный код (1 миллион комбинаций), который был действителен всего 3 минуты, и как правильно выполнить перечисление с помощью Turbo Intruder.
А пока я покажу, как можно осуществить перебор паролей с помощью Intruder.
Сначала перехватите запрос, в котором происходит проверка кода, и отправьте его в Intruder. Обычно он выглядит примерно так.
POST/api/confirmCode HTTP/1.1 Host: examplebrute.com
{"phone":79991234567,"code": $1111§}
В данном случае мы можем увидеть, где находится параметр кода. Выбираем его для атаки и переходим на вкладку «Полезные нагрузки».
На этой вкладке нам нужно создать полезную нагрузку. Поскольку мы перебираем числовой параметр методом грубой силы, выбираем тип полезной нагрузки «Числа» и указываем диапазон, который хотим проверить.
Здесь всё выглядит хорошо. Теперь переходим ко вкладке «Параметры».
На данном этапе все зависит от времени безотказной работы и производительности сервера. Если сервер работает быстро, можно смело установить большое количество потоков.
Начать атаку… подождите… Захват аккаунта.