Взлом камер видеонаблюдения и способ защиты от этого (часть 1)

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

IP-камеры и веб-камеры часто путают, хотя это принципиально разные устройства. Сетевая камера, или IP-камера, — самодостаточное средство наблюдения. Она управляется через веб-интерфейс и самостоятельно передает видеопоток по сети. По сути, это микрокомпьютер со своей ОС на базе Linux. Сетевой интерфейс Ethernet (RJ-45) или Wi-Fi позволяет выполнять прямое подключение к IP-камере. Раньше для этого использовались фирменные клиентские приложения, но большинство современных камер управляются через браузер с любого устройства — хоть с компа, хоть со смартфона. Как правило, IP-камеры включены постоянно и доступны удаленно. Именно этим и пользуются хакеры.

Веб-камера — пассивное устройство, которым управляют локально с компьютера (по USB) или ноутбука (если она встроенная) через драйвер операционной системы. Этот драйвер может быть двух разных типов: универсальный (предустановленный в ОС и подходящий для многих камер разных производителей) и написанный на заказ для конкретной модели. Задача хакера здесь уже другая: не подключиться к веб-камере, а перехватить ее видеопоток, который она транслирует через драйвер. У веб-камеры нет отдельного IP-адреса и встроенного веб-сервера. Поэтому взлом веб-камеры всегда следствие взлома компьютера, к которому она подключена. Давай пока отложим теорию и немного попрактикуемся.

Взлом камер наблюдения
Взлом IP-камер вовсе не говорит о том, что кто-то хозяйничает на компьютере, с которого владелец смотрит их видеопоток. Просто теперь он смотрит его не один. Это отдельные и довольно легкие цели, однако подводных камней на пути к ним хватает.
Подглядывание через камеры может повлечь административное и уголовное наказание. Обычно назначают штраф, но не всем удается легко отделаться. Мэттью Андерсон отсидел полтора года за взлом веб-камер с помощью трояна. Повторившему его подвиг присудили уже четыре года.
Во-первых, удаленный доступ к выбранной камере может поддерживаться только через какой-то конкретный браузер. Одним подавай свежий Chrome или Firefox, а другие работают только со старым IE. Во-вторых, видеопоток транслируется в интернет в разных форматах. Где-то для его просмотра нужно будет установить плагин VLC, другие камеры потребуют Flash Player, а третьи не покажут ничего без старой версии Java или собственного плагина.

Иногда встречаются нетривиальные решения. Например, Raspberry Pi превращают в сервер видеонаблюдения с nginx и транслируют видео по RTMP.

По замыслу, IP-камеру защищают от вторжения два секрета: ее IP-адрес и пароль учетной записи. На практике IP-адреса вряд ли можно назвать секретом. Они легко обнаруживаются по стандартным адресам, к тому же камеры одинаково откликаются на запросы поисковых роботов. Например, на следующем скриншоте видно, что владелец камеры отключил анонимный доступ к ней и добавил ввод CAPTCHA для предотвращения автоматизированных атак. Однако по прямой ссылке /index.htm можно изменить их без авторизации.

Уязвимые камеры наблюдения можно отыскать через Google или другой поисковик с помощью продвинутых запросов. Например:
inurl:«wvhttp-01»
inurl:«viewerframe?mode=»
inurl:«videostream.cgi»
inurl:«webcapture»
inurl:«snap.jpg»
inurl:«snapshot.jpg»
inurl:«video.mjpg»

Куда удобнее искать их через Shodan. Для начала можно ограничиться простым запросом netcam, а затем перейти к более продвинутым: netcam city:Moscow, netcam country:RU, webcamxp geo:55.45,37.37, linux upnp avtech и другим.

Прекрасно ищет камеры и Censys. Язык запросов у него чуть сложнее, но разобраться с ним тоже большого труда не составит. Например, запрос 80.http.get.body:"DVR Web Client" покажет камеры, подключенные к IP-видеорегистратору, а meta**data.manufacturer:"axis" найдет камеры производства Axis.

Еще один шикарный поисковик по «интернету вещей» — ZoomEye. Камеры в нем находятся по запросам device:webcam или device:media device.

Можно искать и по старинке, банально сканируя диапазоны IP-адресов в поисках характерного отклика от камеры.
В первую очередь нас интересуют порты 8000, 8080 и 8888, поскольку они часто заданы по умолчанию. Узнать дефолтный номер порта для конкретной камеры можно в ее руководстве. Номер практически никогда не меняют. Естественно, на любом порте можно обнаружить и другие сервисы, поэтому результаты поиска придется дополнительно фильтровать.

Узнать модель обнаруженной камеры просто: обычно она указана на титульной странице веб-интерфейса и в ее настройках.

Когда я говорил в начале статьи об управлении камерами через «фирменное клиентское приложение», то имел в виду программы вроде iVMS 4xxx, которая поставляется с камерами Hikvision. На сайте разработчика можно почитать русскоязычный мануал к программе и самим камерам. Если ты найдешь такую камеру, то с большой вероятностью на ней будет стоять заводской пароль, и программа предоставит к ней полный доступ.
С паролями к камерам наблюдения дела вообще обстоят крайне весело. На некоторых камерах пароля просто нет и авторизация отсутствует напрочь. На других стоит заданный по умолчанию пароль, который легко найти в мануале к камере. На сайте ipvm.com опубликован список самых часто встречающихся логинов и паролей, установленных на разные модели камер.

Часто бывает, что производитель оставил в прошивке камеры служебный вход для сервис-центров. Он остается открытым даже после того, как владелец камеры сменил дефолтный пароль. В мануале его уже не прочтешь, а вот найти на тематических форумах можно.
Огромная проблема состоит в том, что во многих камерах используется один и тот же веб-сервер GoAhead. В нем есть несколько известных уязвимостей, которые производители камер не спешат патчить.
GoAhead, в частности, подвержен переполнению стека, которое можно вызывать простым запросом HTTP GET. Ситуация усложняется еще и тем, что китайские производители модифицируют GoAhead в своих прошивках, добавляя новые дыры.

На сегодняшний день больше миллиона IP-камер и IP-видеорегистраторов разных производителей позволяют удаленно получить доступ к их настройкам безо всякой авторизации. Скрипт на Python, автоматизирующий атаку на уязвимые устройства, уже выложен на GitHub. Проблема была обнаружена в начале 2017 года при реверсинге прошивок DVR производства Dahua Technology. Чуть позже выяснилось, что она затрагивает более тысячи моделей разных производителей. Они просто тиражировали ошибки друг друга. Автор обещал дать время на исправление и пока не раскрывать всех деталей, но он готов поделиться ими приватно по email со всеми специалистами по безопасности. Если у тебя есть сертификат CEH (Certified Ethical Hacker) или аналогичный — можешь попробовать.

В коде других прошивок встречаются такие ляпы, как кривые условные переходы. Такая камера открывает доступ, если ввести неправильный пароль или просто нажать кнопку «Отмена» несколько раз. Во время нашего исследования мне попалось более десятка таких камер. Так что, если ты устал перебирать дефолтные пароли, попробуй кликнуть Cancel — есть шанс внезапно получить доступ.
Камеры среднего и высокого класса оснащают поворотными креплениями. Взломав такую, можно сменить ракурс и полноценно осмотреть все вокруг. Особенно занятно бывает играть в перетягивание камеры, когда, помимо тебя, ей одновременно пытается управлять кто-то еще. В общем случае атакующий получает полное управление камерой прямо из своего браузера, просто обратившись по нужному адресу.