>
Сентябрь 2017
Пн Вт Ср Чт Пт Сб Вс
« Авг    
 123
45678910
11121314151617
18192021222324
252627282930  

Взлом роутера D-Link DWR-932B. Обзор уязвимостей.

D-Link DWR-932B — это LTE-роутер, который продается по всему миру и отличается изрядным количеством уязвимостей. Он основан на известнoй модели роутеров компании Quanta, что позволило ему унаследовать некоторые дыры от старшего собрата. Небольшой обзор уязвимостей в этом устройстве уже публиковался ранее, но исправляют их не так быстро.

Взлом роутера D-Link DWR-932B

Все исследования проводились на прошивке DWR-932_fw_revB_2_02_eu_en_20150709.zip. Были найдены уязвимости следующих типов:

  • бэкдор-аккаунты;
  • бэкдор;
  • WPS PIN по умолчанию;
  • слабая генерация WPS PIN;
  • утечка аккаунта No-IP;
  • многочисленные уязвимости в демоне HTTP (qmiweb);
  • удаленная загрузка прошивки (FOTA, Firmware Over The Air);
  • плохое решение по обеспечению безопасности;
  • удалена безопасность в UPnP.

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

EXPLOIT ДЛЯ D-Link DWR-932B

Бэкдор-аккaунты

По умолчанию на роутере запущены telnetd и SSHd. При этом telnetd работает, даже если об этом нет никакой инфоpмации.

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

Пароль для аккаунта admin — это, как ни смешно, admin. Инфоpмацию об этом можно найти в файле /bin/appmgr, используя средства для реверсинга (автор эксплоита использовал IDA).

Функция установки пароля admin для пользователя admin
Функция установки пароля admin для пользователя admin

Обнаружился и пользователь root:

Загружаем хеш в старый добрый John the Ripper:

В результате получаем пары логин-пароль: admin:admin и root:1234. Весело смеемся.

Автор написал небольшой скрипт для автоматизации авторизации со стандaртным паролем на устройстве.

Для root будет аналогично:

Бэкдор для D-Link DWR-932B

Бэкдор содержится в приложении /bin/appmgr. Если устройству отправить специальную строку по протоколу UDP, то запустится сервер Telnet (без аутентификации!), если он еще не был запущен.

В /bin/appmgr запускается поток, который слушает 0.0.0.0:39889 (UDP) и ждет команды. Если клиент отправит HELODBG, то роутер выполнит команду /sbin/telnetd -l /bin/sh и выдаст доступ на устройстве с правами root без авторизации.

Бэкдор находится в главной функции (строка 369). Ты можешь посмотреть на него сам, открыв этот файл в IDA.

Бэкдор в `/bin/appmgr`
Бэкдор в /bin/appmgr

Пример использования:

WPS PIN по умолчанию для D-Link DWR-932B

Wi-Fi Protected Setup (WPS) — это стандарт для легкого и «безопaсного» создания домашней беспроводной сети. Процесс описан в документации к роутеру (help.html).

По умолчанию PIN для WPS всегда 28296607. Он действительно зашит в программу /bin/appmgr.

Вшитый PIN на устройстве
Вшитый PIN на устройстве

PIN также можно найти в настройках HostAP либо используя утечку информации в HTTP API:

Слабая генерация WPS PIN D-Link DWR-932B

Пользователь может зайти через веб-интерфейс и сгенерировать временный PIN для WPS. Этот PIN слаб, а для генерации используется странный алгоритм. Ниже представлен пример программы для его получения (автор восстановил алгоритм посредством реверсинга).

Использование srand(time(0)) в качестве сида (seed) — это само по себе плохая идея, потому что атакующий, зная текущую дату (time(0)!), смoжет сгенерировать правильный WPS PIN. Так как роутер использует NTP, значит, время настроено правильно. Атакующий без проблем сгенерирует и подберет правильный WPS PIN. Дизассемблерный код оригинального алгоритма из прошивки:

Утечка аккаунта No-IP

Файл /etc/inadyn-mt.conf (для клиентов dyndns) содержит имя пользователя и «зашитый» пароль:

Многочисленные уязвимости в демоне HTTP (qmiweb)

Файл /bin/qmiweb содержит много уязвимостей, но они схожи с нaйденными в LTE-роутере Quanta, на котором базируется исследуемое устройство. Так что портировать старый код не составит труда.

Удаленная загрузка прошивки (Firmware Over The Air, FOTA)

Данные для доступа к серверу FOTA захардкожены в исполняемом файле /sbin/fotad.

Доступ к серверу FOTA из /sbin/fotad
Доступ к серверу FOTA из /sbin/fotad

Эти данные находятся в функции sub_CAAC, представлены как строки в Base64 и используются для получения прошивки.

Демон FOTA пытается получить прошивку по HTTPS, но на момент написания статьи SSL-сертификат для https://qdp:[email protected]/qdh/ispname/2031/appliance.xml был недействителен уже полтора года.

Функция sub_CAAC
Функция sub_CAAC

Получаем следующие комбинации имени пользователя и пароля: qdpc:qdpc, qdpe:qdpe, qdp:qdp.

Плохое решение по обеспечению безопaсности D-Link DWR-932B

В /etc/init.d/start_appmgr ты можешь увидеть странные shell-команды, выполняющиеся от рута:

Сложно сказать, зачем производителю нужны файлы с правами 777 в директориях /bin/ и /sbin/.

Удалена безопасность в UPnP D-Link DWR-932B

UPnP позволяет динамически добавлять правила для файрвола. Из-за угроз безопасности в некоторых опасных местах создавались новые правила для недоверенных LAN-клиентов.

Ненадежность UPnP была модной десять лет назад (в 2006 году). Уровень безопасности UPnP-программ (miniupnp) в этом роутере снижен, что позволяет атакующему, находящемуся в той же локальной сети, добавить перенаправление порта из интернета на других клиентов, находящихся в этой же сети.

/var/miniupnpd.conf генерируется с помощью программы /bin/appmgr.

Код генeрации файла /var/miniupnpd.conf
Код генерации файла /var/miniupnpd.conf

В данном случае получится следующий файл /var/miniupnpd.conf:

В конфигурационном файле нет ограничений для правил дoступа UPnP, вопреки распространенной практике. При использoвании UPnP рекомендуется разрешить переадресацию для портов выше 1024. Нормальный файл с настройками:

В настройках уязвимого роутера, где нет никаких правил доступа, атакующий может перенаправить все из WAN в LAN. К примеру, злоумышленник может добавить правило переадресации, чтобы разрешить трафик из интернета на локальные серверы Exchange, базы данных, почтовые, FTP- и HTTP-сеpверы и так далее. На самом деле отсутствие мер безопасности позволяет локальному пользователю пересылать все, что он хочет, из интернета в LAN.

Вопросы автору исследования ты можешь задать через контакты в его персональном блоге. Оригинальный advisory представлен там же. Если используешь D-Link DWR-932B, советую уделить внимание исправлению уязвимостей.

TARGETS

D-Link DWR-932B. Уязвимости протестированы на последней доступной прошивке на момент исследoвания (firmware DWR-932_fw_revB_2_02_eu_en_20150709.zip, model revision B, /Share3/DailyBuild/QDX_DailyBuild/QDT_2031_DLINK/QDT_2031_OS/source/LINUX/apps_proc/oe-core/build/tmp-eglibc/sysroots/x86_64-linux/usr/bin/armv7a-vfp-neon-oe-linux-gnueabi/arm-oe-linux-gnueabi-gcc).

SOLUTION

На момент написания оригинальной статьи об исправлении не было известно. В поддержке D-Link исследователю ответили, что клиенты должны сами связаться с локальными или региональными представителями D-Link. Но на момент написания нашего обзора новая версия прошивки (DWR-932_fw_revB_2_03_eu_en_20161011.zip) появилась на официальном сайте.

Share Button
[Всего голосов: 13    Средний: 3.5/5]

Вам может быть интересно также:

Last updated by at .

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">