Всем привет. Озадачилась недавно перехватом сессии VK. Если с HTTP-сессией открываемой в браузере всё ясно и понятно (просто перехватываешь cookie и дело в шляпе - можно выкачивать весь профиль для дальнейшего изучения в офлайне), то с мобильным приложением дела обстоят похуже. Мобильное приложение VK использует тот же самый публичный API, что и другие приложухи. Идентификатор приложения для Android: app2274003. Секретный ключ API: hHbZxrka2uZ6jB1inYsH. (Посмотреть можно в классе com.vkontakte.android.Auth декомпилятором Java) API предполагает, что каждый запрос нужно подписывать параметром sig (сигнатура). Сигнатура вычисляется по следующему правилу: Code: sig=md5('uri запроса со всеми параметрами и access_token'+SECRET) (Подробнее смотри метод com.vkontakte.android.api.APIRequest.getSig()) Если с uri запроса проблем нет - он виден в снифере, то проблемы с полем SECRET есть и большие. Этот параметр передаётся по сети и перехватить его можно только непосредственно при аутентификации с телефона. Дальше этот параметр хранится в памяти телефона (смотри класс com.vkontakte.android.Global и поле secret) и каждый раз восстанавливается из памяти и никогда не запрашивается с сервера. У кого какие идеи на этот счёт? SECRET имеет размерность 18 символов и словарь для брутфорса будет занимать 12 393 496 ТБ. Таким образом брутфорс параметра SECRET полностью исключён. Радужные таблицы так же не имеют смысла, так как по сути, URI запроса является salt - он каждый раз разный. Кажется, что единственным возможным способом перехватить SECRET это каким-то образом разлогинить приложение (или заставить его думать, что оно разлогинилось) и уже после этого перехватывать SECRET.
Не все так просто. Для перехвата запроса авторизации нужно будет добавить на устройстве свой сертификат в доверенные.
Я так понимаю, что для того, чтобы приложение работало по HTTPS, пользователь должен зайти в настройки и включить эту опцию. Кажется, что по умолчанию она выключена и какая-то часть пользователей никогда не заходила на вкладку "Безопасность" в настройках профиля. Или я заблуждаюсь?
Вот чёрт. Совсем вылетело из головы, что запросы на авторизацию идут по HTTPS. Как на счёт SSL Strip? Вариант?
SSLstrip перенаправляет https на http. При отправке запроса авторизации по http мы получим ответ: Code: {"error":"invalid_request","error_description":"You must use HTTPS for oauth\/token requests"}
Беда... То есть, тупик. Загнать сертификат на устройство жертвы незаметно для неё - это что-то фантастическое, на мой взгляд.
Если я не ошибаюсь, SSLstrip не "перенаправляет", а находясь посередине делает что-то типа fallback'a и клиент посылает человеку в середине не зашифрованные данные, а вот SSLstrip может дальше работать по https
Да, но только при условии, что в телефоне уже будет установлен сертификат для соединения Телефон - ССЛ стрип. Посокльку данные с телефона на страницу авторизации наверняка пойдут по HTTPS, и еще нужно чтобы данные пошли именно к тебе. Но это уже совсем другая история и как я понимаю перед вопрошаюшим она уже не стоит.
Лично я когда чекаю с помощью sslstrip я получаю токен. Как я понимаю про взлом аккуантов, в которые заходят с помощью мобилного приложения - можно забыть?