Новостями про уязвимости в тех или иных моделях IP-камер уже сложно кого-то удивить. Регулярно появляется информация о разнообразных багах и недокументированных учетных записях (бэкдорах). Несмотря на это, многие производители до сих пор относятся к безопасности своей продукции кое-как. Об одном из таких случаев и хочу рассказать.

WARNING

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

Начну с предыстории. Я и мой коллега внедряли распределенную систему видеонаблюдения на несколько сотен IP-каналов. Модель камеры выбрали быстро — сыграла роль привлекательная цена и приличные ТТХ. Экземпляры, взятые на тестирование, показали себя нормально, работали стабильно, без нареканий.

Поскольку камер мы планировали покупать много, то потребовалось автоматизировать их настройку. Заставить нормально работать штатную утилиту (IPCManager) я так и не смог, поэтому пришлось изобретать свой велосипед.

По задумке управление камерой будет происходить через запросы по HTTP на 80-й порт скриптом на Python с использованием библиотеки requests.

Процесс должен сводиться к простому алгоритму:

  1. Запустил скрипт.
  2. Достал из коробки камеру.
  3. Подключил.
  4. Получил оповещение о завершении перенастройки.
  5. Отключил.
  6. Подключил следующую.
  7. Далее по циклу.

В качестве оповещения об успешной перенастройке логично было бы использовать звуковой сигнал из динамика камеры. Однако заставить камеру пищать при помощи запроса по HTTP так и не получилось.

 

Собираем информацию

Я начал поиски альтернативного способа подчинить себе динамик камеры — просканировал камеру при помощи Nmap.

Уже немало...
Уже немало…

С портами 80 (HTTP) и 554 (RTSP) все понятно, 1935-й порт вроде как используется приложением Flash, через которое браузер показывает видео с камеры, а вот что висит на остальных портах — пока загадка.

Мое внимание привлек открытый 23-й порт. Но вот незадача — логин и пароль от веб-интерфейса к Telnet не подходят, в интернете на этот счет ничего нет, а техподдержке поставщика пароль неизвестен. Через веб-интерфейс настроить или отключить Telnet нельзя, остается только гадать, для чего или для кого он вообще работает. Но ведь если есть Telnet, значит, должны быть и учетные данные на него. Что ж, придется искать.

Почти все манипуляции я проводил в Ubuntu desktop 16.04. Для начала я скачал прошивку камеры и начал ее изучать. Нужно заметить, что прошивки для исследуемой камеры в зависимости от версии могут иметь разное содержимое. Мне попадались следующие варианты содержимого архива с прошивкой.

  1. Файлы .rootfs и .fm. Первый содержит корневую файловую систему, включая искомый etc\passwd с паролем на Telnet, второй — включает «брендированный обвес» — веб-интерфейс с логотипом и другими индивидуальными особенностями конкретного продавца (об этом позже).
  2. Файл .fm, который корневую ФС не включает.
  3. Файл .fm, внутри которого сразу корневая ФС и «обвес».

Далее попробовал определить тип файла командой file.

$ file -b -i IPCAM_BV_EW_11_E_V2.37.170715_Airlink.fm
application/octet-stream; charset=binary

Для дальнейших манипуляций с файлами прошивки понадобится утилита binwalk. Забегая вперед, отмечу еще, что обязательно наличие модуля jefferson — для распаковки JFFS2.

WWW

На странице проекта в GitHub есть вся необходимая информация по установке.

Я заглянул внутрь бинарника при помощи binwalk.

Вывод binwalk
Вывод binwalk

Squashfs — это специализированная сжатая файловая система, которая часто применяется в роутерах, IP-камерах и прочих IoT-устройствах, а JFFS2 — файловая система, часто используемая на флеш-памяти. В интернете можно найти несколько способов монтирования JFFS2 и Squashfs, но проще всего распаковать их через тот же binwalk.

binwalk -Me  IPCAM_BV_EW_11_E_V2.37.170715_Airlink.fm
binwalk -Me  IPCAM_BV_EW_11_V2.37.170715.rootfs 

где

  • -e включает режим извлечения;
  • -M пытается распаковывать вложенные элементы.

В итоге получилось два каталога с содержимым прошивки. В каталоге _IPCAM_BV_EW_11_V2.37.170715.rootfs.extracted можно найти файл etc/passwd, внутри которого находится хеш типа MD5 (Unix). Брутанув этот хеш с помощью John или hashcat, можно получить искомый пароль для подключения по Telnet.

Вот пример запуска брута через hashcat:

hashcat64 -m 500 -a 0 --force usr\hashes.txt dict\worst_passwds.dict -o usr\recovered.txt

Здесь

  • -m 500 — тип хеша, который будем брутить, 500 — md5crypt / MD5 (Unix);
  • -a 0 — режим работы, 0 — атака по словарю;
  • --force — игнорировать предупреждения;
  • usr\hashes.txt — файл, в который я положил взламываемый хеш;
  • dict\worst_passwds.dict — словарь;
  • -o usr\recovered.txt — файл, в который будет записан восстановленный пароль.

Hashcat отработал очень быстро, так как пароль тривиален и есть в популярных словарях. Учетки на Telnet получены, но моя история только начинается…

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


7 комментариев

  1. Владиславище

    23.01.2018 at 21:09

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

    • Mr.Ecco

      24.01.2018 at 02:38

      Думаю, все гораздо прозаичнее: абсолютно наплевательское отношение к безопасности разрабатываемого устройства. Выпускают прошивку в стиле «лишь бы работало» — и далее полностью забивают на обновления. А вообще, если уж возиться с прошивкой — то надо пробовать переделывать и пытаться делать свою.

  2. IdFox

    24.01.2018 at 07:40

    Почему подобные статьи уже мало удивляют 🙁

    • IdFox

      24.01.2018 at 07:41

      Ладно бы аппаратные какие уязвимости не знаю, ошибки реализации и т.д
      Так нет. Тупо зашитые логин и пароль, которые не удалить не изменить
      И нигде про это само собой ни слова

  3. suhorez

    25.01.2018 at 11:58

    Китайцам нужен доступ ко всему и вся.Они же занимаются промышленным шпионажем. Это преимущество при конкуренции. И меня это почемуто не удивляет. Ну а нам как говорится не расслаблятся.

  4. nemytoff.serzh

    20.02.2018 at 13:25

    Наплевательское отношение к безопасности

  5. Gen

    02.03.2018 at 11:49

    Статья классная. Показывает ход мыслей и действий для разбора ситуации. Спасибо. А по поводу безопасности думаю что все делается специально, для «интереса»…

Оставить мнение

Check Also

Хакеры взломали аккаунт разработчиков криптовалюты Syscoin на GitHub и подменили официальный клиент

В начале июня 2018 года неизвестные сумели получить доступ к GitHub-аккаунту криптовалюты …