Как обойти двухфакторную аутентификацию

от admin

Как хакеры обходят 2FA – двухфакторною аутентификацию?

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

Конечно, 2FA намного лучше примитивного логина, но это еще не все. Всем известно, что пароли в корне небезопасны и до тех пор, пока они остаются в тренде, защита учетных записей остается под угрозой. Но 2FA не панацея, она пока что не справляется с нагрузкой всех прорывов – паролей и людей, которые их создают. Этим успешно пользуются злоумышленники и обходят 2FA, чем доказывают, что путь к хорошей безопасности и истинному спокойствию лежит не здесь.

Как хакеры обходят 2FA?

Хакеры могут использовать несколько потоков эксплойтов для целевых учетных записей 2FA на основе паролей. Рассмотрим несколько распространенных техник обхода 2FA в действии:

1. Браузер Necro

Все гениальные решения просты – и это одно из них. Два инструмента – Muraena и NecroBrowser автоматизируют фишинговые атаки, которые могут обойти 2FA. Большинство средств защиты не остановят их по простой причине – эти атаки идут непосредственно к первопричине всех нарушений – пользователям.

Принцип работы такой же, как и у любой фишинговой схемы, за исключением одного момента. Вместо того, чтобы просто создать поддельный сайт, который выглядит как реальный для того, чтобы обманом заставить пользователей ввести свои пароли, новый способ действует еще и как прокси между жертвой и реальным сайтом. Как только пользователь войдет в систему – запрос посылается от его имени в службу. Пользователь, ошибочно считая, что находится на легальной странице входа в систему, передает и пароль, и PIN-код 2FA непосредственно в руки злоумышленника.

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

Фишинговая атака

2. Атака “человек в браузере”

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

На видео: Обход двухфакторной аутентификации. Новый фишинг

3. Социальная инженерия и фишинг

Умение манипулировать пользователями – это оружие хакеров, выбранное ими по веской причине: оно отлично работает. Социальная инженерия использует человеческую психологию против пользователей, и никакая технология не может эффективно блокировать атаки СИ. Существует множество способов использования социальной инженерии для обхода 2FA, от рассылки SMS до писем на электронную почту. Чаще всего пользователи добровольно передают свои пароли и коды.
После того, как злоумышленники получат доступ к учетной записи, они начинают искать уязвимости, чтобы получить повышенный доступ к защищенным ресурсам пользователя. После чего, они могут манипулировать настройками 2FA. Например, изменить номер телефона, привязанный с учетной записи, чтобы данные теперь отправлялись на устройство злоумышленника.

Хакеры могут нацелиться на аутентификацию 2FA огромным количеством способов:

  • Перехватить 2FA ПИН-код “в пути”.
  • Перенаправить 2FA на свое устройство.
  • Получите PIN-код 2FA непосредственно от пользователя, с помощью спуфинга и социальной инженерии.
  • Украсть маркеры сессии после 2FA и войти в аккаунт, не проходя через 2FA вообще.

2FA без пароля

Выход из этой неразберихи прост – отказаться от паролей, также как и от менеджеров паролей и сложных паролей – они практически никогда не работали в прошлом, и точно не будут работать в будущем.
Беспарольная аутентификация – это 100% защита. Это означает, что у нас наконец-то появился метод аутентификации, который не полагается на самое слабое звено в безопасности. Пришло время оставить позади всю парадигму безопасности, которая основывалась только на паролях – технология наконец-то наверстала упущенное.

Как обойти двухфакторную аутентификацию в Instagram

