Не так давно, netAn опубликовал интересную статью описывающую проблемы безопасности системы Мегафон — Сервис-гид.

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

Не буду повторяться, что можно сделать со счетом абонента имея доступ в «сервис-гид» (см. статью) перейду сразу к сладкому.

Как показал анализ, в Мегафоне, существует внутренний гейт, с которым соединятся и messages.megafon.ru, moscowsg.megafon.ru и многие другие приложения для авторизации абонентов. Используя мобильные приложения «UMS» и «Мегафон Диск» можно подбирать пароли с высокой скоростью за счет отсутствия необходимости в проведении полной процедуры аутентификации.

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

Для анализа трафика мо��ильного приложения используем зло mitmproxy
А теперь подробнее о каждом.

«UMS»


Пример HTTP запроса и ответов при авторизации
Request:

POST https://auth.messages.megafon.ru:15020/tellin/login.do
Host: auth.messages.megafon.ru:15020
x-UserAgent: iPhone|iPhone0.0|iPhone OS 0.0.0|0.0.0.0|aVBob25lIDRT|aVBob25l
Accept-Encoding: gzip
Content-Type: text/xml;UTF-8
Accept-Language: zh-CN,en,*
Cookie: JSESSIONID=000000000000000000000000
Content-Length: 344
Connection: close
Proxy-Connection: close
User-Agent: UMS 0.0.0.0 (iPhone; iPhone OS 0.0.0; ru_RU)
XML-like data
<?xml version='1.0' encoding='UTF-8'?>
<root>
  <user>+7926000000</user>
  <random>HUAWEI RCS0000-00-00</random>
  <secinfo>мойкрутойпароль</secinfo>
  <version>0.0.0.0</version>
  <clienttype>2010000</clienttype>
  <pintype>0</pintype>
  <requestip>653.289.953.846</requestip>
  <usertype>0</usertype>
  <deviceID>NvQPSFL3nclMuRJbc8KjjgIBn6CVg49mpzNZoJ4LK0n2OQDpcEENuly9FVK5</deviceID>
</root>

1) Успешная авторизация 
Response:
Raw
[ base64 длинной 3680 байт ]

2) Ошибка авторизации
Response:
<root><return>200050401</return><desc>The user information is incorrect.</desc></root>


«MegaDisk»


Пример HTTP запроса и ответов при авторизации
Request:

POST https://oauth.megafon.ru/login?oauth_token=92cd604414ba74ff7a3e
Host: oauth.megafon.ru
Accept-Language: ru
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 0_0_0 like Mac OS X) AppleWebKit/0.0.0 (KHTML, like Gecko) Mobile/0B
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: https://oauth.megafon.ru/login
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
Proxy-Connection: keep-alive
Cookie: ID=IGmYDY6caHVX\nsFELs55iR7wPyhSMvQHc
Content-Length: 141
Origin: https://oauth.megafon.ru
Accept-Encoding: gzip, deflate

URLEncoded form
version: 1
token: HkyOryj8L0nAsL7AMgd2JjqjaO
language: ru
validateform:  QR3g4qMeSF0tPHT9COXCKD4guGeYdwHGFBgrPi1eHr
msisdn: 7926000000
p:  мойкрутойпароль
login: LoginRU

1) Успешная авторизация 
Response:
HTTP код 302

2) Ошибка авторизации
HTTP код не 302


Проблемы в этих приложениях две:
  1. Получая информацию об успешной верификации пары номера телефона и пароля мы не продолжаем дальнейшую авторизацию и тем самым не идет SMS информирование абонента об авторизации в UMS
  2. По умолчанию в UMS отключено SMS информирование при авторизации через мобильное устройство


Варианты решения:
  1. Использовать шифрование на первом этапе авторизации
  2. Показывать капчу
  3. Отправление SMS уведомление при попытки авторизации
  4. Использование буквенных паролей


Проверки осуществлял используя в качестве цели свой собственный номер телефона.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Каким провайдером сотовой связи Вы пользуетесь?
34.83%Мегафон933
25.83%МТС692
18.4%Билайн493
9.97%ТЕЛЕ2267
7.13%В моем бункере не ловит GSM191
3.84%Другой оператор103
Проголосовали 2679 пользователей. Воздержались 303 пользователя.