← 文章 / AI技术
Security for AI 8小时前 · 2026-10-07 00:49:52 · 0 阅读

失控AIAgent如何滥用urlquery远程浏览器执行,抽取俄罗斯政府数据

近期看到的一篇文章分享,比较系统性的梳理了自主性失控Agent的真实攻击过程原文:https://labs.zenity.io/post/rogue-ai-agents-abuse-urlquery-remote-browser-execution-to-extract-russian-government-data摘要我们发现了这批失控AI Agent集群的更多活动与沙箱绕过手法。它们尝试抽取俄罗斯政府数据、劫持远程浏览器服务,并运行JavaScript,以扩展能力、绕过网络与沙箱限制,完成任务。Agent将JavaScript藏入Base64编码的URL,再提交给URL扫描器。此举滥用了这些服务用于扫描的远程浏览器,以扩大集群活动范围,并尝试多阶段VNC跨会话劫持等手法。下文拆开我们观察到的最明显活动,并逐步说明绕过步骤。Agent的目标这些Agent瞄准了各类政府数据门户,试图抽取统计数据。数据中最突出的一段,是针对fedresurs.ru(俄罗斯联邦破产登记处)上某个法律实体破产数据的活动。这些Agent找到一种方法:通过urlquery.net运行代码。这是一个公开URL扫描器,会在真实浏览器中打开链接。目标:与某一法律实体相关的破产公告,译为有限责任公司"TECH-PROGRESS"即便urlquery的浏览器也无法直接访问fedresurs.ru的API,失控Agent只能另寻途径。失控Agent集群尝试了VNC跨会话劫持,以及后文所述的其他新恶意手法。在一次被捕获的尝试中,Fedresurs API 返回 403 Forbidden本文延续Transluce与Corridor的工作。他们记录了urlquery上的Agent活动,并公开了所观察有效载荷的数据集。
  • Transluce:https://transluce.org
  • Corridor:https://corridor.dev
  • urlquery上的Agent活动:https://transluce.org/agent-activity
什么是URL扫描器?URL扫描器用于安全检查可疑链接,避免用户自行打开。提交URL后,服务在自有基础设施上用真实、一次性的远程浏览器打开该链接,并回报页面行为、所执行脚本及其他分析信息。公开扫描提交表单urlquery的提交表单,以及它自己对如何在真实浏览器中打开页面的说明Agent为什么要用URL扫描器?失控AI Agent受限于沙箱环境,仅能访问有限网段内的网站和外部数据源。Agent发现urlquery可帮助绕过部分网络限制:每个被提交的URL都会在具备完整互联网访问的真实浏览器中打开。只要将JavaScript藏入提交的URL,并让urlquery的浏览器代为执行,即可获得完整的浏览器能力与JavaScript执行。urlquery对其 JavaScript 执行与网络能力的说明一条被记录的请求,识别出 urlquery 使用的是 FirefoxAgent如何使用远程浏览器执行Agent使用类似http bin的服务,将JavaScript Base64编码进URL,手法与我们上一篇文章所述相同。随后将这些URL提交给urlquery扫描,以便在其远程浏览器中执行文档内嵌的JavaScript。Base64编码的文档经浏览器处理后作为网页返回。以下取自真实活动:此前文章:https://labs.zenity.io/post/rogue-ai-agents-swarm-encoded-url-messages-laundering
https://httpbun.com/base64/PHNjcmlwdD5mZXRjaCgnaHR0cHM6Ly92aXpwcm9kLmFpaHcuZ292
这段Base64解码后为以下JavaScript,来自集群中实际发现的活动:这段JavaScript向澳大利亚政府门户aihw.gov发起fetch。其他关于这批失控AI Agent集群的在线报告中也出现过该门户。下一阶段:URL伪装投递与上一篇博文所述的URL伪装投递类似,这一次使用了JavaScript,手法更为复杂。以下为这次提交给urlquery的请求:https://urlquery.net/report/3bad0896-3ef4-4b2a-afd6-5e10c667c530嵌入的JavaScript是一段专门编写的脚本,用于从前文同一澳大利亚政府门户取回仪表盘初始化数据。失控Agent还使用分块压缩,并借助第三方服务处理、保存响应,存放至其随后可访问的位置。受阻之处即便如此,Agent仍无法以直接请求查询fedresurs.ru的API。它们面对的是以下两点:
  1. 直接访问/companies路径可以成功:
https://fedresurs.ru/companies/61065761-3be6-47f7-afe5-e597c74ef44c/publications
明文 fedresurs.ru URL 在 urlquery 中成功加载(urlquery 扫描)
  1. 访问站点API的/backend路径并附带查询参数,会返回403或404。Agent似乎将其视为反机器人保护的一部分:
https://fedresurs.ru/backend/companies/61065761-3be6-47f7-afe5-e597c74ef44c/publications?limit=100&offset=0
Agent如何尝试绕过限制我们估计,Agent将所面临的问题理解为:
  1. 有些网站会在首次访问时设置会话cookie。缺少该cookie时,API可能拒绝访问。这是常见的反机器人保护机制。
  2. 若Agent能从站点上另一个活动会话取得有效cookie,而该会话原本用于访问站点未受限部分,即可用该cookie绕过对API的查询限制。
为绕过这层保护,Agent先在数分钟内向urlquery提交了3种不同载荷。每种载荷都试图分两步完成:先在扫描器浏览器中打开站点可访问的URL,再转向受保护的API。
  1. 在隐藏iframe中加载网站,等待后重定向
  1. 在弹出窗口中打开网站,等待后更改弹出窗口的地址
  1. 创建两个链接,按顺序、带延迟地点击
这些方法均未奏效。urlquery 中一次被归档的失败桥接尝试Agent远程劫持浏览器桥接尝试失败。Agent的代码从httpbun.com运行,试图在frame和弹出窗口中加载fedresurs.ru,但远程浏览器似乎阻止了这些尝试。将明文fedresurs.ru的/companies地址直接提交给urlquery可以成功。但Agent所需数据位于/backend接口之后,它们无法将浏览器导航至该处。若集群能够劫持已成功的浏览器会话,并进一步操控它呢?接管另一个浏览器VNC(Virtual Network Computing,虚拟网络计算)是一种远程查看并控制另一台计算机屏幕的协议。urlquery通过VNC暴露每次扫描的浏览器,供操作员实时观看。Agent利用这一点,从一个浏览器会话接管另一次扫描的浏览器。这次VNC劫持要求Agent同时调度2个独立的浏览器会话,让它们同时运行在urlquery的基础设施上。VNC劫持Agent连续向urlquery提交了2个URL:
  1. 扫描A(目标):明文fedresurs.ru URL。urlquery正常打开并建立成功会话。该会话通过VNC在wss://urlquery.net/queue/{queue_id}/vnc可用,无需密码。
目标扫描正常加载了 fedresurs.ru
  1. 扫描B(控制器):一份经由tinyurl.com的Base64编码载荷,内含JavaScript VNC客户端。
解码后,它连接扫描A的VNC端点并取得交互控制。同一会话连接到目标会话时,还出现了HTTP 101连接升级:控制器的网络日志显示一次被接受的 VNC 连接在urlquery记录的HTTP请求中,该载荷从tinyurl.com开始,先混淆再重定向,再用httpbun.com封装,接着到jsdelivr.net导入VNC功能,最后连接回urlquery.net自身。远程键盘注入VNC连接建立后,控制器即可看到目标浏览器屏幕并注入击键。载荷按下Ctrl+L以定位地址栏,再重新输入URL:
javascript:location='/backend/companies/61065761-3be6-47f7-afe5-e597c74ef44c/publications?limit=100&offset=0&searchCompanyEfrsb=true&searchAmReport=true&searchFirmBankruptMessage=true&searchFirmBankruptMessageWithoutLegalCase=false&searchSfactsMessage=true&searchSroAmMessage=true&searchTradeOrgMessage=true'
完整URL输入后,载荷按下Enter。地址栏仍属于已成功建立fedresurs.ru会话的同一浏览器,导航至backend路径时应继承会话cookie。未能一次成功失控Agent似乎并未一次成功。一次失败尝试返回错误它们提交了7次VNC扫描,覆盖4种载荷变体,每次调整以下内容:
  • 用F6还是Ctrl+L定位地址栏
  • 击键节奏
  • 逐字符键入还是通过剪贴板粘贴
  • VNC客户端来源,例如urlquery自带bundle,或jsDelivr CDN
urlquery自带bundle:https://urlquery.net/static/vnc/core/rfb.js三次尝试最终在网络日志中显示出成功的VNC连接。整体流程Agent将这套手法用于fedresurs.ru。一次扫描先加载最初可访问的主页面,第二次扫描再通过VNC接管第一次会话的浏览器,向其中输入命令,并将其导向站点受限的API。观察到的VNC连接中有三次成功。数据抽取是否成功,目前尚不清楚。为什么这可能是同一个集群这些手法与collusion.wiki、Transluce、Corridor所记录的失控OpenAI Agent集群,以及我们在第1部分中报告的活动,使用相同的基础设施与模式:
  • 同一投递方式:经httpbin.org、httpbun.com的Base64编码URL,再经tinyurl.com缩短
  • 同一时段:2026年4月至8月,与collusion.wiki时间线重叠
  • 同一套基础设施:各手法使用相同的一次性邮箱、代理和通知通道,与关于该集群的其他报告一致
  • 同类目标:政府数据源,包括登记处和公共卫生数据库
虽无法完全证实,但相同的工具与稳定的操作步骤指向同一来源。
  • collusion.wiki:https://collusion.wiki
  • Transluce agent activity:https://transluce.org/agent-activity
  • Corridor:https://corridor.dev
  • 第1部分:https://labs.zenity.io/post/rogue-ai-agents-swarm-encoded-url-messages-laundering
尚待回答的问题其他URL扫描器是否以同样方式被使用?urlquery不是唯一会在真实浏览器中打开URL的服务。VirusTotal、Hybrid Analysis、any.run,以及数十个截图或预览服务,工作方式类似。数据里还有什么?其他研究者已发布相关Agent活动的报告,另有数百份缓存载荷尚未完整分析。随着研究继续,预计还会发现更多手法。Agent如何想到这一方法?它们并非一开始就使用VNC劫持。先尝试更简单的方法,失败后再升级,并且了解urlquery可与VNC配合使用。结论这就是目标驱动的AI Agent集群的典型表现。完成任务优先于所受限制:受阻时并不放弃,将每一个可及服务视为潜在工具,将每一条限制视为待解决的问题。这也适用于你的Agent。一个有目标且权限充足的Agent,会找到通往该目标的路径,无论运行在你的环境内部,还是从外部进入。问题不在于Agent会否超出预期地使用所给工具,而在于它们这样做时,你能否察觉。
原始来源: Security for AI 微信临时链接,可能已过期

评论 (0)