Instagram — одна из крупнейших социальных сетей для нынешнего поколения. А для обеспечения конфиденциальности и безопасности ваших учетных записей в Instagram есть некоторые функции, такие как двухфакторная аутентификация, действия при входе в систему, проверка безопасности и т. д. Включение двухфакторной аутентификации в вашей учетной записи Instagram добавит уровень безопасности вашей учетной записи. Таким образом, каждый раз, когда вы входите в свою учетную запись, вы будете получать OTP на свой зарегистрированный номер. Только после ввода правильного кода вы сможете войти в свою учетную запись. Если вам надоело вводить OTP каждый раз при входе в систему и вы хотите отключить двухфакторную аутентификацию, эта статья поможет вам в этом отношении. Он расскажет вам, как обойти двухфакторную аутентификацию в Instagram и войти в Instagram без кода. Вы также узнаете больше о том, как найти свой 6-значный код безопасности для Instagram и восстановить свою учетную запись Instagram без кода подтверждения. Итак, давайте погрузимся!

Как обойти двухфакторную аутентификацию в Instagram

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

Как узнать свой 6-значный код безопасности для Instagram?

Чтобы найти свой 6-значный код безопасности для Instagram, вы должны включить двухфакторную аутентификацию в своем приложении Instagram. Если вы включили двухфакторную аутентификацию, выполните следующие действия, чтобы получить 6-значный код.

Примечание: для обоих Андроид а также iOS пользователи инстаграма.

1. Откройте приложение Instagram на своем телефоне.

2. Введите свой номер телефона, адрес электронной почты или имя пользователя и пароль.

3. Затем нажмите «Войти».

4. Вы получите 6-значный код безопасности на ваш зарегистрированный номер телефона.

5. Введите код входа в доступное поле и нажмите «Подтвердить». Вы успешно войдете в свой аккаунт Instagram.

Вот как вы можете найти свой 6-значный код безопасности для Instagram в своих сообщениях.

Что делать, если ваша учетная запись Instagram не отправила 6-значный код?

Вы можете попробовать некоторые из этих способов, если ваша учетная запись Instagram не отправила 6-значный код:

  • Если вы не можете получить код, попробуйте отправить другой код через несколько минут.
  • Если ожидание кода не помогло, попробуйте перезагрузить телефон, а затем перезапустите приложение Instagram.
  • Если вы настроили свою электронную почту или подключились к WhatsApp, вы можете использовать код оттуда.
  • Используйте VPN для получения кода.

Вот несколько быстрых исправлений, которые вы можете использовать для входа в свою учетную запись Instagram, когда вы не можете получить 6-значный код. продолжайте читать, чтобы узнать, как обойти двухфакторную аутентификацию в Instagram.

Как войти в Instagram без кода?

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

1. Запустите приложение Instagram на своем телефоне.

2. Введите учетные данные своей учетной записи Instagram и нажмите «Войти».

3. Затем на экране «Введите код входа» нажмите «Попробовать другим способом».

4. Нажмите Получить поддержку.

Примечание. При настройке учетной записи Instagram и включении двухфакторной аутентификации, если вы сохранили 8-значный резервный код на своем телефоне или где-либо еще, вы можете нажать на параметр «Использовать резервный код», чтобы ввести этот код и войти в систему.

5. Введите адрес электронной почты, тип учетной записи и дополнительные сведения о запросе и нажмите «Отправить запрос».

6. Служба поддержки Instagram отправит вам дополнительное электронное письмо. Следуйте указанным инструкциям из этого письма, чтобы войти в свою учетную запись без кода.

Можно ли обойти OTP?

Нет, обойти OTP невозможно и нет другого способа обойти его. Если вы входите в свою учетную запись и для входа вам нужен OTP, вы можете попробовать любой другой способ входа в свою учетную запись или вы можете отключить функцию, благодаря которой вы получаете OTP. Для онлайн-платежей вам необходимо ввести OTP для подтверждения, который будет доступен только вам, поэтому вы не можете его обойти. Прочтите дополнительные разделы, чтобы узнать, как обойти двухфакторную аутентификацию в Instagram.

Можно ли обойти двухфакторную аутентификацию?

