Unplug, Don't Play или статья про UPnP

Unplug, Don't Play или статья про UPnP

@ExZuperi aka Сергей
Что я только что прочитал?

Именно такие мысли возникают, когда первый раз читаешь определение SSDP:

SSDP (Simple Service Discovery Protocol) — сетевой протокол, используемый в небольших сетях, в том числе домашних, для анонсирования и выявления сетевых сервисов, в первую очередь поддерживаемых архитектурой Universal Plug-and-Play (UPnP). SSDP представляет собой текстовый протокол на базе HTTPU, использующий XML. Обмен сообщениями в нем осуществляется посредством датаграмм UDP.


Какие сетевые сервисы мы можем обнаружить и что за архитектура UPnP?

Имеенно в этом и предстоит разобраться

После изучения материалов на Хабре, я обратил внимание на документацию и начал исследование


Обмазавшись документацией

SSDP (Simple Service Discovery Protocol) является основным механизмом для обнаружения и поиска устройств в сети UPnP (Universal Plug and Play). Он использует многоадресную рассылку HTTP поверх UDP

Это определение звучит чуть попроще


Основой для сетевого взаимодействия UPnP является IP-адресация. Устройство или контрольная точка UPnP может поддерживать только IP версии 4 или одновременно IP версии 4 и IP версии 6.

В целом, вполне очевидно


SSDP использует часть формата заголовков HTTP 1.1, определенного в RFC 2616. Однако он НЕ основан на полном HTTP 1.1, так как использует UDP вместо TCP и имеет собственные правила обработки.
Каждое сообщение SSDP должно содержать ровно одну стартовую строку. Для определения всех возможных сообщений SSDP обратитесь к пункту 1.2 "Advertisement" и пункту 1.3 "Search" ниже. Стартовая строка должна быть отформатирована в соответствии с RFC 2616, пунктами 5.1 или 6.1. Кроме того, стартовая строка может быть одной из следующих трех:
- NOTIFY * HTTP/1.1\r\n
- M-SEARCH * HTTP/1.1\r\n
- HTTP/1.1 200 OK\r\n

А вот это уже интересно, я начинаю догадываться, что существуют как минимум 3 вида различных запросов: уведомить о своих сервисах, найти кто предоставляет этот сервис, ответить что запрос прошёл


Рабочие комитеты UPnP и производители устройств UPnP могут расширять сообщения SSDP, добавляя дополнительные заголовки SSDP.
Примеры заголовков, определенных производителями:
myheader.philips.com: "некоторое значение"
myheader.sony.com: "другое значение"

Отлично! Мы можем объявить себя пылесосом

А SSDP лишь пешка в подчинении UPnP, которая обнаруживает сервисы, настоящее зло открывается дальше


А теперь действительно важное

Пока так и не понятно как мы можем использовать это, правда?

Способ 1: Разведка

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

  • Моя сеть:
  • Микрот:
И что мы узнали?
  • Дату и время;
  • Операционную систему и даже её версию;
  • Модель устройства;
  • IP;
  • Самое главное - куда копать дальше
Но что мы можем найти, проследовав по волшебным ссылкам?


Способ 2: Проброс портов

Оказавшись внутри, мы можем заметить дополнительную информацию:

Например, такую

И в процессе чтения конфигурации, мы можем заметить интересные сервисы:

ещё и рофл с серийником и UPC

А про каждый из них мы можем нагуглить и почитать. Возмьём в пример самый интересный: WANIPConnection. Попробуем что-нибудь придумать?

Порывшись в интернете, я нашёл очень здравую статью, где подробно разбирался момент с открытием портов за NAT

Открыто, заходите?!

И после проверки мы получаем плаки-плаки, так как провайдера не сильно интересует то, что волнует нас, и это хорошо.

Но не зря же я 1.5 часа поднимал и понимал как настроить подобную инфраструктуру с микротом? (А ещё я много плакал)
ГОООООООООЛЛЛЛЛ

Запрос прошёл, а значит можно радоваться: пластмассовый мир победил.

Пора замести следы:

Отправляем запрос 2 раза, убедившись в удалении (сделано для арчера, на микроте закрывать не стал)


Способ 3: DoS?

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

  1. Сначала злоумышленник проводит сканирование в поисках устройств plug-and-play.
  2. Обнаружив сетевые устройства, злоумышленник создает список всех устройств, которые отвечают на запросы.
  3. Злоумышленник создает UDP-пакет с поддельным IP-адресом целевой жертвы.
  4. Затем злоумышленник использует ботнет для отправки поддельного пакета обнаружения на каждое устройство plug-and-play с запросом как можно большего объема данных путем установки определенных флагов, в частности ssdp:rootdevice или ssdp:all.
  5. В результате каждое устройство отправит ответ целевой жертве.
  6. Цель получает большой объем трафика от всех устройств и перегружается, что потенциально может привести к отказу в обслуживании для легитимного трафика.

Именно об этом и говорилось в статье, которая есть в начале


Способ 4: ???

Судя по статье которую я нашёл на сайте ISO и UPnP, он может использоваться для умного дома и обнаружения каких-нибудь принтеров, из-за чего возникают два возможных вектора атаки:

  • Дырявый дом: представим, что какая-то лампочка объявляет о своей возможности регулировать свет. Для этого всего лишь нужно...
Разработать примерно такую спецификацию

И при достаточном упорстве разработчиков сделать плохо, SOAP-запрос будет содержать лишь процент, на который нужно поставить уровень света. Да и ещё кучу других проблем...

Спокойной ночи!

  • Любые виды спуфинга: просто представляемся устройством которым не являемся и лутаем документы на печать?

Но подтвердить возможность подобных атак я не могу из-за нехватки оборудования аля подопытных


Заключение

Хочу лишь понадеяться, что статья понравилась тебе, и я не накосячил с терминами

Также оставляю список ссылок, которые показались мне интересными, можно использовать при пентесте и/ли использовались при написании статьи:

Spoof SSDP replies and create fake UPnP devices to phish for credentials and NetNTLM challenge/response

A simple script for discovery and analysis of UPnP servers

PowerPoint presentation


Добра!


Report Page