Как стать автором
Обновить
202.98
ua-hosting.company
Хостинг-провайдер: серверы в NL до 300 Гбит/с

Конференция DEFCON 22. Группа GTVHacker. Взламываем всё: 20 устройств за 45 минут. Часть 1

Время на прочтение 11 мин
Количество просмотров 6.9K
Автор оригинала: Амир Этемади, Си Джей Херес, Ханс Нильсен, Майк Бейкер
Амир Этемади: приветствую всех и добро пожаловать на презентацию GTVHacker «Взламываем всё: 20 устройств за 45 минут». Мы является создателями оригинальной продукции Google TV с 2010 года, а также таких продуктов, как Chromecast, Roku и Nest, а ещё мы выпускаем эксплойты для всех устройств Google TV.



Итак, кто мы такие? Я являюсь учёным-исследователем Accuvant Labs, созданной группой GTVHacker, Си Джей является руководителем группы и исследователем систем безопасности, а также иногда выступает в роли разработчика технологий. Ханс Нильсен работает старшим консультантом по безопасности компании Matasano, а Майк Бейкер разрабатывает прошивки и является соучредителем компании OpenWRT.

Всего в нашей группе 8 членов, среди которых Gynophage, прямо сейчас он занимается вещью под названием DefCon CTF, Джей Фримен, создатель Cydia, студент Коа Хоанг и Том Двенгер, величайший специалист в APK и во всём, что связано с Java.

Итак, почему мы решили взломать устройства, почему не программное обеспечение, которое нам также не нравится? Вы знаете, когда устройство устаревает, достигает своего конца жизни, его просто выбрасывают на свалку. По сути, старые устройства убивают, и в этом нет никакой пользы, как это произошло в случае с Logitech Revue.

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

Изучение, конечно, восхитительный процесс, но суть это презентации можно выразить словами:

«У тебя есть рут!»



По существу, «взлом 20 устройств за 45 минут», то есть за время проведения презентации, не оставляет нам много времени, чтобы тратить его подробно на каждое устройство. Поэтому я покажу вам витрину устройств, которая войдёт в нашу «Вики» сразу после презентации. Мы ознакомим вас с техническими деталями, схемами оборудования, всем, чем сможем, потому что это довольно трудно читать. Внизу слайда вы видите ссылку, вы можете воспользоваться ей после презентации, чтобы получит доступ ко всем вещам, показанным во время этой демонстрации. А сейчас я передаю слово своему коллеге, который расскажет вам о «Проспекте атак».

Ханс Нильсен: существует бесконечное число способов атаки на устройства такого рода. Сегодня на примере этих 20 устройств мы рассмотрим 3 основных метода взлома.

Первый – это использование портов для отладки, расположенных в самих устройствах. Второй метод — мы можем использовать серийные порты или карты памяти EMMС, это устаревший вариант SD-карт, чтобы подключиться к устройству и модифицировать хранилище. Третий метод – это получение прямого доступа к ОС, что позволяет внедрять целую кучу команд через командную строку, чтобы вызывать наиболее типичные ошибки бытовой электроники.

Итак, поговорим об UART – универсальном асинхронном приёмопередатчике. Он используется разработчиками для отладки оборудования и не несёт больше никакой функциональной нагрузки. Это очень простой интерфейс – один провод предназначен для передачи, другой для приёма, а третий служит заземлением.



Меня спрашивают, сколько мне лет – отвечаю, мне 27 лет, спасибо за ваш вопрос! Итак, здесь используется очень простой протокол обмена данными, а сам порт работает с напряжением разного уровня, например 1,8В, 3,3В или 5В и представляет собой последовательный порт, похожий на порты USB в компьютере.

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

Рассмотрим конкретное устройство – МФУ Epson Artisan 700/800, это одновременно принтер, сканер и копир, который может использоваться как сетевой принтер. Он управляется ОС Linux 2.6.21 – arm1. Что можно с ним сделать? Если открыть корпус, видно печатную плату, на которой расположены 4 контакта: приём, передача, заземление, питание. Это вариант классического подключения UART.



После подсоединения сюда нашего порта отладки мы увидели консольное меню настроек принтера.



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

Второе устройство – это умная розетка Belkin WeMo с управлением по интернету. Она позволяет использовать мобильный телефон для включения через интернет вашей кофеварки и прочих бытовых приборов и достаточно широко используется разными людьми.



Это довольно маленькое устройство, поэтому прочитать обозначения на печатной плате достаточно трудно. Но мы нашли контакты приёмника и передатчика и подключили к ним UART. После этого интернет сообщил, что устройство пропатчено, однако это было неправдой. Выяснилось, что у нас имеется всего 2 секунды на ввод команды, после чего устройство автоматически перезагружалось.



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

Третьим устройством стала умная лампа Greenwave Reality, конкурент Phillips Hue, которая использует сетевой протокол верхнего уровня ZigBee, о нём уже достаточно много говорили. Забавно, что она использует микропроцессор PowerPC. Во время запуска эта лампа предоставляет SSH-сервер, от которого у нас не было пароля.