Нет, двухфакторную аутентификацию нельзя обойти. Однако только для доверенных устройств вы можете обойти его. Это функция безопасности, которая добавляет дополнительный уровень защиты вашей учетной записи, будь то социальная учетная запись, электронная почта или любая другая учетная запись. Кроме клонирования, нет способа обойти двухфакторную аутентификацию. Если в вашей учетной записи включена двухфакторная аутентификация, вам не нужно ее отключать, потому что, если кто-то попытается взломать вашу учетную запись, этот человек не сможет этого сделать, поскольку код подтверждения придет только на ваш зарегистрированный номер телефона.

Можно ли обойти двухэтапную аутентификацию в Instagram?

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

Как обойти двухфакторную аутентификацию в Instagram?

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

1. Откройте приложение Instagram на своем телефоне.

2. Войдите в свою учетную запись Instagram с соответствующими учетными данными.

3. Нажмите «Попробовать другим способом» на экране «Введите код входа».

4. Затем нажмите Получить поддержку.

5. Введите адрес электронной почты, тип учетной записи и дополнительные сведения и нажмите «Отправить запрос».

6. Вы получите дополнительное электронное письмо от Instagram с указанием шагов по восстановлению вашей учетной записи.

Вот как вы можете обойти двухфакторную аутентификацию в Instagram.

Как восстановить свою учетную запись Instagram без кода подтверждения?

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

Что делать, если вы потеряете свой телефон с двухфакторной аутентификацией?

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

Можно ли взломать многофакторную аутентификацию?

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

Почему вы не можете войти в свой Instagram?

Вот несколько причин, по которым вы не можете снова войти в свою учетную запись Instagram:

  • Возможно, вы вводите неправильные учетные данные для входа.
  • Может случиться так, что ваш аккаунт был заблокирован из-за нарушения политики Instagram.
  • Возможно, сервер Instagram не работает или у вас возникли проблемы с сетью.
  • Ваша учетная запись была взломана, и хакер изменил учетные данные для входа.
  • Если вы входите в систему с помощью приложения Instagam, которое не обновляется или может иметь некоторые проблемы.

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

Как взломать двухфакторную аутентификацию

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

Большинство пользователей интернета знают о Даркнете. Многие даже пытались зайти и купить там, что-либо. Те, кто уже прошарен в этой теме знают, что в таких местах легко можно приобрести запрещенные товары или услуги, в том числе и взлом любого аккаунта. Конечно, его можно заказать и в Клирнете, но тут происходит недоверие к людям, предлагающим эти услуги. Ведь, как так, мы находимся на светлой, незащищённой стороне паутины, они не боятся ответственности? Или это очередная уловка мошенников?
Ну, речь не об этом, мы немного отвлеклись. В большинстве таких случаев Взлом производят при помощи «фишинга».

Что такое фишинг?

-Это вид интернет-мошенничества, в результате которого можно получить доступ к личным данным, таким как пароль и логин. Совершается фишинг путём распространения электронных писем, личных сообщений, якобы от популярного бренда, банка и тд. Вы переходите по ссылке на страницу, обманутые её «чистотой» и вводите свой логин и пароль. После этого владелец вашей странички или электронной почты уже, увы, не вы, а человек немного поумнее и хитрее.
Но спустя время более опытные и закалённые горьким опытом жизни юзеры начали понимать, что бренды и банки такими делами особо и не занимаются, поэтому такой способ утерял свою надежность.

Как пробить двухфакторку

Самый нашумевший и трудоёмкий способ эксперементально выявлен австралийским исследователем Шубхамом Шахом (Shubham Shah). Парню было всего 18 лет, когда он многим открыл глаза на ненадежность 2FA.

В его статье «Как я обошел двухфакторную аутентификацию в Google, Facebook, Yahoo,LinkedIn и многих других» молодой человек подмечает, что при виде аутентификации он думал: «Можно ли произвести взлом такими способами, как»:

  • Брутфорс(полный перебор) пина 2FA
  • Нахождение в потоке различные векторы использования, которые позволили бы полностью ее обойти
  • Попробовать обнаружить изъян в создании штифтов
  • Украсть токены сеанса после того, как пройдет 2FA

