UNC6671 虽然曾关联的 BlackFile 品牌据称在 2026 年 5 月退出,但相关入侵活动并未消失。威胁情报显示,攻击者改用 Redact、Pink、Helix 和 Falcon 等多个勒索品牌对外运营,而初始入侵路径和后续动作高度一致:假冒 IT 服务台电话、诱导员工访问仿冒登录页、通过 AiTM(Adversary-in-the-Middle)截获凭据与 MFA 会话,再从 Microsoft 365、Okta 等 SaaS 平台批量窃取数据。
这类事件的关键不在于勒索组织叫什么名字,而在于企业是否能阻断“身份被接管后仍可持续访问云数据”的攻击链。
品牌会变,但攻击链没有变
报告中的多个勒索品牌共享相似的受害者画像、钓鱼模板和基础设施关联。攻击者常注册带有 passkey、mfa、sso、okta 等词的通用根域名,再为每个目标企业分配包含企业名称的子域名,制造“企业正在推进通行密钥或 MFA 升级”的假象。
典型链路如下:
- 攻击者以 IT 服务台人员身份致电员工,部分场景还会伪造真实服务台号码。
- 电话以“紧急启用 FIDO2 通行密钥”“必须重新登记 MFA”为由,要求员工在个人手机上访问指定页面。
- 仿冒页面通过 AiTM 反向代理转发真实身份提供商的登录流程,截获账号、密码和已经完成 MFA 后的会话令牌。
- 攻击者借助被劫持会话进入 Okta、Microsoft 365 或其他 SaaS 服务。
- 其后会修改账户安全设置、重置非 SSO 应用密码,并删除通知邮件以降低被发现的概率。
- 最终通过脚本或 SDK 持续读取、流式导出云端文件,作为勒索筹码。
因此,单纯依靠员工识别可疑链接并不足够。攻击者把交互放到了语音电话和个人设备上,绕开了不少传统邮件网关、终端防护和企业网络边界控制。
AiTM 为什么能绕过传统 MFA
短信验证码、推送确认和一次性密码能够证明用户“完成了第二步验证”,却未必能证明用户正在向正确的网站认证。AiTM 钓鱼代理正是利用这一点:它将用户的操作实时转发给真实 IdP,再将获得的认证结果和会话 Cookie 留给攻击者。
真正针对这一问题的控制是具备抗钓鱼能力的认证器,例如基于 WebAuthn 的 FIDO2 安全密钥、平台通行密钥、Windows Hello for Business 或 Okta FastPass。它们会将认证结果与站点来源进行密码学绑定:用户即使在外观相似的域名上操作,仿冒站也无法获得可用于真实 IdP 的断言。
这里有一个容易被忽略的边界:部署通行密钥不等于自动消除风险。若关键 SaaS 应用仍允许绕过 SSO 的本地密码登录,或者既有会话周期过长、缺少设备绑定,攻击者仍可能利用已盗会话或重置流程维持访问。
检测重点应从“下载事件”扩展到“访问行为”
UNC6671 的数据窃取并不一定表现为用户在浏览器中连续点击下载。报告提到,攻击者会用 python-requests、WindowsPowerShell、Go HTTP 客户端等程序化方式访问 SaaS 文件。
SOC 不能只监控 FileDownloaded,还应将高频 FileAccessed、异常 User-Agent、陌生网络来源和超出员工正常工作节奏的访问量组合起来判断。尤其是在金融、私募股权、法律和专业服务机构中,交易材料、客户数据、诉讼文档和投研数据通常价值很高,攻击者更可能先定位少量高敏感目录,而不是盲目抓取整个租户。
下面是一条可改造的 Microsoft Sentinel KQL 检测示例。假设 Microsoft 365 审计日志已经进入 OfficeActivity 表;请先按本组织的实际字段名和业务基线调整阈值。
let lookback = 1h;
let suspiciousAgents = dynamic([
"python-requests",
"WindowsPowerShell",
"Go-http-client"
]);
OfficeActivity
| where TimeGenerated > ago(lookback)
| where OfficeWorkload in ("SharePoint", "OneDrive")
| where Operation in ("FileAccessed", "FileDownloaded")
| extend UserAgentText = tostring(UserAgent)
| extend IsScriptedClient = UserAgentText has_any (suspiciousAgents)
| summarize
FileEvents = count(),
DistinctFiles = dcount(SourceFileName),
UserAgents = make_set(UserAgentText, 10),
SourceIPs = make_set(ClientIP, 10),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated)
by UserId, bin(TimeGenerated, 15m), IsScriptedClient
| where IsScriptedClient or FileEvents > 200 or DistinctFiles > 100
| project TimeGenerated, UserId, IsScriptedClient, FileEvents, DistinctFiles,
SourceIPs, UserAgents, FirstSeen, LastSeen
| order by FileEvents desc
这条规则适合作为调查入口,不适合直接把所有命中都视为入侵。合法备份工具、迁移任务、eDiscovery 流程和自动化报表也可能产生高频文件访问。生产环境中应为批准的服务账号、固定出口 IP、受管理应用身份和已登记的 User-Agent 建立白名单,并对高权限用户采用更低的告警阈值。
把防护控制放到攻击链的关键节点
面对以身份为中心的勒索活动,控制措施需要覆盖认证前、认证中和认证后。
认证前:缩小假冒服务台的影响范围
- 为服务台建立统一的回拨流程。员工接到“紧急安全迁移”电话时,应挂断后通过企业通讯录中的官方号码重新联系服务台。
- 不要让服务台通过电话要求员工输入密码、验证码或批准未知的 MFA 请求。
- 将员工个人号码视为高风险联系渠道。对于密码重置、MFA 变更和特权账户操作,要求通过受管设备和已认证的工单流程完成。
认证中:强制来源绑定和设备条件
- 在全部 SSO 环境中优先强制 WebAuthn/FIDO2 等抗钓鱼认证方式。
- 将关键 SaaS 纳入统一 IdP,避免每个业务系统单独维护 MFA、密码重置和会话策略。
- 对财务、法务、管理员和高敏感数据访问启用逐步认证(step-up authentication)。
- 要求设备满足 MDM 合规和 EDR 运行状态;通过 Entra ID 或 Okta 的设备条件限制任意非受管终端登录。
认证后:让被盗会话尽快失效
- 缩短会话有效期,至少要求每日重新认证;特权访问和高价值 SaaS 应设置更短的空闲超时。
- 使用 IdP 支持的 IP 会话绑定、设备绑定会话凭据、持续访问评估等令牌盗用缓解能力。
- 对异常地理位置、商业 VPN、住宅代理和不符合用户既有行为的网络来源实施条件访问或风险告警。
- 监控 MFA 注册、认证失败和被放弃挑战之间的时间关联。攻击者常在诱导失败或异常认证后立即建立新的 MFA 因子。
一份可执行的排查清单
当发现员工报告可疑“服务台电话”,或监测到异常 MFA 操作时,应优先执行以下动作:
- 立即吊销相关用户的会话、刷新令牌和应用密码,不只修改主密码。
- 检查 IdP 中新增的 MFA 因子、恢复方式、设备信任记录和条件访问策略变更。
- 审计邮箱规则、已删除邮件、密码重置通知和安全告警,确认攻击者是否试图隐藏痕迹。
- 审查 SharePoint、OneDrive、Google Workspace 或其他 SaaS 的高频文件访问,重点核查脚本化 User-Agent 与异常来源 IP。
- 追踪同一时间窗口内其他用户是否收到类似电话、访问过相似命名域名,或出现相同的认证失败模式。
- 将已确认的仿冒域名、User-Agent、代理 IP 和账户行为特征送入 SIEM、DNS 防护、SSE/SASE 与 EDR 检测流程,但不要仅依赖静态 IOC 封禁。
UNC6671 的案例说明,攻击者可以迅速更换勒索品牌、域名和中转节点,但较难快速改变成熟的作业流程。企业应把防御重点放在可验证的身份绑定、受管设备访问、短会话和 SaaS 行为审计上。这样即使攻击者换了名称,核心攻击链仍然会在关键环节暴露出来。