WebDAV是用于Web内容创作操作的HTTP协议的扩展。该协议的一些优点可以在红色团队中使用,因为它是代理感知和隐秘的,因为连接到WebDAV服务器的请求看起来像是通过SvCHOST进程从操作系统本身来的。
PROPFIND方法用于检索存储在WebDAV服务器中的资源的属性。这些属性可以包括文件名,内容长度,创建和修改日期等。
Arno0x0x发现可以通过PROPFIND响应传递有效负载,方法是将大小分成250个字节,因为这是WebDAV的限制,并远程重新组装,避免使用任何端点解决方案。这是因为有效载荷不会写入磁盘,而是通过PROPFIND响应的文件名传递给碎片。
作为这种方法的概念证明,他开发了一个可以启动WebDAV服务器的python脚本。此脚本将有效负载的类型(PowerShell或Base64编码)和有效负载的实际位置作为参数。
在客户端,可以使用PowerShell脚本或Office宏来触发请求。这些可以在他的Gist存储库中找到。下面的屏幕截图演示了上面生成的部分有效负载,并通过PROPFIND响应的displayname属性提供。
Arno0x0x将这种技术应用到一个名为WebDAVC2的命令和控制工具中,该工具使用WebDAV协议及其特性来执行命令隐身并且不将任何内容丢弃到磁盘中。这个工具是用python编写的,可以生成3个stagers。它将自动启动WebDAV服务器,因此唯一的要求是插入本地IP地址。
将生成的bat stager是base-64编码的PowerShell有效负载,执行后将从目标中删除。另外两个版本是用Visual Basic编写的办公室宏。
当代理将在目标主机上执行时,将打开一个shell。
所有命令都将通过WebDAV服务器传递。
Casey Smith也做了一些研究并开发了一个PowerShell脚本作为概念证明,允许普通用户映射WebDAV驱动器并通过HTTP传输文件。