Все они, по его словам, являются действительными вариантами атак, но навряд ли будут работать, ибо настолько простейшие и уже явно защищены.
После перебора всех этих способов Шубхам понял, что на всех сервисах с 2FA есть слабое место — голосовая почта.
Ибо для получения полного доступа к ящику нужно всего лишь узнать номер жертвы, а затем использовать сервис подделки контактного номера, типа Spoofcard.
Перейдем к последовательности действий(с твоего позволения, в роли хакмастера будешь ты):

  1. Ты авторизируешься в системе под маской жертвы, ну, как умеем, девочки, используя чужой пароль.
    2.Звонишь жертве, как в очень страшном кино, но тут дожидаться пока она возьмёт трубку лучше не стоит.
  2. Не медля ни секунды делаешь подмену отправки кода на звонок по телефону.
  3. Так как на линии висишь ты, а не робот для распространения кода 2FA, то его немедленно переправляют на голосовую почту.
  4. Просто прослушиваешь пришедшее сообщение используя номер через тот самый сервис.
    Всё, поздравляю, ты, друг мой посвящён в хакеры. Кстати, большинство интернет-компаний до сих пор не закрыли и не поправили этот изъян, аргументируя это тем, что нам, юным гениям нужно изначально розумить пароль пользователя, так что его ЭВМ уже скомпрометирован.
    На всякий случай оставляю вам ссылочку, можете почитать полную статью на эту тему https://shubs.io/how-i-bypassed-2-factor-authentication-on-google-yahoo-linkedin-and-many-others/
    Вариант под номером два.
    Modlishka от Душиньского(Петра)
    В начале 2019 поляк Пётр Душиньский выложил в открытый доступ реверс-прокси «Modlishka». С его слов данный инструмент имеет возможность обойти 2FA.
    Есть похожий инструмент для взлома, называется SEToolkit (встроен почти во все рейтинговые дистрибутивы для пентеста (программы для оценки безопасности).

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

Тестирование двухфакторной аутентификации и возможные варианты обхода

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

Читать:
Правда ли что family link удалят

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

Система подтверждения с помощью кода очень распостранена, используется повсеместно на различных сайтах и может подключаться как для первичного входа, так и вторичного. Но этим применение не ограничивается, — разработчики прикрепляют подтверждение на функционал восстановления паролей, подтверждения регистрации/подписки, дополнительного подтверждения финансовых операций, смены паролей, изменения личных данных. Также, изредка в качестве стены после logout-а по таймингу используется именно 2FA, а не пароль или другой способ подтверждения.

В данной статье я собрал способы тестирования 2FA на уязвимости, их эксплуатацию, а также возможные варианты обхода существующей защиты от некоторых видов атак. Давайте же рассмотрим список проверок на предмет уязвимостей, которые применяются к 2FA:

1. Отсутствие Rate-лимита

Алгоритм Rate-лимита используется для проверки возможности пользовательского сеанса (или IP-адреса) быть ограниченым в попытках или скорости, и при каких обстоятельствах это происходит. Если пользователь выполнил слишком много запросов в течение определенного промежутка времени, веб приложение может ответить 429 кодом (много запросов) или применить Rate-лимит, не показав при этом ошибок. Отсутствие rate-лимита предполагает, что при обычном переборе нет никаких ограничений на количество попыток и/или скорости, — позволено перебирать коды произвольное количество раз (при любой скорости) в пределах срока действия сессии/токена.

Довольно часто приходится сталкиваться с «бесшумным» rate-limit-ом, — если вы увидели, что ошибок нет и тело/код HTTP не изменяется в последующих запросах,- радоваться рано, и для начала нужно проверить конечный результат атаки, применив валидный код.

2. Rate лимит существует, но его можно обойти

Кейсы, которые раньше приходилось встречать:

1) Ограничение скорости потоков с отсутствием блокировки после достижения определенной скорости