Когда мы вскрыли корпус, то также обнаружили контакты для UART. Это устройство было снабжено универсальным открытым загрузчиком U-boot, который загружает и запускает Linux. Используя этот загрузчик, можно делать что угодно – перепрошить устройство, изменить командную строку ядра. Можно сопроводить загрузку Linux множеством опций, например, позволяющих узнать объём памяти устройства. Нам удалось получить root-права, изменив командную строку загрузчика. Для этого мы подключились через UART, вставили модуль bin/sh в командную строку ядра и так зашли в оболочку загрузчика.



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

Четвёртое устройство – это File Transporter, флеш-накопитель с возможностью передачи данных по сети. Это своего рода переносное «облако», которое использует для хранения файлов большой жёсткий диск классического формата HDD емкостью 1 ТБ. Его можно подключить к домашней сети и получить доступ к файлам на различных домашних устройствах.



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



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



Пятым устройством стал сетевой медиаплеер Vizio CoStar LT модель ISV-B11. Он обеспечивает доступ к каналу CoStar, который раньше относился к сети Google TV. Этот медиаплеер подключается к другим устройствам по сети интернет или кабелем через выход HDMI.



Может показать смешным, что Google TV больше не существует, но всё ещё есть наша группа, которая называется GTVHacker. Итак, в левом верхнем углу печатной платы белыми буквами обозначен классический разъём для подключения UART из 4-х пинов в ряд. Здесь у нас возникли небольшие трудности при общении с ядром, так как после того, как мы подключили «флешку», то получили сообщение» «непонятная файловая система на флеш-накопителе». Мы переформатировали её в FAT32, после чего выскочило сообщение: «не могу найти fs.sys». Это выглядело подозрительно, поэтому мы провели некоторые исследования.

В результате был сделан вывод, что во время загрузки нужно иметь на флешке оба файла – fs.sys и safe-kernel.img1. Первый файл является U-Boot загрузчиком скриптового изображения, которое содержит произвольные команды U-Boot, выполняемые при загрузке. Мы использовали тот же приём, что и при взломе предыдущего устройства. Модификация командной строки ядра дала нам возможность взломать ядро и получить root-права. Для загрузки полностью нового ядра можно использовать комбинацию этих двух файлов, находящихся на флеш-накопителе, который просто подключается к UART.

Staples Connect, модель Linksys Zonoff стал шестым устройством, которое мы взломали. Это ещё один небольшой центр домашней автоматизации, хаб, который осуществляет совместную коммуникацию домашних устройств разных марок и разных типов. Он оборудован модулем Wi-Fi и USB-портом для подключения жёсткого диска и основан на использовании облачной технологии.
На печатной плате мы нашли колодку с контактными гнёздами. Мы закоротили пины 29/30 NAND памяти, благодаря чему при загрузке среды U-Boot произошла ошибка и устройство перезагрузилось. Установив таймаут по умолчанию, мы запустили команду setenv bootargs «console=ttyS0,115200 init=/bin/sh […]”, мы загрузились в консоль root. Добавив строку # dropbear – d 222, мы получили возможность модифицировать, сохранять и редактировать U-Boot. Для доступа к руту использовался SSH пароль «oemroot», который нам удалось взломать относительно легко. А теперь я хочу представить вам Си Джея.



Си Джей Херес: я хочу поговорить с вами об энергонезависимых картах памяти формата eMMC — Embedded MultiMedia Card. Они базируются на стандартном чипе карт памяти формата SD. Это довольно крутая вещь, которая включает в себя модуль флэш-памяти и контроллер флэш-памяти. При этом вам не нужно беспокоится о каких-либо дополнительных магических битах.



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

Чтобы найти нужные контакты, мы сначала осмотрели дизайн платы, всякие наклейки, надписи под резисторами, трассировку печатной подложки и контактов на другой стороне платы. Затем мы воспользовались интуицией и логическим анализом, а после этого просто вытянули чип и проследили, что при этом не работает. Мы смогли подключить эту карту к MMC-ридеру и сбросили настройки.

Теперь поговорим о нашем 7-м устройстве, это телевизионная приставка Amazon Fire TV с пультом ДУ.



Она оборудована 4-х ядерным процессором Snapdragon 600 частотой 1.7 ГГц и накопителем памяти eMMC ёмкостью 8 ГБ, а управляется модифицированной версией Android 4.2.2 под названием Fire OS 3.0.

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



Слева на слайде показано расположение контактов eMMC, справа – контакты UART под напряжение 1,8В.

Успешно взломав эту приставку, мы взялись за устройство №8 – Hisense Android TV, умный телевизор под управлением «Андроид», это своего рода Google TV, которому сделали ребрендинг. Здесь используется один из последних процессоров, 4-х ядерный Marvell MV88DE3108. На прошлогодней конференции DefCon мы показывали, как обойти загрузку в безопасном режиме для процессоров этой линейки благодаря небольшой ошибке, имеющейся в их прошивке.



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



