Интернет вещей: как я хакнул свой дом

Введение Индустрия информационной безопасности обожает фетишизировать новые термины. В наши дни в интернете нетрудно найти статьи об обнаружении хакерами или исследователями уязвимостей в таких вещах, как автомобили, холодильники, гостиницы и квартирные сигнализации. Все это объединено в концепцию, получившую название «интернет вещей» (Internet of Things, сокращенно IoT). Сегодня это одна из наиболее фетишизируемых тем в индустрии. Проблема с многочисленными исследованиями на эту тему состоит в том, что мы не можем «примерить» их на себя: если читатель неспособен представить себя в качестве объекта атаки, он не сможет как следует осмыслить результаты исследования, даже если оно выполнено на высоком уровне и в нем представлены подробные данные.

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

Угрозы окружают нас прямо сейчас, когда вы читаете этот документ. Будучи пользователями в цифровой среде, где сетевые технологии охватывают все аспекты жизни, мы должны спрашивать себя: «Каков сейчас уровень угроз?» и «Насколько мы уязвимы?». Это особенно важно при построении локальных сетей дома и в небольших офисах. В типичном современном доме к локальной сети подключено порядка пяти устройств, которые не являются компьютерами, планшетами или телефонами. Это такие устройства, как телевизоры Smart TV, принтеры, игровые приставки, сетевые накопители, а также разнообразные медиаплееры и спутниковые ресиверы.

Я решил провести исследование на тему, которая представлялась мне актуальной, — попытаться определить, насколько трудно было бы хакеру «взломать» мой собственный дом. Уязвимы ли устройства, подключенные к моей домашней сети? Что бы мог сделать злоумышленник, если бы удалось взломать эти устройства? Насколько мой дом «взломоустойчив»? До начала исследования я был уверен, что мой дом достаточно хорошо защищен. Ведь я работаю в индустрии информационной безопасности уже более 15 лет и очень ответственно подхожу к установке патчей и т.п. Мне представлялось, что мой дом — далеко не самый «взломопригодный», поскольку у меня не так уж много «технологичных» девайсов.

В процессе исследования меня интересовали прежде всего не компьютеры, планшеты и смартфоны, а другие устройства, подключенные к моей домашней сети. Я был удивлен, обнаружив, что к моей сети подключено не так уж мало устройств. Это по большей части развлекательные системы: телевизор с доступом в интернет, спутниковый ресивер, проигрыватель DVD/Blu-ray дисков, сетевые накопители и игровые приставки. Кроме того, поскольку я сейчас переезжаю в другой дом, я проконсультировался с местным охранным агентством. Они предлагают установить новейшую охранную систему, которая подключается к локальной сети и работой которой можно управлять с мобильного телефона. Теперь, когда исследование завершено, я уже не уверен, что это такая уж хорошая идея.

К моей локальной сети были подключены, в частности, следующие устройства:

Сетевой накопитель (NAS) известного производителя №1 NAS известного производителя №2 Телевизор Smart TV Спутниковый ресивер Маршрутизатор, полученный от интернет-провайдера Принтер Прежде, чем приступить к исследованию, я установил на все устройства последние версии прошивок. Попутно обнаружилось, что не во всех устройствах предусмотрен автоматический поиск обновлений. В результате процесс обновления оказался довольно утомительным. Прошивки для некоторых устройств пришлось загружать и устанавливать вручную. Это оказалось непростым делом: найти актуальные файлы прошивок бывает нелегко, а процесс обновления в целом мало пригоден для среднестатистических пользователей. Еще одно интересное наблюдение: большая часть моих устройств была снята с производства больше года назад, а для некоторых вообще не было никаких обновлений. Это заставило меня задуматься: неужели все эти устройства для домашнего офиса и развлечения «живут» всего лишь около года, а потом снимаются с производства?

Цель Итак, что же я хочу доказать этим исследованием? Давайте я объясню, почему я считаю это исследование важным. Приступив к работе, я заметил, что существует несколько разных подходов к тому, как ее можно вести. Моей основной целью было показать, насколько на практике уязвимы наши дома, и подкрепить это демонстрацией реальных, практически работающих и актуальных векторов атаки.

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

