严重漏洞 | Citrix NetScaler ADC会话劫持及网关漏洞分析(CVE-2023-4966)

▌LockBit 勒索软件团伙正利用Citrix Bleed漏洞高调攻击

近日,经过追踪针对某行、DP World、Allen & Overy和波音等多家公司的攻击,他们都受到Citrix Bleed漏洞的影响。最新消息也证实LockBit对某行的攻击也是通过利用Citrix Bleed漏洞(CVE-2023-4966)实现的。

Lockbit 勒索软件利用CVE-2023-4966来破坏大型组织的系统、窃取数据和加密文件,该漏洞是一个是一个严重程度极高、可远程利用的信息泄露漏洞。

2023年10月10日,Citrix发布了有关影响NetScaler ADC和NetScaler Gateway 设备的敏感信息泄露漏洞 (CVE-2023-4966)的安全公告,声称已修复漏洞,但成千上万个暴露在互联网上的端点仍在运行易受攻击的设备。

Citrix服务器分布地图

塞讯验证已观测到从2023年8月下旬开始的零日漏洞利用以及Citrix发布后的n日利用。根据攻击事件中成功利用CVE-2023-4966的结果,这个漏洞会导致NetScaler ADC和网关设备上的合法用户会话被接管。会话接管绕过了密码和多重身份验证。

下文将讨论可用于识别利用活动的特征,并重点介绍观察到的一些后利用技术。

▌易受攻击的端点

10月10日之前,追踪发现攻击者通过未知方式接管用户的 NetScaler 会话。在Citrix 发布和开发PoC之前,我们认为会话接管是对未知漏洞进行零日利用的结果。我们发现了易受攻击的端点以及一个PoC来验证该漏洞。

容易受到 CVE-2023-4966 影响的 URL

通过制作HTTP主机标头大于一定长度的HTTP GET请求,易受攻击的设备将返回系统内存的内容。内存内容可以包括有效的Netscaler AAA会话cookie。此cookie是在身份验证后发出的,其中可以包括多因素身份验证检查。有权访问有效cookie的攻击者可以在不知道用户名、密码或访问多因素身份验证令牌或设备的情况下建立与NetScaler设备的经过身份验证的会话。

▌分析

分析易受攻击的设备以利用CVE-2023-4966的挑战在于,设备上运行的Web服务器不会记录对易受攻击端点的请求(或错误)。而我们不知道能采用什么配置更改来强制记录这些端点的请求。为了识别尝试的利用请求,组织将需要依赖Web应用程序防火墙 (WAF) 或其他网络设备来记录针对NetScaler ADC或网关设备的HTTP/S请求。

因此,可以使用以下方法来识别CVE-2023-4966的潜在利用和后续会话劫持。其中包括以下技术:

  • 分析从WAF向易受攻击的HTTP/S端点发出的请求
  • 根据NetScaler日志识别可疑登录模式
  • 识别可疑的虚拟桌面代理Windows注册表项
  • 内存核心Dump文件分析
注意:由于利用此漏洞留下的取证证据有限,识别历史利用情况具有挑战性。与会话劫持相关的可疑活动模式可能因环境而异,并且下述技术可能并非在所有情况下都适用或可行。

▶ NetScaler 上的可疑登录模式

成功利用CVE-2023-4966后,已识别出两种类型的日志,可用于识别会话劫持的历史证据。虽然这些日志可用于寻找可疑登录模式的证据,但确定会话是否被攻击者劫持需要上下文环境和进一步分析。例如,分析人员在分析过程中需要考虑设备是否记录真实的客户端IP地址(与网络地址转换 [NAT] 地址相对),以及正常的用户行为是什么样的(用户是否经常更改IP地址)。

Ns.log分析

Citrix NetScalers将系统日志信息记录在ns.log文件中,存储在/var/log/ns.log. nslog 中记录的日志消息可以包括SSLVPN和ICA代理会话的连接统计信息。

注意:NetScaler 上的默认日志轮换配置允许每种日志类型(例如ns.log)有25个文件,每个日志为100 KB,因此总共记录2.5 MB。在大多数情况下,此日志大小没有足够的空间来覆盖整个调查期间。此外,通过syslog的日志转发可以配置为将日志转发到NetScaler设备外部。

1. 从不同源IP地址访问的会话

通过比较TCPCONNSTAT 事件中记录的IP地址Client_ip和字段,可以识别可疑的SSLVPN会话。SourceTCPCONNSTAT事件记录属于SSLVPN 会话的连接的TCP连接相关信息。请参阅下图中的示例日志事件(已用占位符替换了字段值)。

客户端和源 IP 地址不匹配的 TCPCONNSTAT 消息示例

根据我们的分析,该Client_ip字段基于最初创建SSLNVPN会话的客户端IP地址,并且该字段基于正在记录的连接的客户端IP地址。对于被劫持的会话,我们观察到了 TCPNCONNSTATS事件,其中和字段之间存在不匹配,并且经分析,源IP地址是可疑的。会话期间IP地址的更改也可能由于网络更改等合法情况(例如,启用/禁用Wi-Fi、切换到VPN等)而发生。调查Client_ip和Source值的ASN和地理位置可以了解这种行为是否具有潜在的恶意或误报。NetScaler设备也可能在其他日志消息中记录类似的连接统计信息。

2. 来自同一 IP 地址的多个会话

分析发现的另一个检测机会是在文件中记录的短时间内访问多个用户帐户的源IP地址ns.log或通过syslog转发的日志。虽然攻击者只能选择从单个源IP地址访问单个帐户,但我们观察到攻击者在数小时内从同一源IP地址访问了多个帐户。

请注意,源自同一IP地址的多个用户会话也可以合法发生,具体取决于组织使用的网络(例如,来自远程位置的员工使用同一Internet存在点访问Citrix会话、NAT IP地址等)。

Windows 注册表项

当 NetScaler 设备成功代理用户会话时,目标Citrix Virtual Delivery Agent (VDA) 系统会在Citrix端点的Windows注册表中记录源主机、源主机本地IP和关联的UserSid。

