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: Проброс портов
Оказавшись внутри, мы можем заметить дополнительную информацию:

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

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

И после проверки мы получаем плаки-плаки, так как провайдера не сильно интересует то, что волнует нас, и это хорошо.
Но не зря же я 1.5 часа поднимал и понимал как настроить подобную инфраструктуру с микротом? (А ещё я много плакал)

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

Способ 3: DoS?
Здоровых ментально людей обычно не сильно интересуют такие вещи, но мне кажется важным оставить ссылку где можно об этом почитать и привести краткую выдержку:
- Сначала злоумышленник проводит сканирование в поисках устройств plug-and-play.
- Обнаружив сетевые устройства, злоумышленник создает список всех устройств, которые отвечают на запросы.
- Злоумышленник создает UDP-пакет с поддельным IP-адресом целевой жертвы.
- Затем злоумышленник использует ботнет для отправки поддельного пакета обнаружения на каждое устройство plug-and-play с запросом как можно большего объема данных путем установки определенных флагов, в частности ssdp:rootdevice или ssdp:all.
- В результате каждое устройство отправит ответ целевой жертве.
- Цель получает большой объем трафика от всех устройств и перегружается, что потенциально может привести к отказу в обслуживании для легитимного трафика.
Именно об этом и говорилось в статье, которая есть в начале
Способ 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
- Открываем порты за NAT при помощи NAT-PMP и UPnP IGD - ammo
- Security Flaws in Universal Plug and Play: Unplug, Don't Play - HD Moore rapid7
- UPnP With a Holiday Cheer - Deral Heiland rapid7
- SSDP DDoS attack - cloudflare
- Spoofing SSDP and UPnP Devices with EvilSSDP - HackTricks
- UPnP Internet of Things - UPnP forum
PowerPoint presentation
Добра!