ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 на SSD для Jolah Molivski ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов
Instagram (2000 долларов США), Google (0 долларов США) и Microsoft (500 долларов США) были уязвимы для прямой кражи денег через звонки по премиальным телефонным номерам. Все они предлагают услуги по предоставлению пользователям токена с помощью телефонного звонка с компьютерным голосом, но пренебрегают надлежащей проверкой того, являются ли предоставленные телефонные номера законными, не премиальными номерами. Это могло позволить злоумышленнику украсть тысячи EUR/USD/GBP/… . Microsoft была исключительно уязвима для массовой эксплуатации, поскольку поддерживала практически неограниченное количество одновременных звонков на один премиальный номер. Уязвимости были отправлены в соответствующие программы Bug Bounty и должным образом устранены.
Однако, если в течение трех минут не ввести код на следующем экране, Instagram позвонит из Калифорнии:
Этот звонок будет длиться около 17 секунд. Основной запрос, который вызывает это, описан ниже в burp Repeater:
Запрос к https://i.instagram.com/api/v1/accounts/robocall_user/ мог воспроизводиться только один раз каждые 30 секунд из-за ограничения скорости. Однако было также замечено, что Instagram с радостью звонил бы на любой номер, который был им предоставлен, например, на премиальный номер 0,06 фунта стерлингов за минуту в Великобритании, зарегистрированный через eurocall24.com:
В качестве PoC было сделано 60 дополнительных вызовов в автоматическом режиме с помощью Burp Intruder, каждый с 30-секундным интервалом между вызовами. На этом завершилась кража одного символического фунта в течение 17 минут:
Таким образом, один злоумышленник может украсть 1 фунт стерлингов за 30 минут или 48 фунтов стерлингов в день, 1440 фунтов стерлингов в месяц или 17 280 фунтов стерлингов в год с одной парой [аккаунт Instagram, премиум-номер]. Однако целеустремленный злоумышленник может легко настроить и управлять 100 такими парами, увеличив эти цифры в 100 раз: 4 800 фунтов стерлингов в день, 144 000 фунтов стерлингов в месяц или 1 728 000 фунтов стерлингов в год.
Кроме того, оказалось, что злоумышленнику потребуется только один премиум-номер и 100 аккаунтов в Instagram. Порог ограничения скорости 1 запрос / 30 секунд был только для учетных записей. Премиум-номер можно использовать для одновременной связи с разными учетными записями Instagram.
Первый ответ Facebook на заявку:
Они на самом деле дали мне бесплатный пропуск, чтобы напрямую красть деньги из Instagram здесь?
После некоторых обсуждений и экстраполяции расчетов с 1 на 100 учетных записей Facebook разработал:
И, наконец, после некоторой доработки с моей стороны («100 аккаунтов можно легко создать вручную»):
Ввод премиум-номера здесь приведет к телефонному звонку из Google, но номер будет заблокирован после нескольких попыток, если не будет введен действительный токен. Однако, к счастью, eurocall24.com поддерживал переадресацию звонка на SIP-сервер («Callcentre») и использование их с помощью SIP-клиента (в данном случае Blink), поэтому я действительно мог услышать сообщение вслух:
Привязав премиум-номер к этому колл-центру, а затем введя его как номер мобильного телефона 2FA, мы получим вызов в нашем клиенте и сможем услышать и ввести правильный 6-значный токен для подтверждения:
После прохождения регистрации было установлено, что Google разрешает совершать 10 телефонных звонков в час на номер мобильного телефона при попытке входа в систему. Был ли звонок на самом деле принят и вход в систему был успешным или нет, не имело значения, что меня немного удивило. Я уже мысленно готовился к какому-нибудь SIP Server -> Voice Recognition -> Selenium script chaining, но это оказалось лишним.
Во-первых, назначение звонка для премиум-номера на eurocall24.com было изменено на стандартную «конференц-услугу», поэтому меня это больше не беспокоило. Затем скрипт selenium для входа с именем пользователя и паролем в учетную запись, защищенную 2FA, был записан с помощью плагина Firefox IDE и экспортирован в скрипт python login.py . И последнее, но не менее важное: второй быстрый и грязный скрипт на Python loop.py был разработан для запуска первого каждые 6 минут и выполнялся. Спустя два часа и 17+1 звонков (регистрация) символический евро снова был у меня.
Один звонок длится примерно 35 секунд. Быстрый подсчет показывает, что злоумышленник сможет украсть 12 евро в день = 360 евро в месяц = 4,320 евро в год с одним премиальным номером по этой ставке. Однако злоумышленник может легко управлять и поддерживать около 100 премиальных номеров и связанных с ними учетных записей Google, умножая масштаб воздействия на коэффициент 100: 1 200 евро в день = 36 000 евро в месяц = 432 000 евро в год. В случае с Google требовались фактические уникальные пары [аккаунт Google, премиум-номер].
Во время пробной регистрации Office 365 можно указать номер телефона, на который Microsoft звонит. Выяснилось, что Microsoft действительно звонила по введенным премиальным номерам, но заблокировала номер после 7 неудачных попыток регистрации по этому номеру
Однако были выявлены два разных обхода этого механизма защиты, которые позволяли совершать гораздо больше звонков на платный номер.
Подстановка нуля
Было обнаружено, что если к номеру добавить ноль, номер снова будет принят и приведет к другому вызову того же базового номера премиум-класса. Более того, этот трюк можно было бы повторить 18 раз, так как обычное число с 18 нулями все равно будет принято. Наконец, было обнаружено, что при замене случайной предшествующей нулевой пары кодом страны номера премиум-класса (в данном случае 48 — Польша) вызов все равно будет выполняться
Следующая формула описывает общее количество дополнительных вариаций номера, которые можно сделать, используя этот метод обхода первого блока, где переменная n описывает длину заполнения перед номером телефона:

