Rogue RDP——再谈初始访问方法

admin 2022年12月13日14:52:21评论73 views字数 4237阅读14分7秒阅读模式

免责声明

本公众号仅用于技术交流与学习,利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本公众号只是知识的搬运工,取之于民用之于民。

Rogue RDP——再谈初始访问方法

寻找初始访问权限

由于微软默认禁用源自互联网的VBA 宏,这将不可避免地使初始访问更难实现。在过去的一年里,我投入了一些研究时间来寻求使用远程桌面协议作为替代初始访问向量,本文将对此进行介绍。
我想介绍一种新技术,我称之为Rogue RDP。它能够利用恶意RDP服务器、RDP中继和武器化的.RDP连接文件,迫使毫无戒心的受害者连接并转发对其机器某些部分的控制。使用正确的策略,已建立的连接将为攻击者提供访问文件、植入二进制文件以及在正确条件下执行远程代码的必要手段。
因此,在开始我的旅程之前,我想快速识别在 Windows 中注册的默认扩展及其在执行时将启动的相应程序。为此,我使用带有ftype和assoc内置命令的PowerShell生成了扩展名、文件类型及其可执行文件的网格。此外,我还生成了一个包含每个扩展名的文件,这样我就可以通过单击这些文件来快速测试默认执行行为。
在网格中查看扩展和可执行文件
C:> $fm = @{}; cmd /c ftype | foreach { $ft, $ex = $_ -split '='; $fm.add($ft,$ex); }C:> cmd /c assoc | foreach { $e, $f = $_ -split '='; [pscustomobject]@{Extension = $e; FileType = $f; Executable = $fm[$f]; } } | out-gridview

Rogue RDP——再谈初始访问方法

从扩展生成文件
C:> cmd /c assoc | foreach { $e, $f = $_ -split '='; "hax" > "hax$e"; }

Rogue RDP——再谈初始访问方法

如上面的屏幕截图所示,在生成文件中,一个扩展程序不断向我跳出来……RDP!.RDP 文件的好处(或危险)是安全提供商、电子邮件网关和电子邮件客户端都默认允许发送和接收 .RDP 文件。无论它们是从网络浏览器下载、通过网络文件共享共享,还是只是通过电子邮件发送——它们都会毫发无损地到达目标。
在发布本文时,Microsoft Outlook、Office365 和 Proofpoint 的所有默认阻止附件列表都没有 .RDP 文件。
微软 Outlook:https://support.microsoft.com/en-us/office/blocked-attachments-in-outlook-434752e1-02d3-4e90-9124-8b81e49a8519微软在线服务:https://techcommunity.microsoft.com/t5/exchange-team-blog/changes-to-file-types-blocked-in-outlook-on-the-web/ba-p/874451证明点:https://help.proofpoint.com/Proofpoint_Essentials/Email_Security/Administrator_Topics/090_filtersandsenderlists/Attachment_Types_Proofpoint_Essentials_Blocks_By_Default

武器化 .RDP 文件

接下来,我需要确定我可以在 .RDP 文件中利用什么进行初始访问。由于标准可执行文件是微软终端服务客户端 (MSTSC),因此这是一个合适的起点!.RDP 文件包含远程桌面连接的配置设置,并且由于大多数公司环境都使用RDP在员工之间共享计算机资源,微软添加了许多功能以启用文件和打印机共享、访问剪贴板内容、音频和视频捕获设备、智能卡,甚至是即插即用设备。

Rogue RDP——再谈初始访问方法

在过去的18年里RDP使用非常广泛,我最初的想法是使毫无戒心的受害者将他们的本地文件系统和剪贴板映射到我控制的流氓RDP服务器。通过这种方式,我可以(在我的服务器上)执行与受害者(他们的MSTSC客户端)文件系统交互的恶意程序。
这被证明是可行的,因为微软为在终端服务器环境中运行的代码提供了一种巧妙的方法,可以使用设备重定向与终端服务器客户端的交互。此功能是通过远程桌面访问本地驱动器和打印机等资源。服务器可以使用文件夹路径枚举已连接客户端的映射文件系统,例如C盘的\tsclientc或者甚至使用 \tsclient<映射共享的驱动器> 安装的网络文件共享。
因此,假设客户端的计算机具有以下安装路径:
本地磁盘 (C:) USB 驱动器 (D:)网络文件共享 (S:)
可以通过以下方式访问它们:
本地磁盘:\tsclientcU 盘:\tsclientd网络文件共享:\tsclients

自带服务器 (BYOS)

为了与客户端交互,我们需要一台公网服务器。它不必很复杂,但 .RDP 文件需要连接到我们控制的服务器。大多数在互联网上启用RDP的Windows服务器容易受到暴力破解攻击。为了遏制这种行为,我建议将RDP端口修改为更高和随机的端口。此外可以通过设置防火墙策略对RDP的访问进行控制。现在只需要:
  1. 标准 Windows 服务器
  2. 启用远程桌面

  3. 添加具有 RDP 权限的新用户


可以使用以下PowerShell命令修改RDP侦听端口:
Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -name "PortNumber" -Value 21390New-NetFirewallRule -DisplayName 'RDPPORTLatest' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 21390
对于初始访问,我们总是希望减少我们要求受害者进行的交互次数。这很困难,因为要让他们的客户端自动连接到我们的服务器,我们必须在我们发送给他们的 .RDP 文件中预加载凭据,这在如今由于数据保护API(DPAPI)而不可能。我们可以使用空白帐户密码,但这也需要交互,更不用说它会将我们的服务器暴露给任何可以猜出用户名的人。因为我们的RDP服务器身份目前未经验证且未知,带有黄色的大警告横幅。此外,如果目标的网络禁止访问3389端口怎么办?尽管我们有许多障碍需要克服。

Rogue RDP——再谈初始访问方法

在思考解决其中一些困难的方法时,我开始考虑编写某种RDP代理。在深入研究RDP协议并很快意识到众多层的复杂性最终会导致暂时的工作量太大之后,我开始寻找开源项目。我的希望是设置某种监听器,可以将流量转发到我的服务器,然后让受害客户端连接到我的代理。这将消除浮动凭据,并使我能够自动验证连接的受害者。此外,它还增加了一层额外的防火墙保护,这样只有代理才能连接到真正的RDP服务器。
事实证明,有一个名为pyrdp的惊人开源项目已经实现了大部分协议!它充当中间人代理,不仅允许自动验证,还可以在任何端口上设置侦听器,甚至记录实时RDP连接。它具有一系列内置功能,例如自动泄露与签名匹配的文件、在真实服务器(而非客户端计算机)上运行命令或 PowerShell 脚本、监控剪贴板,甚至克隆证书。

Rogue RDP——再谈初始访问方法

这为我们提供了使用任何用户名、代理主机名、代理侦听端口(以避免潜在的防火墙)预加载我们的.RDP文件配置的能力,并启用转发所有驱动器、打印机和设备。生成.RDP文件后,我们可以使用LetsEncrypt为我们要在代理服务器上使用的任何域生成SSL证书,然后使用OpenSSL将证书转换为PFX文件。在Windows机器上,可以将PFX导入证书存储并使用rdpsign.exe 内置Windows实用程序对.RDP文件进行签名。可能有更简单的方法来完成所有这些。通过使用LetsEncrypt证书签署.RDP文件,我们会有一个看起来更安全的连接对话!

Rogue RDP——再谈初始访问方法

RDP攻击

当我们的pyrdp代理运行并指向我们真正的Windows服务器时,我们所需要的只是一些在登录会话建立后执行的代码。客户端将通过MSTSC连接到我们的代理,我们的代理将自动向我们的服务器进行身份验证,并且将在受害者的客户端和我们的服务器之间进行双向通信。这意味着我们的代理和服务器都可以访问客户端的驱动器。

Rogue RDP——再谈初始访问方法

二进制植入和数据Exfil

我最喜欢的 .RDP 攻击是枚举映射的驱动器,然后识别可写的启动位置,这样我就可以植入恶意负载。因为代码正在我的服务器上运行,所以EDR在预防和响应方面几乎毫无用处,除非它检测到文件写入活动或稍后的执行。以下是一些需要考虑的事项:
  • 如果在用户桌面上植入LNK,则键盘快捷键将不会触发执行,直到客户端计算机重新启动

  • 在常见的自动运行位置植入二进制文件

  • 植入一个用于侧载的DLL(如微软团队的dbghelp.dll)

  • 植入.NET配置/二进制文件进行AppDomainManager注入


还可以搜索敏感数据/文件。根据我的目标人群,我喜欢查找AWS/Azure凭证和PowerShell历史文件等内容。

远程代码执行

如果客户端启用了Hyper-V和可写文件共享,就有机会立即执行代码。一位名叫Abdelhamid Naceri的研究人员介绍了一种使用NTFS符号链接将有效载荷写入C:Program FilesHyper-Vwfs.exe的方法,然后通过客户端打印机名称通过打印机重定向触发Windows传真和扫描执行控制代码。

高级RDP战术

一项很酷的技术是监控或植入剪贴板内容的能力。当我进行一些测试时,我从Windows虚拟机中执行.RDP文件,但捕获主机的剪贴板内容。这是因为我将我的主机剪贴板映射到我的虚拟机,当虚拟机连接到我的恶意RDP服务器时,它正在设置一个剪贴板重定向器。此外,由于我在我的虚拟机中启用了共享,所以我的主机文件夹之一也可以从RDP服务器访问。

最后的想法

 虽然我已经自动化了部署pyrdp和生成/签署RDP文件的大部分繁重工作,但我暂时不会发布该工具RogueRDP。目前似乎只有少数补救措施值得一提。
防护措施:
  • 阻止电子邮件的.RDP扩展名

  • 正确配置GPO(组策略)以防止重定向


组策略设置:

计算机配置-->管理模板-->Windows 组件-->远程桌面服务-->远程桌面会话主机

原文始发于微信公众号(Hack All):Rogue RDP——再谈初始访问方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月13日14:52:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Rogue RDP——再谈初始访问方法https://cn-sec.com/archives/1461100.html

发表评论

匿名网友 填写信息