Айтишники вообще народ творческий. Все-то им неймется. Есть, так сказать, зуд в пятой чакре. Поиск приключений. Однако даже среди них каста white hat хакеров - это люди откровенно безбашенные. Это типа Робингуды, которые ищут уязвимости разных сервисов и после удачного взлома сообщают, как о самом факте уязвимости, так и о том как его устранить.
Вот и герой сегодняшнего поста замутил нечто похожее с сервисом проката самокатов в Москве. Сразу скажем, делать подобное сейчас смысла нет. “Дыра” уже залатана. Это так, для общего развития.
С вами канал “Цифровое просвещение”. Здесь трём за все, что связано с IT-сферой. И, да, у нас есть печеньки. Так что велком на темную сторону!
Итак, дело было вечером
И в этот прекрасный вечер одному белому хакеру пришла в голову мысль - зареверсить приватный API одного из самых крупных шерингов самокатов в РФ. А попутно выяснить один интересный момент - механизм взаимодействия с сервером по запуску самоката, как в это вмешаться и что можно поиметь.
Для перехвата пакетов данных между клиентом и сервером сервиса нужен сниффер. Это специальная программа по анализу и перехвату сетевого трафика. Эта зловредная программка вклинивается в канал обмена данными через атаку по типу Man In The Middle. То есть образно занимает срединное положение между лояльным клиентом и службами компании. Для получения конфиденциальной информации - то, что надо.
Наш хакер юзал HTTP toolkit. Но всплывает другая проблема - TLS как инструмент обеспечения безопасности данных. Нет ключа - нет доступа к чтению и редактированию данных. Как быть?
Ну…процесс подмены сертификатов в Android нам в помощь. То есть берем и просто добавляем наш хакнутый сертификат в систему. А так как ключ у нас есть, то и все, что с его помощью передано, становится доступным для расшифровки. Ура!
Как же наш доморощенный Робин Гуд подменил ключ? Тут было 2 варианта:
- Наличие root (работа с корневой папкой Android). Тогда юзаем встроенный в HTTP toolkit функционал и устанавливаем свой сертификат как системный. То есть заставим приложения доверять ему;
- А когда root нет, то меняем настройки приложения путем его декомпиляции, используя apkmitm.
У хакера root был. Поэтому замененный сертификат морочил головы всем приложениям, где не было защиты от подмены.
Реверсируем!
Все готово: сертификаты подменили, сниффер настроили. Начинаем работу с запросами сервера.
Авторизация, через которую получаем информацию о моделях самокатов, наличие подписки и город запроса. Конечно, их намного больше. Просто разбирать их будем до 1 января 2023 года. Ближе к делу!
Что же хакера привлекло в тексте программы. А вот этот запросик:
/gatewayclient/api/v1/order/make
Переводим на человеческий - Запрос на начало аренды самоката.
Следом идут 6 параметров: locationLat, locationLng, isQrCode, rateId, Identifier и withInsurance.
Переводим на общечеловеческий:
- locationLat и locationLng - координаты пользователя;
- isQrCode и withInsurance - взят ли самокат по qr коду и оформлена ли страховка;
И самое ВКУСНОЕ:
- Identifier - номер самоката;
- rateId - id тариф проката самоката.
Вот как раз последний запрос - rateId и есть “дырка”. Ведь его можно заменить и взять самокат по другому тарифу.
То есть берем фирменные расценки, например:
- 5 р/м - код тарифа j123id901k
- 8 р/м - код тарифа 1asda2dasd
- 10 р/м - код тарифа 2ad32ad3a4
Это фейковые примеры. Не суть. Хакер тут же накатал маленький скрипт на основе модуля mitmproxy для Python. После этого были изменены координаты на координаты ближайшего самоката. Далее подмена тарифа на самый дешевый - 5р/м. А потом запуск Termux эмулятора терминала под Android.
Проверка
Самокат уже был в руках. Проверка по телефону также показала, что тариф вместо 10 р/м стал 2р/м. И вместо положенных 600+ рублей хакер заплатил всего 120. После этого молодой человек связался с ТП сервиса проката и подробно пересказал им баг и пути его исправления.
За что получил бочку варенья и корзину печенья. Шутим. Бонусы он получил, много бонусов.
А исправить ошибку оказалось просто - всего лишь проверить доступность переданного тарифа для самоката, который пользователь берет в аренду. Если да - бери, если нет - отказать.
Кстати, по поводу железа, ПО и прочих услуг. Если загляните на официальный сайт нашей компании, то найдете много чего интересного.
Друзья, в связи с нововведениями Дзена выживут лишь те каналы, где есть подписки. Если наш канал Вам интересен, мы попросим вас подписаться и порекомендовать его другим подписчикам! Спасибо за понимание!
А еще обязательно заходите в наши соц. сети, там вас ждет еще больше нового интересного контента: