shadowrocket节点链接
奇安信威胁情报中心在终端侧运营过程中发现了一个规模巨大并且能够劫持受害者 Google 搜索内容和劫持电商链接等恶意行为的境外黑客团伙,基于 PDNS 数据发现该团伙从 2021 年开始活跃,并且恶意域名在 OPENDNS 的 top 1m 列表中,全球受影响的终端至少百万级别。
攻击者绕过了 Google CSP 机制,当使用 Google 搜索时会向页面中注入 js,注入前截图如下:
Google 搜索页面加载了额外的 js,额外在顶部展示出攻击者推送的结果,除了控制搜索结果外,受害者访问任意页面时都会注入另一段 js,用来追踪受害者访问习惯和轨迹,当受害者访问电商类型的网站时恶意 js 会从jsv8/offer 获取到一个新的域名用来劫持当前页面中的跳转链接。
基于 VT 数据可以看到大量 URL,URL 的字段与上述拼接的字段一致,只是顺序有所不同,所以这些 URL 是恶意 js 拼接后的劫持链接,观察到被劫持的 URL 存在一些 web 登录页面。
目前劫持链接只有跳转功能,劫持逻辑由攻击者在云端控制,理论上可以定制化劫持特定的网站,甚至可以进行中间人劫持获取登录页面的账密。
如此大规模的受害程度,攻击路径可能不止一个,基于终端数据我们观察到该恶意插件隐藏在破解安装包中,如下:
攻击者将类似这种伪造的安装包上传到一些破解软件的下载站,等待受害者下载,受害者点击后会在 C:UsersPublicdata 下释放一系列恶意组件。
该组件负责整个恶意 web 插件的初始化,首先会判断相关组件是否存在来确定是否已初始化完成。
检测标志文件 Publicdataup1.dat 是否存在,如果存在则表示自身需要更新,退出循环,该组件的更新由 uptimecrx.exe 完成。
根据 manifest.json 中的规则,访问 Google 搜索时会加载该 js,可以看到返回的 js 已经出现在网页源码中。
该 js 为后台服务进程,在扩展被启动时运行,首先会注册一个安装事件监听器,当该扩展被首次安装时执行。
注册客户端 ID,向发送该事件的消息:sendApiRequest。该域名是 Google Analytics 的轻量级替代,攻击者注册了自己的 api key 用来统计受害者。
设置该扩展被卸载时接收消息的域名setUninstallURL。之后会设置一个定时器,每过一段时间进行规则更新。
注册选项卡更新事件,每当用户创建了新的浏览器选项卡时,将获取到的远程 js 代码加载到当前页面,如果当前页面 url 在 blacklist 中则不加载。
这些信息会被发送到 Google 的网络分析服务网站 ,攻击者在该网站注册了自己的 API,可能是用于统计受害者。
该 js 是从获取的远程 js 文件,会在用户打开新网页(新增选项卡)时加载,其恶意逻辑通过攻击者设置的几个限时 cookie 进行控制shadowrocket节点链接。
首先会对当前页面 url 进行严格过滤,对于大部分的色情网站、社交媒体、搜索引擎等会停止执行。
url 中如果存在以下字段也会停止执行,可以看出攻击者在避免高访问量的场景,可能是用于隐藏自身。
其中 Lda_aKUr6BGRn 是用于攻击者进行重定向的网址,当他为空时,会从获取一个新网址进行填充。
首先会创建一个点击事件监听器,当用户在该页面点击了带有指定标签的元素时,劫持用户跳转并将用户重定向到攻击者指定的链接。
创建一个新 iframe,将 src项设置为攻击者的链接,设置其样式并将其插入到当前页面内容中,最后设置 Fm_kZf8ZQvmX 为 1。
该 js 是从处获取的 js 代码,用于攻击者拦截相关 manifest.json 规则中的网页并将其注入。
其主要针对 Google 等搜索引擎,攻击者可以替换用户搜索页面的内容,首先会检测当前页面是否存在攻击者设置过的标签 mdorkirgneorpowtn。
同样的,检测页面是否包含另一些元素,并向发送元素对应数据,这些元素在正常的 Google 搜索页面上并不存在,是由攻击者进行设置的,对其进行检测用于去除重复执行。
攻击者会避免在一些搜索模式中执行该组件,如用户搜索图片和购物等,仅根据搜索内容区分并向发送不同类型的信息,然后终止执行。
其功能是在搜索页面的开头处插入攻击者替换的搜索结果,如下是受害者进行搜索后的效果,可以看到最开头的几个搜索结果被替换。
目前,基于奇安信威胁情报中心的威胁情报数据的全线产品,包括奇安信威胁情报平台(TIP)、天擎、天眼高级威胁检测系统、奇安信NGSOC、奇安信态势感知等,都已经支持对此类攻击的精确检测。