SniperDz 钓鱼即服务平台攻击链路与防御技术研究

简介: 本文深度剖析老牌PhaaS平台SniperDz(2014年运营至今),揭示其“社交诱饵—正规平台中转—浏览器劫持—多元变现”四阶攻击链,涵盖多层跳转、推送通知滥用、历史篡改等关键技术,并提出基于VAPID指纹、跳转链路与恶意脚本的三套检测代码及五维防御体系。(239字)

摘要

钓鱼即服务(PhaaS)降低了网络诈骗的技术门槛,催生了规模化、产业化的网络钓鱼生态。本文以 Group-IB 2026 年披露的 SniperDz 平台为研究对象,系统性剖析该 PhaaS 平台的运营模式、模板体系、多层跳转攻击链路、浏览器劫持技术及流量变现机制。该平台自 2014 年上线,配备 80 余款仿冒全球知名品牌的钓鱼模板,依托 Linktree、Linkbio 等正规聚合链接服务实现流量伪装,结合页面隐身、浏览器历史篡改、标签劫持、推送通知劫持等技术绕过传统安全检测体系,并根据受害者地域、设备、运营商动态匹配高额收费短信、付费电话、投资诈骗等变现渠道。本文梳理 SniperDz 关联的 900 余个恶意域名、IP 地址等基础设施特征,分析现有网络安全防护体系针对此类复合型诈骗攻击的短板,结合攻击技术特征编写对应检测代码,实现恶意跳转链路、异常浏览器脚本、违规推送通知的自动化识别。研究结合平台运营特征与攻击手法,从技术检测、权限管控、流量治理、用户安全教育、跨境协同治理五个维度构建全流程防御体系。反网络钓鱼技术专家芦笛指出,以 SniperDz 为代表的成熟 PhaaS 生态已完成从单一凭证窃取向多元流量变现的转型,传统基于恶意域名、静态页面特征的防御手段有效性持续下降。本研究可为网络安全运维人员、应急响应团队、监管机构识别、溯源、处置同类 PhaaS 攻击提供详实的数据参考与技术实践方案。

关键词:钓鱼即服务;SniperDz;浏览器劫持;推送通知滥用;多层跳转;网络诈骗防御

image.png 1 引言

网络钓鱼是当前全球传播范围最广、产业化程度最高的网络威胁之一,而钓鱼即服务(PhaaS)模式的出现,彻底打破了网络攻击的技术壁垒。攻击者无需掌握网站开发、脚本编写、流量运营等专业技能,仅需借助标准化平台提供的模板、工具与基础设施,即可快速搭建钓鱼活动并实现盈利,这也让网络诈骗呈现出低门槛、规模化、复杂化、多元化变现的发展趋势。

Group-IB 在针对中东和北非地区网络威胁开展专项调查过程中,发现大量仿冒政客、公众人物、通信运营商的社交媒体诈骗账号。此类账号以免费流量、政府补贴、现金补偿等福利为诱饵,引导用户点击链接,最终指向统一的后台运营体系。经过流量溯源、样本分析与基础设施关联研判,研究人员定位到支撑该系列诈骗活动的核心平台 ——SniperDz。该平台是一款综合性 PhaaS 与推送通知即服务(PNaaS)一体化生态系统,自 2014 年首次被观测到活跃,期间先后使用 JokerDz、StormDz、SpamDz 等多个别名,长期活跃于全球网络黑产领域。

与传统单一窃取账号密码的钓鱼平台不同,SniperDz 构建了完整的 “引流 - 伪装 - 劫持 - 变现” 闭环生态。平台内置多语种钓鱼模板,覆盖金融、社交、流媒体、游戏等多个高价值行业;在传播环节滥用主流链接聚合平台实现多层跳转,规避社交媒体与防火墙的基础检测;在交互环节运用页面隐身技术、浏览器历史篡改、标签劫持、推送通知劫持等多种浏览器操控手段,强制滞留用户流量;在变现环节基于用户画像动态分发不同诈骗模式,包括高额收费短信订阅、付费电话、虚假投资、客户信息倒卖等。截至目前,该平台关联的可疑域名数量已超过 900 个,依托统一托管服务商搭建分布式基础设施,攻击辐射范围覆盖全球多个国家和地区。

当前国内及全球多数安全防护方案,主要针对传统直连式钓鱼链接、静态恶意页面开展检测,对于多层跳转、依托正规平台中转、滥用浏览器原生功能的复合型诈骗攻击识别能力不足。同时,网络安全研究领域针对 SniperDz 这类老牌综合性 PhaaS 平台的全链路拆解、技术特征提取、自动化检测方案的落地研究相对有限。基于这一现实背景,本文以 Group-IB 公开的一手监测数据与样本信息为基础,逐层拆解 SniperDz 平台的架构、攻击流程、核心技术、变现模式与基础设施特征,编写适配实战场景的检测代码,客观分析防御难点,并搭建分层防御体系。全文研究范围聚焦 SniperDz 生态的攻击技术与对抗策略,不拓展至其他无关 PhaaS 平台,保证论据闭环、主题聚焦,为应对同类产业化钓鱼攻击提供实践支撑。

2 SniperDz 平台整体概况与基础特征

2.1 平台发展历程与基础属性

SniperDz 是一款运营周期长达十余年的老牌黑产服务平台,首次活跃记录可追溯至 2014 年 11 月,在长期运营过程中不断迭代功能、拓展业务场景、更换对外名称以规避溯源打击,先后使用 JokerDz、StormDz、SpamDz 等多个别名。该平台核心定位为附属联盟式 PhaaS+PNaaS 综合服务生态,面向全球低技术门槛黑产从业者提供一站式诈骗解决方案,使用者无需具备网页开发、脚本编写、网络运维等专业能力,依托平台现成工具即可批量开展诈骗活动。

从技术能力与工具集来看,SniperDz 团队掌握完整的前端脚本开发能力,擅长制作钓鱼页面、编写点击劫持、浏览器历史篡改、标签劫持等恶意 JavaScript 脚本;同时精通流量伪装、反爬虫、域名伪装、免费托管平台利用等规避检测技术,还深度布局手机计费、高额短信订阅等电信诈骗业务,形成了技术、流量、变现三位一体的黑产体系。平台目标覆盖全球范围,重点深耕中东和北非区域,结合当地语言、民俗、消费习惯定制诈骗内容,本地化运营特征十分显著。

从盈利动机分析,该平台所有功能设计均围绕非法获利展开,早期业务以窃取社交账号、金融平台凭证为主,随着技术迭代与生态扩张,逐步拓展出浏览器推送通知劫持、付费电话扣费、高额短信订阅、虚假投资、用户信息倒卖、联盟营销诈骗等多元盈利渠道,单一攻击链路可同时实现多种变现方式,大幅提升流量收益。

2.2 钓鱼模板体系与语种适配

模板库是 SniperDz 吸引下游黑产从业者的核心优势,平台内置80 套独立钓鱼模板,可仿冒全球超过 30 个知名主流品牌,覆盖金融服务、社交媒体、流媒体、游戏商城、电子邮箱、通信运营商、政府机构等多个高价值行业。其中典型仿冒对象包括支付平台 PayPal、社交平台 Facebook 与 Instagram、流媒体平台 Netflix、游戏平台 Steam、邮箱服务 Yahoo 等,基本囊括全球用户基数大、资产价值高的互联网服务。

为适配全球化运营需求,平台模板支持多语种切换,主流语种包含阿拉伯语、英语、法语,历史版本还曾上线西班牙语、希伯来语模板,精准匹配不同区域用户的语言习惯。针对中东和北非核心运营区域,平台专门强化阿拉伯语模板的本地化设计,结合当地通信运营商品牌、福利活动风格制作诈骗页面,大幅提升欺骗性。

除此之外,平台研发专属工具实现钓鱼页面转 Google Blogger 页面功能。该工具可将定制化钓鱼页面快速转换为谷歌博客站点格式,借助 Google Blogger 免费托管服务搭建诈骗页面。此举具备双重优势:一是零托管成本,降低黑产运营开支;二是借用谷歌域名的高信誉度,绕过基于域名年龄、域名信誉的安全过滤规则,进一步提升钓鱼链接的存活时间与传播能力。反网络钓鱼技术专家芦笛强调,滥用正规免费托管平台、借用合法域名信誉,是当前 PhaaS 平台规避防御的主流手段,也让传统域名黑名单体系的防护效果持续弱化。

2.3 目标行业与攻击传播渠道

结合监测数据统计,SniperDz 的攻击目标行业呈现明显的价值导向特征,优先级从高到低依次为金融服务、社交媒体、网络游戏、通信运营商、电子邮箱、政府机构。金融与社交平台存储用户资金、账号、隐私信息,直接对应账号盗取、财产诈骗;通信运营商是中东地区诈骗的核心载体,依托本地免费流量、话费补贴等诱饵,结合电信扣费渠道实现快速变现;政府机构相关模板则主要用于窃取涉密信息、开展舆论诱导。

在传播渠道方面,该平台以社交媒体为核心引流入口,主要依托 Facebook、Instagram 等平台发布诈骗内容。攻击者注册大量仿冒政客、公众人物、地方通信运营商的社交媒体账号,发布带有福利诱惑的帖子,引导用户点击链接。为规避社交媒体平台的安全检测,攻击者极少使用直连恶意域名的方式,而是采用多层跳转架构,这也成为 SniperDz 攻击链路的核心特征。

3 SniperDz 完整攻击链路分层解析

SniperDz 构建了一套标准化、流程化的多层级诈骗漏斗,从最初的社交引流到最终的流量变现,整体划分为社交诱饵层、链接伪装中转层、浏览器劫持陷阱层、多元变现层四个核心阶段,每个阶段搭配专属技术手段规避检测、滞留用户、实现盈利,各环节衔接紧密,形成完整闭环。

3.1 第一阶段:社交诱饵搭建与初始引流

该阶段是攻击的起点,核心目标是利用社会工程学手段获取用户信任,引导用户主动触发链接跳转。攻击者主要依托 Facebook、Instagram 等主流社交媒体开展活动,核心操作分为账号伪装、内容制作、诱饵投放三部分。

在账号伪装环节,攻击者批量注册社交媒体账号,头像、昵称、简介全面仿冒当地知名政客、公众人物、区域通信运营商官方账号,部分账号还会伪造平台认证标识,进一步提升可信度。在内容制作环节,结合目标区域用户需求设计诱饵,中东和北非地区以免费移动流量、大额话费补贴、政府现金补偿、限时福利礼包为主,文案使用本地阿拉伯语编写,排版、风格完全模仿正规运营商宣传内容,贴合当地用户认知。

在诱饵投放环节,诈骗帖子公开发布在社交账号主页、社群、推荐信息流中,文案附带行动指令,诱导用户 “点击链接领取福利”“输入手机号完成登记”。从表面来看,此类帖子与正常商业推广内容无明显差异,普通用户难以分辨真伪。该阶段不直接放置恶意链接,为后续多层中转埋下伏笔。

3.2 第二阶段:正规平台中转与流量伪装

为绕过社交媒体平台的恶意链接检测机制,SniperDz 全面放弃直连恶意域名的模式,采用可信链接聚合平台作为中转节点,这也是整个攻击链路中最关键的伪装环节。攻击者主要滥用 Linktree、Linkbio 等全球知名链接聚合服务,这类平台拥有极高的域名信誉,主流安全设备、社交媒体平台通常不会对其进行拦截。

具体流程为:社交媒体帖子中放置指向 Linktree、Linkbio 旗下域名(例如 fanlnk.to)的链接,用户点击后首先跳转至链接聚合平台的伪装落地页。该落地页沿用此前的福利宣传主题,页面内设置多个功能按钮,表面上区分不同福利类型,但后台代码显示,页面内所有按钮均指向同一个攻击者控制的追踪域名。无论用户点击任意按钮,流量都会统一被导向 SniperDz 的核心恶意基础设施。

多层中转架构具备极强的对抗能力:第一层社交媒体平台链接指向高信誉聚合域名,规避初始拦截;第二层聚合平台页面作为过渡,模糊流量去向;第三层才真正接入恶意站点。多层跳转拉长了流量路径,增加了安全设备全链路检测的难度,同时正规平台的域名信誉能够掩护后端恶意流量。同时,该阶段站点还集成隐身(Cloaking)技术,具备访问者识别能力:当检测到安全研究员、网络爬虫、自动化扫描工具访问时,页面会自动切换为正常错误页面,隐藏恶意内容;仅对普通真实用户展示诈骗页面,从源头规避样本抓取与特征分析。

3.3 第三阶段:浏览器劫持与用户滞留陷阱

流量进入攻击者核心基础设施后,便进入陷阱阶段。该阶段综合运用推送通知劫持、浏览器历史篡改、标签劫持三大浏览器操控技术,核心目标是长期控制用户浏览器、阻止用户退出诈骗链路、维持流量价值,也是 SniperDz 技术复杂度最高的环节。

3.3.1 浏览器推送通知劫持

这是该平台实现长期持续引流的核心技术。用户跳转至恶意页面后,页面展示加载动画与引导文字,提示用户 “点击允许以继续领取福利”“点击允许完成身份验证”,将浏览器推送通知请求伪装成福利领取的必要步骤。普通用户在福利诱惑下,往往会直接点击 “允许” 按钮。

页面后台脚本调用统一的 VAPID 公钥完成推送订阅注册,该公钥在 SniperDz 所有诈骗样本中重复出现,成为识别该生态的重要基础设施指纹。一旦用户授权,脚本会收集推送订阅令牌、用户语言、设备信息、追踪标识等数据,并回传至攻击者服务器。此后,即便用户关闭当前页面,攻击者仍可通过浏览器推送功能,持续向用户推送诈骗广告、钓鱼链接、各类欺诈内容,实现长期流量复用。

3.3.2 浏览器历史篡改(返回按钮陷阱)

为防止用户发现异常后退出页面,平台部署浏览器历史篡改代码。脚本会自动向用户的浏览器历史记录中批量插入 10 条以上虚假访问记录。当用户点击浏览器 “返回” 按钮试图退出时,并不会回到上一级正规页面,而是在虚假历史记录中循环跳转,陷入 “返回按钮监狱”,始终停留在攻击者控制的站点范围内,无法脱离诈骗生态。该技术针对普通用户的操作习惯设计,大幅提升用户滞留时长。

3.3.3 标签劫持(Tab-under)

该技术主要用于多标签浏览场景。当用户点击页面内链接新建浏览器标签时,脚本会触发延迟跳转逻辑:新标签打开目标页面的同时,原本的标签页会在后台静默跳转至其他恶意站点。这种方式能够在用户无感知的情况下,进一步扩大恶意流量规模,最大化流量变现收益。

三大技术组合使用,构建了立体化的用户滞留体系,短期限制用户退出页面,长期通过推送通知持续控制终端,让单次引流行为产生多次变现价值。

3.4 第四阶段:用户画像匹配与多元流量变现

完成浏览器权限劫持后,平台进入最终的变现环节。SniperDz 搭建了中心化流量分发引擎,具备用户画像识别与动态路由能力,服务器自动采集用户终端类型、所在地理位置、手机运营商等信息,根据不同画像将流量导向对应变现渠道,实现收益最大化。平台主要包含四类变现模式,覆盖即时扣费与长期信息窃取两大方向。

第一类是高额付费电话诈骗。系统识别用户手机运营商后,页面引导用户拨打指定号码 “兑换奖品”“验证资格”,该号码属于国际高额收费服务热线,通话费用会直接通过手机运营商结算,攻击者按照通话时长获取分成收益。

第二类是高额短信订阅诈骗。页面伪装成趣味答题、资格调查问卷,用户完成交互后,后台会在无明确告知的情况下,为用户开通自动续费的高额短信订阅服务,持续扣除手机话费,且订阅服务隐蔽性较强,普通用户难以发现与取消。

第三类是虚假投资诈骗。针对特定区域、特定设备的用户,流量会被导向仿冒财经媒体、虚拟货币交易、股票交易的虚假投资平台。页面诱导用户填写姓名、手机号、邮箱等个人信息,收集的敏感数据一方面用于后续精准诈骗,另一方面可批量出售给黑产下游,实现数据变现。

第四类是联盟营销诈骗与二次引流。部分流量会被导向各类灰色联盟广告、第三方诈骗站点,攻击者依靠流量分成获取收益。同时,结合此前劫持的浏览器推送权限,持续推送各类诈骗内容,形成循环引流。

整体来看,SniperDz 并非单一钓鱼站点,而是以流量为核心的综合型黑产交易平台,所有技术设计、链路搭建最终均服务于流量变现,产业化特征极为突出。

3.5 平台基础设施与关联资产

经过 Group-IB 溯源分析,SniperDz 生态拥有规模化的基础设施集群,核心托管服务商为 Horizon IQ,关联三台核心 IP 节点:65.60.9.236、108.178.23.118、184.154.10.254。这三组 IP 关联了超过 900 个可疑域名,其中典型代表性域名包括 win.feezossl.xyz、win.anababayala.com、aff.bnaosf1he.shop、offer.raviral.com等。

这些域名分工明确,分别承担流量跳转、页面托管、数据接收、推送服务等不同功能,域名体系庞大且更新频繁。同时,平台复用同一组 VAPID 公钥作为推送服务的统一标识,该指纹不受域名、IP 变更影响,是跨样本、跨活动关联 SniperDz 攻击的核心特征。基础设施的集中托管、大规模域名集群、固定技术指纹,也为安全团队开展溯源、批量处置提供了关键依据。

4 SniperDz 攻击核心技术特征与检测难点

4.1 核心技术特征汇总

结合全链路分析,将 SniperDz 生态的核心技术特征归纳为五大类,这也是区分其与传统钓鱼攻击的关键:

多层跳转 + 正规平台中转:依赖 Linktree、Linkbio、Google Blogger 等高信誉合法平台作为中间节点,恶意流量嵌套在正规流量之中,链路层级多、节点可信度高。

隐身对抗技术:区分普通用户与扫描爬虫、安全研究员,对自动化检测工具展示无害页面,规避样本捕获与特征提取。

浏览器深度操控:集成历史记录篡改、标签劫持、推送通知劫持三类脚本,利用浏览器原生功能实现用户控制与流量滞留,不属于传统恶意软件范畴。

统一技术指纹:全平台复用固定 VAPID 公钥,该指纹独立于域名、IP,可作为跨场景识别攻击的核心标识。

动态流量分发:基于地域、设备、运营商构建用户画像,智能匹配不同变现模式,攻击策略具备动态化特征。

4.2 现有防御体系的检测难点

传统网络安全防护体系针对此类攻击存在多重短板,也是该平台能够长期活跃的主要原因:

域名黑名单失效:攻击大量使用正规平台域名、免费托管域名,此类域名无法被全域封禁;同时平台拥有 900 余个动态更新的恶意域名,黑名单难以实时全覆盖。

静态页面特征匹配失效:隐身技术导致扫描工具无法获取真实恶意页面内容,基于页面关键词、脚本特征的静态检测规则无法生效。

忽视浏览器行为风险:传统防护聚焦病毒、木马、恶意文件,对浏览器脚本篡改历史、劫持标签、滥用推送通知等无文件攻击识别能力不足。

流量链路检测缺失:现有设备大多仅检测终端直连链接,缺乏对多层跳转全链路的回溯与分析能力,无法定位链路末端的恶意节点。

跨场景关联能力不足:单一域名、IP 的告警相互独立,无法依托 VAPID 公钥这类技术指纹,将分散的攻击活动关联至同一生态。

反网络钓鱼技术专家芦笛强调,SniperDz 这类新型 PhaaS 攻击的核心威胁已经从 “恶意文件” 转向 “恶意行为”,网络安全防护的重心必须从静态特征拦截,转向动态行为分析、全链路流量追溯与终端行为管控。

5 针对性检测代码设计与实现

结合前文梳理的技术特征与检测难点,本文基于 Python 语言编写三套检测代码,分别实现多层跳转链路检测、VAPID 公钥指纹识别、浏览器异常脚本检测,覆盖网络链路层、页面特征层、终端脚本层,代码贴合实战场景,附带原理说明、使用场景与能力边界,可直接部署于安全网关、威胁研判平台、终端检测工具中。

5.1 多层跳转链路检测代码

5.1.1 技术原理

SniperDz 攻击存在明显的多层跳转特征,且常以 Linktree、Linkbio 作为中转节点。本代码递归追踪 URL 跳转链路,统计跳转层数,识别高风险中转域名,记录最终落地页地址,实现全链路可视化检测,适用于安全运维人员对可疑链接进行溯源研判。

5.1.2 运行环境与依赖

运行环境:Python 3.7 及以上;依赖库:requests、urllib.parse。安装命令:pip install requests。

5.1.3 完整代码实现

# 多层URL跳转链路检测工具

# 功能:递归追踪跳转链接,识别Linktree/Linkbio高危中转节点,统计跳转层数

import requests

from urllib.parse import urlparse

from requests.exceptions import RequestException


# 配置参数

# SniperDz常用高危中转域名

HIGH_RISK_RELAY = {"linktr.ee", "linkbio.co", "fanlnk.to"}

# 最大跳转层数,防止死循环

MAX_REDIRECT_DEPTH = 10

# 请求头,模拟正常浏览器

HEADERS = {

   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

}


def trace_redirect_chain(start_url: str) -> dict:

   """追踪URL跳转链路,返回链路详情、层数、风险标记"""

   chain = []

   current_url = start_url

   depth = 0

   risk_flag = "正常"


   while depth < MAX_REDIRECT_DEPTH:

       parse_res = urlparse(current_url)

       domain = parse_res.netloc

       # 记录当前节点

       chain.append({

           "depth": depth + 1,

           "url": current_url,

           "domain": domain

       })

       # 检测是否为高危中转域名

       if domain in HIGH_RISK_RELAY:

           risk_flag = "高危(存在PhaaS中转节点)"


       try:

           # 关闭自动跳转,手动捕获3xx跳转状态码

           resp = requests.get(current_url, headers=HEADERS, allow_redirects=False, timeout=8)

           # 3xx状态码代表跳转

           if 300 <= resp.status_code < 310:

               next_url = resp.headers.get("Location")

               if not next_url:

                   break

               current_url = next_url

               depth += 1

           else:

               # 无跳转,链路结束

               break

       except RequestException:

           chain.append({"depth": depth + 1, "url": current_url, "domain": domain, "note": "访问失败"})

           break


   return {

       "start_url": start_url,

       "redirect_count": len(chain) - 1,

       "full_chain": chain,

       "risk_level": risk_flag,

       "final_url": chain[-1]["url"] if chain else ""

   }


def batch_check(url_list: list):

   """批量检测URL跳转链路"""

   print("===== 多层跳转链路检测结果 =====")

   for url in url_list:

       result = trace_redirect_chain(url)

       print(f"初始链接:{result['start_url']}")

       print(f"跳转层数:{result['redirect_count']} | 风险等级:{result['risk_level']}")

       print("完整链路:")

       for node in result["full_chain"]:

           print(f"  第{node['depth']}层:{node['url']}")

       print("-" * 80)


if __name__ == "__main__":

   # 测试用例:包含正常链接、含Linkbio中转的恶意链接

   test_urls = [

       "https://www.official-telecom.com/promotion",

       "https://fanlnk.to/relay123",

       "https://linktr.ee/telecom-offer"

   ]

   batch_check(test_urls)

5.1.4 代码说明与能力边界

本代码手动捕获 HTTP 3xx 跳转状态码,递归解析全链路节点,精准识别 SniperDz 常用的链接聚合平台。适用于威胁情报研判、邮件网关可疑链接筛查。能力边界:无法识别页面内 JS 实现的前端跳转,仅能检测 HTTP 协议层面的服务端跳转;需持续更新HIGH_RISK_RELAY域名列表,适配新的中转节点。

5.2 VAPID 公钥指纹检测代码

5.2.1 技术原理

固定 VAPID 公钥是 SniperDz 生态的核心指纹。本代码请求页面 HTML 内容,正则匹配页面中出现的 VAPID 公钥字符串,以此判断页面是否归属该诈骗生态,适用于恶意页面样本研判、内网站点巡检。

5.2.2 运行环境与依赖

Python 3.6 及以上,依赖requests、re库。安装命令:pip install requests。

5.2.3 完整代码实现

# VAPID公钥指纹检测工具

# 功能:检测页面中是否存在SniperDz专属VAPID公钥,识别关联攻击页面

import re

import requests

from requests.exceptions import RequestException


# SniperDz全样本复用的VAPID公钥

SNIPERDZ_VAPID_KEY = "BHR8bZ93X3YNBNQcN_dGRYtnWqdsJXR2bXqq3vhfBL1TpfZqrGKXYxATKGNHa25HyaghKK8ZiaFXbIgJqY2624A"

# 正则匹配VAPID密钥片段

vapid_pattern = re.compile(re.escape(SNIPERDZ_VAPID_KEY))

HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}


def check_vapid_fingerprint(url: str) -> dict:

   """检测页面VAPID指纹"""

   result = {

       "url": url,

       "access_status": "正常",

       "is_sniperdz": False,

       "detail": ""

   }

   if not url.startswith(("http://", "https://")):

       result["access_status"] = "协议非法"

       return result

   try:

       resp = requests.get(url, headers=HEADERS, timeout=8)

       html_content = resp.text

       # 匹配专属VAPID公钥

       if vapid_pattern.search(html_content):

           result["is_sniperdz"] = True

           result["detail"] = "页面包含SniperDz专属VAPID公钥,判定为关联诈骗页面"

       else:

           result["detail"] = "未匹配到SniperDz VAPID指纹"

   except RequestException as e:

       result["access_status"] = f"访问失败:{str(e)}"

   return result


def batch_scan(url_list: list):

   print("===== VAPID指纹批量检测结果 =====")

   for url in url_list:

       res = check_vapid_fingerprint(url)

       print(f"目标链接:{res['url']}")

       print(f"访问状态:{res['access_status']}")

       print(f"检测结果:{res['detail']}\n")


if __name__ == "__main__":

   test_urls = [

       "https://win.feezossl.xyz",

       "https://www.normal-page.com"

   ]

   batch_scan(test_urls)

5.2.4 代码说明与能力边界

该代码以固定 VAPID 公钥为核心特征,不受域名、IP 变更影响,是跨样本关联 SniperDz 攻击的有效手段。能力边界:若攻击者对密钥进行分段、编码混淆,会导致匹配失效;同时无法对抗隐身页面,被识别为爬虫时页面会返回正常内容,造成漏检。建议搭配多维度访问模拟工具使用。

5.3 浏览器异常脚本检测代码

5.3.1 技术原理

针对浏览器历史篡改、标签劫持、推送通知劫持三类恶意 JS 脚本,通过正则匹配脚本特征关键词,识别页面中的浏览器操控代码,适用于终端安全插件、页面实时检测场景。

5.3.2 运行环境与依赖

Python 3.6 及以上,依赖requests、re库。

5.3.3 完整代码实现

# 浏览器恶意脚本检测工具

# 功能:检测历史篡改、标签劫持、推送通知劫持类恶意JS代码

import re

import requests

from requests.exceptions import RequestException


class MaliciousScriptDetector:

   def __init__(self):

       # 匹配浏览器历史记录篡改脚本

       self.history_hijack = re.compile(r"history\.pushState|history\.replaceState", re.I)

       # 匹配标签劫持tab-under脚本

       self.tab_hijack = re.compile(r"window\.open|setTimeout.*location\.href", re.I)

       # 匹配浏览器推送通知脚本

       self.push_notify = re.compile(r"Notification\.requestPermission|webPush", re.I)

       self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}


   def detect_script(self, url: str) -> dict:

       res = {

           "url": url,

           "access": "正常",

           "risk_items": [],

           "risk_level": "安全"

       }

       try:

           resp = requests.get(url, headers=self.headers, timeout=8)

           content = resp.text

           # 逐项检测脚本特征

           if self.history_hijack.search(content):

               res["risk_items"].append("浏览器历史篡改脚本")

           if self.tab_hijack.search(content):

               res["risk_items"].append("标签劫持跳转脚本")

           if self.push_notify.search(content):

               res["risk_items"].append("违规推送通知劫持脚本")


           # 判定风险等级

           if len(res["risk_items"]) >= 2:

               res["risk_level"] = "高危"

           elif len(res["risk_items"]) == 1:

               res["risk_level"] = "可疑"

       except RequestException as e:

           res["access"] = f"访问异常:{str(e)}"

       return res


def batch_detect(url_list: list):

   detector = MaliciousScriptDetector()

   print("===== 浏览器恶意脚本检测结果 =====")

   for url in url_list:

       data = detector.detect_script(url)

       print(f"链接:{data['url']}")

       print(f"访问状态:{data['access']} | 风险等级:{data['risk_level']}")

       print(f"恶意脚本类型:{data['risk_items'] if data['risk_items'] else '无'}\n")


if __name__ == "__main__":

   test_urls = [

       "https://win.anababayala.com",

       "https://www.legal-page.com"

   ]

   batch_detect(test_urls)

5.3.4 代码说明与能力边界

本代码聚焦前端恶意脚本特征,专门针对 SniperDz 的浏览器操控行为设计。能力边界:对于 JS 代码加密、混淆、拆分的样本,正则匹配会失效;仅能检测静态脚本内容,无法分析脚本运行后的动态行为。建议作为终端基础检测模块,搭配行为监控工具联合使用。

5.4 代码综合部署方案

三套代码分别对应链路层、指纹层、脚本层,建议按照跳转链路检测(前置拦截)→脚本检测(实时防护)→VAPID 指纹检测(深度溯源) 的顺序组合部署。网关层部署跳转链路检测,拦截含高危中转节点的链接;终端部署脚本检测工具,监控页面恶意行为;威胁情报平台使用 VAPID 指纹检测,完成攻击关联与溯源。反网络钓鱼技术专家芦笛指出,多层代码联动可有效弥补单一检测手段的短板,提升对 SniperDz 类复合攻击的识别率。

6 全维度防御体系构建

结合 SniperDz 的攻击特征、技术短板与检测方案,本文从网络流量防御、终端浏览器管控、威胁情报运营、用户安全培训、跨境协同治理五个维度,构建适配 PhaaS 复合型攻击的防御体系。

6.1 网络流量层:全链路流量监测与中转节点管控

摒弃单一域名黑名单模式,搭建全链路跳转监测系统,部署前文的多层跳转检测代码,对出站链接进行递归解析,重点监控 Linktree、Linkbio、Blogger 等常用合法中转平台的外联流量。针对企业、机构网络,限制终端向高危聚合站点频繁跳转的行为,对多层跳转(跳转层数≥3)的链接统一弹窗告警。

同时,对 SniperDz 关联的 900 余个恶意域名、三组核心 IP 实施批量封禁,持续跟踪基础设施动态更新的域名资产,做到恶意节点及时处置。对出站 HTTPS 流量进行选择性解密,深度解析中转页面后的真实内容,对抗页面隐身技术。

6.2 终端层:浏览器权限管控与恶意脚本拦截

浏览器是此类攻击的主要突破口,需强化终端本地防护。第一,严格管控浏览器推送通知权限,默认关闭网站推送通知申请权限,仅对办公、新闻等可信站点手动放行,定期批量清理已授权的陌生站点。第二,在终端安全软件集成恶意脚本检测代码,拦截历史篡改、标签劫持、推送劫持类 JS 代码。第三,部署终端行为监控,当检测到浏览器历史记录被批量篡改、标签静默跳转时,立即阻断页面并告警。

针对办公终端,通过组策略统一配置浏览器安全规则,禁止自动弹出通知请求、禁止页面篡改浏览历史,从权限层面限制浏览器被恶意操控。

6.3 威胁情报层:基于技术指纹的关联研判与规则迭代

以 VAPID 公钥、恶意脚本特征、核心 IP 为核心指纹,搭建本地威胁情报库。将检测代码输出的告警数据汇总,自动关联同源攻击活动,挖掘新增恶意域名与节点。安排专职人员跟踪 PhaaS 平台动态,定期更新中转域名库、脚本特征库、IP 黑名单。

同时对接行业共享威胁情报,同步 SniperDz 家族最新资产,实现跨单位、跨区域的情报联动,避免单一机构情报滞后导致防护失效。

6.4 用户安全培训层:针对性社会工程学防御培训

SniperDz 依托福利诱饵实施社会工程攻击,用户防范意识是最后一道防线。培训内容需贴合攻击场景:一是提醒用户警惕社交媒体上 “免费流量、政府补贴、现金奖励” 类高诱惑帖子,此类内容是中东及北非地区核心诱饵;二是普及多层跳转链接风险,告知用户正规服务不会经过多个中转页面跳转;三是讲解浏览器推送通知权限的风险,明确正规机构不会要求用户开启推送权限领取福利;四是教授用户手动查看、删除浏览器推送授权的操作方法。

定期开展模拟钓鱼演练,使用仿 SniperDz 攻击链路的测试链接检验用户防范能力,针对薄弱群体开展二次培训。