Зачастую исследователи безопасности пытаются подобрать код с использованием 5-и или более количества потоков, чтобы быстрее выполнить атаку (в Burp Intruder количество потоков по умолчанию- 5 без задержки). Но иногда система безопасности от перебора или обычный Load Balancer может реагировать только на этот единственный фактор. Если вы пытаетесь брутфорсить с 5-ю потоками, стоит уменьшить количество до 1-го, а потом до 1-го с задержкой в одну секунду. Ранее мне посчастливилось наблюдать за таким поведением и именно с помощью таких манипуляций произошел успешный подбор кода, что привело к Account Takeover. Если у 2FA кода нет определенного срока действия, то у нас есть много времени на перебор. Если же срок действия присутствует, то успешность атаки уменьшена, но потенциальная опасность уязвимости все равно присутствует, так как шанс попадания в нужный код все же есть.

2) Генерируемый OTP код не изменяется

Это касается не постоянно изменяющихся кодов как в Google Authenticator, а только статичных, которые приходят в SMS, email или личным сообщением в мессенджере.

Суть данного обхода состоит в том, что постоянно или в течении некоторого времени, например, 5 минут, в SMS отправляется один и тот же OTP код, который в течении всего этого времени является валидным. Так же стоить следить за тем, чтобы не произошел silent rate-limit.

Допустим, приложение генерирует случайный код от 001 до 999 и присылает его на телефон, в течении 10-ти минут при задействовании функционала «отправить повторно» мы получаем один и тот же код. Но к запросу привязан rate-limit, который ограничивает количество попыток на один токен запроса. Мы можем постоянно запрашивать новый код, генерировать новый токен запроса, применять его к последующему запросу (с помощью grep-match в burp suite или с помощью собственного скрипта) и производить брутфорс диапазона чисел от 001 до 999. Таким образом, постоянно используя новый токен запроса мы успешно подберем правильный код, так как он не изменяется и является статичным в определенный промежуток времени. Ограничения данной атаки — длинное число или смешивание букв с числами в качестве кода подтверждения.

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

3) Сброс rate-limit-a при обновления кода.

В запросе проверки кода, rate-лимит присутствует, но после задействования функционала повторной отправки кода он сбрасывается и позволяет продолжать брутфорс кода.
Примеры репортов:

4) Обход rate-лимита путем смены IP адреса

Множество блокировок основаны на ограничении приема запросов с IP, который достиг порога определенного количества попыток при выполнении запроса. Если IP-адрес сменить, то есть возможность обойти это ограничение. Для того, чтобы проверить данный способ, просто смените свой IP с помощью Proxy-сервера/VPN и увидите, зависит ли блокировка от IP.

Способы смены IP:

    Прокси могут быть использованы в атаке с помощью дополнения IP Rotator для программы Burp Suite github.com/RhinoSecurityLabs/IPRotate_Burp_Extension. На мой взгляд это лучший выбор, потому что он дает нам

В данном случае нужно дополнительно обнаружить IP оригинального веб сервера или найти способ, не касающийся AWS IP-адресов.

5) На сайте включена поддержка X-Forwarded-For

Встроенный header X-Forwarded-For может использоваться для смены IP. Если в приложение встроена обработка данного хедера, просто отправьте X-Forwarded-For: desired_IP для подмены IP, чтобы обойти ограничение без использования дополнительных прокси. Каждый раз, когда будет отправлен запрос с X-Forwarded-For, веб-сервер будет думать, что наш IP адрес соответствует значению, переданному через хедер.
Материалы на эту тему:
hackerone.com/reports/225897
medium.com/@arbazhussain/bypassing-rate-limit-protection-by-spoofing-originating-ip-ff06adf34157

