Midnight RDP攻击链分析:从恶意RDP文件到Cobalt Strike信标与域控沦陷

3 阅读5分钟

[CyberDefenders 技术复盘] Midnight RDP (恶意RDP到Cobalt Strike信标与域控沦陷)

Chicken0248 著 · 阅读时长约12分钟 · 3天前

场景描述

InfiniTech Solutions 公司的一名IT员工报告其邮箱账号出现异常活动。经调查,发现该员工的工作凭证在一次近期的数据泄露事件中被泄露。该员工曾使用其工作邮箱注册第三方平台,导致凭证暴露。威胁攻击者利用这些凭证登录该员工的企业邮箱,并向组织内的其他员工发送钓鱼邮件。

你的任务是通过分析日志、确定攻击范围、识别是否有用户与钓鱼邮件交互,并揭示钓鱼活动对网络的影响。

类别: 威胁狩猎
工具: ELK / Splunk
实验链接: cyberdefenders.org/blueteam-ct…

背景知识

关于 Midnight Blizzard (APT29) 的背景信息(本实验的灵感来源):该威胁行为者在鱼叉式钓鱼活动中利用 RDP 配置文件 (.rdp),针对超过100家组织的数千名用户。受害者打开 .rdp 文件后,会建立回连至攻击者控制的 RDP 服务器的连接。

这种 RDP 配置文件的特别之处在于,它可以用来映射两个连接客户端之间的资源,这意味着攻击者可以在目标主机的启动文件夹中投放恶意负载,等待下次启动以获取初始访问权限,甚至可以窃取受害用户的凭据。

现在我们可以带着这个知识开始实验,这样识别入口点应该会相当容易。

参考链接:
www.picussecurity.com/resource/bl…

在本实验中,我们可以选择部署 Splunk 或 Elastic SIEM,我通常选择 Splunk。根据“数据摘要”,共有4台主机,但实际上只有3个终端,而 "ip-10–10–3–192" 主机是从 MAIL01 终端采集的 syslog,我们可以利用它来发现初始访问(例如攻击者的可疑邮箱地址)。

问题与解答

初始访问

Q1: 哪个邮箱账户被入侵并用于发起攻击?

根据我们之前了解的 Midnight RDP 使用 .rdp 文件进行恶意 RDP 攻击的初始访问技术,我首先查询了任何用户、任何主机的下载文件夹中的文件创建事件,以发现可疑的 .rdp 文件。可以看到,在 2024-11-21 20:45,用户 "rnichols" 在主机 "IT01" 上确实下载了 cloud zerotrust compliance.rdp 文件。

查询语句:
Sysmon EventCode=11 file_path="*Downloads*" | sort UtcTime | table UtcTime,Image,file_path,user,host

Zone.Identifier 文件内容确认该文件确实是从组织的 webmail 下载的。通过使用用户名进行查询,可以看到 syslog 显示了可疑邮件从 twhite@infinitechsolutions.xyz 发送给 rnichols@infinitechsolutions.xyz(受害者),邮件主题表明 "twhite" 用户的邮箱首先被入侵,然后被用来向 "rnichols" 用户发送恶意 RDP 配置文件,最终导致对 IT01 主机的恶意 RDP 访问。

答案: twhite@infinitechsolutions.xyz

Q3: 从被入侵账户发送的恶意附件名称是什么?

答案: cloud zerotrust compliance.rdp

执行

Q1: 通过分析用户交互,哪个员工下载并执行了恶意附件?

通过查询 IT01 主机上下载 RDP 配置文件的用户的进程创建事件,可以看到该用户确实打开了这个 RDP 文件。

查询语句:
Sysmon EventCode=1 host=IT01 user=rnichols | sort UtcTime | table UtcTime,CommandLine,ParentCommandLine,user,SHA256

在建立与攻击者服务器的 RDP 连接后,RDP 配置文件可用于设置对受害者主机的资源映射。可以看到大约在 20:48,一个可疑文件在受害者的启动文件夹下被执行,并且是手动执行的。然后在 20:55,攻击者开始他们的操作,这意味着 RDP 配置文件确实被用来映射资源文件,并将反向 shell / C2 信标投递到用户的启动文件夹中。

我们也可以通过文件创建事件来确认:mstsc.exe(Microsoft 终端服务客户端进程)在启动文件夹中创建了该文件。

答案: rnichols

Q2: 为了维持长期访问,攻击者在受害机器上创建了一个计划任务。该任务的名称是什么?

在获得 IT02 主机的访问权限后,攻击者首先运行 whoami /groups 查看当前用户是否属于任何有趣的组,然后读取 Windows UAC 注册表设置,接着投递并使用 UACMe 工具绕过 UAC。凭借高完整性访问令牌,攻击者创建了一个名为 “Amazon Zero Trust Agent” 的新计划任务,以 SYSTEM 权限在登录时执行 C:\Windows\System32\Amazon ZeroTrust Compl.exe

答案: AmazonZeroTrustAgent

Q4: 为方便远程访问,攻击者修改了远程桌面设置。控制是否允许 RDP 连接的注册表项名称是什么?

在创建后门用户之前,攻击者检查了注册表项 HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections 以确定系统上是否允许 RDP 连接。

答案: fDenyTSConnections

Q2: 为提升权限,攻击者投递了另一个文件。该文件的名称是什么?

答案: akagi64.exe

防御绕过

Q1: 攻击者试图修改系统行为以削弱安全设置。控制管理员用户 UAC 提示设置的注册表项名称是什么?

在获得 IT02 主机访问权限后,攻击者查询了注册表项 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin,以获取 ConsentPromptBehaviorAdmin 值,该值控制 Windows 在需要提权时如何提示管理员。

答案: ConsentPromptBehaviorAdmin

Q2: 恶意附件执行后,它与一个外部服务器建立了连接。恶意附件通信的具体端点是什么?

查询 IT02 主机上所有网络连接事件,重点关注 mstsc.exe 进程建立的连接,可以看到用于 RDP 连接的攻击者 IP 地址。

答案: 3.78.253.99:3389

Q4: 检查 DLL 的配置,与 C2Server 键关联的值是什么,它指示了信标的通信方向?

在 VirusTotal 的行为选项卡上,可以看到与 C2 服务器及其信标端点相关的内存模式 URL。

答案: 3.78.244.11,/dot.gif


原文发表于 chickenloner.github.io CSD0tFqvECLokhw9aBeRqpNzLTXFlojmzFn6OlyTg9XWnhAP6q5FfiGb63VkvyGKCRkvJEisc+SrMyQe8eQ0f49+++MPmaCBvFImhXAljuGVvDCEyZI5v5MyYwvTzHicD07zks0oa3QVUOwwC5NUyiWeYJF3kzslLuYafMiEE4esszJBUa6ZN46/0SqVlapy