Хабрахабр

[Из песочницы] Watch Dogs в реальной жизни, или серьезные уязвимости в СКУД

Взламывать сайты, телефоны, системы доступа. Мне кажется, что многие парни, особенно в юном возрасте, хотели быть крутыми хакерами. Поэтому периодически ковырялся в различном ПО и ничего стоящего не находил. Вот и у меня немного остался этот мальчишеский задор. СКУД, полная уязвимостей, которые позволяют получить доступ к управлению всей системой (открытие/закрытие дверей, добавление своей карты прохода и т.д.). Но однажды, мне подвернулась удача, да еще какая!

Тогда добро пожаловать под кат! Интересно?

Статья написана исключительно в ознакомительных целях и вообще это все выдумка автора. Все описанное ниже проводилось на тестовом стенде.

СКУД — система контроля и управления доступом

Мне понадобилось все это интегрировать с одной достаточно популярной СКУД. Так получилось, что одно время я работал на строительно-дорожном предприятии, где мною был написан комплекс программ по выдаче пропусков, выдаче питания по этим пропускам и составлению отчетности. Мне пришлось самому разбираться в их ПО. Разработчики долго отвечали на запросы по документации, а сроки горели.

image
Примерная схема работы СКУД

Сервер СКУД работает с БД firebird 2. Я начал изучение с базы данных. Логин и пароль к ней оказались стандартными, что уже очень насторожило, но пароль можно задать в настройках программы. 5. В ней хранятся все зоны прохода, пользователи, номера их карт, доступы и адреса контроллеров. Пароли в БД к учетным записям хэшированы, но без соли, что плохо, но опять же некритично.

image
БД

Все данные идут по TCP и часть по UDP в незашифрованном виде. Дальше берем какую-нибудь программу для сниффинга трафика (я взял “SmatrSniff”, первое попавшееся, что может просматривать трафик localhost) и смотрим, что шлет клиент к серверу. Сервер сначала отсылает в открытом виде пароль от БД, ее месторасположение и только потом проверяет логин и пароль! И тут начинается самое интересное.

image
Пароль от базы "masterkey"

Мы можем выдать себе карту с доступом на любой объект. Получается, что, не зная логина и пароля, мы можем получить полный доступ к базе данных, что дает нам практически безграничные возможности. Но чтобы эти данные загрузились на контроллеры, надо дать команду серверу из клиента. Прописать другому пользователю свою карту и заходить под его именем. Придется ждать, когда кто-нибудь нажмет на кнопку полной выгрузки. Хоть мы и можем взять пароль к клиенту из БД воспользоваться открытыми базами MD5 и попробовать подобрать пароль к хэшу (напомню, что пароли в базе без соли), но если пароль задан сложный, то скорее всего ничего не выйдет.

Для этого я попробовал повторять запросы к серверу с помощью “TCP / IP Builder”. Дальше я посмотрел, а влияет ли вообще на что-то авторизация. Тут я немного приуныл, потому что для интеграции придется реализовывать повторение всей цепочки авторизации и только потом отправлять пакет для загрузки данных в контроллер. И да, последующие запросы на сервер, без авторизации не работают (присылает в ответ отказ).

Сервер ответил «ok», а дверь запищала. Напоследок я решил повторить запрос перевода двери в открытый режим. Я повторил это же с другого компьютера в локальной сети и это тоже сработало. Без какой-либо авторизации.

image
Примерный вид пакета

Прописать себе карту и сразу загрузить эти данные в контроллеры. Это значит, что мы можем открыть/закрыть любую дверь с любого компьютера в локальной сети. После чего спокойно пройтись по объектам и удалить все логи нашего посещения.

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

Из-за дешевизны составляющих и бесплатного ПО эта СКУД весьма распространена. В итоге имеем полную уязвимостей СКУД, которые дают нам неограниченный доступ к проходам на объекты. Фирма гордится призовыми местами на разных мероприятиях. Она стоит во многих школах Москвы, и я видел ее на других объектах. Потому что считаю, что такие уязвимости на уровне архитектуры не получится исправить без переписывания всего ПО с нуля и обновления всего оборудование людей, купивших эту систему (есть еще несколько серьезных дыр на уровне архитектуры, но их описание увеличило бы статью втрое). Я специально не называю имя этой организации, и я также не писал им об этом. Также может помочь грамотная настройка маршрутизации. Тем, кто узнал по скрину СКУД и она установлена у вас — советую полностью изолировать сеть (что вроде и так считается «best practices») в которых находятся все составляющие системы, а доступ к базе для добавления сотрудников сделать только через VPN.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть