«Угнать за 60 секунд» на примере одного каршеринга

image
«Без разочарований не ощутишь вкус победы» © Мемфис Реймс

История началась банально. В каком то ролике на YouTube рассказывали про каршеринг. С демонстрацией функции «приветствия», когда вам не удается найти автомобиль на большой парковке. У меня тут же возникла мысль проверить — а не смогу ли я активировать функцию приветствия на абсолютно все автомобили этой компании?! Ну весело же. Крупный российский город. И в какой то момент тысячи автомобилей по команде начинают сигналить и моргать фарами. Почти как в фильме «Крепкий Орешек 4».

В результате все получилось куда интереснее. Ведь фактически я нашел возможность угона любого автомобиля.

Внутри приложения для пользователей все стандартно. Загрузка ресурсов, splash-screen и форма входа в приложение.

Но тут моя идея по манипулированию всеми автомобилями разбилась о камни. С недавних пор я живу не в России и в приложение нельзя войти без российского номера телефона. Приложение не поддерживает международный формат номеров. А о виртуальных номерах я почему-то не вспомнил.

От отчаяния я догадался ввести +7 000 0000000. И удивлению не было предела, когда появился следующий шаг с предложением ввести код из sms. Еще запустился обратный отсчет на 60 секунд, намекающий о том что срок жизни пароля очень короткий. И что нужно торопиться.

image

Как так? Какое sms если номер вообще не может быть реальным?!

Эта ситуация заставила меня сделать несколько выводов:

  • приложение не проверяет формат телефона.
  • вероятно, формат номера можно будет подбросить другой, просто перехватив запрос и изменив его на лету
  • приложение, не зависимо от того какой телефон получен, отправляет команду на генерацию пароля пользователю.

Т.е где то в базе нас ждет пароль. Который был присвоен нашему красивому номеру +7 000 0000000.

Вообще такой метод аутентификации пользователя принято называть OTP (One Time Password).
Т.е пароль, который нам «присвоили», должен быть использован только один раз.

Вроде бы тупик. Можно выключать ноутбук, телефон и ложиться спать. Но меня не отпускала мысль — а что если подобрать этот пароль? Ведь у нас всего 10000 возможных вариантов! Успешность этой затеи была сомнительная. Можно было словить капчу, блокировку, в конце концов, я своим подбором мог спровоцировать единичный вызов «успешного пароля». И в формате OTP, повторное использование этого пароля не допустимо. Что же говорить о таймере обратного отсчета, который уже давно закончился.

Подходящий момент для этой гифки.

image

Ловлю запрос ввода пароля. Делаю пароль — динамическим параметром. Устанавливаю диапазон возможных значений для перебора. Со скрещенными пальцами запускаю атаку на подбор. В процессе подобных атак я никогда не пытаюсь маскировать свои действия. Не подменяю ip адреса. Не пользуюсь VPN. Не ставлю маленькое количество потоков. Мне это не надо. У меня нет мотивации чтоб меня не заметили.

Через 60 секунд на глаза попадается ответ сервера. Найден успешный пароль.

Но получится ли использовать его повторно? Ведь это One Time Password.

В приложении таймер обратного отсчета уже грустно подсветил поле ввода пароля серым цветом. Намекая тем самым на то что я опоздал.

image

Ставлю курсор в поле с паролем. Стираю ранее веденный, ввожу успешно подобранный пароль и нажимаю кнопочку входа.

И тут очередная проблема. Приложение говорит что мы какой-то «не подтвержденный пользователь». И выбрасывает через пару секунд на главную страницу.

Или мне не удалось реализовать все задуманное. Или мой пользователь реально не прошел какую то модерацию, подтверждение документов и все такое…

В такой ситуации оставалось только два варианта. Либо искать друзей, которые пользуются этим сервисом. Либо искать активных пользователей, которые засветили на просторах интернета свои мобильные номера.

Ну как вы понимаете друзей в столь позднее время, я даже если бы захотел, не нашел.
По-этому я пошел искать пользователей. Это было самое легкое. В социалочках нашел официальные сообщество каршеринга. Посмотрел комментарии последних публикаций. Открыл страницы нескольких пользователей. На 3 или 4 профиле одного из пользователей удалось обнаружить опубликованный мобильный номер.

image

Взял этот номер и пошел проверять теорию о взломе.

Через пару минут я уже бродил по приложению и изучал его возможности. У пользователя оказалась огромная история поездок. Несколько десятков тысяч бонусных денег, которые можно использовать для поездок. Ну и несколько карт для оплаты, которые были привязаны к профилю данного пользователя.

image

По изучав ролики на youtube и обзоры, стало понятно, что при аренде автомобиля от данного пользователя мне не придется вводить какие то дополнительные комбинации цифр защищающие автомобиль от угона через взломанный аккаунт.

Т.е у меня была абсолютно открытая возможность взять любой автомобиль в аренду без предъявления требуемых документов. При этом взять автомобиль и расплатиться от лица взломанного пользователя. Оплачивать возможные штрафы от ГИБДД пришлось бы так же нашей жертве.

image