3. Обход 2фа с помощью подстановки части запроса из сессии другого аккаунта

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

Например, при отправке OTP-кода проверяется ID формы, ID пользователя или cookie, которое связано с отправкой кода. Если применить данные с параметров аккаунта, на котором нужно обойти code-верификацию (Account 1), на сессию совсем другого аккаунта(Account 2), получим код и введем его на втором аккаунте, то сможем обойти защиту на первом аккаунте. После перезагрузки страницы 2FA должна исчезнуть.

4. Обход 2FA с помощью «функционала запомининания»

На многих сайтах, поддерживающих 2FA авторизацию, есть функционал «запомнить меня». Он полезен в том случае, когда пользователь не желает вводить 2FA код при последующих входах в аккаунт. Важно идентифицировать способ, с помощью которого 2FA «запоминается». Это может быть cookie, значение в session/local storage или просто крепление 2FA к IP адресу.

1) Если крепление 2FA происходит с помощью установки cookie, то значение cookie должно быть unguessable

То есть, если cookie состоит из набора цифр, которые возрастают для каждого аккаунта, то к значению cookie вполне можно применить brute-force атаку и обойти 2FA. Разработчикам стоит снабжать куку (вместе с ключевым cookie сессии и CSRF токеном) атрибутом HttpOnly, чтобы ее нельзя было украсть с помощью XSS и применить для обхода 2FA.

2) Если 2FA крепится к IP-адресу, то можно попытаться его подменить

Чтобы идентифицировать данный метод, войдите в свой аккаунт с помощью функции запоминания 2FA, потом перейдите в другой браузер или incognito режим текущего браузера и попробуйте войти снова. Если 2FA не запрашивается вовсе, значит произошло крепление 2FA к IP-адресу.
Для подмены IP адреса можно использовать X-Forwarded-For хедер на этапе ввода логина и пароля, если веб приложение его поддерживает.

С помощью данного хедера также можно обойти функцию «IP address white-list», если такая присутствует в настройках аккаунта. Она может использоваться в связке с 2FA как дополнительная защита аккаунта или 2FA может даже не запрашиваться если IP адрес совпадает с white-list (с согласия пользователя). Таким образом, даже без крепления 2FA к IP адресу, в некоторых случаях 2FA можно обойти с помощью обхода сопутствующих способов защиты.
В целом крепление 2FA к IP адресу не совсем безопасный способ защиты, так как во время присутствия в одной сети, при подключении к одному и тому же VPN/интернет провайдеру со статичным IP адресом, 2FA можно обойти.

Самый безопасный способ защиты — это не запоминать 2FA вовсе в ущерб юзабилити.

5. Improper access control баг на странице ввода 2FA

Иногда страница-диалог для ввода 2FA представлена в виде URL с параметрами. Доступ к такой странице с параметрами в URL с cookies, которые не соответствуют тем, которые использовались при генерации страницы или вообще без cookies, — это не безопасно. Но если разработчики решили принять риски, то нужно пройтись по нескольким важным пунктам:

  1. истекает ли ссылка для ввода 2FA;
  2. индексируется ли ссылка в поисковиках.

6. Недостаточная цензура персональных данных на странице 2FA

При отправке OTP кода на странице используется цензура для защиты персональных данных, таких как email, номер телефона, никнейм, etc. Но эти данные могут полностью раскрываться в API эндпоинтах и других запросах, на которые у нас хватает прав на этапе 2FA. Если изначально эти данные не были известны, например мы вводили только логин без знания номера телефона, то это считается уязвимостью «Information Disclosure». Знание номера телефона/email может использоваться для последующих фишинговых и брутфорс атак.

