恶意 RDP - 重新访问初始访问方法

admin 2024年7月2日08:07:02评论1 views字数 5315阅读17分43秒阅读模式
 

寻找初始访问权

由于默认禁用来自互联网的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

恶意 RDP - 重新访问初始访问方法

从扩展生成文件

C:> cmd /c assoc | foreach { $e, $f = $_ -split '='; "hax" > "hax$e"; }

恶意 RDP - 重新访问初始访问方法

如上图所示,在随机点击文件并调查启动的程序后,一个扩展不断跳出来……RDP!.RDP 文件的妙处(或危险)在于安全提供商、电子邮件网关和电子邮件客户端都默认允许发送和接收 .RDP 文件。无论是从 Web 浏览器下载、通过网络文件共享共享,还是通过电子邮件发送,它们都会完好无损地到达目标。

在发布本文时,Microsoft Outlook、Office365 和 Proofpoint 的所有默认阻止附件列表都允许 .RDP 文件。

Microsoft 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

Proofpoint:

  • https://help.proofpoint.com/Proofpoint_Essentials/Email_Security/Administrator_Topics/090_filtersandsenderlists/Attachment_Types_Proofpoint_Essentials_Blocks_By_Default

利用.RDP 文件进行攻击

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

恶意 RDP - 重新访问初始访问方法

在过去 18 年中,我大量使用 RDP,因此我最初的想法是专注于强制毫无戒心的受害者将其本地文件系统和剪贴板映射到我控制的恶意 RDP 服务器的能力。通过这种方式,我可以执行恶意程序(在我的服务器上),这些程序将与受害者(他们的 MSTSC 客户端)文件系统进行交互。事实证明这是成功的,因为 Microsoft 提供了一种巧妙的方法,让在终端服务器环境中运行的代码使用设备重定向与终端服务器客户端进行交互。此功能是通过远程桌面访问本地驱动器和打印机等资源的方式。服务器可以使用文件夹路径(例如 C 驱动器的 \tsclientc)或甚至使用 \tsclient<drive of tagged share> 来枚举已连接客户端的映射文件系统。

因此,假设客户端的计算机具有以下安装路径:

  • 本地磁盘(C:)
  • USB 驱动器(D:)
  • 网络文件共享 (S:)
  • 可以通过以下方式访问:

可以通过以下方式访问:

  • 本地磁盘:\tsclientc
  • USB 驱动器:\tsclientd
  • 网络文件共享:\tsclients

自带服务器 (BYOS)

要与客户端交互,我们需要一些面向互联网的基础设施。它不必很复杂,但 .RDP 文件需要连接到我们控制的服务器,以便我们能够与客户端交互。大多数在互联网上启用 RDP 的 Windows 服务器很快就会被试图暴力访问的威胁者淹没。为了抑制这种行为,我建议将 RDP 端口修改为更高且随机的端口。此外,通过防火墙保护您自己的 IP 地址以进行测试,暂时禁用对 RDP 的访问。我们将在文章的后面部分加强更多暴露,但现在,您只需要:

  • 标准 Windows Server
  • 启用远程桌面
  • 添加具有 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,会发生什么?虽然我们有许多障碍需要克服,但我们会尝试解决所有这些问题!

恶意 RDP - 重新访问初始访问方法

在思考如何解决这些困难时,我开始考虑编写某种 RDP 代理。在深入研究了 RDP 协议并很快意识到众多层的复杂性最终会花费太多精力之后,我开始寻找可能已经实现了一些通信和身份验证渠道的开源项目。我希望设置某种侦听器,可以将流量转发到我的服务器,然后让受害者客户端连接到我的代理。这将消除凭证的浮动,并让我能够自动验证连接的受害者。此外,它还增加了一层额外的防火墙保护,以便只有代理才能连接到真正的 RDP 服务器。

事实证明,有一个名为pyrdp的出色开源项目已经实现了大多数协议!它充当 MiTM(中间人)代理,不仅允许您自动进行身份验证,还可以在任何端口上设置侦听器,甚至记录实时 RDP 连接。它具有许多内置功能,例如自动窃取与签名匹配的文件、在真实服务器(而非客户端计算机)上运行命令或 PowerShell 脚本、监视剪贴板,甚至克隆证书。

恶意 RDP - 重新访问初始访问方法

参考:https://www.gosecure.net/blog/2018/12/19/rdp-man-in-the-middle-smile-youre-on-camera

我将省略实现细节,但如果您查看上图,您会注意到必须实现大量协议、身份验证层和设备重定向。这些协议包括通过 RC4 算法进行的 128 位加密、用于 GUI 的疯狂位图绑定、用于与操作系统交互的虚拟通道(磁盘/打印机/剪贴板/等),以及用于身份验证、编码和通信的一系列其他规范。

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

恶意 RDP - 重新访问初始访问方法

RDP 攻击

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

恶意 RDP - 重新访问初始访问方法

二进制植入与数据泄露

我最喜欢的 .RDP 攻击是枚举映射驱动器,然后识别可写的启动位置,以便我可以植入恶意负载。由于代码正在我的服务器上运行,因此 EDR 在阻止和响应方面几乎无用,除非它检测到文件写入活动或稍后的执行。以下是一些需要考虑的事项:

  • 如果你在用户桌面上植入 LNK,则键盘快捷键将不会触发执行,直到客户端计算机重新启动
  • 在常见的自动运行位置植入二进制文件
  • 植入用于侧载的 DLL(例如 Microsoft Teams 的 dbghelp.dll)
  • 为 AppDomainManager 注入植入 .NET 配置/二进制文件

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

远程代码执行

如果客户端启用了 Hyper-V 并具有可写文件共享,则有可能立即执行代码,尽管我发现这不是现实世界中的红队体验。一位名叫 Abdelhamid Naceri 的研究人员介绍了一种方法,即使用 NTFS 符号链接将有效负载写入 C:Program FilesHyper-Vwfs.exe,然后通过控制代码调度通过客户端打印机名称使用打印机重定向触发 Microsoft Windows 传真和扫描执行。

高级 RDP 策略

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

恶意 RDP - 重新访问初始访问方法

最后的想法

虽然我已经自动化了部署 pyrdp 和生成/签署 RDP 文件的大部分繁重工作,但我暂时不会发布该工具RogueRDP  。目前似乎只有少数补救措施值得一提。对于那些有兴趣实现一些服务器端代码的人,我鼓励你查看Cassia C# 库。

  • 阻止电子邮件的 .RDP 扩展名
  • 正确配置 GPO 以防止重定向

恶意 RDP - 重新访问初始访问方法

组策略设置

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

另外,请考虑 .RDP 文件的传送方法。我通常使用电子邮件,但常见的聊天程序甚至日历注入也很好用。在某些情况下,社交网络也允许 .RDP 文件。鉴于这种情况,这是一个极好的攻击媒介,除非微软采取补救措施,否则在未来几年内将证明其有效性。

我故意在这篇文章中对一些实现细节进行了模糊处理,直到我们从供应商那里获得一些支持以减少攻击面,以及公司有机会限制其终端服务配置。此外,它为那些感兴趣的读者留下了机会,让他们决定如何实现他们的 Windows Server、服务器端代码和 RDP 中继,而无需将密钥交给威胁行为者。例如,我倾向于将我的中继设置为监听一个公共端口,以防我的目标网络阻止出站端口 3389,然后使用 pyrdp 而不是从我的恶意 Windows Server 运行枚举代码来提取有趣的文件。

有关 Rogue RDP 技术的更多信息,请关注我在Wild West Hacking Fest 上的演讲,题为“社会可接受的进前门方式”,这是 Steve Borosh(@rvrsh3ll)和我去年在 Deadwood 2021 上发表的。我期待其他研究人员研究执行远程代码的方法,甚至建立 RDP 会话的其他方法(*咳嗽*我正在看你的 RDP COM 对象*咳嗽*)。

Rogue RDP – Revisiting Initial Access Methodshttps://www.blackhillsinfosec.com/rogue-rdp-revisiting-initial-access-methods/

原文始发于微信公众号(Ots安全):恶意 RDP – 重新访问初始访问方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日08:07:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   恶意 RDP - 重新访问初始访问方法http://cn-sec.com/archives/2905012.html

发表评论

匿名网友 填写信息