Не так давно всего за один месяц свет увидели около 10 уязвимостей, связанных с получением root shell или админских учетных записей на домашних сетевых устройствах. Wi-Fi и 3G-роутеры с админскими учетками вокруг нас. Заплатив 50 $ за платный аккаунт на shodan.io, любой желающий получает доступ к десяткам миллионов IoT-устройств. В их числе роутеры, веб-камеры и прочие гаджеты. С другой стороны, разработчики и поставщики сетевых устройств не придают значения таким понятиям, как «тестирование» и «безопасность». Многие серьезные уязвимости остаются без патчей, а если патчи все-таки выходят, то пользователи не торопятся их применять. Что в результате? Легионы устройств ждут своего часа, чтобы быть взломанными и стать ботами для DDOS-атак.
Предыстория
В августе 2016 года мир познакомился с ботнетом под названием Mirai. Исследователи из группы MalwareMustDie начали изучать зловредную сетевую активность IoT-девайсов в начале августа, а уже 20 сентября ботнет примерно из 150 000 устройств (в основном DVR и IP-камер) атаковал серверы Minecraft, расположенные у французского провайдера OVH.
Заражение IoT-устройств осуществлялось посредством подбора учетной записи Telnet на портах 23 или 2323 по списку из 62 стандартных паролей. IP-адреса генерировались абсолютно случайно по всему диапазону, и после включения в сеть каждое зараженное устройство начинало сканирование этих рандомных адресов. Код, управляющий ботнетом, не хранился в долговременной памяти и, следовательно, не мог пережить перезагрузку устройства. Однако, учитывая скорость, с которой боты сканировали интернет, после перезагрузки устройство вскоре вновь включалось в состав ботнета.
Далее последовали крупнейшие атаки на журналиста Брайана Кребса, на DynDNS, Либерию, немецкого оператора Deutsche Telekom и один из колледжей в США. Исходный код ботнета Mirai был опубликован в начале октября и атака на немецкого оператора двумя месяцами позже уже велась с использованием модифицированной версии Mirai, эксплуатировавшей уязвимость сервера RomPager на порте 7547 (протокол CWMP).
По заявлению автора, опубликовавшего код Mirai, он имел 380 тысяч устройств в составе ботнета единовременно. Такой размах, конечно же, был обусловлен небрежностью: открытый наружу Telnet-сервис и отсутствие обязательной смены пароля не способствуют безопасности.
Что-нибудь кроме веб-камер?
Борьба с такими атаками медленно, но верно приводит к снижению числа скомпрометированных устройств со стандартными паролями. Постепенно тактика меняется с подбора учетных записей на эксплуатацию различного рода уязвимостей.
В то время как ботнет вбирал в себя преимущественно видеокамеры и другие IoT-девайсы, у которых служба Telnet дает доступ к Linux-командам, — служба Telnet на роутерах предоставляла доступ лишь к CLI настройки. Такой CLI позволяет читать и менять конфигурацию устройства, настройки DNS, ip route и системную информацию, что уже само по себе позволит провести некоторые атаки, но не позволяет установить ПО для удаленного управления.
Однако отсутствие bash-терминала не означает отсутствия других векторов атак.
Что собой представляет среднестатистический домашний роутер? Это:
- доступная извне веб-панель с агрессивным дизайном;
- read-only файловая система squashfs и ~10 МБ флеш-памяти;
- конечно же, busybox (компактный UNIX-интерфейс командной строки с набором утилит);
- веб-сервер micro http, SSH-сервер DropBear;
- открытые порты 80, 443, 23, 22, 21, 137.
При этом средний возраст прошивки на устройстве составляет 3–4 года. Этот возраст коррелирует со средним возрастом самого роутера, или, другими словами, пользователи скорее меняют само устройство, чем обновляют его прошивку. В последнее время эта статистика меняется в лучшую сторону провайдерами, которые удаленно и без участия пользователя диагностируют, конфигурируют и накатывают обновления на роутеры пользователей. Правда, работает это только для тех устройств, которые провайдеры поставляют под собственным брендом.
На данный момент опытным путем установлено, что пароли примерно 15 из 100 устройств никогда не менялись со значений по умолчанию. И зная всего пять самых популярных пар, можно получить доступ к админке каждого десятого устройства:
Получив доступ к веб-панели, атакующий также получает уникальную возможность испортить жизнь всем пользователям по ту сторону, проводить DNS Spoofing и исследовать внутреннюю сеть. При большой удаче он способен еще и вызывать с веб-панели такие команды, как ping или traceroute, найти уязвимость в коде веб-сервера для получения шелла или воспользоваться одной из уже найденных.
Разнообразие и простота известных уязвимостей (а также и баг-репорты) в роутерном ПО говорят о том, что функциональность устройств редко покрывается достаточным тестированием и у разработчиков ПО нет необходимых навыков безопасной разработки. Также при разработке не учитываются модели злоумышленников. Покупатель может приобрести роутер с одной из похожих уязвимостей на борту:
-
NETGEAR DGN2200v1/v2/v3/v4 — 'ping.cgi' RCE (link)
Недостаточность проверок в ping.cgi приводит к тому, что введенный IP-адрес от пользователя попадает прямо в bash. Выполнить произвольные команды в терминале можно просто дописав их в поле IP-адреса в POST-запросе. Вот так: 12.12.12.12; nc -l 4444 -e /bin/bash. Вместо nc можно добавить более функциональную нагрузку, например msfvenom. 3000 девайсов ждут своего часа, чтобы раскрыть потенциал. Эксплуатация потребует авторизации на веб-интерфейсе.
-
Multiple vulnerabilities in GoAhead WIFICAM cameras (link)
Многочисленные уязвимости были обнаружены более чем в 1250 моделях IP-камер, в зоне риска находятся около 130 000 камер. Ошибка в реализации кастомного механизма авторизации, которая позволяет получить админский пароль, и уязвимость типа OS Command Injection на странице set_ftp.cgi, которая позволяет выполнять любые терминальные команды, вместе дают полный контроль над устройством без каких-либо ограничений. Впечатляет! Использование этой уязвимости добавил в своей арсенал ботнет TheMoon, известный с 2014 года. В ходе исследования были обнаружены зараженные камеры, в файл settings.ini которых был добавлен скрипт, загружающий зловредный код с сервера злоумышленников при загрузке устройства.
В конце цепочки загрузок с сервера злоумышленников прилетает скомпилированный под ARM-архитектуру исполняемый файл:
который 17 из 54 антивирусов идентифицируют как Linux/Proxy.
-
Linksys Smart Wi-Fi Vulnerabilities (link)
По результатам исследования 25 моделей активно продаваемых по всему миру роутеров из линейки Linksys Smart Wi-Fi оказались подвержены 10 уязвимостям различной степени опасности. В числе уязвимостей и те, что позволяют выполнять произвольные команды с правами root. Несмотря на то, что суммарно с помощью Shodan можно обнаружить лишь около 1000 единиц, исследователи говорят более чем о 7000 просканированных устройств.
-
Siklu EtherHaul Unauthenticated Remote Command Execution Vulnerability (<7.4.0) (link)
Эти серьезные железки от компании Siklu предоставляют абонентам связь через миллиметровый диапазон радиоволн на частотах 70/80 ГГц. Исследователь обнаружил, что таинственный порт 555 на них служит для коммуникации с другими Siklu EH. Прибавив к этому отсутствие ограничений на доступ к порту и хранение паролей в открытом виде, он получил эксплойт для смены админского пароля. Этой ошибке в архитектурном дизайне был присвоен свой номер в системе CVE: CVE-2017-7318.
-
Bypassing Authentication on iball Baton Routers (link)
Хоть админка устройства iBall Baton 150M и надежно закрыта HTTP-авторизацией, но страница password.cgi видна всем желающим. Очень похоже, что разработчики забыли об этом факте и хранили пароли от всех трех аккаунтов на устройстве в открытом виде в скрипте HTML-страницы; 1500 админских паролей в открытом доступе!
Приведенные примеры были собраны всего за один месяц. Также существуют агрегатор роутерных уязвимостей routersecurity.org и замечательный фреймворк routersploit, которые собирают под одной крышей десятки уязвимостей и эксплойтов.
Огромное количество дыр в коде веб-админок позволяют получать пароли и исполнять произвольный код.
Альтернативные векторы угроз
Кроме веб-интерфейса, на роутере в среднем открыто 4–5 портов. В их числе Telnet (23), SSH (22) и FTP (21).
Как показывает практика, сервис Telnet служит для доступа к CLI настройки роутера, а FTP — для удаленного обновления прошивки. Например, на 18 000 модемов D-Link DSL 2750U при подборе учетных записей кто угодно обладает возможностью накатить прошивку со встроенным бэкдором. Таким образом он получит ботов, которые уж точно переживут перезагрузку и вряд ли будут взломаны кем-либо еще. Алгоритм действий следующий:
- Скачать прошивку для этого устройства с сайта производителя D-Link.
- Распаковать.
- Дополнить ее backdoor-аккаунтом или скриптом, запускающим bind shell. На этом шаге атакующий может проявить фантазию и воплотить любой из своих способов получения шелла.
- Собрать франкенштейна обратно, используя доступные инструменты. Например, firmware framework.
- Обновить прошивку устройства через FTP.
Кроме FTP-обновления у D-Link, обновлять можно и через Telnet (доступно 140 тысяч CLI) или через веб-панель. DNS Hijack на этом фоне выглядит совсем несерьезно.
Недавние атаки на устройства Eir D1000 были связаны с уязвимостью OS Command Injection в реализации CWMP — TR-064. Результатом стало заражение около 900 000 устройств модифицированной версией Mirai. Другая уязвимость в сервере RomPager <4.34 под собственным названием Misfortune Cookie (CVE-2014-9222) имеет наивысшее значение CVSS 10.
А тем временем чуть меньше половины всех CWMP используют уязвимый RomPager 4.07. Это почти 2 500 000 доступных устройств. Check Point на RSA 2017 представили собственное исследование проблем безопасности TR-064.
RomPager 4.07 — это не единственный древний сервис, который используют поставщики прошивок. Genivia gSOAP 2.7 была выпущена в 2004 году, а DropBear SSH 0.46 увидел свет во второй половине 2005 года.
Для DropBear известны как минимум несколько уязвимостей (DoS и Authenticated RCE).
Исследователи Bertin Jose и Fernandez Ezequiel 4 апреля опубликовали отчет, согласно которому 18 вендоров, 78 моделей и более полумиллиона устройств содержат ошибку в SNMP-агенте, которая позволяет любому желающему получить полный read/write-доступ над всеми значениями. Ошибка в том, что агент попросту не проверяет community string: любые комбинации проходят авторизацию. Уязвимость получила модное название StringBleed и подвержены ей в основном домашние кабельные модемы, хотя исследователи говорят об обнаружении и других систем с подобной уязвимостью. Последствия такие же, как при отсутствии авторизации вовсе.
И напоследок, 9 из 1000 роутеров предоставляют бесплатный DNS-сервер со включенной по умолчанию рекурсией. Техника эксплуатации известна давно и будет существовать до тех пор, пока по умолчанию DNS на роутерах не перестанет отвечать на запросы из интернета.
Заключение
Производители домашних сетевых устройств постепенно закрывают привычные способы получения ботов. Вместо тактики простого перебора акцент атакующих смещается на эксплуатацию уязвимостей, и это дает существенно лучшие показатели, чем брутфорс. Непрерывное сканирование всего диапазона IP-адресов позволяет злоумышленникам найти все уязвимые девайсы. Фактически огромное число моделей устройств подвержены тем или иным уязвимостям, некоторые специфичны для конкретной модели, а некоторые охватывают сотни тысяч или миллионы экземпляров, превращая устройства в игрушки для злоумышленников.
Способы борьбы с ботнетами просты (перечисляем по мере убывания эффективности):
- по умолчанию ограничивать доступ к панели администрирования, CLI и FTP из интернета;
- использовать свежие версии прошивок;
- принуждать покупателей к смене стандартных паролей;
- ограничивать попытки перебора.
Самые массовые устройства это первоочередная цель исследователей; пока безопасность не получит должного приоритета, цикл разработки будет привносить новые уязвимые места в ПО роутеров.
Доклад был представлен на третьей встрече нижегородского сообщества Defcon NN и все любители живого повествования могут посмотреть его видеозапись:
Автор: ajaxtpm