[Из песочницы] Основы безопасности IoT

В этой вводной статье мы рассмотрим основные аспекты безопасности одной из самых популярных тем в последнее время — интернета вещей.

image


Если вы, так или иначе, в курсе новостей в сфере кибербезопасности, то могли заметить, что участились случаи создания ботнетов из ip-камер, специалисты по безопасности чаще находят уязвимости в контроллерах умных домов, взламывают беспроводные замки и многое другое!


Прежде, чем перейти к теме безопасности, в начале разберемся, что же входит в понятие интернета вещей.

image

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

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

По мнению автора, если устройство может работать только в локальной сети, то оно не будет являться IoT«ом? Конечно, будет. Даже без подключения к интернету устройство может быть в группе интернета вещей, как, например, портативная bluetooth колонка с возможностью сохранения музыки в память устройства. И таких ошибочных определений в интернете полно. Мыслите шире:)

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

image

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

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

  1. Стек сетевых протоколов, который берется за основу у большинства использующихся в IoT протоколов
  2. Основы работы с микроконтроллерами
  3. Основы работы с радиопротоколами
  4. Реверс-инжениринг прошивок/скомпилированных программ
  5. Поиск web уязвимостей
  6. Эксплуатация бинарных уязвимостей


Знания о данных технологиях (где то может и поверхностные) дадут вам отличный старт в безопасности IoT, но как часто бывает — одними знаниями не обойтись. К сожалению, для проведения анализа защищенности, требуется дополнительное оборудование, среди которого можно выделить:

  1. SDR — программируемое радио, работающее на большом диапазоне частот и позволяющее работать, пожалуй, с любым известным протоколом, или изучить работу проприетарных радиопротоколов. Подробнее данный вопрос будет рассмотрен в следующих статьях (если тематика зайдет аудитории).

    image

  2. Arduino Uno c — заменяет сразу несколько устройств, например, как переходник USB-UART.image
  3. Набор отверток с переходниками — производители пытаются хоть как то защитить свои устройства, в связи с чем выпускают винты, для которых нужны специальные отвертки.

    image

  4. Карты памяти от MicroSD до USB Flash
  5. Паяльная станция


Больше информации об оборудовании можно получить, посмотрев выступление Elvis Collado на DEF CON 25 с темой Reversing and Exploiting Embedded Devices.

Теперь, когда у нас есть требуемое оборудование, рассмотрим основные этапы тестирования.

Первый этап заключается в поиске информации об устройстве без взаимодействия с ним. В большинстве случаев информация лежит на общедоступных источниках. Так же часто на устройстве находится FCC ID (Federal Communications Commission), по которому возможно найти документацию и список используемых частот.

image

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

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

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

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

Если упростить схему, то для IoT она сводится к трем пунктам:

  1. Hardware security
  2. Software security
  3. Radio security


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

Рассмотрим на примере построение «карты» устройства.

На Московском Савеловском рынке была приобретена китайская камера:

image

Для начала рассмотрим подробнее коробку:

image

Производители обещали следующее:

  • Возможность управления с устройства IOS/Android
  • Возможность управления по Web-интерфейсу
  • Сохранение видеопотока на MicroSD
  • Возможность управления через компьютерное ПО


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

Так будет выглядеть схема:

image

Подключения по локальным и внешним сетям следует проверить на возможность атаки человека-по-середине. У мобильных и стационарных устройств следует проанализировать протокол общения и уже после дополнять схему. Вебсайт требуется проверить на наличие принудительного шифрования (https) и прочекать на распространенные веб-уязвимости (OWASP top-10). Саму камеру, как уже упоминал ранее, будем рассматривать отдельным пунктом. В большинстве своем задача будет сводиться к извлечению прошивки, после чего мы сможем дополнить схему обновленными данными и продолжить тестирование уже «белым ящиком».

Отдельно под конец статьи думаю стоит написать, что тестирование устройств без договоренностей с производителем не всегда поощряется. Но так же стоит и упомянуть то, что в США это стало вполне легальным после принятия Digital Millennium Copyright Act (DMCA).

В следующей статье рассмотрим процесс извлечения прошивки с умных девайсов.

Всем заинтересованным советую прочитать:

  1. IoT Hackers Handbook, Aditya Gupta — в книге подробно рассматривают каждый из этапов тестирования умной вещи, будет полезен новичкам (тык)
  2. IoT Penetration Testing Cookbook, Aaron Guzman & Aditya Gupta — очень много информации пересекается с первой книгой, но есть главы, которые посвящены безопасной разработке и длительному тестированию продукта (тык)

© Habrahabr.ru