最新消息: 预先成其事必先利其器

安全软件报“网页含恶意代码”,怎么判断是真警告还是本机出了问题

3 浏览 恶意代码 拦截 DNS 误拦

先给一个判断原则:拦截提示里的同一句“该网页含恶意代码”,背后可能是五种完全不同的事,而它们里只有一种需要你不访问这个网站。分清楚靠的不是直觉,而是下面五个步骤。

一、先看它拦的是哪一层

提示位置 拦的是什么 可信度
地址栏变红或者整页屏蔽 域名在恶意名单里 高,不要继续
弹窗说检测到恶意脚本 页面里的行为被判定 中,需要看具体域名
下载时拦一个文件 文件本体 高,但要分类型
证书错误与域名不匹配 中间人或者 DNS 问题 高,但原因在本机或者网络
打开正常网站反复弹窗 很可能是本机被注入 当真,但从自己身上查

第二行与最后一行是本文要重点处理的两类,因为它们的处理方向相反。

二、把提示里的具体信息读出来

不要只看大字标题。把三个具体字段记下来:拦截类型(网址、脚本、还是下载)、触发的域名、规则或威胁名。三者齐全才能判断。

很多弹窗会把这三项藏在详情里,展开它。如果展开后什么都没有、只有一个立即清理按钮,那它就不是安全软件的拦截提示,而是广告弹窗,直接关掉。

三、确认触发的是主站还是第三方脚本

这是区分网站真的有问题与小站常见状况的关键一步。打开开发者工具的 Network 面板重新加载页面,看被拦的那个域名:

  • 如果它和主站同一个注册域名,比如都在 example.com 下,当真。主站自己被注入恶意代码是完全不同的事件等级。
  • 如果它属于广告网络、统计工具、或者一堆看不懂的小公司域名,那么它拦得对,但跟你本来要找的内容无关。换一个入口进主站就行。
  • 如果它是你自己机器上的某个本地端口,那这个提示实际在告诉你本机有东西在注入网页。

实际上一半以上的网页恶意代码提示属于第二条。它们的真实含义是这个页面加载了一个被判定可疑的第三方脚本,而不是这个网站是钓鱼站。

四、拿域名去交叉验证

拿具体域名去多引擎网站查网址,而不是查文件。看两件事:报的那几家说什么,以及这个域名的注册信息是不是与站点声称的身份一致。

后面这一项能发现一类常见情况:山寨站。它们与真站只差一两个字母,内容靠拉取生成。多引擎不报、但域名注册信息与站点声称不一致,这类站点不用等安全软件报,本身就是不能输入的。

五、换网络验证,把本机排除掉

如果上述四步都说不通,而被拦的是一个你一定需要访问的正规站点,那重点就不在网站了。按这个顺序查本机。

先看 DNS 服务器

Get-DnsClientServerAddress -AddressFamily IPv4 |
  Where-Object {$_.ServerAddresses} |
  Select-Object InterfaceAlias, ServerAddresses

如果里面出现你没配过的地址,要么路由器被改了,要么本机有东西改过网络配置。此时去路由器管理页面看广域网侧与局域网侧的 DNS,两边不一致就是路由器问题。

再看 hosts

$h = C:\Windows\System32\drivers\etc\hosts
Get-Content $h | Select-String -Pattern '^[^#]'

有指向 127.0.0.1 或者陌生 IP 的行,就是它。很多上网优化工具会往这里写东西,结果造成某类网站反复报异常。

最后看代理与根证书

netsh winhttp show proxy
Get-ChildItem Cert:\CurrentUser\Root |
  Where-Object {$_.Issuer -notlike '*Microsoft*'} |
  Select-Object Subject, Issuer, NotAfter

受信任的根证书存储里出现非微软、且你自己没有主动装过的项,基本就能解释为什么所有加密站点都报证书异常。这类东西常见于装过抓包工具、某些上网加速软件、或者公司发的电脑。

分情况处理

判断结果 处理
陌生站点被拦 不访问,不要点继续
正规站点被拦,触发的是第三方脚本 换入口进主站,不必处理
正规站点被拦,且换网络后正常 查本机 DNS、hosts、代理、证书
所有加密站点都报异常 根证书或者代理问题,先处理它
下载文件被拦 参考站内取回与报备流程那篇

两个不做:不要为了看一眼而点继续访问,很多提示确实对应真实挂马;不要把整个域名加入白名单,尤其不要把银行、支付、邮箱类域名加白。

最后一句

这个提示最难的地方在于它可能是一个准确的安全事件,也可能是本机的一个网络配置问题在冒充安全事件。区别方法很简单:正规站点被拦,先怀疑自己机器;陌生站点被拦,先当真。两个方向不要弄反。