Открыть список
Как стать автором
Обновить

Домофоны, СКУД… И снова здравствуйте

Информационная безопасностьРазработка под iOSРазработка под AndroidРеверс-инжинирингАналитика мобильных приложений

Доброго времени суток, дорогие читатели. Однажды, я уже писал здесь об уязвимости в контроллерах СКУД от IronLogic. Подробнее - здесь. Там уязвимость заключалась (и заключается, так как инженер IronLogic считает, что "Уязвимость некритична, исправлять не будем.") в программном баге прошивки z5r. Здесь же я хочу поделиться другим исследованием, на этот раз уязвимость присутствует в сервисе облачного видеонаблюдения и домофонии от "Орион Телеком" и "Росдомофон". Чудо называется "Домофон 2.0" (впрочем у "Росдомофона" есть и собственный одноименный бренд), и внедряется (по крайней мере в Красноярске) с начала 2020 года. Осторожно, много фото.

Удобно - да. Безопасно ли?
Удобно - да. Безопасно ли?

В отличии от аналогичного решения от "Дом.ру", "Домофон 2.0" не требует замены домофонной панели и инфраструктуры, просто устанавливается камера и небольшой модуль (на основе Raspberry Pi, как ни странно), и вуаля - вы можете управлять открытием/закрытием двери, принимать звонки с домофона прямо на смартфон, смотреть камеры и так далее. Лично мне стало интересно как оно работает, и я зарегистрировался в приложении, ввел логин и пароль от аккаунта "Орион", и все заработало. Однако я захотел выловить RTSP-поток с камеры возле домофона для домашней телестенки, и я полез анализировать приложение. Первое, что пришло на ум - Wireshark. Отлично, ссылка вида "rtsp://rdva10.rosdomofon.com:554/live/%НОМЕР_КАМЕРЫ_В_СИСТЕМЕ%" есть, но удаленная сторона потребовала логин-пароль. Сложнее - Wireshark говорит что аутентификация типа Digest, и пароль с логином в открытом виде не мелькают. Сформируем список задач:

  • Перехватить данные передаваемые приложением и обратно

  • Понять, как приложение передает служебные команды

  • Понять, откуда берется связка логин-пароль

Вооружаемся декомпилятором, Android Studio, и виртуальной машиной, качаем .apk-версию приложения, разбираем. Узнаем, что приложение обращается только к двум адресам при запуске - rdva.rosdomofon.com, и log.rosdomofon.com:12202/gelf, общение происходит по протоколу HTTP, и дальнейшие инструкции приложение берет оттуда. И тут мне пришло в голову запустить приложение в Bluestaks и мониторить logcat. Вот тут-то и начинается самое интересное. Логин-пароль я нашел минуты за полторы, но тут мелькали и токены, и точные HTTP-запросы.

Вывод logcat'а
Все оказалось намного проще.
Все оказалось намного проще.

Однако, не было бы этого поста, если бы я не полез экспериментировать далее. С помощью инструмента Postman я отправлял запросы и обнаружил, что удаленная сторона даже не проверяет User-Agent приложения. И я обнаружил интересный момент, что при регистрации номера телефона и адреса в приложении, оно в открытом виде взаимодействует с ресурсом "https://panel.rosdomofon.com/". Логин и пароль, который мне удалось извлечь, я публиковать не буду, а сразу перейду к сути того, что мне удалось получить доступ фактически к административной панели сервиса. И я не удержался - набросал скрипт, который по моим прикидкам может открыть любую дверь, подключенную к этому сервису. Демонстрация работы - ниже.

Запуск и установка параметров скрипта

В качестве параметров указано -a, что означает что все будет выполнено в автоматическом режиме, -rs, указывает на то, что после закрытия приложения "Росдомофон" аккаунт будет автоматически удален, и адрес в формате "Город. Улица. Дом. Подъезд. Квартира." Скрипт автоматически получит необходимые данные и зарегистрирует нового пользователя в системе с указанием введенного адреса, после чего сгенерирует конфиги для родного приложения и запустит его с аккаунтом для выбранного адреса.

Результат

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

Готово.
Готово.

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

UPD. Ссылка на видеодемонстрацию.

UPD. 2 На текущий момент со мной связались обе компании, идет работа над исправлением уязвимости, эксплуатация уязвимости на данный момент невозможна.

Теги:СКУДдомофонбезопасность
Хабы: Информационная безопасность Разработка под iOS Разработка под Android Реверс-инжиниринг Аналитика мобильных приложений
Всего голосов 15: ↑13 и ↓2 +11
Просмотры5.5K

Похожие публикации

Разработчик мобильных приложений (Flutter)
от 200 000 до 250 000 ₽Voxter, S.A.Можно удаленно
Разработчик мобильных приложений (iOS)
от 200 000 ₽HighTeamМоскваМожно удаленно
Ведущий разработчик C++/Qt под Android
от 180 000 ₽2GISМожно удаленно
IOS developer
до 2 500 $G1 SoftwareМожно удаленно
iOS-разработчик
до 100 000 ₽X-KeeperКрасногорск

Лучшие публикации за сутки