К этому моменту у меня просто пропал сон. Безусловно, то что я получил доступ к учетной записи пользователя — это не правильно. Но благодаря этому мне удалось обнаружить опасную логическую уязвимость.

Несколькими секундами позже я уже писал сообщения управляющим каршеринга и руководителю ИТ департамента. Найти их было не сложно.

Люди адекватно отреагировали на ситуацию. Без возражений приняли во внимание все проблемы, которые я обнаружил. И приступили к исправлению. Через 1-2 недели проблемы были устранены. Мне даже был предложен автомобиль в бесплатное пользование на несколько дней. Но я предпочел не усложнять себе жизнь чужим авто в чужом городе (в период командировки).

Из всей этой истории нужно сделать следующие выводы:

  • Не стоит пренебрегать защитой от Brute-force.
  • Проверяйте формат номера телефона если он используется в качестве логина.
  • После однократного использования OTP не должен работать.
  • Срок жизни OTP должен быть коротким, даже если его не использовали.
  • В качестве логина не стоит использовать номер телефона.
  • Лучше делать дополнительную авторизацию пользователя при аренде автомобиля через PIN-код (код, который устанавливает сам пользователь при регистрации). Этот PIN-код пользователь должен вводить для того чтобы разблокировать автомобиль.

Такие дела.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 45
  • +7
    Что-то мне эта статья (в сочетании с профессией автора) напомнила историю про собеседование идеального тестировщика.
    • 0
      У меня примерно так и получилось с моим последним сотрудничеством на одну крупную фирму. После репорта о критической уязвимости, они очень охотно присылают теперь предложения протестировать то или иное приложение.
    • +2
      Судя по скриншоту, Белка кар? Один из лидеров рынка.

      Что же творится у менее крупных каршерингов, которых нынче в Москве уже более 10 штук…
      • 0
        «Штирлиц как никогда был близок к провалу» ;)
        На самом деле я бегло пробежался по нескольким из них. А то мало ли беду навлеку. Одни товарищи даже были уведомлены о неосторожной работе с данными. Но последствий после моего сообщения не последовало, к сожалению… :(
        • 0
          А что за каршеринг, который не ответил? Я почти во всех зарегистрирован, хотелось бы понять, какой из них для меня опасен :)
          Можно в ЛС.
          • 0
            Я абсолютно все не смотрел. Так что за все не ручаюсь. Серьезного для пользователей там ничего не было. А вот для самого каршеринга опасность есть. Но они решили что поживут видимо с этим.
            Всю эту ситуацию надо воспринимать как напоминание о том что никто не в безопасности. Завтра найдут зеродэй и даже те кто были в безопасности перестанут там находится. Я склонен пользоваться подобными вещами с осторожностью. И не привязывать карты на которых внушительные суммы могут быть. Для интернета у меня всегда отдельная карта.
      • +1
        Красивая и поучительная, почти детективная история. Респект автору.
      • +6
        Читая такие истории, я думаю о том, как хорошо что я программист и знаю как сильно говнокодят такие системы и забивают на безопасность.
        Вернее конечно не забивают, когда проект вырос и стал огромный, даже стараются что-то сделать. Но до того как он вырастет там такое накодят и потом оставят, что страшно.

        Поэтому не ввожу данные карт и стараюсь использовать всякие сервисы по минимуму.
        Насмотрелся я на кухню этих Федеральных компаний изнутри. Снаружи конфетка, а внутри такие же говнокодеры как и везде)

        Как-то был на собеседовании в подпроект для Госуслуг(ДЛЯ ГОСУСЛУГ!!!), где используются соответственно все данные.
        Цитирую слова нанимателя «Проект работает, но нужно дорабатывать и рефакторить код. Код конечно там очень легаси, проект начинали писать 7 лет назад, но потом он перерос в данный. и уже 2 года работает как часть госуслуг. Нам туда очень нужен человек и ближайшие пол года вы будете там работать один.»
        Тоесть не зная меня, и что я могу натворить с безопасностью, как минимум, меня на пол года хотели поставить на работающий проект где происходить обработка таких данных:)

        Ну нафиг веб сервисы))
        • 0
          А я так надеялся, что все закончится массовым бибиканьем :(
          • 0
            Вроде бы мы с этой компанией договорились посмотреть их сервисы по подробнее. Так что может удасться еще по бибикать :)
          • 0
            а можно поподробнее, каким образом подбор был реализован. Разве трафик между клиентом и сервером не зашифрован?
            • 0
              В этом плане все там окей. MITM в чистом виде реализовать не получится. Но мне никто руки не держал, и я на свой телефон смог поставить сертификат и проснифить трафик через свой проксик. Ну а дальше нужный запрос на отправку пароля был просто реализован через брутфорс.
              • 0
                Спасибо, статья получилась интересной) У самого есть аккаунт в belkacar
            • 0
              Я так понял, посигналить всеми машинами вы не попытались?
              • 0
                пока нет) но все впереди.
                • 0
                  А я думал, чего вчера белкина машина стояла аварийкой в ночи мигала…
              • 0
                Пошел удалился из каршеринга…
                • 0
                  не нужно поспешных решений принимать. используйте просто отдельную карту для «интернетов» и вероятно все будет хорошо.
                  youtu.be/KopWe2ZpVQI
                  Посмотрев это вы же не перестанете пользоваться банками?
                  • 0
                    А как я буду доказывать, что я не ехал на машине и не бросил ее где-нить у стен Кремля? :)
                    • +1

                      Или хуже, не сбил на ней кого-то.

                • +2
                  Люди адекватно отреагировали на ситуацию. Без возражений приняли во внимание все проблемы, которые я обнаружил. И приступили к исправлению. Через 1-2 недели проблемы были устранены.

                  Да, действительно, адекватные. Потому что читал о многих случаях, когда в аналогичных ситуациях на тех кто нашёл уязвимости, заводят уголовные дела. Да, и срок исправления небольшой.
                  • +1
                    Это действительно так. Иной раз так стремно на контакт выходить если что-то случайно обнаружил… Каждый раз лотерея как твои замечания воспримут.
                  • +2
                    Почитайте пользовательские соглашения каршерингов, там вообще жуть.
                    Некоторые из них пишут, что будут передавать ваши личные данные любым 3м лицам. А это ваши сканы паспорта, прав, селфи с паспортом.

                    У «белки» отношении договора нормально, но через пару дней, после того, как я там зарегистрировался, на мой номер позвонили из некой «службы безопасности Сбербанка», назвали мое полное ФИО и просили назвать паспортные данные для «авторизации». Хотя в сбере я незарегистрирован, свой номер телефона в интернете не свечу.
                    Конечно, может просто совпадение, но какое-то странное.
                    • +2
                      СБ Сбербанка не будет звонить, просто так, для какой то авторизации. Так что я бы насторожился, о том, кто то и зачем звонил.
                      • 0
                        Это были не СБ Сбера, а мошенники, которые хотели что-то от меня получить. Начали с попытки выяснить мои паспортные данные.
                      • 0

                        Как минимум все эти компании не дают работать, не привязав предварительно карту.


                        Так что карту "для работы с мудаками" обязательно приходится иметь на такие случаи.

                        • 0
                          Да, я завел себе виртуальную карту и все платежи в интернете провожу через нее. На основной карте заблокировал платежи через интернет.
                      • 0
                        Кто знает без гугления или помнит, откуда взялась фраза «угнать за 60 секунд»? (Точнее, «угнана за 60 секунд»).
                        • +1
                          Фильм с Николасом Кейджем же!
                          • 0
                            Рука-лицо. Ну да, а почему этот фильм так называется-то?
                            • 0
                              до фильма с Кейджем был оригинальный фильм 74 года
                              image
                              • 0
                                Вооот, уже теплее. Так, 74 год — Gone in 60 seconds. Почему? Кстати, оригинал на порядок интереснее в плане погони. В 74 году бОльшая часть фильма — погоня за Мустангом, в новом слишком много лирики.
                                • 0
                                  потому что надо фильм посмотреть?
                                  я так понимаю вы знаете ответ.
                                  • 0
                                    Да, просто забавный факт. Без просмотра оригинала название не понять.
                                    В оригинале была сцена, где машину угоняют с парковки около автодрома. И там было табло-бегущая строка, на которой был текст «Lock your car, or it may be gone in 60 seconds».
                          • 0
                            Атмосферный пост. Только у меня в голове при чтении звучало «Bring Sally up and bring Sally down»? ) www.youtube.com/watch?v=hJkm5R40Hj0
                            • 0
                              Зер гут, Вольдемар! Зер гут!
                              • 0
                                Стоп, я немного не понял про OTP. Это что, получается вы смогли ввести успешно подобранный пароль к одному юзеру, в окно ввода пароля к другому юзеру, да ещё и после того как на первом окне закончился срок ввода?
                                • 0

                                  На сколько я понял, нет — брутфорсился тот же пользователь (номер телефона со страницы в vk), просто по одному паролю получилось авторизоваться, как минимум, дважды и уже после того, как в форме авторизации написали, что пароль просрочен.

                                  • 0
                                    Да Tomatos, вы все верно поняли. Ну это и из выводов в конце статьи можно понять :)
                                • –3

                                  Где технические детали ???
                                  А вообще уязвимость не серьезная. Все авто застрахованны по полной, компания купит новый. Клиент штрафы не будет оплачивать, так как штрафы приходят на собственника автомобиля.

                                  • 0

                                    Ага, вообще не серьезная, особенно когда кто-то наездит по вашей карте тысяч на 200. На счет штрафов: не исключено, что у каршеринга в оферте оговорен этот момент. По времени штрафа не трудно выяснить, кто был за рулем авто.

                                    • 0
                                      приходят штрафы — операторы каршеринга прекрасно умеют сопоставлять время, место и ID клиента
                                      ДелиМобиль, кстати, теперь успевает в срок, достаточный, чтобы оплатить 50%
                                  • 0
                                    Получается, вскрываемый пользователь получал на свой телефон эти коды и никак не отреагировал.
                                    • 0
                                      «Взломанный пользователь» получил смс когда уже была глубокая ночь. Пока он проснется и разберется…

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.