Пример эксплуатации уязвимости с помощью Credentials Stuffing. Допустим, в публичном доступе есть база данных с логинами и паролями для сайта A. Злоумышленники могут применить данные с этой базы на сайте B:

    Сначала они проверяют, существует ли пользователь в базе данных сайта B с помощью бага «Accounts Enumeration» в регистрации/восстановлении пароля. Обычно, многие сайты не считают это уязвимостью и принимают риски. «Уязвимость» заключается в присутствии ошибки о факте регистрации пользователя на сайте. В идеале безопасное сообщение на странице восстановления пароля выглядит следующим образом:

7. Игнорирование 2FA при определенных обстоятельствах

При выполнении некоторых действий, которые приводят к автоматическому входу в аккаунту, 2FA может не запрашиваться.

1) Игнорирование 2FA при восстановлении пароля

Многие сервисы выполняют автоматический вход в аккаунт после завершения процедуры восстановления пароля. Так как доступ к аккаунту предоставляется мгновенно, при входе в аккаунт 2FA может миноваться и полностью игнорироваться.

Impact аналогичного репорта на hackerone, который я прислал недавно:

2) Игнорирование 2FA при входе через соцсеть

К аккаунту пользователя можно прикрепить социальную сеть для быстрого входа в аккаунт и одновременно настроить 2FA. При входе в аккаунт через соцсеть, 2FA может игнорироваться. Если email жертвы будет взломан, то можно будет восстановить пароль к аккаунту соцсети (если она позволяет это сделать) и войти на сервис без ввода 2FA.

Impact одного из репортов:

  1. Связка с другими уязвимостями, такими как ранее присланный OAuth misconfiguration #577468, для полного захвата учетной записи, преодолевая 2FA.
  2. Если злоумышленник взломал электронную почту пользователя, он может попытаться восстановить доступ к аккаунту социальной сети и войти в учетную запись без дополнительной проверки.
  3. Если злоумышленник однажды взломал учетную запись жертвы, он может связать социальную сеть с учетной записью и входить в аккаунт в будущем, полностью игнорируя 2FA и ввод логина/пароля.
3) Игнорирование 2FA в более старой версии приложения

Разработчики нередко добавляют staging версии web приложения на домены/поддомены для тестирования определенных функций. Интересно, что если войти под своим логином и паролем, 2FA не будет запрашиваться. Возможно, разработчики используют более старую версию приложения, в которой нет защиты для 2FA, сама 2FA отключена или её намеренно отключили для тестирования.

Также, можно заодно проверить и другие уязвимости, — регистрация нового пользователя на staging сервере, email которого существует в базе production версии может выдать нам личные данные с production; отсутствие rate-лимита в важном функционале, например в восстановлении пароля. Пример последней уязвимости — $15 000 facebook bug, который позволял взломать аккаунт с помощью брутфорса кода для восстановления пароля на beta.facebook.com www.freecodecamp.org/news/responsible-disclosure-how-i-could-have-hacked-all-facebook-accounts-f47c0252ae4d.

4) Игнорирование 2FA в случае кроссплатформенности

Имплементации 2FA в мобильной или десктопной версии могут отличаться от web версии приложения. 2FA может быть слабее, чем в web версии или вовсе отсутствовать.

7. При отключении 2FA не запрашивается текущий код.

Если при отключении 2FA не запрашивается дополнительное подтверждение, такое как текущий код с google authenticator приложения, код с email/телефона, то в таком случае имеются определенные риски. При чистом запросе существует вероятность CSRF атаки. Если будет найден вектор обхода CSRF защиты (если она есть), то 2FA можно будет отключить. Также может использоваться clickjacking уязвимость, — после пары кликов от ничего не подозревающего пользователя 2FA будет отключена. Подтверждение предыдущего кода добавит дополнительную защиту 2FA, учитывая потенциальные CSRF/XSS/Clickjacking атаки, а также CORS misconfigurations.

В качестве примера приведу сайт hackerone.com, — при отключении 2FA в одной форме одновременно требуется ввод двух переменных, — текущего кода с google authenticator приложения и пароля. Это лучшая и рекомендуемая защита.

8. Ранее созданные сессии остаются валидными после активации 2FA

При включении 2FA желательно, чтобы параллельные сессии на том же аккаунте завершались и выводился диалог ввода 2FA, то же самое с изменением пароля. Если аккаунт был скомпрометирован и первой реакцией жертвы будет включение 2FA, то сессия злоумышленника будет инвалидирована и следующий ввод логина и пароля будет требовать 2FA. В целом, это best practise, которой следует придерживаться. Я часто замечаю, как криптовалютные биржи добавляют подобную защиту. Пример репорта на HackerOne, —
https://hackerone.com/reports/534450.

9. Отсутствие Rate-limit-а в личном кабинете

2FA может внедряться в различные функционалы личного кабинета пользователя для большей безопасности. Это может быть изменение email адреса, пароля, подтверждение изменения кода для осуществления финансовых операций, etc. Наличие rate-limit-a в личном кабинете может отличаться от наличия rate-limit-a в 2FA при входе в аккаунт. Я не раз сталкивался с подобными случаями, когда можно было беспрепятственно подбирать 2FA код в личном кабинете, в то время как при входе был установлен «Strict» rate-limit.

Если разработчики изначально добавили защиту против несанкционированного изменения данных, то данную защиту нужно поддерживать и исправлять все возможные bypass-ы. Если bypass найден, то это расценивается как уязвимость обхода «security feature», которая была имплементирована разработчиками.

10. Манипуляция версиями API

Если вы видите в запросе web приложения что-то вроде /v*/, где * — это цифра, то есть вероятность, что можно переключиться на более старую версию API. В старой версии API может быть слабая защита или таковой может вовсе не быть. Это довольно редкое явление и возникает в том случае, если разработчики забыли удалить старую версию API в production/staging среде.
К примеру, /endpoint/api/v4/login выполняет запрос на вход, проверяя логин и пароль. Если 2FA присутствует в аккаунте, за этим запросом должен следовать /endpoint/api/v4/2fa_check, никак иначе. Если мы заменим версию API ещё до 2FA, то, в некоторых случаях, сможем её избежать. /endpoint/api/v3/login может привести к /endpoint/v3/login_successful?code=RANDOM, игнорируя 2fa_check потому, что в данной версии API, 2FA попросту не была имплементирована.

Еще один пример, — в запросе /endpoint/api/v4/2fa_check присутствует rate-limit, в то время как /endpoint/api/v3/2fa_check позволяет перебирать коды без каких-либо ограничений.

11. Improper Access Control в запросе резервных кодов

Резервные коды генерируются сразу после включения 2FA и доступны по единому запросу. После каждого последующего обращения к запросу коды могут генерироваться по новой или оставаться неизменными (статичные коды). Если существуют CORS мисконфигурации/XSS уязвимости и другие баги, позволяющие «вытащить» резервные коды из ответа запроса эндпоинта отображения резервных кодов, тогда злоумышленник может украсть коды и обойти 2FA, если известен логин и пароль.

В общем и целом, 2фа является одним из самых надежных способов защиты аккаунта, если, конечно, разработчики не хранят текущие 2FA коды всех пользователей web приложения в админ панели, — и такое в моей практике бывало. Также хотел бы отметить, что разработчики некоторых компаний создают приложения для генерации собственных 2FA кодов (примеры тому Salesforce, Valve) и ввиду недостаточной защищенности такой упор на независимость от использования других приложений для аутентификации дает злоумышленникам дополнительную точку входа для обхода 2FA. Спектр применения данной защиты достаточно большой и дает желающим обойти 2FA защиту больше возможностей, пространства для креатива и увеличивает количество вариаций 2FA bypass-ов.

Надеюсь, эта информация была полезной для исследователей информационной безопасности, bug bounty хантеров, а также для разработчиков, чтобы минимизировать количество уязвимостей в разрабатываемом сервисе. Stay safe!

Похожие статьи