Поиск и взлом уязвимостей интернета вещей. Ч.2.
Нихау, киберсталкеры! Привет, случайный подписчик. Продолжаем нашу тему о взломе интернета вещей. Всяких там гироскутеров, кофемашин и прочей херни. Это всё может быть очень полезным. Например, чтобы уронить вейпера с его гироскутера, или отключить камеру видеонаблюдения в доме, или отключить сигнализацию... Практикум.
Поехали:
Разбор свежих уязвимостей
Перейдем к практике и разберем какой-нибудь пример взлома IoT-девайсов подробнее. Из открытой базы данных MITRE мы узнали, что есть свежий набор взаимосвязанных уязвимостей:
Вместе они затрагивают десятки разных IoT-устройств, использующих протоколы RadioRA2 или Homeworks QS в системах управления умным домом от Lutron electronics. У этих девайсов открыт порт 23 (Telnet) и прошиты скрытые сервисные аккаунты для предоставления клиентам удаленной поддержки. Пары логин/пароль выглядят так: lutron/integration или nwk/nwk2 — в зависимости от типа устройства и ревизии протокола.
Среди уязвимых хостов есть диммеры и выключатели освещения, а также элементы HVAC (отопление, вентиляция и кондиционирование). Теоретически их даже можно использовать как точку входа (если применяется единая система управления), чтобы добраться до более серьезных целей — охранных систем (сигнализации, электронных замков, автоматических ворот) и видеонаблюдения. Вот какие команды можно отправить им по Telnet.
Censys поддерживает геофильтры, да и пресс-релизы часто содержат данные, которые помогают определить физическое местоположение целей. Из этих двух источников мы узнаем, что устройства Lutron установлены на стадионе Уимблдон, в музее Гуггенхайма, в Тайбэйском международном финансовом центре, а также в десятках банков, больниц и даже в космическом центре им. Кеннеди близ мыса Канаверал.
Самое интересное, что сервисные учетки не могут быть отключены пользователем. Также он не может сменить дефолтный пароль для них — все захардкодили в прошивке. По умолчанию Telnet дает три попытки авторизации, а у нас есть два проверенных варианта, и один из них гарантированно подойдет. Казалось бы, это настоящий рай для любителей легкого взлома!
Почему казалось? Да потому, что в реальности не все так просто. Обнаруживший эту уязвимость Давид «SadFud75» Кастро (David Castro) приводит красивый поисковый запрос для Censys: (metadata.product:Homeworks Processor) AND protocols.raw: «23/telnet». Сейчас по нему находится более двух тысяч лутроновских устройств с открытым портом 23 (совсем недавно их было больше семи тысяч). Сначала глаза разбегаются, а затем впадаем в отчаяние. Вы пингуете уже сто первый узел, но и он не принимает указанные пары логин/пароль. В чем же дело?
При всей подробности описания Давид Кастро ожидаемо умолчал об одной важной детали (на самом деле не об одной, но не будем спойлерить). По факту уязвимы только девайсы, подключенные через интеграционный протокол с ревизиями от M до Y… и то не все. Когда об уязвимости стало известно, то ее не смогли оперативно закрыть патчем, но дали рекомендации, как затруднить ее использование.
Метод противодействия оказался простым и довольно изящным. Поскольку нельзя одновременно установить более одного подключения с одним и тем же логином, владельцам посоветовали залогиниться под сервисными учетками и поддерживать коннект. Служба поддержки уже сделала это у большинства клиентов. Теперь, когда вы найдете уязвимый девайс и наивно напишете в Telnet-клиенте login: lutron, в большинстве случаев получите сообщение login incorrect, хотя он вполне себе корректный.
Примечание для самых маленьких: в Linux обычно есть клиент Telnet, а если он еще не установлен, то это легко исправить командой sudo apt-get install telnet. В Windows проще воспользоваться portable-клиентом, например PuTTY.
Мифология IoT
Подобные недомолвки негласно приняты как этический стандарт т.н. «белых хакеров». С одной стороны, это защита от воинствующих школьников, которые иначе прочитают о легком взломе и ломанутся хакать все подряд. С другой стороны, приведенный в качестве примера запрос создает не менее опасные иллюзии. Он и подобные ему демки формируют мнение о наличии неисчислимого множества актуальных целей для ботнетов и тотального факапа среди производителей IoT-девайсов.
Просто помните, что, задав поисковый запрос к Shodan или Censys, вы получаете довольно объемную, но сырую выдачу. В ней содержится лишь список удовлетворяющих критериям поиска целей, каждую из которых по-хорошему нужно проверять на подверженность искомой уязвимости. Это самая кропотливая часть, которой пренебрегают многие исследователи ради внушительной цифры в докладе. Зачем же делать по-хорошему, когда можно оставить как есть и вставить в презентацию красивый скриншот, впечатляющий аудиторию большими числами?
Так появляются перлы про «сотни миллионов уязвимых устройств» и «тысячи недобросовестных вендоров» на DEF CON и Black Hat, а потом эти страшилки подхватывают журналисты с легкого пинка антивирусных компаний и прочих разработчиков защитных систем. Напугать и предложить готовое решение со скидкой — классический метод повышения продаж.
Аналогичная ситуация складывается и с другими уязвимостями, которыми так пугали в последнее время. Из описания приведенной выше атаки Z-Shave мы узнаем, что она «потенциально затрагивает 2400+ производителей и свыше 100 миллионов IoT-девайсов — от умных лампочек до дверных замков». Складывается жуткая картина, в которой хакеры удаленно в пару кликов устраивают день открытых дверей и тотальный блэкаут. Однако в реальности ничего подобного не случалось. Почему?
Как обычно, дьявол кроется в деталях. Чтобы воспользоваться данной уязвимостью, удаленное подключение не годится. Нужно смастерить хакерское устройство и оказаться вместе с ним рядом с уязвимым девайсом, чтобы перехватить его радиосигнал и вынудить ответным кодом перейти на старый небезопасный протокол. Вы полетите в Сан-Диего со сниффером для Z-Wave, чтобы выключить кому-то свет в уборной? Рискнете открыть один замок из двух-трех разных и нарваться на патруль (а то и пулю)?
Для большинства такая игра просто не стоит свеч. Это лишь досадный казус, показывающий потенциальную опасность использования чужих разработок в своих продуктах. Silicon Labs вообще не считает это уязвимостью, а называет побочным эффектом обратной совместимости, что тоже полуправда.
Отключение сигнализации
Из-за скромных вычислительных ресурсов на IoT-девайсы крайне просто выполнить DoS-атаку. Банальный ICMP-флудинг парализует их, что в случае охранных систем не менее опасно, чем НСД. К примеру, домашняя/офисная сигнализация iSmartAlarm Cube содержит ряд уязвимостей (CVE-2017-7728, CVE-2017-7729, CVE-2017-7730), позволяющих удаленно заблокировать ее одной командой. Мы уже писали об этом в общих чертах, а сейчас разберем подробнее.
Достаточно запустить утилиту hping3 (она есть в составе нового Kali Linux в разделе Information Gathering → Live Host Identification) и набрать команду
$ hping3 --flood -S -p <port> <IP>
Здесь —flood — режим отправки пакетов без ожидания ответа, ключ -S задает SYN-флаг, а -p — номер порта (по умолчанию он задан как 12345). Все! Как только вы нажмете Enter, ICMP-пакеты польются рекой на iSmartAlarm Cube. Сигнализация будет так увлечена бесконечными ответами на них, что не сработает при физическом вторжении (контроллер просто не успеет обработать данные от датчика движения за отведенное время). Более того, вернуть сигнализацию к жизни без перезагрузки и отключения от интернета не удастся ни удаленно, ни локально.
Если этого мало, то CVE-2017-7728 позволяет получить полный удаленный контроль над сигнализацией, поскольку в ней криво реализована аутентификация. Готовый PoC на Python лежит здесь — спасибо Илье Шнайдману. Плюс на месте появляется хороший шанс воспользоваться другой уязвимостью из указанной выше триады — CVE-2017-7729. iSmartAlarm позволяет перехватить ключ авторизации по локальной сети, поскольку он передается в открытом (незашифрованном) виде. Какая прелесть!
На момент написания PoC компания iSmartAlarm не предоставила ни официальных комментариев, ни патчей.
И снова про взлом камер
Подробный анализ уязвимостей IP-камер у нас уже был, поэтому разберем только свежий пример. В апреле 2018 года компания Locklin Networks провела аудит безопасности прошивки популярной сетевой камеры Momentum Axel 720P и с трудом удержалась от нецензурной брани в отчете.
У камеры было обнаружено множество зияющих брешей в системе безопасности:
- все процессы запускаются от рута;
- при физическом подключении к UART-порту консоль также становится доступна под рутом и без авторизации. Через нее легко прочитать файл ключа, хранящийся по дефолтному адресу /devinfo/Ozvision/key/<deviceid>.key;
- пароли хранятся в /devinfo в формате SQLite без шифрования и читаются командой showKey;
- логины и хеши паролей дополнительно читаются из консоли без авторизации командой cat /etc/passwd;
- возможна локальная подмена прошивки с SD-карты безо всяких проверок;
- возможна удаленная перезапись прошивки через DNS-Hijacking. Редактируем /etc/resolv.conf, прописываем туда наш DNS-сервер и подменяем на нем переход с firmware.momentum-cam.com на свой сайт с модифицированной прошивкой;
- видео доступно из локальной сети через потоковый протокол реального времени (RTSP) и порт 554. Авторизация не требуется. Пример запроса: rtsp://<camera_ip>:554. Поток можно посмотреть через VLC Media Player;
- в прошивке есть неизменяемые (hardcoded) сервисные аккаунты: root/EHLGVG и admin/EHLGVG.
В общем, взломать акселевские камеры сможет любой, кому это понадобится.
Выводы
Уязвимостей в IoT-девайсах действительно много, однако не все из них столь легко эксплуатировать, как в перечисленных выше примерах. Одни требуют физического подключения, нахождения рядом или в той же локальной сети. Использование других временно усложняется после опубликования деталей и до выхода официального патча.
С другой стороны, производители вовсе не спешат патчить прошивки и вообще признавать свои промахи. Поэтому легких целей всегда хватает. Составление их точного списка потребует гораздо больше усилий, чем разовое обращение к специализированным поисковикам. Львиная доля поисковой выдачи Shodan, Censys и ZoomEye не имеет отношения к легко взламываемым устройствам. Просто сетевой отклик многих узлов частично совпадает с запросом исследователей, ищущих подходящие цели.
О реальных масштабах распространенности потенциальных мишеней для ботнетов можно судить только после углубленного анализа поисковой выдачи и непосредственных проверок, которыми обычно пренебрегают.
Как то так, киберсталкеры. Не боимся, изучаем, берём на вооружение. Всяко пригодится.