12 марта 2018

Больше, чем «умные» камеры. Под присмотром неустановленных лиц

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

Такое устройство, как «умные» камеры, уже давно участвует в повседневной жизни многих людей — как элемент общения, элемент системы безопасности и видеонаблюдения, как устройство, присматривающее за домашними животными, и так далее.

Современные «умные» камеры имеют возможность подключения к «облакам». Сделано это для того, чтобы пользователь мог с различных устройств наблюдать за тем, что происходит в удалённой точке.

Исследователи 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, "<strong>127.0.0.1</strong>", HEADER_OFF_PEER_IP, 40);               //Peer IP[40]
int2byte($header, <strong>80</strong>, HEADER_OFF_PEER_PORT); //Peer Port
str2byte($header, "<strong>admin</strong>", 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 SmartCam

Интересным фактом является то, что внутри НДВ была обнаружена уязвимость типа «переполнение буфера». Мы сообщили об обнаруженной недокументированной возможности Hanwha Techwin, и она была исправлена.

Листинг кода с уязвимостью типа «переполнение буфера»

Уязвимость в архитектуре облачного сервера

Другой пример опасной уязвимости — уязвимость в архитектуре облачного сервера. Из-за недостаточной проработки архитектуры удаленный злоумышленник способен получить доступ через «облако» ко всем камерам и управлять ими.

Одна из основных проблем в архитектуре облака — его организация на базе протокола XMPP. По своей сути все облако умных камер Hanwha представляет собой Jabber-сервер. В нем существуют так называемые комнаты, в каждой из которых находятся камеры одного типа. Злоумышленники способны зарегистрировать произвольную учетную запись на Jabber-сервере и получить доступ ко всем комнатам на сервере.

Пример передачи сообщения по протоколу XMPP с тестовой учетной записью для исследований

Декодирование сообщения, передаваемого по протоколу XMPP

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

Сценарии атак

Интересным вектором атаки является подмена 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

Авторы
  • Владимир Дащенко

    Эксперт по исследованиям угроз информационной безопасности, Kaspersky ICS CERT

  • Андрей Муравитский

    Старший исследователь безопасности, Kaspersky ICS CERT