Что такое код подтверждения. Уязвимость ВКонтакте: отправляем сообщение с кодом восстановления страницы на чужой номер

Иногда в Сети можно наткнуться на вопрос вида: Telegram C ode что это ? Ответы при этом выдают разные – начиная от консультаций по открытой части программного кода Телеграмм, заканчивая и вовсе невнятными объяснениями. На самом деле все довольно просто.

Telegram Code что это за СМС

Под кодом Телеграмм подразумевается специальный цифровой код, который поступает на мобильный телефон абонента, чтобы тот мог зайти в свою учетную запись или завести новую. Отправка кода также предусмотрена, например, при удалении аккаунта или при изменении телефонного номера. Можно, впрочем, более подробно ответить на вопрос: Telegram C ode СМС что это значит ?

Как только пользователь скачал и установил его себе на устройство, при первом запуске мессенджера появляется предложение ввести номер мобильного телефона. Именно к нему будет привязан созданный аккаунт . Нужно:

  • ввести номер в соответствующее поле в международном формате. При необходимости, можно изменить и страну. По умолчанию выставлена Россия;
  • на указанный мобильный номер придет СМС с секретным кодом ;
  • этот код нужно ввести в еще одно поле.

Все, теперь можно пользоваться мессенджером . Однако случается и так, что пользователь тщетно ждет заветного СМС с кодом. Это может произойти, если:



Точно так же СМС-код приходит в случае, если:

  • пользователь подает запрос на смену телефонного номера . В последней сборке Телеграмма это стало возможным. Но для этого также требуется подтвердить свою личность через ввод прежнего номера. И именно на него приходит СМС. Это может быть не удобным, если, например, тот телефон, с которого происходила регистрация, был украден или потерян;
  • пользователь хочет удалить свою страничку.

Кому-то может показаться, что подобные предосторожности излишни. Однако, стоит представить ситуацию, когда телефон попадает в чужие руки, — и подобные мысли волшебным образом у человека пропадают… Однако код не обязательно вводить при каждой загрузке мессенджера. Можно просто выходить из него и не разлогиниваться. Итого: каждому, кого интересует, Telegram C ode СМС что это значит , можно дать примерно такой ответ: это набор цифр – пароль – для удостоверения свой личности в Телеграмме.

Обычным весенним днем, занимаясь «подготовкой» к ЕГЭ по информатике, наткнулся на , позволявшей взломать все аккаунты в социальной сети, за которую выплатили 15000$. Суть уязвимости заключалась в переборе кодов восстановления на тестовом домене компании. Я подумал, а чем собственно ВКонтакте хуже? И решил попробовать провернуть подобный трюк у них. Зная, что веб-версия уже достаточно хорошо исследована, жертвой должен был стать Android клиент, а что из этого вышло можно прочитать под катом.

Смотрим трафик

Первым делом я захотел узнать, какую информацию приложение передает в сеть во время процесса восстановления страницы. Помощником в этом деле выступил Fiddler, я настроил его и Android устройство, как написано в официальной документации . Таким образом в Fiddler становятся доступны все HTTP/HTTPS запросы c устройства. Теперь, в приложении, смело выходим из аккаунта ВКонтакте и нажимаем на кнопку «Забыли пароль?». После ввода номера телефона приложение отправляет 2 HTTPS запроса. Особую ценность представляет второй, потому что именно он отвечает за отправку SMS с кодом восстановления.


Особое внимание стоит обратить на некоторые параметры запроса:

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

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


Честно говоря на этом моменте мне хотелось начать перебирать коды восстановления, меняя значение параметра «code». К сожалению, и этот запрос защищен от изменения с помощью «signature». Придётся разобраться, как генерируется эта подпись.

Реверс инжиниринг: декомпиляция

Для первоначального анализа можно попробовать декомпилировать приложение ВКонтакте. Так можно получить некоторые части исходного кода на Java.


Открываем в jd-gui все полученные.jar файлы. И не долго думая, делаем поиск по строке «signature».

LocalObject3 = String.format(Locale.US, "%s%s?%s&signature=%s", new Object { d(), e(), localObject3, URLEncoder.encode(ru.mail.libverify.utils.m.b(f() + (String)localObject4 + ru.mail.libverify.utils.m.c(a.b())), "UTF-8") });
Эта библиотека сделана в лучших традициях security through obscurity, весь код надежно обфусцирован. Поэтому, через jd-gui мне удалось узнать только то, что за «signature» прячется MD5-хэш от неизвестной строки.


Реверс инжиниринг: дизассемблирование

Мне требовалось узнать, что за строка поступает в функцию ru.mail.libverify.utils.m.b(). Самый простой способ сделать это - немного изменить код приложения. Ну что ж попробуем. Для начала используем apktool , с командой:

Apktool.jar d vk.apk -r (ключ -r для игнорирования ресурсов)
Теперь, в папках с smali-кодом находим файл в котором происходит генерация MD5. В моем случае путь был такой: smali_classes3\ru\mail\libverify\utils\m.smali. Переходим к нужному методу:

Method public static b(Ljava/lang/String;)Ljava/lang/String; .locals 8 .param p0 # Ljava/lang/String; .annotation build Landroid/support/annotation/NonNull; .end annotation .end param:try_start_0 const-string/jumbo v0, "UTF-8" invoke-virtual {p0, v0}, Ljava/lang/String;->getBytes(Ljava/lang/String;),"de":["wGxBWzh9DgQ","8532rqOYYg4","AY1pb3fdKj0","E-cXLIgV9eI"],"es":["UQ_-8vAE7Ug","yvMgVftTHzo","es0aMOg8YrY","8FsetOJK8Yc"],"pt":["mu7Ejm0LqXs","S5czfTIQ7Dg","S5czfTIQ7Dg","S5czfTIQ7Dg","mu7Ejm0LqXs","S5czfTIQ7Dg","mu7Ejm0LqXs","VcSDOtFEudo","NIHknTtNP9w"],"bg":["iSP0L-7igNk"],"pl":["ycBP7VDjwfM","ycBP7VDjwfM"],"la":["GP09Fqqo9iM"],"lt":["7vlddh4Ffqk"],"el":["ppVVucGNQn8"]}

Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: