这个扩展是干什么的
银狐防护(SilverFox Guard)是一款本地优先的反钓鱼浏览器扩展,专门针对国内高发的「银狐(游蛇 / Silver Fox)」远控木马家族。它不靠云端扫描每个页面,而是在本地完成核心判定,天然保护你的浏览隐私。
为什么需要它?银狐是近两年针对国内用户最活跃的远控木马家族:攻击者伪造官网、在微信群/QQ 群投放伪装成「求职简历、违纪名单、工资表、会议纪要」的压缩包,或直接诱导用户从仿冒站点下载安装包;一旦运行,电脑即被远控,可被用于盗号、盗产、勒索、二次投毒。它最致命的特征,是伪装成"看起来完全正常"的网站与文件——这正是它在国内反复得手的原因。
银狐防护在两个入口同时设防:
当你打开网页时,扩展在本地用 29 维计分引擎逐条比对:域名结构是否模仿官方、品牌词是否仿冒(如把「官网」写成「官網」)、备案信息真伪、是否具备钓鱼投递特征、页面话术是否属于银狐社工剧本。判定全程在本机完成,不向服务器发任何页面内容。
只有当「发起下载的页面」本身被判定为危险且你尚未放行时,下载才会被挂起并取消——绝不全局误拦,也不会因为页面里恰好出现某个关键词就拦你正常下载。下载拦截还识别「跳转链污染」:从危险站跳转到其它页面发起的下载同样会被拦下。
一句话总结:扩展管"你在浏览器里看到和下载的银狐";本地的 29 维计分负责判定,云端只分发官方域名白名单(见 FAQ)。全部规则开源(MIT License),不收集浏览记录,不上传页面内容。
功能总览
扩展的能力不是"一个开关",而是从「识别 → 拦截 → 复核 → 学习」组成的完整闭环:
域名结构比对、品牌形近字/形近域仿冒(typo-squatting)、官方域名白名单交叉验证、备案真伪判断;命中后危险页面在浏览器内给出醒目入口。
危险页面发起的下载自动挂起取消;支持一键放行与按站点记忆;识别双后缀诱饵(.pdf.exe)、伪造图标等投递手法。被拦下载的载荷域名会自动进入本地下载黑名单(至多 500 条、90 天未再命中即自动过期),实现「跨站复用」:后续任何页面再指向同一载荷域名都会立刻加分甚至直接拦截,不用重新判一遍落地页。
设置页内可拖入文件/夹批量静态检测:银狐家族特征串、PE 结构启发式、魔数伪装、导入表敏感 API、zip 容器递归解包分析,全程本地、绝不运行样本。
Max 模式开启后,面对陌生/可疑目标可请求云端 AI 辅助分析:只发送本地提取的可疑特征摘要,不发页面原文,可随时关闭。本地学习词库在持续学习你认可的话术与用词,数据只存浏览器本地。
独立页面定制扩展外观(玻璃拟态/渐变/圆角/强调色),与系统深浅色同步,所改即所见。
配套的 Windows 独立程序(Preview)通过 Native Messaging 与本扩展打通:浏览器管"线上的银狐",程序管"本机的银狐",在扩展面板直接查看并清除系统级威胁(见第 4 节)。
扩展支持的文件作用域包含 exe / dll / scr / msi / zip / bat / cmd / ps1 / vbs / js / jse / hta / lnk 等 13 类可执行与脚本格式;检测特征与规则库全部开源,可审计、可复现。
快速上手
从本站「下载扩展 v1.6.2」按钮获取 zip 压缩包(或使用 Edge Add-ons 商店版本)。
浏览器地址栏打开 chrome://extensions(Edge 为 edge://extensions),右上角开启「开发者模式」,点击「加载已解压的扩展程序」,选择解压后的文件夹即可。
将银狐防护图钉到扩展栏,右下角弹窗可查看当前页判定、放行记录与入口。
需要系统级防线时,再从官网下载「主防程序(preview3)」安装包运行(管理员权限),程序会注册 Windows 服务、自动启动并静默驻留托盘,通过 Native Messaging 与扩展联动(详见第 4 节)。⚠️ 此软件不能代替正常杀软
主防程序(preview3)
主防程序(SilverFoxGuardSvc)是银狐防护的系统级防线:扩展在浏览器里"看",主防在你电脑上"拦+清+还原"。这是一款独立的 Windows 主防程序(后台服务 + 图形主界面),当前以 preview3 形态发布。preview2 阶段完成了从"定时巡检"到"实时拦截的正经杀软模式"的改版;preview3 进一步强化实时性与处置闭环:进程创建监视改为 ETW 实时订阅(事件毫秒级送达判定层,WMI 保留为订阅失败时的兜底),勒索处置新增 句柄归因(反查正在改写受保护文件的进程并当场终止),并重构了告警卡与主界面。
它防什么
- 实时行为防护(四事件源):进程行为监视、文件落地捕获、自启动项监视、引导扇区防护——命中威胁先自动拦截,再在屏幕右下角弹出处理卡片(它在干什么 → 已自动拦截 → 是否撤销);撤销即一键还原,误拦不伤文件;
- 勒索加密拦截:截获混合加密的密钥落盘、识别批量加密改写,先回滚被加密文件再通知;配合快照机制,中招文件可自动恢复;
- MBR 引导扇区防护:安装时建立引导扇区基线,持续监视篡改,被改写即刻告警并可一键恢复;
- 系统主机进程注入检测:探测 explorer / svchost / lsass 等系统进程里被注入的无签名恶意 DLL;
- 定时扫描:快扫约 3 分钟一轮、全盘 6 小时一轮、开机 2 分钟内完成首轮;
- GPU 深度内容扫描(可开关,实验阶段):对用户可写目录的可执行/脚本文件批量匹配家族特征字节串,抓"名字正常但内容是银狐"的改名样本。⚠️ GPU 扫描当前处于实验阶段:GPU 扫描进程崩溃可能会导致整个主防崩溃,不建议开启。
误报抑制
主防程序对误报做了系统性治理:信誉门——已知良好软件先行放行,不再与威胁混判;临时目录降噪——Temp 等高噪声目录的中间态文件不再干扰判定;压缩文件熵修正——按后缀与文件头魔数识别 gzip/zip/7z 等压缩格式,不再把"压缩导致的高熵"误判为加密密钥,下载安装包、插件解压、日志轮转不再触发勒索误报;改名分级——日志轮转等正常改名不再作为勒索旁证。每次自动处置都带撤销令牌,可在弹窗中一键撤销。并进一步收紧了远程载荷判据:不再因命令行中同时出现脚本宿主工具名与普通 URL 就判为"执行远程载荷",同时补齐 IEX/IWR 等 PowerShell 缩写形式的识别。
它能做什么
扫描结果按「高危 / 中危 / 低危 / 警告」分组折叠展示,支撑一键清除与高级清除。普通清除失败(文件被占用/有保护)时,程序会升级高级清除:遏制(按进程名强杀全部实例与子进程树)→ 夺权(清属性、解 ACL)→ 硬删(含 POSIX 删除与重启登记兜底)→ 连坐(自动识别并清除同目录随机名载荷/衍生 DLL);每次清除都写入「清除记录」卡片,可随时回看。安装完成后主界面自动启动、静默驻留托盘(点击托盘图标打开),开机亦自动启动。
与扩展是什么关系
二者通过 Native Messaging 通道联动:扩展面板提供入口与状态展示,主防后台以 Windows 服务形式常驻。安装程序是可选的——只用浏览器拦截功能可以完全不装它;装了以后,「浏览器里的银狐」(钓鱼/下载)与「本机里的银狐」(样本落地/实时行为)才算都有人看管。
官方口径:浏览器扩展是持续迭代并已上架的正式产品(当前 v1.6.2,更新日志可见完整版本史);而主防程序是一条独立的系统级产品线,核心链路——实时行为防护、勒索拦截与回滚、MBR 防护、全盘/快扫、GPU 深度扫描、一键/高级清除——都已可用并经过实测。它仍在高频迭代,为明确"行为可能随版本调整"而保留 preview 标记。
- 版本命名约定:主防程序与扩展各自独立发版,互不干扰。preview2 阶段安装包形如
SilverFoxGuard-preview2-Setup-v20.exe(preview2 · 第 20 个构建),自 preview3 起改为不带构建号的SilverFoxGuard-preview3-Setup.exe;与扩展的 vX.X.X 分开计数——"preview" 是官方对主防程序的正式命名标记,不代表"功能残缺"。 - 与扩展的分工:扩展覆盖浏览器侧(页面/下载/跳转链),主防覆盖系统侧(进程/文件/持久化/引导扇区)。两者独立可选,也可联动。界面里标"主防程序"的按钮均指向官网下载,不是"还没做的功能"。
- 使用前注意:清除类操作前,程序会先展示「待清除清单」供核对;预览期间检测规则以界面提示为准,如遇误判可参考 FAQ「误报了怎么办」与「清除安全吗」两条。
常见问题(详细解答)
以下问答按主题分组,点击问题展开详细解答。
拦截与误报
Q1–Q4:关于拦截行为、放行与误报处理。
Q1误报了 / 想放行某个网站或下载,该怎么做?
- 页面级放行:危险页面右上角/浮标会给出「我确认此网站安全」入口,点击后该页面解除挂起;已放行的站点会记录在本次会话中。
- 下载放行:被拦截的下载会在弹窗或下载管理里看到原因,选择「仅此一次放行」即可重新下载;拦下载只针对「发起下载的危险页面」,放行不影响其它页面的下载。
- 误报上报(推荐):扩展提供「一键上报误报」,把误判的站点/文件特征发给官方(只发必要的判定摘要,不发浏览内容),我们会核查并加入白名单/修正规则,减少他人同样踩坑。
- 临时开关:设置页可调整提醒强度(正常/安静),换取更少的打扰;阈值调整不会关闭核心拦截。
Q2为什么有些网站看着正常,还是被判危险?
official.com 写成 offcial.com 或加前后缀)、是否有真实备案、页面是否包含典型钓鱼投递结构与话术(如"扫码领奖/会议纪要.zip/简历附件")。命中任一强信号即标危险,命中多个弱信号也会累计到危险线。如果确定是误判,按 Q1 放行并上报即可。Q3会不会拖慢浏览器 / 让网页变卡?
Q4被拦截的下载文件去哪了?怎么恢复?
隐私与数据
Q5–Q7:数据去向与 AI 功能边界。
Q5AI 功能会上传我的浏览记录 / 页面内容吗?
- 本地判定(默认):全程离线,连"分析"都不发生,更谈不上上传。
- 云端 AI 辅助(可选,Max 模式 + 文件/页面分析子开关都开启时):只在面对陌生且疑似的目标时,发送一份本地提取的可疑特征摘要(域名、命中特征项、尺寸、SHA-256 等元数据),不发送页面原文、不发送浏览历史。任何时刻都可以把它关掉,关闭后功能退回纯本地判定。
Q6「官方域名白名单」是什么?为什么扩展要访问云端?
connect-src 严格限定域名):用途是与形近域仿冒做反向交叉验证——"官方域"直接放行、"仿官方形近域"重点核查。它不包含任何你的浏览数据,任何人可打开查看内容,规则全部开源。本地规则(黑名单/品牌库/误报修正)随扩展版本迭代,云端只做"域名名单实时补充"这一件事。Q7扩展到底收集哪些数据?
兼容与更新
Q8–Q10:浏览器支持与版本更新。
Q8支持哪些浏览器?
Q9检测规则怎么更新?
Q10如何升级扩展 / 主防程序?
主防程序(preview3)常见问题
Q11–Q14:系统级防线的安装、preview3 含义与清除安全边界。
Q11主防程序是必须安装的吗?和扩展什么关系?
Q12为什么叫「preview3」?"主防"是不是还没做好?
① preview 是"产品线先行"标记,不是"半成品"标签。浏览器扩展已成熟(v1.6.2),主防程序是一条独立的系统级产品线,核心链路(实时行为防护、勒索拦截与回滚、MBR 防护、全盘/快扫、GPU 深度内容扫描、一键/高级清除、清除记录)都已可用并经过实测。程序处于快速迭代期,为明确"行为可能随版本调整"而保留 preview 标记。
② 命名与版本约定。主防程序与扩展分开计数:preview2 阶段安装包形如
SilverFoxGuard-preview2-Setup-v20.exe(preview2 · 第 N 个构建),自 preview3 起改为不带构建号的 SilverFoxGuard-preview3-Setup.exe。preview2 完成了"实时拦截的正经杀软模式"改版与系统性误报治理;preview3 的变化集中在实时性与处置效率——ETW 事件订阅、勒索句柄归因、告警卡与主界面重构。官网「主防程序(preview3)」按钮指向的就是这个正式可用的下载。③ 用起来注意什么。预览期间检测/清除规则以程序界面提示为准;执行清除前一定先核对「待清除清单」;如遇误判,可在拦截弹窗一键撤销或走误报反馈,详见 Q13。
④ 什么时候转正式版。当预览反馈收敛、检测边界与性能稳定后,将去除 preview 标记发布正式版;正式版同样与原安装包互相覆盖。
Q13它报"危险、需要清除",我该信吗?清除安全吗?
Q14主防程序装了之后开机自启、后台扫描,会影响性能吗?
开放接口 · 演示调用
银狐主防需要一条不依赖本机系统时钟的时间参照,用来判断「系统时间是否被大幅篡改」——改时钟是规避行为监测的头号手段。为此我们单独部署了一个时钟旁站:无状态、无鉴权、允许跨域。下面所有代码都是本页 HTML 里的静态文本,官网不做任何转发,复制到你自己的环境里直接就能跑,用来看这个接口在你的网络下是否可用。
接口一览
| 请求 | 返回 | 适合场景 |
|---|---|---|
GET /api/time |
JSON:{"t":1790329674593,"iso":"2026-09-25T09:47:54.593Z","sec":1790329674,"src":"cloudflare-edge","note":"旁站参照:需做往返折半校正,非权威授时"} |
网页读取;需要 ISO 字符串便于人读时 |
GET /api/time.txt |
纯文本一行十进制毫秒,如 1790329678166 |
客户端首选:零 JSON 解析成本 |
HEAD /api/time |
无正文,响应头含 X-Server-Time |
只要时间、不想下载正文 |
HEAD /(任意静态路径) |
标准 Date 响应头(RFC 1123,秒级) |
纯静态兜底:即使接口整体失效也照样取得到时间 |
域名:https://silverfox-clock.pages.dev(与官网站点分离部署,互不影响)。四个端点共同点:Access-Control-Allow-Origin: *(跨域随便调)、无需任何密钥;其中三个 /api/* 端点另带 Cache-Control: no-store(被缓存的时钟就是错的时钟)。/ 是普通静态响应(max-age=0, must-revalidate),提供它只为「接口整体失效时仍取得到时间」这一层兜底,缓存头与接口并不一致。
第 1 步 · 先看通不通(最简单)
在浏览器地址栏直接打开,能看到内容就是通了:
- https://silverfox-clock.pages.dev/api/time.txt —— 应看到一行 13 位数字
- https://silverfox-clock.pages.dev/api/time —— 应看到一段 JSON
打不开通常是网络层的问题(公司网关、防火墙、所在网络访问不了 Cloudflare),与接口本身无关——换成手机热点再试一次即可区分。
第 2 步 · curl(命令行最快的验证)
# 毫秒时间戳(纯文本,最省事)
curl -s https://silverfox-clock.pages.dev/api/time.txt
# JSON 形式(带 ISO,便于人读)
curl -s https://silverfox-clock.pages.dev/api/time
# 只看响应头里的服务器时间
curl -sI https://silverfox-clock.pages.dev/api/time | grep -i x-server-time
第 3 步 · JavaScript(浏览器控制台 / Node 18+)
这段的重点不是「取到时间」,而是取到之后怎么用:直接把收到的值当成「此刻的服务器时间」,会多算一个单程网络延迟(几十毫秒)。正确做法是先量出往返时长,再折半扣掉。
const TIME_URL = 'https://silverfox-clock.pages.dev/api/time';
async function trustedNowMs() {
// 用 performance.now()(单调时钟)量往返:万一校时途中系统时间被改,
// Date.now() 的差值会被一起污染,performance.now() 不会。
const t0 = performance.now();
const res = await fetch(TIME_URL, { cache: 'no-store' });
if (!res.ok) throw new Error('HTTP ' + res.status);
const { t } = await res.json(); // 服务器生成响应的时刻(Unix 毫秒)
const t1 = performance.now();
return t - (t1 - t0) / 2; // 扣掉单程延迟(假设上下行对称)
}
trustedNowMs().then((serverMs) => {
console.log('服务器时间 :', new Date(serverMs).toISOString());
console.log('本机偏差 :', Math.round(Date.now() - serverMs), 'ms(正数 = 本机走快)');
});
第 4 步 · Python 3(只用标准库)
import json, time, urllib.request
URL = "https://silverfox-clock.pages.dev/api/time"
t0 = time.monotonic() # 单调时钟,不受改系统时间影响
req = urllib.request.Request(URL, headers={"User-Agent": "sfh-demo/1.0"})
with urllib.request.urlopen(req, timeout=5) as r:
info = json.loads(r.read())
t1 = time.monotonic()
server_ms = info["t"] - (t1 - t0) * 500 # 往返折半,并把秒换算成毫秒
drift_ms = int(time.time() * 1000 - server_ms)
print("服务器时间 :", info["iso"])
print("本机偏差 :", drift_ms, "ms(正数 = 本机走快)")
第 5 步 · PowerShell(Windows 一行版)
# 最简:只取时间戳
(Invoke-RestMethod 'https://silverfox-clock.pages.dev/api/time').t
# 含往返折半校正与本机偏差
$sw = [System.Diagnostics.Stopwatch]::StartNew()
$r = Invoke-RestMethod 'https://silverfox-clock.pages.dev/api/time'
$sw.Stop()
$serverMs = $r.t - $sw.Elapsed.TotalMilliseconds / 2
$drift = [DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds() - $serverMs
"服务器时间 : {0}(单程约 {1:N0} ms)" -f $r.iso, ($sw.Elapsed.TotalMilliseconds / 2)
"本机偏差 : {0:N0} ms" -f $drift
怎么判断「可用」
| 观察到的现象 | 结论 |
|---|---|
| 正常返回,且与本机时间相差 1 秒以内 | 可用:接口与环境都没问题 |
| 返回正常,但与本机偏差很大(几分钟到几年) | 接口可用;不准的是你这台机器的系统时间 |
| 请求超时 / 连不上 | 网络层到不了 Cloudflare(网关、防火墙、地区网络),不是接口问题 |
| 浏览器里能打开,脚本里却失败 | 多半是脚本所在环境没走系统代理,或被企业网关拦截 |
用了 HEAD:有响应头但没有正文 | 正常:HEAD 按 HTTP 定义就不返回正文 |
· 它不是权威授时,不是 NTP / PTP。用途只有一个:判断「本机时间是否被大幅篡改」,不要拿它做微秒级校准。
· 精度毫秒,但网络往返会引入几十毫秒不确定度 → 必须做往返折半校正;直接用收到的值会系统性偏慢。
· 服务不记录、不存储任何请求方信息,只输出当前时间——也正因如此,它不应作为唯一的时间来源。
· 主防程序仅在检测到系统时间被大幅修改(≥ 1 年)时才来查询它,日常运行使用本地单调时钟推算,因此这个服务没有持续负载。
反馈与支持
遇到误报、漏报、使用问题或想参与规则共建:
github.com/yinbo345/silverfox-guard——问题反馈请带:浏览器版本、命中规则截图/路径、复现步骤。
github.com/yinbo345/silverfox-guard-main——清除类问题请附「清除记录」卡片内容。
喜欢本项目可到 爱发电 支持开发与运维。本项目无任何付费功能,免费、开源、本地优先。