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



Небольшое предисловие


Всё началось с того, что я построил дом, а дом без охранной сигнализации в наших реалиях существовать конечно может, но ничего мало-мальски ценного там оставить будет нельзя (печальные случаи соседей тому подтверждение). Пока делалась отделка внутри и снаружи постановка и снятие с охраны ключиком не вызывала никаких неудобств.


В доме есть гараж, ворота открываются с пультика и соответственно туда ставится машина. Если дом стоит под охраной, то открытие с пультика вызывает сработку "тревоги" на ворота и через 2-3 минуты приезд серьёзных ребят. Чтоб этого не было, нужно сначала снять охрану (открыть тамбур, приложить ключик, закрыть тамбур, опять сесть в машину) и потом уже открывать ворота. И как-то эта процедура немного напрягает, особенно зимой, да и вообще как-то теряется вся "магия".


Конечно можно хитро сделать, чтоб открытие ворот снимало и сигнализацию, но до этого я ещё не добрался.


Зато прознал, что у нашего охранного агентства есть чудо приложение "Мобильная клавиатура Феникс". Приложение не именно их, но с ним они работают. С его помощью можно с телефона управлять сигнализацией, что уже более-менее возвращает радость от пользования всем этим.


А теперь сама история


Чтоб подключить управление охраной с приложения нужно приехать в офис охранного агентства, найти нужного инженера, заплатить за "настройку" в кассу 400 рублей и тебе будет выдана учётка, которая вбивается в настройки на телефоне и вуа-ля, можно рулить охраной как хочешь, получать пуш-уведомления и не знать горя.


Всё бы ничего, но при регистрации тебе выдаётся логин в виде трёх букв, например abb (инициалы), а пароль делается из четырёх последних цифр номера телефона (как сказал инженер — чтоб не забывали), то есть например 0808. Немного опешив от услышанного, спросил можно ли пароль задать другой, сказали что можно, но только цифры. Ну ок, задал себе нужный пароль и удалился тестировать как всё работает.



В голове тем временем уже созрела идея — а не попробовать ли...


Берём айфон подключаем его к маку, запускаем: rvictl -s iPhone_UDID, цепляемся к новому интерфейсу через Wireshark и глядим, как работает и что шлёт наше приложение. Можно брать и другие девайсы/инструменты, но у меня такие.



Работает оно, оказывается, через wamp протокол — это по сути почти тот же вебсокет. Естественно ничего не шифруется и можно посмотреть, как именно шлются запросы и собственно их повторить.


Теперь пытаемся воспроизвести полученные запросы. Всё это для быстроты тестов можно поставить расширение для хрома типа "Web Socket Client" и пробовать там.



Убедившись, что всё работает именно так как ожидалось, быстренько пишем клиента например на node.


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


Наш клиент будет довольно тупой, но тем не менее эффективный. Клиент перебирает все логины состоящие из 3-х букв. Если логин существует — стартует перебор пароля по нему, если нет — переходим к следующему. Пароль же перебирается в диапазоне от 0000 до 9999.


Запускаем всё это и ждём. Логины перебрались довольно быстро (минут 10), получилось около 150 штук (сервисом не так чтоб много пользуются). Пароль к каждому логину находится примерно за 8 минут. Никаких ограничений на проверку в АПИ нет. Причём можно долбить многопоточно.


Пароли подбирались в 100% случаях. При успешном подборе пароля АПИ выплёвывает такую информацию как: ФИО владельца, адреса (объектов может быть множество), некие токены (видимо для отправки пушей), ид сессии и так далее.


Авторизовавшись, можно соответственно снять с охраны весь объект. Объекты сами по себе попадались довольно отдалённые от города. Попадись эта информация в руки "плохих парней", то вскрытие, как бы охраняемого объекта, прошла бы безо всяких проблем, а потом спокойно можно было бы поставить под охрану и никто ничего бы не заметил.


Осознав, что и я сам являюсь клиентом этой конторы — стало немного не по себе.


Радует одно, видимо какой-то всё-таки мониторинг у компании есть или может случайно заметили, но через некоторое время приложение перестало принимать пароли, и предложило обратиться в офис.


В итоге всем поменяли логины и сделали нормальные пароли. Протокол, правда, как был нешифрованный, так и остался, но уже хоть что-то.


К чему это всё? Может кому-то после этого захочется сделать свою систему немного побезопаснее, а кто-то, кто пользуется аналогичным сервисом со схожими паролями посмотрит на это с другой стороны и попросит принять меры. Такими вот нехитрыми действиями немного повысится уровень безопасности.


Я специально не привожу тут названий и максимально обезличил все данные, дабы тот, кто узнает себя — сделал выводы :)


P.S. Данная статья носит исключительно информационный характер, описанные здесь проблемы на момент публикации уже не актуальны — компания приняла меры.

Комментарии (9)


  1. tvr
    15.11.2018 20:18

    Ничто не вечно в подлунном мире, кроме раздолбайства сторожей.


  1. ufozz
    15.11.2018 20:27

    Подруга работала в банке бухгалтером-кассиром, пароли от своих программ были вида 12345ЮН, где ЮН — юзер нейм, т.е. инициалы…
    так и живём…


    1. tvr
      15.11.2018 21:00
      +1

      Не сочтите вопрос за нескромный, но всё-таки, что это был за банк?
      Ну так, на всякий случай, чтобы совершенно случайно, туда не зайти…


      1. Rsa97
        15.11.2018 23:24

        Скорее всего, примерно, как в этом мультфильме


    1. shaggyone
      16.11.2018 06:11

      Помнится, открывал я ИП, и расчётный счёт в одном банке под названием А… д, выдали мне флэшку с ЭЦП, и паролем для личного кабинета. Пароль был тот, который я за пару часов до этого сам установил. На флэшке, естественно, была ещё и корзина с вирусом.

      Пообщался насчёт этого безобразия с админом банка. Поразмыслил, пообщался с директором филиала, ещё поразмыслил, закрыл счёт и ушёл в другой банк.


      1. roscomtheend
        16.11.2018 11:12

        Это случаем не лучший корпоративный АД 2018?


        1. shaggyone
          16.11.2018 18:10

          Вы про рекламу Сбера? К счастью нет, это банк помельче. Я с тех пор его Арьергардом называю.


  1. poloart
    15.11.2018 21:51

    Берём айфон подключаем его к маку, запускаем: rvictl -s iPhone_UDID, цепляемся к новому интерфейсу через Wireshark и глядим, как работает и что шлёт наше приложение. Можно брать и другие девайсы/инструменты, но у меня такие.

    Уважаю тех маководов, что знают о том, что макос — это форк юникса. Хотя бы так. Но таких реально единицы :)

    А так — лучше ARP-атака, с чем прекрасно на винде справляется Nighthawk, гуглится по «arp nighthawk».
    Тогда бы кусочек статьи выглядел бы так — «берём айфон, смотрим ip, убираем айфон в сторонку, запускаем nighthawk...»

    Я использую nighthawk уже довольно давно — очень удобная вещь. Любой дивайс шлёт вам свои пакетики, будь то планшет, труба, смарт-тв или ip-телефон.


    1. hardmodebitch
      16.11.2018 14:40

      Таких примерно столько же, сколько разработчиков, пользующихся макбуками.
      Много.