С каждым годом становится все больше «умных» устройств. «Умнеют» браслеты, кофеварки, холодильники, машины и прочие удобные и полезные вещи. Появляются «умные» улицы, дороги и даже города.
Такое устройство, как «умные» камеры, уже давно участвует в повседневной жизни многих людей – как элемент общения, элемент системы безопасности и видеонаблюдения, как устройство, присматривающее за домашними животными, и так далее.
Современные «умные» камеры имеют возможность подключения к «облакам». Сделано это для того, чтобы пользователь мог с различных устройств наблюдать за тем, что происходит в удалённой точке.
Исследователи Kaspersky Lab ICS CERT решили проверить, насколько защищены от кибер-злоумышленников «умные» камеры, которые довольно активно используются в повседневной жизни обычных людей. Исследованная камера имеет широкий функционал, по сравнению с обычными веб-камерами и может быть использована в качестве видео-няни, элемента общей системы безопасности жилища или же системы мониторинга.
Первичный анализ по открытым источникам показал, что таких камер с «белым» IP-адресом в интернете почти 2000 штук.
Hanwha SNH-V6410PN/PNW SmartCam: характеристики
Устройство способно снимать видео в разрешении 1920×1080, 1280×720 и 640×360, имеет ночное видение, датчик движения и двустороннюю связь (может не только записывать видео и аудио, но и имеет встроенный динамик, через который можно передавать звук). Камера работает через облачный сервис, то есть не подключается напрямую к какому-либо устройству (компьютеру, например). Настройка осуществляется путем создания беспроводной точки доступа на камере и последующего ее подключения к основному роутеру с использованием Wi-Fi. Пользователи могут управлять камерой со смартфона, планшета или компьютера. Отметим, что данные камеры функционируют только лишь через облако. Другого метода общения пользователя и камеры нет.
Сама камера работает на основе процессора Ambarella S2L (архитектура ARM). В качестве первоначального загрузчика используется Amboot. После стандартных шагов загрузки Amboot загружает ядро Linux с определенной командой в качестве параметра:
console=ttyS0 ubi.mtd=lnx root=ubi0:rootfs rw rootfstype=ubifs init=/linuxrc model=SNH-V6410PN ethaddr=************ sn=ZC7D6V2H*********
s=c
Далее происходит старт systemd. После этого производится обычная загрузка системы. Монтируются различные разделы, выполняются команды из rc.local. При выполнении rc.local запускается файл mainServer в режиме демона, который и является ядром логики работы камеры. Сам mainServer выполняет команды, посылаемые ему через UNIX socket /tmp/ipc_path по бинарному протоколу. Для обработки пользовательских данных используются скрипты, написанные на PHP, а также CGI. При запуске mainServer открывает UNIX socket /ipc_path. Анализ PHP скриптов показал, что основная функция, отвечающая за взаимодействие с mainServer, находится в файле /work/www/htdocs_weboff/utils/ipc_manager.php.
Взаимодействие с пользователем
При получении команды от пользователя (например, поворот камеры, выделение зоны слежения, переход в режим ночного видения и так далее) производится ее анализ. Каждой команде и параметру соответствует свой флаг, который является константой. Все основные флаги описаны в файле /work/www/htdocs_weboff/utils/constant.php. В дальнейшем формируется Header и Payload пакета и производится запрос через UNIX socket /tmp/ipc_path к mainServer.
Из анализа файла ipc_manager.php видно, что на данном этапе аутентификация не используется. Запрос производится от лица пользователя admin.
function makeHeader($cmd, $act, $type, $len){
$header = array();
$header = array_fill(0, 77, 0x00);
$header[HEADER_OFF_MAGIC_NUMBER] = 0xFE;
$header[HEADER_OFF_MAGIC_NUMBER+1] = 0xFF;
$header[HEADER_OFF_MAGIC_NUMBER+2] = 0xFE;
$header[HEADER_OFF_MAGIC_NUMBER+3] = 0xFF;
$header[HEADER_OFF_MAJOR_VERSION] = MAJOR_VERSION; //Major Version
$header[HEADER_OFF_MINOR_VERSION] = MINOR_VERSION; //Minor Version
int2byte($header, $cmd, HEADER_OFF_COMMAND); //Command
$header[HEADER_OFF_ACTION] = $act; //Action
$header[HEADER_OFF_MSG_TYPE] = $type; //Type
$header[HEADER_OFF_ERROR_CODE] = 0xFF; //Error Code
int2byte($header, $len, HEADER_OFF_MSG_LENGTH); //Length
str2byte($header, «127.0.0.1«, HEADER_OFF_PEER_IP, 40); //Peer IP[40]
int2byte($header, 80, HEADER_OFF_PEER_PORT); //Peer Port
str2byte($header, «admin«, HEADER_OFF_PEER_ACCOUNT, 16); //Peer Account[16] — Current user name
$header = array_merge($header, array_fill(0, 8, 0xFF)); //Reserved[8]
return $header;
}
Пример запроса от имени admin
Данный способ передачи команд применяется как при взаимодействии с камерой через HTTP API, так и при взаимодействии через приложения SmartCam. В случае взаимодействия с камерой через приложения SmartCam пакет формируется в самом приложении, а передается на камеру в теле сообщения по протоколу XMPP. Доступ к этому файлу извне через HTTP API и приложение SmartCam возможен только при условии дайджест-аутентификации на сервере.
Лазейки для злодеев
В результате проведенных исследований были выявлены следующие уязвимости:
- Использование незащищенного протокола HTTP при обновлении прошивки
- Использование незащищенного протокола HTTP при взаимодействии с камерой по HTTP API
- Наличие недокументированной (скрытой) возможности для переключения веб-интерфейса с использованием файла dnpqtjqltm
- Переполнение буфера в файле dnpqtjqltm для переключения интерфейса
- Возможность удаленного выполнения команд с правами root
- Возможность удаленной смены пароля администратора
- Отказ в обслуживании камер SmartCam
- Отсутствие защиты от подбора пароля учетной записи администратора камеры путем перебора
- Слабая парольная политика при регистрации камеры на сервере xmpp.samsungsmartcam.com. Возможность проведения атак на пользователей приложений SmartCam
- Возможность взаимодействия с другими камерами через облачный сервер
- Блокировка регистрации новых камер в облачном сервере
- Обход аутентификации на SmartCam. Изменение пароля администратора и удаленное выполнение команд
- Восстановление пароля камеры от учетной записи в облаке SmartCam
После дополнительных исследований было установлено, что кроме изученной камеры такими проблемами страдают все «умные» камеры SmartCam и все камеры фирмы Hanwha Techwin.
О некоторых наших находках расскажем чуть подробнее.
Недокументированная возможность
Как уже упоминалось выше, в числе прочего была обнаружена недокументированная возможность , которая позволяла производить манипуляции с веб-интерфейсом камеры.
Интересным фактом является то, что внутри НДВ была обнаружена уязвимость типа «переполнение буфера». Мы сообщили об обнаруженной недокументированной возможности Hanwha Techwin, и она была исправлена.
Уязвимость в архитектуре облачного сервера
Другой пример опасной уязвимости – уязвимость в архитектуре облачного сервера. Из-за недостаточной проработки архитектуры удаленный злоумышленник способен получить доступ через «облако» ко всем камерам и управлять ими.
Одна из основных проблем в архитектуре облака – его организация на базе протокола XMPP. По своей сути все облако умных камер Hanwha представляет собой Jabber-сервер. В нем существуют так называемые комнаты, в каждой из которых находятся камеры одного типа. Злоумышленники способны зарегистрировать произвольную учетную запись на Jabber-сервере и получить доступ ко всем комнатам на сервере.
Во время общения с облаком камера передает учетные данные пользователя и некоторый набор констант. После анализа передаваемых даных удаленный злоумышленник способен регистрировать в облаке существующие камеры, которые еще не были зарегистрированы. В результате эти камеры в будущем не смогут зарегистрироваться в облаке, и, как следствие, не будут функционировать. Кроме того, злоумышленник может общаться с облаком от имени произвольной камеры или же контролировать произвольные камеры через облако.
Сценарии атак
Интересным вектором атаки является подмена DNS-серверов, указанных в настройках камеры. Это возможно из-за того, что сервер обновления указан в виде url в конфигурационном файле камеры. Данный вектор атаки реализуется даже в случае, если камера не имеет «белого» IP-адреса и находится за NAT. Реализовать такую атаку можно с использованием особенностей облачной архитектуры и уязвимостей в облачной архитектуре Hanwha SmartСam. Результатом атаки может стать распространение модифицированной прошивки по камерам с предустановленной недокументированной возможностью, что даст привилегированные права на камере.
В случае получения привилегированных прав на камере (root), злоумышленник получает полную функциональность ОС Linux. Это позволяет использовать камеру в виде опорной точки для атак на устройства, находящиеся в локальных (например, за NAT) и внешних сетях.
Существует сценарий, который позволяет «клонировать» произвольную камеру и подменить изображение для конечного пользователя без особого труда. Для этого необходимо через облачное взаимодействие получить настройки, в которых указаны модель, серийный номер и MAC-адрес камеры. Далее злоумышленник восстанавливает пароль с использованием уязвимости в алгоритме формирования пароля и модифицирует прошивку камеры-клона (точно такая же камера, но на стороне злоумышленника). Далее производится удаленное выключение камеры жертвы. Таким образом жертва начинает получать видео с камеры-клона, которая на стороне злоумышленника.
Другими возможными сценариями атак являются атаки на пользователей камер. Функциональность камеры предполагает, что пользователь будет указывать свои учетные данные в различных социальных сетях и онлайн-сервисах: Twitter, Gmail, Youtube и так далее. Это необходимо для отправки нотификаций пользователям о различных событиях, которые зафиксировала камера. Злоумышленник способен использовать эту функциональность для отправки фишинговых и спам-сообщений.
Итого
Но что же может сделать потенциальный злоумышленник с камерой? Наши исследования показали, что возможностей у потенциального злоумышленника много.
Например, нарушитель способен удаленно сменить пароль администратора, выполнить произвольный код на камере, получить доступ ко всему «облаку» камер и захватить его. Или же собрать ботнет из уязвимых камер. При этом злоумышленник может получить доступ к произвольной «умной» камере и к любой камере компании Hanwha.
Чем же это грозит обычному пользователю? Удаленный злоумышленник способен получить доступ к любой камере и следить за происходящим, отправлять голосом сообщения на встроенный динамик, использовать ресурсы камеры для добычи криптовалют и так далее. Или же, например, удаленный злоумышленник может вывести из строя камеру так, что ее невозможно будет восстановить. Данную гипотезу мы подтвердили трижды:)
О найденных уязвимостях мы незамедлительно сообщили производителю. Часть уязвимостей уже закрыта. По информации от производителя, остальные уязвимости будут полностью закрыты в ближайшее время.
Закрытые уязвимости получили следующие номера CVE:
CVE-2018-6294
CVE-2018-6295
CVE-2018-6296
CVE-2018-6297
CVE-2018-6298
CVE-2018-6299
CVE-2018-6300
CVE-2018-6301
CVE-2018-6302
CVE-2018-6303
Больше, чем «умные» камеры. Под присмотром неустановленных лиц