Таким образом, общее количество вариантов для одного премиум-номера теперь составляет 171+1=172.
Дополнительный обход был найден путем добавления числа максимум из 4 случайных цифр (на этом скриншоте 1111):
Общее количество комбинаций, которые можно составить из четырех случайных цифр в конце, определяется по следующей формуле, где i описывает количество цифр в конце:

Поскольку этот конечный номер может быть добавлен к любому принятому номеру, следующий расчет описывает общее количество вызовов, которые Microsoft будет совершать на один премиум-номер:
(172*11111) * 7 = 13 377 644 звонков/премиум-номер
Каждый вызов занимает примерно 23 секунды, поэтому возьмем 20, чтобы упростить расчеты. Премиум-номер приносил 0,15 EUR/минуту:
(13.377.644/3)*0,15 = 668.882 евро/премиум-номер
Кроме того, Microsoft разрешила одновременные вызовы на один и тот же премиум-номер. Eurocall24.com ограничивает количество одновременных вызовов с одного исходного адреса на один из своих премиальных номеров до 10, поэтому был выполнен PoC, при котором 2*10 одновременных вызовов были совершены менее чем за одну минуту, что принесло прибыль чуть более 1 евро:
В конце концов, злоумышленник может украсть огромную сумму денег за очень короткое время, автоматизировав этот подход к эксплуатации с несколькими премиальными номерами.
Предварительные и добавленные обходы для механизма блокировки номеров были исправлены в два этапа (март и июль 2016 г.). На мою долю пришлось минимальное вознаграждение в размере 500 долларов.
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 на SSD для Jolah Molivski ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов
Instagram (2000 долларов США), Google (0 долларов США) и Microsoft (500 долларов США) были уязвимы для прямой кражи денег через звонки по премиальным телефонным номерам. Все они предлагают услуги по предоставлению пользователям токена с помощью телефонного звонка с компьютерным голосом, но пренебрегают надлежащей проверкой того, являются ли предоставленные телефонные номера законными, не премиальными номерами. Это могло позволить злоумышленнику украсть тысячи EUR/USD/GBP/… . Microsoft была исключительно уязвима для массовой эксплуатации, поскольку поддерживала практически неограниченное количество одновременных звонков на один премиальный номер. Уязвимости были отправлены в соответствующие программы Bug Bounty и должным образом устранены.
Instagram: привязать аккаунт к премиум-номеру
/ запрещен на территории РФ /
Instagram поддерживает привязку номера мобильного телефона к учетной записи, что позволяет другим пользователям искать их в глобальной адресной книге Instagram. После ввода номера мобильного телефона Instagram отправляет текст с 6-значным токеном:
Однако, если в течение трех минут не ввести код на следующем экране, Instagram позвонит из Калифорнии:
Этот звонок будет длиться около 17 секунд. Основной запрос, который вызывает это, описан ниже в burp Repeater:
Запрос к https://i.instagram.com/api/v1/accounts/robocall_user/ мог воспроизводиться только один раз каждые 30 секунд из-за ограничения скорости. Однако было также замечено, что Instagram с радостью звонил бы на любой номер, который был им предоставлен, например, на премиальный номер 0,06 фунта стерлингов за минуту в Великобритании, зарегистрированный через eurocall24.com:
В качестве PoC было сделано 60 дополнительных вызовов в автоматическом режиме с помощью Burp Intruder, каждый с 30-секундным интервалом между вызовами. На этом завершилась кража одного символического фунта в течение 17 минут:
Таким образом, один злоумышленник может украсть 1 фунт стерлингов за 30 минут или 48 фунтов стерлингов в день, 1440 фунтов стерлингов в месяц или 17 280 фунтов стерлингов в год с одной парой [аккаунт Instagram, премиум-номер]. Однако целеустремленный злоумышленник может легко настроить и управлять 100 такими парами, увеличив эти цифры в 100 раз: 4 800 фунтов стерлингов в день, 144 000 фунтов стерлингов в месяц или 1 728 000 фунтов стерлингов в год.
Кроме того, оказалось, что злоумышленнику потребуется только один премиум-номер и 100 аккаунтов в Instagram. Порог ограничения скорости 1 запрос / 30 секунд был только для учетных записей. Премиум-номер можно использовать для одновременной связи с разными учетными записями Instagram.
The Facebook
Это преднамеренное поведение в нашем продукте. Мы не считаем это уязвимостью в системе безопасности, но у нас есть средства контроля и предотвращения злоупотреблений.
Они на самом деле дали мне бесплатный пропуск, чтобы напрямую красть деньги из Instagram здесь?
После некоторых обсуждений и экстраполяции расчетов с 1 на 100 учетных записей Facebook разработал:
Спасибо за внимание — поскольку эти запросы направляются через специальную службу для мониторинга и блокировки злоупотреблений, «намеренное поведение» в этом случае считается «принятым риском». Вообще говоря, атаки, которые зависят от нескольких учетных записей, находящихся под контролем злоумышленника, подпадают под категорию «спама или методов социальной инженерии» неприемлемых отчетов для программы whitehat.
И, наконец, после некоторой доработки с моей стороны («100 аккаунтов можно легко создать вручную»):
И снова здравствуйте! Мы проведем тонкую настройку наших лимитов скорости и поработаем над службой, используемой для исходящих вызовов в ответ на эту заявку, поэтому эта проблема будет иметь право на вознаграждение белых хетов. Вы можете ожидать от нас обновления снова, когда изменения будут внесены. Спасибо!
(…)
Мы изучили эту проблему и считаем, что уязвимость устранена (скорректированы ограничения скорости и проведен дополнительный мониторинг).
Google: двухфакторная аутентификация через премиум-номер
Случай с Google был немного сложнее. Google не звонит во время процесса привязки мобильного телефона, но у них есть возможность позвонить, чтобы передать 6-значный токен 2FAВвод премиум-номера здесь приведет к телефонному звонку из Google, но номер будет заблокирован после нескольких попыток, если не будет введен действительный токен. Однако, к счастью, eurocall24.com поддерживал переадресацию звонка на SIP-сервер («Callcentre») и использование их с помощью SIP-клиента (в данном случае Blink), поэтому я действительно мог услышать сообщение вслух:
Привязав премиум-номер к этому колл-центру, а затем введя его как номер мобильного телефона 2FA, мы получим вызов в нашем клиенте и сможем услышать и ввести правильный 6-значный токен для подтверждения:
После прохождения регистрации было установлено, что Google разрешает совершать 10 телефонных звонков в час на номер мобильного телефона при попытке входа в систему. Был ли звонок на самом деле принят и вход в систему был успешным или нет, не имело значения, что меня немного удивило. Я уже мысленно готовился к какому-нибудь SIP Server -> Voice Recognition -> Selenium script chaining, но это оказалось лишним.
Во-первых, назначение звонка для премиум-номера на eurocall24.com было изменено на стандартную «конференц-услугу», поэтому меня это больше не беспокоило. Затем скрипт selenium для входа с именем пользователя и паролем в учетную запись, защищенную 2FA, был записан с помощью плагина Firefox IDE и экспортирован в скрипт python login.py . И последнее, но не менее важное: второй быстрый и грязный скрипт на Python loop.py был разработан для запуска первого каждые 6 минут и выполнялся. Спустя два часа и 17+1 звонков (регистрация) символический евро снова был у меня.
Один звонок длится примерно 35 секунд. Быстрый подсчет показывает, что злоумышленник сможет украсть 12 евро в день = 360 евро в месяц = 4,320 евро в год с одним премиальным номером по этой ставке. Однако злоумышленник может легко управлять и поддерживать около 100 премиальных номеров и связанных с ними учетных записей Google, умножая масштаб воздействия на коэффициент 100: 1 200 евро в день = 36 000 евро в месяц = 432 000 евро в год. В случае с Google требовались фактические уникальные пары [аккаунт Google, премиум-номер].
oogle
Похоже, у нас есть меры по смягчению последствий, и из-за того, как работает вся телекоммуникационная отрасль, невозможно полностью предотвратить это. Однако попытка эксфильтрации денег будет остановлена через короткое время, поскольку у нас есть средства для его обнаружения, так что вот что.
Из-за вышеизложенного комиссия решила не вознаграждать этот отчет финансово (как мы уже говорили, денежные потери Google для нашего процесса менее важны, чем безопасность пользователей). Тем не менее, это соответствует требованиям — вы окажетесь в Зале славы Google.
Microsoft: регистрация пробной версии Office 365 с номером Premium
Во время пробной регистрации Office 365 можно указать номер телефона, на который Microsoft звонит. Выяснилось, что Microsoft действительно звонила по введенным премиальным номерам, но заблокировала номер после 7 неудачных попыток регистрации по этому номеру
Однако были выявлены два разных обхода этого механизма защиты, которые позволяли совершать гораздо больше звонков на платный номер.
Подстановка нуля
Было обнаружено, что если к номеру добавить ноль, номер снова будет принят и приведет к другому вызову того же базового номера премиум-класса. Более того, этот трюк можно было бы повторить 18 раз, так как обычное число с 18 нулями все равно будет принято. Наконец, было обнаружено, что при замене случайной предшествующей нулевой пары кодом страны номера премиум-класса (в данном случае 48 — Польша) вызов все равно будет выполняться
Следующая формула описывает общее количество дополнительных вариаций номера, которые можно сделать, используя этот метод обхода первого блока, где переменная n описывает длину заполнения перед номером телефона:

- Для n = 1 есть один вариант добавления «0» в начале
- Для n = 2 можно добавить в начало «00» или «48».
- Для n = 3 можно добавить «000», «480» или «048».
Таким образом, общее количество вариантов для одного премиум-номера теперь составляет 171+1=172.
Добавлены случайные цифры
Дополнительный обход был найден путем добавления числа максимум из 4 случайных цифр (на этом скриншоте 1111):
Общее количество комбинаций, которые можно составить из четырех случайных цифр в конце, определяется по следующей формуле, где i описывает количество цифр в конце:

- Для i = 0 существует 1 возможность (без добавленных цифр)
- Для i = 1 есть 10 возможностей (0-9)
- Для i = 2 существует 100 вариантов (00-99).
- Для i = 3 существует 1000 возможностей (000-999).
- Для i = 4 существует 10000 возможностей (0000-9999)
Поскольку этот конечный номер может быть добавлен к любому принятому номеру, следующий расчет описывает общее количество вызовов, которые Microsoft будет совершать на один премиум-номер:
(172*11111) * 7 = 13 377 644 звонков/премиум-номер
Каждый вызов занимает примерно 23 секунды, поэтому возьмем 20, чтобы упростить расчеты. Премиум-номер приносил 0,15 EUR/минуту:
(13.377.644/3)*0,15 = 668.882 евро/премиум-номер
Одновременные вызовы
Кроме того, Microsoft разрешила одновременные вызовы на один и тот же премиум-номер. Eurocall24.com ограничивает количество одновременных вызовов с одного исходного адреса на один из своих премиальных номеров до 10, поэтому был выполнен PoC, при котором 2*10 одновременных вызовов были совершены менее чем за одну минуту, что принесло прибыль чуть более 1 евро:
В конце концов, злоумышленник может украсть огромную сумму денег за очень короткое время, автоматизировав этот подход к эксплуатации с несколькими премиальными номерами.
Microsoft
Предварительные и добавленные обходы для механизма блокировки номеров были исправлены в два этапа (март и июль 2016 г.). На мою долю пришлось минимальное вознаграждение в размере 500 долларов.Решения о вознаграждении принимаются группой судей для программы поощрений, которая присуждает награду. Мы стремимся присуждать награды в зависимости от их влияния на 1) клиентов Microsoft, а затем 2) на саму Microsoft. Учитывая, что эту услугу для нас выполняет третья сторона, влияние этой уязвимости на Microsoft было незначительным. Несмотря на то, что основной риск был связан с компанией, с которой работает Microsoft, а не с самой Microsoft, мы все же решили присудить вознаграждение.
Это определенно была уязвимость, и хорошая, и поэтому мы решили присудить награду в пятьсот долларов. С точки зрения безопасности мы уделяем особое внимание защите наших клиентов, и, хотя эта уязвимость стоила награды и исправления, мы не видели, как данные наших клиентов подвергались риску. Мы всегда хотим, чтобы исследователи тратили свое время, помогая нам защитить пользователей, но в этом случае мы, безусловно, хотим предоставить вознаграждение за помощь в защите нас и наших партнеров.