微软发现攻击者利用人工智能体扫描公开仓库,窃取云服务凭据
Microsoft Threat Intelligence · 发布 2026/11/06 · 更新 2026/11/06

微软威胁情报团队观察到,攻击者利用智能体工具扫描公开代码仓库中的密钥,并进一步访问云资源。在一个案例中,从搜索泄露信息到窃取密钥保管库数据仅用了五分钟。微软建议立即撤销或轮换暴露凭据,并检查相关登录和云活动日志。

微软威胁情报团队发现,攻击者正在使用智能体人工智能攻击框架,在公开的 GitHub 仓库中寻找泄露的秘密信息,包括多个应用与云服务中的凭据、应用凭据,以及人工智能推理相关的接口密钥。攻击者随后可以利用这些秘密信息,对受害组织实施进一步恶意活动。
搜索公开代码仓库中的凭据、秘密信息、密钥及其他认证材料,是一种已有充分记录的技术。过去,这类活动受限于人工寻找仓库、检查其中数据,以及利用认证材料开展后续操作所需的时间。但 ARTEX 等智能体工具不仅能更快扫描多个仓库,还可利用智能体分析结果并实施后续攻击,减少整个攻击链中人工操作键盘的需求。至少在一个案例中,微软发现人工智能体从扫描 GitHub 中的秘密信息,到从 Azure Key Vault 窃取数据,仅用了五分钟。
微软还调查了滥用有效应用凭据的后续活动。早在二〇二六年十月二十八日,微软就观察到来自 199.19.77[.]84 的服务主体成功登录,涉及部分受影响客户的多个应用标识。其中包括多租户应用凭据在源头,即供应商拥有的应用处被盗,随后被用于访问多个下游租户的情况。攻击者利用这些凭据发现云资源,窃取凭据与数据,包括 Azure Key Vault 和存储账户中的内容,并滥用 Azure AI 服务,与前述活动相符。此外,微软发现两个可能与本次行动有关的地址存在恶意活动。来自 65.87.223[.]26 的恶意操作,包括在用户代理字符串中嵌入外壳命令、疑似利用漏洞,以及尝试取得 App Service 认证令牌。Todyl 也报道过涉及相同地址的类似行动。另外,微软观察到来自 157.22.126[.]128 的侦察操作,目标是受害者部署在 Azure AI 服务上的人工智能工作负载。
微软建议组织扫描其 GitHub 代码,查明是否存在秘密信息。除从代码库移除这些信息外,受影响组织还应立即轮换所有已暴露的密钥或凭据。GitHub 会自动扫描秘密信息,以监控公开仓库。除了扫描自己的仓库,组织还可以通过 GitHub 启用公开监测,发现平台其他公开仓库中泄露的秘密信息。这会将扫描范围扩展到企业自有仓库之外,跟踪整个平台上的潜在泄露。GitHub Advanced Security for Azure DevOps 可扫描源代码中的凭据和其他敏感内容,推送保护还能在受支持的秘密信息被推送前阻止它。组织需要启用这一产品;使用独立体验的组织,则需启用 GitHub Secret Protection for Azure DevOps。
包含秘密信息的代码提交到 GitHub 时,这些信息可能随之暴露在公开仓库中。开发者可能为快速启用 OAuth 应用,或避免配置较新的认证流程,而把秘密信息放入配置文件、脚本或其他代码。组织可以保护工作负载身份和秘密信息,实施最小权限,保护恢复资源,并启用相关的 Microsoft Defender for Cloud 防护,以降低暴露风险。公开泄露的凭据在被撤销或轮换前仍然有效;只删除最初的泄露内容并不能完成补救。微软建议开发者将 OAuth 应用迁离基于秘密信息的认证方式。虽然在代码中存放长期应用客户端密钥很常见,但使用托管身份认证,可消除秘密信息在代码中暴露的可能,省去相关人工管理流程,并减少安全扩展应用的障碍。
这类活动体现了一个持续趋势:攻击者使用包括 ARTEX 在内的智能体人工智能渗透测试框架,加速攻击链各阶段。随着这些能力演进,防守方也必须使用人工智能,在大规模环境中开展调查与响应。
从秘密信息泄露到云环境失陷
从二〇二六年八月开始,微软观察到攻击者利用智能体攻击框架,向 GitHub 提交大量搜索秘密信息的查询。这些查询往往包含目标组织名称、与秘密信息有关的关键词、云服务关键词,或其他人工智能服务提供商的关键词。在公开仓库发现自身秘密信息的组织,必须假定这些秘密信息及相关应用已经失陷。
后续操作
通过 Entra ID 滥用凭据
在最早始于二〇二六年十月二十八日的一次后续攻击中,智能体框架使用有效的泄露或被盗应用凭据,访问某些组织的 Microsoft Entra ID 租户,以及相连的 Azure 和 Microsoft 365 资源。登录主要来自 199.19.77[.]84 与 199.19.77[.]18;后者是 Tor 出口节点,也可能涉及来自其他来源、与本次行动无关的恶意活动。该智能体成功对多个租户的数十个相关应用执行服务主体登录。服务主体是应用用于认证的身份,可以直接以编程方式访问该应用获准访问的资源。
攻击者针对会返回凭据的操作,包括存储账户密钥、App Service 设置、连接字符串和发布凭据、人工智能及机器学习连接和数据存储,以及 Azure Kubernetes Service 用户凭据。失陷应用随后访问目标组织租户中的 SharePoint 和 OneDrive,包括下载文件和访问邮箱项目。在某些租户中,攻击者发送 Microsoft Graph 接口请求,主要用于搜索感兴趣的内容。攻击者还枚举 Azure 中的订阅、资源组、权限、人工智能模型部署及服务配置,以绘制环境情况。
此外,攻击者还尝试验证被盗的 Azure 资源,包括受损的 Azure AI 服务;这些活动通过 Defender for Cloud 的人工智能威胁防护被识别。观察结果表明,攻击者可能试图滥用其中部分人工智能资源,以支持更广泛的攻击活动。
图一:凭据滥用攻击链中观察到的战术、技术与流程。云接口调整体现自适应行为
在这次攻击中,来自 199.19.77[.]84、针对受害者 Azure Resource Manager 实例的操作,还表现出符合自适应排障的序列:云接口请求失败后,随后调整请求方法或接口版本,并获得成功响应:
- 一批尝试枚举多个 Azure Key Vault 资源秘密信息元数据的管理接口请求,返回了请求错误。这些请求对控制平面接口使用了密钥保管库数据平面的版本。首次失败约二十八秒后,工具以 2023-07-01 版本对相同保管库资源路径重新发起批量请求,返回成功。
- 一个枚举 Azure SQL 服务器防火墙规则的读取请求,因指定过时版本而返回请求错误。约六十秒后,同一读取请求改用受支持版本并成功返回,地址只改变了 api-version 参数。
- 一个发送至 Application Insights 查询端点的提交请求,因为指定过时版本而返回请求错误。约八十秒后,对相同端点的另一次提交使用受支持版本,并成功返回。
OAuth 应用滥用
在多个案例中,微软观察到相同的智能体工具随后取得目标组织中单租户 OAuth 应用的令牌,再利用失陷应用枚举组织内其他云资源。在某些案例中,智能体从组织的 Azure Key Vault 窃取秘密信息。认证成功后,它们也会搜索 Azure DevOps 中的秘密信息。在这些秘密信息被撤销或轮换前,攻击者可借此维持访问、攻陷更多身份或劫持资源。在一个已观察案例中,从在 GitHub 搜索客户端密钥,到窃取 Azure Key Vault 数据,人工智能体仅用了五分钟。
智能体还利用失陷的 OAuth 应用调用 Run Command,在 Azure 虚拟机中运行脚本。掌握这项功能后,攻击者能够访问未受保护的凭据及其他存储数据,攻陷相关工作负载身份,或运行用于持久化和横向移动的代码。
在此过程中,人工智能体反复表现出对人工智能服务访问凭据的关注,例如主要服务商的接口密钥,以及可以访问 Foundry Tools(此前名为 Azure Cognitive Services)的 OAuth 应用。多份公开报告已记录攻击者使用智能体工具窃取人工智能服务凭据的行为,有时目的是运行同一套智能体工作流。
缓解应用凭据滥用
微软建议采用以下缓解措施,以遏制、检测并调查这一威胁。
遏制
- 在针对工作负载身份、直接分配给服务主体的条件访问策略中,把 199.19.77[.]84/32 作为命名位置阻止;同时配置用户范围的阻止策略,以覆盖被重放的会话。工作负载身份策略需要 Workload ID Premium 许可证,并且只覆盖本租户注册的单租户应用。应阻止这个精确地址,而不是整个自治系统。
- 对受影响用户,撤销 Entra 会话、Azure DevOps 个人访问令牌及安全外壳协议密钥。
- 对受影响应用,移除全部客户端密钥、证书和联合凭据,包括攻击者添加的内容;必要时禁用服务主体。已经签发的令牌在到期前仍然有效。
- 轮换受影响应用能够读取的所有密钥保管库内容,以及已访问文档中发现的凭据。
- 托管服务提供商应检查合作伙伴中心访问、细粒度委派管理权限关系和客户租户,并按协议通知受影响客户。
检测与威胁狩猎
- 检查 Entra 服务主体和非交互式登录日志中与 199.19.77[.]84、199.19.77[.]18 有关的记录,包括失败尝试。错误 AADSTS7000215 表示密钥无效,AADSTS7000222 表示密钥到期,这说明有人持有应用凭据;失败后紧接着成功的情况应紧急处理。
- 检查 Azure 活动、密钥保管库与存储诊断、Entra 审计、Azure DevOps 审计和 Microsoft 365 统一审计日志中的相关地址,包括秘密信息读取、对象及文件下载,以及应用、权限或流水线修改。
- 在 Azure DevOps 审计中,检查个人访问令牌创建和首次使用、联合服务连接、流水线运行与编辑,以及陌生的用户代理。审计关闭时应启用。
- 除地址外也应关注行为:同一地址认证三个或更多服务主体、成功失败交杂,或同一应用在短时间内向资源管理、密钥保管库、存储及 Graph 请求令牌。应检索日志保留期允许的尽可能早的记录。
抵御智能体人工智能攻击
攻击者能够、也确实会更换所用智能体渗透测试工具留下的源地址、用户代理字符串及其他指纹。这可能使防守方难以及早识别并阻止恶意网络流量。
多种行为信号可帮助组织判断是否正遭到使用智能体人工智能的攻击者针对。框架扫描目标时,会在短时间内发送多种请求,以机器速度重试同一技术的变体,或进入后续阶段。它们使用现有渗透测试工具。例如,ARTEX 默认使用 Nmap、curl、wget、Python 网络客户端、Norma SDK WebFetch,以及通过 Playwright 驱动的无头 Chromium 等。这些工具可能产生带有特征的流量,例如默认用户代理字符串。仅拦截这些特征不能阻止会迅速更改它们的人工智能体,但识别这些信号能够提醒防守方关注相关活动。
防御性蜜罐、诱饵、延缓陷阱和虚假成功结果,可以将自主人工智能攻击引离真实目标。蜜罐以及 Microsoft Sentinel Deception 等诱饵入口,为智能体提供有吸引力却没有价值的目标。延缓陷阱消耗其时间和预算;虚假成功结果则提供看似可信的目标已完成证据,可能令智能体在错误认定成功后停止。微软测试中,这些措施减少了抵达真实资产的攻击流量,并产生可用于归因的高置信度信号。
微软建议采取以下措施,以降低这一威胁的影响。
- 保护并持续评估应用凭据和秘密信息。避免将服务主体凭据、存储密钥、连接字符串等放入源代码、配置文件、公开仓库、问题单或其他可能意外泄露的位置。可考虑使用 GitHub Advanced Security 或其他 OWASP 源代码分析工具寻找代码中的凭据。
- 立即轮换失陷或暴露的凭据,并建立凭据生命周期实践。即使原始位置随后被编辑或删除,也应将公开过的凭据视为失陷。删除内容不会使凭据失效,也无法消除编辑历史、缓存、归档、日志或其他系统保留的副本。应立即撤销或轮换凭据,并调查历史使用情况。在支持的场景中,优先采用降低对长期凭据依赖的机制。更多信息可参阅使用 Defender for Cloud 保护秘密信息。
- 为关键 Azure 工作负载启用合适的 Microsoft Defender for Cloud 计划。根据环境中的资源,考虑启用针对资源管理器、存储、密钥保管库、应用服务和数据库的防护。详情见 Microsoft Defender for Cloud 概览。
- 对服务主体及其他工作负载身份实行最小权限。检查分配给服务主体的 Azure 基于角色的访问控制权限,仅保留应用所需资源和操作的权限。详情见 Azure 基于角色的访问控制最佳实践。
- 把备份和恢复基础设施保护纳入韧性建设。限制对备份、恢复资源的访问,并密切监控试图修改或移除其保护控制的行为。详情见 Azure Backup 安全最佳实践。
强化 OAuth 应用以抵御入侵,需要管理组织内应用的权限并保护应用秘密信息。评估环境中的应用时,应对新建应用立即实施安全策略,再从最近的既有应用开始,逐步处理存量。
- 识别并编目云环境中运行的应用。Defender for Cloud Apps 的云应用目录页面可协助完成。
- 使用 Microsoft Defender for Cloud Apps 的云发现工具识别未受管理的应用,并优先迁移和集成使用频率最高的应用。
- 使用针对工作负载身份的条件访问策略,并考虑通过工作负载身份风险保护增强身份信号。
- 设置权限限制,限定谁可在租户中创建应用。可以将“用户可注册应用”设为“否”,并把应用程序开发者角色限制给特权用户。检查按任务划分的最小权限角色列表,帮助界定环境中的角色访问控制范围。
- 将企业应用与 Microsoft Entra ID 集成。
微软检测能力
Microsoft Defender 与 Microsoft Sentinel 客户可以参考下列适用检测项。Microsoft Defender 协调终端、身份、邮件及应用之间的检测、预防、调查和响应,为本文讨论的攻击提供整合防护。
| 战术 | 观察到的活动 | Microsoft Defender 与 Sentinel 覆盖情况 |
| 初始访问 | 多个身份保护警报识别到来自匿名或高风险基础设施的认证尝试。这种模式可能意味着通过代理、虚拟专用网络或此前报告过的恶意网络来源尝试访问。 | Microsoft Entra ID Protection 匿名网络地址 |
| 初始访问 | 攻击分析检测发现了符合失陷特征的 OAuth 应用活动。评估应用身份,而不只是用户身份是否遭到滥用时,这类检测很有帮助。 | Microsoft Defender XDR 通过攻击活动分析识别出可能失陷的 OAuth 应用 |
| 初始访问、发现 | 微软威胁情报研究标记了与 ARTEX 使用有关、尚未归因的网络指标,并在多个警报中呈现。疑似使用 ARTEX 的活动可能超出本文讨论的公开仓库扫描范围。 | Microsoft Sentinel 源地址的异常拒绝率 异常端口与协议组合 检测到入站网络攻击 格式异常的用户代理 针对 Azure AD 应用的密码喷洒攻击 Microsoft Defender XDR 密码喷洒后账户失陷 异常 OAuth 设备代码认证活动 单一地址发生多个服务主体登录 来自微软威胁情报地址的 Graph 接口活动 Microsoft Defender for Cloud Apps 来自可疑用户代理的活动 多次登录失败 用户多次登录应用失败 来自不常访问的网络服务商的 OAuth 应用活动 可疑 OAuth 应用注册 Microsoft Defender for Cloud 密钥保管库异常拒绝访问:用户或应用访问大量被拒绝的保管库 从异常位置访问敏感对象容器 来自可疑地址的 Azure Resource Manager 操作 Microsoft Entra ID Protection 非典型旅行、恶意网络地址、密码喷洒 已确认的攻击者地址 |
| 凭据访问 | 身份保护检测观察到密码喷洒行为,表明来自共同来源模式、跨账户或租户的反复认证尝试。 | Microsoft Entra ID Protection 密码喷洒 Microsoft Defender for Identity 添加凭据后出现可疑服务主体登录 |
| 凭据访问 | 访问 Azure Key Vault | Microsoft Defender for Cloud(Defender for Key Vault) 密钥保管库中的异常操作模式 密钥保管库中的大量操作 异常应用访问密钥保管库 密钥保管库中可疑的秘密信息枚举与查询 来自可疑地址的异常访问(非微软或外部地址) |
| 命令与控制 | 观察到来自本次行动基础设施的可疑 Microsoft Graph 接口使用,相关请求可以支持发现、收集及后续云操作。 | Microsoft Defender for Identity 观察到可疑 Entra Graph 接口查询 |
高级威胁狩猎查询
以下威胁狩猎查询与十月二十八日的 Entra ID 服务主体登录活动有关。
查找来自可疑地址的成功及失败应用登录
let startTime = datetime(2026-10-28T00:00:00Z);
let endTime = now();
EntraIdSpnSignInEvents
| where Timestamp between (startTime .. endTime)
| where IPAddress in ("199.19.77.84")
| project Timestamp, TenantId, Application, ApplicationId, ServicePrincipalName, ServicePrincipalId, ResourceDisplayName, ResourceId, ResourceTenantId, IPAddress, ErrorCode, UserAgent, CorrelationId, RequestId
| order by Timestamp asc
查找来自这两个地址的 Microsoft Graph 接口请求,包括搜索与响应状态
let startTime = datetime(2026-10-28T00:00:00Z);
let endTime = now();
GraphAPIAuditEvents
| where Timestamp between (startTime .. endTime)
| where IpAddress in ("199.19.77.84")
| project Timestamp, TenantId, ApplicationId, ServicePrincipalId, AccountObjectId, IpAddress,
RequestMethod, RequestUri, ResponseStatusCode, ResponseSize, Scopes, EntityType,
TargetWorkload, UniqueTokenIdentifier, ClientRequestId, OperationId, RequestId
| order by Timestamp asc
查找来自可疑地址的 Microsoft 365 与 Azure 云活动详情
let startTime = datetime(2026-10-28T00:00:00Z);
let endTime = now();
CloudAppEvents
| where Timestamp between (startTime .. endTime)
| where IPAddress in ("199.19.77.84")
| project Timestamp, Application, CloudAppId = ApplicationId, ActionType, ActivityType,
AccountType, AccountDisplayName, AccountId, AccountObjectId, IPAddress, UserAgent,
ObjectName, ObjectType, ObjectId, ActivityObjects, ReportId, RawEventData
| order by Timestamp asc
使用 CloudAuditEvents 表识别可疑控制平面操作
CloudAuditEvents
| where IPAddress has_any ('199.19.77.84','65.87.223.26')
使用 CloudStorageEvents 表识别可能从存储账户窃取数据的活动
CloudStorageAggregatedEvents
| where IPAddress in ('199.19.77.84','65.87.223.26')
| where SuccessfulOperationsCount > 0
Microsoft Security Copilot
Microsoft Security Copilot 已嵌入 Microsoft Defender,为安全团队提供人工智能能力,可总结事件、分析文件及脚本、概述身份、使用引导式响应,以及生成设备摘要、威胁狩猎查询和事件报告。
客户也可以部署人工智能体,包括以下 Microsoft Security Copilot 智能体,高效执行安全任务:
Security Copilot 还提供独立体验,客户可执行事件调查、用户分析和漏洞影响评估等特定安全任务。此外,它还提供开发者场景,支持客户构建、测试、发布及集成人工智能体和插件,以满足独特的安全需求。
威胁情报报告
Microsoft Defender XDR 客户可在 Defender 门户中使用威胁分析报告,取得本文所述活动和技术的最新信息;需要至少一种 Defender XDR 产品的许可证。这些报告提供情报、防护信息和建议行动,帮助预防、缓解或响应客户环境中发现的相关威胁。
Microsoft Security Copilot 客户还可以使用 Microsoft Defender Threat Intelligence 中的 Security Copilot 集成功能,通过独立门户或 Defender 门户中的嵌入式体验,获取有关这一威胁的更多信息。
了解更多
要查看微软威胁情报社区的最新安全研究,请访问微软威胁情报博客。
要收到新文章通知并参与社交媒体讨论,可关注我们的 LinkedIn、X(原 Twitter)和 Bluesky。
要听取微软威胁情报社区对不断演变的威胁形势的故事和见解,可收听微软威胁情报播客。
来源:Microsoft