通过将这些注册表值与记录在被劫持会话中并可能与被劫持会话相关的时间戳和用户帐户相关联ns.log,可以确定攻击者的原始主机名(即DESKTOP-1ABC2DE3)和本地主机IP(即 10.0.2.15)。一旦识别,攻击者主机名和本地IP地址可用于在注册表和Windows事件日志(特别是事件ID 4624、21、23、24 和 25)中搜寻Citrix VDA环境中的其他攻击者会话。此数据还可用于增加对日志文件中识别的可疑会话的信心,例如,如果记录的客户端主机名是默认Windows主机名(即DESKTOP-########)。

▶ NetScaler 内存核心Dump文件的内存分析

在某些情况下,可以在设备的NSPPE进程的内存空间中找到利用的证据。利用CVE-2023-4966不会使NSPPE进程崩溃并生成内存核心Dump文件。要对NetScaler内存核心Dump文件进行分析,需要收集它们。在生成用于分析的核心Dump之前不要重新启动设备,这一点很重要。

要收集这些文件,塞讯验证建议遵循Citrix发布的说明:

  • 检查NetScaler设备上是否有超过5 GB的可用磁盘空间。
  • 在NetScaler上创建NSPPE核心Dump文件。
  • 从NetScaler收集NSPPE核心Dump文件。从 /var/core/<N> 复制核心Dump文件,其中N是编号最大的文件夹。Dump文件将以“NSPPE-”开头。
在利用CVE-2023-4966的设备核心文件中,存在超过120,000个字符的人类可读字符串,其中填充了超过99%的“0”字符。该字符串是公开内存区域的响应对象的一部分。如果响应字符串中设备的FQDN是一长串字符而不是合法的FQDN,则搜索对易受攻击端点的合法响应中包含的字符串也可能会被利用。下图显示了一行代码,用于打印核心文件中的所有可读字符串及其长度和附加处理。

用于分析 NSPPE 核心Dump中的字符串的命令

下图显示了服务器对OAuth配置端点的预期响应。占位符值将在服务器端替换为HTTP主机标头的值。

服务器对配置端点的典型响应

下图显示了从核心Dump文件中获取的利用尝试证据的截断样本。在这种情况下,攻击者发送了一个HTTP主机标头设置为24,799个“0”字符的请求。

攻击请求后服务器的响应示例

重要提示:上述证据并不能保证利用成功。可以在不易受CVE-2023-4966影响的最新NetScaler版本上生成的核心Dump文件中找到利用尝试的证据。但仅凭这些数据无法区分失败和成功的利用尝试。

▌开发后攻击活动

成功利用CVE-2023-4966后,我们观察到了各种利用后策略、技术和程序 (TTP)。一旦攻击者能够成功实现会话劫持,他们就会执行包括对受害者环境进行主机和网络侦察、凭证收集以及通过RDP进行横向移动的操作。其中发现了使用非本地二进制文件(例如net.exe. 此外,我们还观察到使用SoftPerfect网络扫描仪 (netscan.exe) 来执行内部网络枚举。

攻击者执行的 AD 侦察命令示例

在一些情况下,攻击者使用7-zip创建加密的分段存档来压缩侦察结果。然后,攻击者使用内置certutil实用程序对片段进行Base64编码。

攻击者用于压缩和编码输出文件的示例命令

有一种情况是,certutil用于解码与凭证盗窃相关的多个文件。我们还观察到攻击者使用e.exe加载d.dll到lsass进程内存中的方式。运行时,该实用程序会创建一个位于 的内存Dump文件,%temp%\1.png并在完成后打印success到控制台。攻击者可以离线处理内存Dump文件以提取凭证。而sh3.exe为疑似运行 MimikatzLSADUMP命令的实用程序。

解码凭证收集器的示例命令

在另一个例子中,攻击者用certutil 解码被我们识别为新跟踪的后门的文件,该后门使用Slack作为其命令和控制。业界称为FREEFIRE,它是一个为 .NET 编写的轻量级后门。FREEFIRE与硬编码通道通信以检索命令并上传响应。它支持加载通过聊天评论发送给它的编码为Base64的任意 .NET程序集。我们观察到攻击者通过以下certutil命令部署了FREEFIRE。

用于解码 FREEFIRE 的 certutil 命令

我们还观察到成功利用CVE-2023-4966后各种远程监控和管理 (RMM) 工具的部署情况。目前已观察到 Atera、AnyDesk和SplashTop的部署例子,以在利用CVE-2023-4966后建立并维持立足点。

▌持续追踪

塞讯验证目前正在持续跟踪利用此漏洞的攻击与威胁组织。我们发现这些威胁组织在后利用阶段存在较低的相似程度,例如使用Windows上可用的相同侦察命令和实用程序。例如常见工具是:

  • csvde.exe
  • certutil.exe
  • local.exe
  • nbtscan.exe
某些威胁组织会使用Mimikatz Dump进程内存。

▌通用检测规则YARA Rules

我们在开源社区中也发现了一些通用检测规则可供参考使用。

▌MITRE ATT&CK 技术匹配

初始访问
T1133:外部远程服务
T1190:利用面向公众的应用程序
执行
T1059.001:PowerShell
T1059.003:Windows 命令Shell
T1059.006:Python
T1569.002:服务执行

防御绕过

T1027:混淆的文件或信息
T1027.002:软件打包
T1055:进程注入
T1070:指示器移除
T1070.004:文件删除
T1070.006:时间戳
T1112:修改注册表
T1140:反混淆/解码文件或信息
T1620:反射代码加载
T1036.008:文件类型化妆
T1202:间接命令执行
T1218.011:Rundll32

凭证访问

T1003.001:LSASS内存
T1003.003:NTDS
T1555.003:来自Web浏览器的凭证
T1555.004:Windows凭证管理器

收集

T1115:剪贴板数据
T1213:来自信息存储库的数据
T1560:存档收集的数据
T1560.001:通过实用程序存档

发现

T1007:系统服务发现
T1012:查询注册表
T1016:系统网络配置发现
T1016.001:互联网连接发现
T1033:系统所有者/用户发现
T1069.001:本地组
T1069.002:域组
T1082:系统信息发现
T1083:文件和目录发现
T1087:帐户发现
T1087.001:本地帐户
T1087.002:域帐户
T1135:网络共享发现
T1482:域信任发现
T1614.001:系统语言发现

维持

T1543:创建或修改系统进程
T1543.003:Windows 服务

命令与控制

T1071.001:网络协议
T1095:非应用层协议
T1071.004:DNS
T1102:网络服务

影响

T1489:服务站

横向移动

T1021.001:远程桌面协议
T1563:远程服务会话劫持

▌Citrix厂商安全公告与缓解建议

https://support.citrix.com/article/CTX579459/netscaler-adc-and-netscaler-gateway-security-bulletin-for-cve20234966-and-cve20234967

为了确保您采取的措施达到预期效果,您可以在塞讯安全度量验证平台中搜索关键词“LockBit ”以及“Citrix”获取相关攻击模拟验证动作和相关场景,从而验证您的安全防御体系是否能够有效应对勒索软件的攻击手段,并且以业界独有方式确保您在验证时的无害化。