Предполагается, что аудиторией этого исследования будут не только потребители, но и компании. Нужно понимать, что буквально ЛЮБОЕ УСТРОЙСТВО, подключаемое к сети, может стать «опорным пунктом» для атакующей стороны или даже невидимым «опорным пунктом» для киберпреступника. Будучи взломанным, такое устройство позволит злоумышленнику при необходимости вновь проникнуть в вашу сеть. Представьте себе такой сценарий: вы заметили, что ваша сеть взломана; вы принимаете все меры, чтобы восстановить её нормальную работу, создаёте резервные копии данных, переустанавливаете устройства, предпринимаете меры защиты от вредоносного кода, устанавливаете все обновления. Но через полгода вашу сеть взламывают снова, и теперь украденными оказываются ваши новые данные… Как же такое возможно?

Возможно, киберпреступник заразил ваш сетевой накопитель и теперь использует его в качестве «черного хода». При этом вредоносный код, которым заражено устройство, не детектируется, потому что антивирусная защита для подобных устройств не реализована; удалить вредоносный код также нельзя, потому что у вас нет разрешения на доступ к файловой системе устройства. Проблему не решит даже возврат устройства к заводским настройкам. Либо, как вариант, киберпреступник мог снова получить доступ к вашей корпоративной сети через подключенный к ней «умный» телевизор (Smart TV): телевизор подключен к той же самой сети, что и ваши сотрудники, причем никаких ограничений на его сетевые взаимодействия не предусмотрено.

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

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

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

Получение доступа к устройству; например, получение доступа к файлам, расположенным на сетевых накопителях. Получение доступа к устройству с привилегиями администратора — не только к интерфейсу управления, но и на уровне ОС; Возможность модификации / перепрофилирования устройства для использования его в собственных целях атакующего: в качестве «черного хода» в сеть, «опорного пункта» для повторного проникновения и т.п. Вероятно, существует ещё множество сценариев, которые имело бы смысл включить в программу тестирования. Однако в моем распоряжении было не так уж много времени, и мне нужно было лишь получить подтверждения своему тезису. Для начала я просто решил поиграть с web-интерфейсами устройств; к моему удивлению, на обоих сетевых накопителях, подключенных к моей сети, я довольно быстро нашел уязвимости, которые можно было удаленно эксплуатировать для выполнения команд с полными административными правами на уровне ОС.

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

Hacked_home_1

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

Hacked_home_2Hacked_home_3

Оба уязвимых устройства работали под ядром Linux 2.6.x, с большим количеством интерпретаторов, таких как Perl и Python. На одном из устройств также был установлен компилятор GNU C, что упрощало задачу для атакующей стороны. Поскольку одним из моих сценариев атаки было превращение устройства в бэкдор, я попросту использовал для теста один из общедоступных IRC-ботов. В течении нескольких секунд я превратил свой сетевой накопитель в зомби-устройство, входящее в ботнет.

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

Hacked_home_4

Исследовав сетевые устройства накопители, я обнаружил более 14 уязвимостей, эксплуатация которых позволила бы злоумышленнику бы удаленно выполнять системные команды при наивысшем уровне административных привилегий. У обоих устройств были не только уязвимости в web-интерфейсе, но и низкий уровень безопасности на локальном уровне. Пароли на устройствах использовались слабые, во множестве конфигурационных файлов были неверно прописаны разрешения, а также содержались пароли, набранные открытым текстом.

Чтобы показать, насколько незащищенными оказались устройства на локальном уровне, приведу лишь один пример: пароль администратора на одном из накопителей был »1». Я понимаю, что разработчики этих устройств не стремились обеспечить их безопасность на уровне крепости Форт-Нокс, но пароль длиной в один символ всё же нарушает все мыслимые правила.

Из-за низкого уровня безопасности накопителей, а также в силу того, что мне удалось получить доступ к их файловой системе, оказалось очень просто найти несколько скриптов, реализующих на устройствах не документированные функции. При помощи этих функций внешний пользователь мог бы задействовать на устройствах различные сервисы и другие интересные вещи, такие как интерфейс удаленного администрирования (telnetd, sshd). Об этих «скрытых» функциях я, возможно напишу отдельный пост — мне нужно исследовать эти файлы поглубже.

В ходе своего исследования я наткнулся и на другие случаи, когда устройства содержали «скрытые» функции. Одним из таких устройств оказался мой DSL-маршрутизатор, который я получил от своего интернет-провайдера. Залогинившись как администратор с паролем, полученным от интернет-провайдера, я смог перемещаться по web-интерфейсу. Интерфейс оказался довольно простым, и я обратил внимание на то, как меняется URL-адрес при переходе в другие пункты меню. Каждому пункту меню соответствовало число; первой пункту соответствовало число 0, следующему — 1, и т.д. Я обнаружил, что иногда при переходе к следующему пункту меню число увеличивалось больше, чем на единицу. Набрав пропущенные числа вручную в адресной строке, я получил пункты меню, которых не было в списке, но при этом названия соответствующих «скрытых» функций отображались в web-интерфейсе.

