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

Безусловно, смотрится круто, но какой от этого импакт? Жизнь — это вам не игра Watchdogs 2, где взламывать устройства можно по картинке с камеры. Злоумышленник, наверное, может выследить что‑то важное, наблюдая, как сотрудники ходят по коридорам туда‑сюда, а потом использовать это для социальной инженерии, но все подобные сценарии похожи скорее на буйный полет фантазии.
С точки зрения пентеста куда интереснее получить шелл на захваченной камере. Раз внутри у нее небольшой компьютер, доступ к нему может оказаться небесполезным для атакующего.
Кейс 1: пароль по умолчанию
Думаю, ты не раз видел подобное окно логина в веб‑интерфейс камеры.

Понятно, что первая мысль — пойти в Google и поискать логины и пароли по умолчанию.
info
Иногда бывает, что знать логин и пароль от камеры не обязательно, чтобы получить с нее изображение. Для этого может быть достаточно подобрать правильную RTSP-ссылку, которая похожа на классическую HTTP-ссылку. Найти ее зачастую можно в документации к камере. Также для этого создан скрипт nmap
, но пока что в нем собраны далеко не все варианты ссылок.
Допустим, нам повезло и мы получили доступ в веб‑интерфейс с правами администратора. Самое простое и быстрое, что мы можем сделать, — поискать возможность запустить SSH или Telnet. В примере ниже такая возможность нашлась.

Пробуем активировать SSH. Ставим соответствующую галочку и жмем «Сохранить».

Нам стал доступен порт 22 (TCP). Логично попробовать подключиться к SSH с теми же логином и паролем, что подошли к веб‑интерфейсу. И у нас получается! Хотя, конечно, такое прокатывает не всегда.

Давай посмотрим, что нам удалось получить. Достаточно быстро понимаем, что попали в шелл BusyBox, который сильно ограничивает наши действия. Здесь есть два пути. Первый — каким‑то образом попытаться выйти из BusyBox в нормальный шелл (Bash, Ash или еще какой‑то). Этот способ потенциально может дать больший эффект, но он слишком долгий, чтобы проворачивать его в рамках ограниченного по времени пентеста.
Поэтому есть второй вариант: можем вспомнить про штатную возможность SSH проксировать трафик. В данном случае мы имеем дело с SSH-сервером Dropbear. Он легковесный, и его часто устанавливают на камеры. Казалось бы, для максимальной оптимизации из него должны были убрать возможности проксирования трафика, но производитель их оставил, чем мы сейчас и воспользуемся.
Для проксирования трафика через камеру пробуем подключиться к ней по SSH с помощью следующей команды:
ssh root@IP -D 4444

При выполнении такой команды на нашей системе поднимается порт с поддержкой SOCKS5, который средствами SSH проксирует наше соединение через целевое устройство, в данном случае камеру. Пробуем проверить, что коннект работает штатно.

Несмотря на то что мы не смогли обойти BusyBox, главной цели удалось достичь: проксировать трафик через камеру. На пентестах мне встречались инфраструктуры, в которых при обращении из сети камер не было никаких ограничений на доступ, что очень удобно для хакерских дел.
Кейс 2: уязвимость в прошивке
В этом кейсе обсудим, как получить RCE и запивотиться на камере, когда изначально никакого доступа не удалось получить вообще.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»