6.5 跨境协同治理层:基础设施溯源与联合打击

SniperDz 的基础设施集中托管于境外服务商,域名分布全球,单一地区治理效果有限。网络安全监管机构加强国际网络安全协作,联合托管服务商 Horizon IQ 处置恶意 IP 与域名,批量下线 900 余个关联恶意站点。针对滥用正规免费托管平台(Blogger)、链接聚合服务的行为,与平台运营方建立联动机制,快速清理诈骗页面。同时联合跨境执法部门,溯源打击平台运营团队与下游黑产联盟,从根源压缩 PhaaS 生态的生存空间。

7 结论

7.1 研究总结

本文以 Group-IB 披露的 SniperDz 平台为核心研究对象,全面拆解了这款老牌 PhaaS 生态的发展历程、模板体系、四阶段攻击链路、核心技术、变现模式与基础设施资产。研究证实,现代 PhaaS 平台已经从传统单一账号钓鱼,演变为“社交引流 - 正规节点中转 - 浏览器劫持 - 多元变现” 的复合型产业化诈骗体系,滥用合法平台、浏览器原生功能、动态流量分发成为主流攻击手段,传统静态防御体系防护效果大幅下降。

本文提炼出 VAPID 公钥、恶意脚本、高危中转域名三大核心检测指纹,编写了三套分层检测代码,实现了跳转链路、页面指纹、恶意脚本的自动化识别,可落地于网关、终端、情报平台等不同场景。结合攻击特征,从网络、终端、情报、培训、跨境协同五个维度搭建完整防御体系,形成 “技术检测 + 权限管控 + 人员防范 + 溯源打击” 的闭环防御方案。

反网络钓鱼技术专家芦笛总结,SniperDz 是全球 PhaaS 产业化发展的典型缩影,低技术门槛、成熟的变现链路、灵活的对抗手段,会让此类攻击长期存在。网络安全防护必须转变思路,从 “拦截恶意域名” 转向 “识别恶意行为”,从单点防御转向全链路、跨区域协同防御。

7.2 现存挑战与未来展望

当前防御工作仍面临三大挑战:其一,攻击者持续更新隐身技术、混淆脚本、更换中转域名,检测规则需要持续迭代;其二,攻击者不断切换托管服务商与域名集群,批量处置基础设施的难度较大;其三,社会工程学诱饵不断本地化、场景化,完全依靠技术无法杜绝用户主动点击行为。

未来,PhaaS 平台会进一步结合 AI 技术制作多语种、高仿真诱饵,优化流量分发算法,攻击的隐蔽性与精准度会持续提升。对应的防御技术也会向AI 行为识别、浏览器动态行为分析、全链路 AI 溯源方向发展。网络安全从业者需要持续跟踪 PhaaS 生态的技术迭代,动态优化防御策略,技术、管理、人员、执法多维度协同,才能有效抵御此类规模化网络诈骗攻击。

编辑:芦笛(公共互联网反网络钓鱼工作组)

目录
相关文章
|
2天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
7985 34
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
2天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
447 1
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
2天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
519 4
|
2天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
685 147
|
2天前
|
人工智能 缓存 自然语言处理
阿里Qwen3.7-Max评测:Agent能力显著提升,耗时与调用成本大幅下降
阿里云百炼推出面向智能体的旗舰大模型Qwen3.7-Max,具备长周期自主执行能力,显著提升编程、办公自动化等复杂任务处理水平;支持MCP集成与多框架兼容,并以限时5折+100万Tokens免费试用大幅降低使用门槛,助力企业高效落地AI应用。在阿里云百炼平台快速体验:https://t.aliyun.com/U/fPVHqY
1907 10
|
2天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
1309 2
|
2天前
|
存储 安全 Java
AgentScope Java 2.0:打造分布式、企业级智能体底座
AgentScope 2.0 面向分布式部署、稳定运行、权限安全等企业级需求全面升级,打造支持多租户隔离与长期稳定运行的企业级智能体底座。
|
2天前
|
人工智能 弹性计算 运维
阿里云发布堡垒机智能运维Agent,运维交互进入自然语言新时代
支持自然语言运维,提升效率与安全双保障。
1178 1
|
2天前
|
人工智能 运维 API
2026年阿里云百炼通义千问Qwen3.7-plus深度介绍 功能特性、使用优势及618大促订阅方案指南
大模型技术的普及,让AI能力逐步融入个人办公、内容创作、代码编写、企业运营、教育培训等各类场景。不同定位的模型对应不同使用需求,旗舰级模型性能强劲但使用成本偏高,轻量化模型价格低廉却难以胜任复杂任务,而介于两者之间的中端主力模型,凭借均衡的能力、亲民的定价、广泛的场景适配性,成为绝大多数个人用户、小型团队、中小企业的首选。
610 1
|
2天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1340 4