Я начал перебирать эти числа одно за другим и обнаружил, что существует множество функций, к которым у меня нет доступа. По всей видимости, у интернет-провайдера или производителя устройства есть ПОЛНЫЙ КОНТРОЛЬ над устройством, и они могут делать  с ним что угодно и использовать те функции, к которым у меня нет доступа. Судя по названию «скрытых» функций, можно предположить, что интернет-провайдер может, например, создавать туннельные соединения с любым устройством в сети. Только подумайте, что будет, если такие функции попадут в руки не тех людей. Понятно, что, вероятнее всего, назначение этих функций — обеспечить интернет-провайдерам возможности для поддержки пользователей. Однако настораживает сам факт того, что даже залогинившись под учетной записью администратора, вы не получаете полноый контроль над собственным устройством. Настороженность только усиливается при виде названий некоторых скрытых функций: «Web Cameras» (веб-камеры), «Telephony Expert Configure», (экспертная конфигурация телефонии), «Access Control» (управление доступом), «WAN-Sensing» (сбор данных о территориальной распределенной сети), «Update» (обновление)…

Ниже приводятся скриншоты некоторых из этих скрытых функций.

Hacked_home_5

Hacked_home_6

Hacked_home_7

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

Тем временем я перешел к изучению других устройств в своей домашней сети. Вот, к примеру, мой Dreambox: на нём по-прежнему использовались установленные по умолчанию имя пользователя и пароль, по которым к тому же предоставлялся доступ к учетной записи администратора на устройстве! Устройство работает под Linux, что делает его легкой мишенью для атак. Остальные сетевые устройства оказались в целом достаточно безопасными; однако, провести полный аудит их безопасности оказалось на практике затруднительно, поскольку полный доступ к ним в большинстве случаев отсутствует, и нужны альтернативные способы определения успешности или неуспешности атак на эти устройства.

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

Мне пришлось принять другой, более изобретательный подход. Я поставил себя на место киберпреступника, проводящего атаку, и предположил, что я уже взломал два сетевых накопителя; что же можно сделать дальше? Первой идеей было попробовать что-то сделать с устройствами воспроизведения медиа-файлов — телевизором (Smart TV) и DVD-плейером, — поскольку они, скорее всего, считывали данные из двух уже взломанных накопителей. Я начал искать возможные уязвимости в Smart TV и DVD-плейере, которые сделали бы возможным исполнение кода; однако, высокая стоимость принадлежащих мне устройств не позволила мне продолжить это исследование. Если бы я сломал свой новенький домашний LED-телевизор, то проблема была бы не только в выброшенных на ветер деньгах: как бы я объяснил, зачем сломал телевизор, своим детям, и на чем бы они смотрели свой мультфильм Scooby Doo?

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

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

Сейчас мы пытаемся определить, возможно ли превратить телевизор Smart TV и DVD/Blu-ray плейер в «черный ход» для доступа в сеть или опорный пункт для повторных атак, как мне удалось сделать с сетевыми накопителями. На данный момент исследование ещё не завершено; его результаты я опубликую позднее.

Изучая телевизор Smart TV, я все же обнаружил одну любопытную проблему, связанную с безопасностью. Когда пользователь заходит в главное меню настроек телевизора, все пиктограммы и виджеты скачиваются с серверов производителя при наличии доступа к сети. При этом в телевизоре не предусмотрено никакой аутентификации и шифрования. Это означает, что киберпреступник может провести атаку типа Man-in-the-Middle (MITM) и подменить графические элементы в интерфейсе управления, или даже организовать загрузку в устройство любого файла JavaScript, что уже опасно. Потенциально возможен такой подход к проведению атаки: при помощи JavaScript считать локальные файлы на устройстве и исследовать их содержимое, чтобы найти другие уязвимости. Я сейчас выясняю, действительно ли это возможно, с производителем устройства. Пока же в качестве атаки-концепта я сменил иконку виджета на фотографию всеобщего любимчика Бората. Як ше маш!

Hacked_home_8