Для этого устройства пришлось проделать довольно обширную процедуру – сначала смонтировать раздел заводских настроек „factory_settings“ при помощи команды /dev/mmcblk0p3, который сохранялся между загрузками, затем использовать старый добрый режим # chmod 4755 su, можно также воспользоваться программой для получения рут-прав Super SU. Далее через отладочный мост «Андроид» ADB можно модифицировать ОС, которая очень похожа на оригинальный Android.
Итак, двигаемся дальше. Некогда не говорите: «Устройство X нельзя взломать». В 2011 году почтовая служба USPS опубликовала рекламный ролик, в котором говорилось, что «холодильник невозможно взломать». Эта компания позиционировала себя как лидера в области безопасности холодильников. Ролик об этом можно посмотреть на YouTube здесь. Я воспринял это как вызов. У меня не было лишних $3000, чтобы проверить это утверждение на новом холодильнике, но на свалке можно найти всё, что угодно, в том числе части выброшенных холодильников. Мне удалось раздобыть электронную начинку умного холодильника LG Smart Refrigerator, модель LFX31995ST, под управлением немного устаревшей операционной системы Android 2.3. Это девятое устройство, которое удалось взломать.



«Мозг» холодильника контролировал заморозку, температуру продуктов, изготовления льда, потребление питьевой воды, а само устройство было оборудовано модулем Wi-Fi, портом USB и картой памяти формата SD.

На печатной плате находились контакты UART, позволяющие загрузить Root-консоль, и чип eMMC. Это дало возможность смонтировать систему, как в случае с Fire TV, вставить стоковый загрузчик Android и загрузить бинарный файл суперпользователя. Как выяснилось, параметр ro.secure =0, то есть устройство уже имело доступ суперпользователя. Вероятно, разработчики были уверены, что никто даже не воспользуется такой возможностью.

Затем мы занялись вводом команд. Замечу, что никогда не стоит доверять данным, которые вводит пользователь и никогда не использовать команды оболочки. Ввод команды ls %s с параметром “;reboot” дал результат ls ;reboot, после чего система успешно перезагрузилась.

Экспонатом №10, который прекрасно продемонстрировал возможности взлома, стал умный телевизор Vizio Smart TV, модель VF552XVT, которая создана на основе серии умных телевизоров BCM97XXX Yahoo Powered Smart TV. Несмотря на то, что данная платформа устарела, она всё ещё широко используется.



Это один из последних телевизоров со светодиодной LED подсветкой, который заметно тоньше моделей с LCD-дисплеем.

Инъекция командной строки здесь осуществляется через пароль Wi-Fi, что является более современным вариантом отладчика UART через порт USB.



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

Для этого мы использовали USB адаптер UART и затем ввели строку из нескольких символов, которые сообщили ядру, куда нужно посылать данные. Через пару минут мы получили ошибку ввода данных, а затем ввели длинную команду bash 2, которая означала, что все данные, исходящие от данного устройства, нужно направлять в оболочку, а все данные оболочки посылать устройству. Таким образом мы смогли получить root-права через USB UART.

Устройством №11 стал Blu-Ray плеер Sony BDP-S5100 с процессором MTK 8500 под управлением OC Linux. Он оборудован Wi-Fi, доступом к онлайн-сервисам просмотра фильмов Netflix, VUDU и так далее.



Ещё один Blu-Ray плеер на таком же чипсете – это устройство под номером 12, LG BP530, с аналогичной функциональностью.



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

Если вы поместите пустой файл под названием «vudu.txt» в папку под названием «vudu» на флешке, а также создадите эксплойт «vudu.sh», содержащий такие строки:

mount –t overlayfs –o overlayfs  /etc/passwd
echo "root::0:0:root:/root:/bin/sh" > /etc/passwd
/mnt/rootfs_normal/usr/sbin/telnetd

То можете проделать следующее.

Запустите сервис VUDU, он выполнит скрипт оболочки как суперпользователь, и вы сможете совершенно свободно пользоваться соединением через сеть Telnet. Это можно проделать со всеми плеерами на чипсете MTK 8500, включая следующее устройство под номером 13 — Blu-Ray плеер Panasonic DMP-BDT230.



Это очень просто. На следующем слайде показана печатная плата, имеющая практически одинаковую компоновку у всех упомянутых плееров. Здесь имеется консольный вывод 115200 8n1, к которому можно подключить UART. Это было очень важно для нас, так как позволило обнаружить вышеупомянутую ошибку во время отладки. Однако тут есть ещё одна возможность инъекции командной строки через root-консоль с использованием экранного меню, так как имя сетевой папки не проверяется перед использованием.



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



24:10 мин

Конференция DEFCON 22. Группа GTVHacker. Взламываем всё: 20 устройств за 45 минут. Часть 2


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до декабря бесплатно при оплате на срок от полугода, заказать можно тут.

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Теги:
Хабы:
+15
Комментарии 6
Комментарии Комментарии 6

Публикации

Информация

Сайт
ua-hosting.company
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Латвия
Представитель
HostingManager