Заключение Большую часть своей сознательной жизни я занимался проблемами безопасности — проводил пентесты (тесты на проникновение), читал лекции, консультировал правоохранительные органы. IT-безопасность — действительно одна из самых важных тем в моей жизни, однако в последние годы я, кажется, достиг состояния, когда чтение одних и тех же бюллетеней безопасности из года в год становится утомительным. Пора уже что-то делать с проблемами. Например, говорить о действительно актуальных угрозах, причем языком, понятным каждому. Мы, эксперты по безопасности, должны взять на себя ответственность и рассказывать об угрозах, которые актуальны сегодня, — угрозах, затрагивающих каждого из нас. Мы также должны предлагать остроумные и при этом простые идеи, выводы и решения, которые позволят нейтрализовать эти угрозы с помощью программного обеспечения и технологий, которые у нас уже есть.

Меня всегда привлекали новые уязвимости и способы их эксплуатации, но, по правде говоря, что толку публиковать информацию об уязвимостях, если мы не показываем людям полную картину? Мы исходим из того, что IT-безопасность — это прежде всего проблема уязвимостей в программном обеспечении. Более того, добрая половина этого постинга посвящена уязвимостям. Но моя цель не в том, чтобы похвастаться найденными мной доселе неизвестными уязвимостями, и не в том, чтобы посетовать на обилие уязвимостей в электронике, предназначенной для домашнего развлечения. Уязвимости всегда будут, и это надо понимать, но понимать и принимать — не одно и то же. Я имею в виду, что с этим нужно что-то делать; надо знать, каковы последствия, и исходить из того, что наши устройства могут быть взломаны или уже подверглись взлому. Нужно исходить из того, что устройства уязвимы, что злоумышленники могут получить доступ к ним и сделают это.

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

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

Я хотел бы сказать всем производителям: необходимо добиться более высокого уровня поддержки и обеспечения безопасности ваших продуктов. Нельзя считать приемлемым, что производство и поддержка продукта прекращается через год после его запуска; ни в коем случае не следует использовать пароли, состоящие из одного символа, и все эти устройства не должны рассматриваться лишь как «развлекательные». Недопустимо использовать легко читаемый файл конфигурации, содержащий все учетные данные пользователей — в особенности на сетевом накопителе.

Необходимо найти альтернативные решения, которые позволят отдельным пользователям и компаниям повысить свой уровень безопасности. Эту проблему невозможно решить простой установкой защитного продукта или патча. Поэтому, завершая этот постинг, я хотел бы сказать следующее. Возможно, для индустрии домашних развлечений безопасность и не является приоритетом, но этого никак не скажешь про «Лабораторию Касперского». Мне кажется, мы можем хотя бы немного повысить уровень безопасности, если будем соблюдать несколько простых рекомендаций. Надеюсь, что некоторые производители прочитают мой отчет об исследовании и повысят уровень защищенности своего ПО, а пока со своей стороны я предлагаю несколько простых советов:

Позаботьтесь о том, чтобы на всех ваших устройствах были установлены новейшие обновления безопасности и последние версии прошивок. Применительно ко многим домашним устройствам, предназначенным для работы и развлечения, это непростая задача, однако это лучший способ нейтрализовать угрозу, которую несут в себе известные уязвимости. Это также позволит вам определить, существуют ли вообще обновления для ваших устройств или это уже «мертвые» продукты. Поменяйте имя пользователя и пароль — не оставляйте установленные по умолчанию. При попытке взломать ваше устройство первое, что попробует злоумышленник, — это использовать «фабричные» логин и пароль. Помните, что даже «глупые» продукты типа спутниковых ресиверов и сетевых накопителей могут иметь серьезные уязвимости в интерфейсе управления. Используйте шифрование. Шифруйте даже файлы, которые вы храните на сетевом накопителе. Если у вас нет возможности использовать средства шифрования, вы можете хотя бы хранить свои файлы в запароленных ZIP-архивах. Это в любом случае лучше, чем хранить файлы в открытом виде. Большинство домашних маршрутизаторов и коммутаторов позволяют настроить несколько демилитаризованных зон / виртуальных сетей (DMZ/VLAN). Это означает, что вы можете настроить свою собственную «частную» сеть для ваших сетевых устройств, в которой будет ограничен как доступ к устройствам из сети, так и доступ к сети самих устройств. Следуйте здравому смыслу и помните, что взломано может быть все, даже ваши аппаратные средства. Если вы очень хотите держать все под контролем, можете вести мониторинг исходящего трафика ваших устройств, чтобы видеть, не происходит ли с ними что-то необычное, однако это требует определенной технической подготовки. Еще один хороший совет — запретить сетевым устройствам доступ к сайтам, к которым они не должны иметь доступа, и разрешить им загружать только обновления.

Полный текст статьи читайте на Лаборатория Касперского