7.22移动DNS欺骗分析
前言
在 7.22 凌晨1点30左右,刚关闭代理学习完,准备刷会抖音睡觉时,edge浏览器不停自启动,前两次是跳转至微软的MSN界面,然后开始不演了,跳转至了一个赌博界面
在下午时,这个现象又发生了:这次是Windows 网络状态图标一度显示“无法连接 Internet”或“需要登录”,但浏览器仍能正常访问多数网站。系统或用户点击网络登录提示后,默认浏览器 Microsoft Edge打开后从 http://www.msftconnecttest.com/redirect 跳转至
这些网站可能存在风险,不要随意点击
分析
使用 reqable 进行抓包分析,发现微软的网络连通性测试域名 www.msftconnecttest.com 被攻击者劫持了,返回了一个恶意ip:112.121.185.202
msftconnecttest 托管在 Akamai上,使用 Akamai CDN进行全球网络分发,具体的ip段可以参考这个项目Akamai-ASN-and-IPs-List

由于该ip的服务不包含接口\connecttest.txt,因此Windows的网络连通性检测模块无法知道是否成功连接上,所以右下角会显示无法连接到网络,但实际上是可以访问网页的。
至于为什么会自动打卡浏览器,以及网络显示需要登录,这是Windows的网络连接状态检测指示器(NSCI)使然。下面首先简要介绍一下Windows的NSCI机制,再探究为什么浏览器会自动打开以及点击登录至网络会跳转至垃圾网站。
网络连接状态指示器(Network Connectivity Status Indicator, NSCI)
NCSI 的基本机制
- **NCSI(网络连接状态指示器)**通过主动与被动两种探测方式,判断当前是“已连接到互联网”“仅本地(无互联网)”还是“需要登录(强制门户)”等状态,并更新任务栏图标与网络分类,供 Windows 与其他组件使用。
- 主动探测: 向预定义的 HTTP 探测服务器发起请求,收到预期响应即判定为互联网可达。
- 被动探测: 观察入站流量,根据数据包的跃点数(hops)等被动信息,在满足条件时更新连接状态,避免频繁主动探测。
何时进行网络状态检测
- 触发主动探测的典型事件: 接口或网络条件变化、代理检测/变更、热点检测/变更;当满足新的网络条件(如有线/无线/VPN 接口可用)时,即发送主动探测以刷新网络状态。
- 被动探测的时机与频率: 在组策略允许、用户已登录或近 30 秒内登录的前提下,被动探测约每 15 秒运行一次,可由注册表 PassivePollPeriod 调整。
如何判断该网络是否需要登录(强制门户/捕获门户)
- 探测请求: NCSI 主动探测向预定义的 HTTP 探测地址发送请求(自 Win10 1607 起为
www.msftconnecttest.com/connecttest.txt);DNS 探测目标为dns.msftncsi.com。HTTP 预期响应是 200 OK,并在正文中包含“Microsoft Connect Test”。 - “需要登录”的判定条件: 若主动探测未走已知代理且收到响应,但响应内容与预期不符(例如未返回“Microsoft Connect Test”),或收到非 200 的 HTTP 状态(如 302/304),则认为存在强制门户/热点,并可能将状态设置为本地/受限。
- 与强制门户的交互: 当检测到强制门户时,Windows 会据此触发浏览器打开门户页面,并反复进行探测,直到用户完成认证后探测通过。
探测结果与表现
- 主动探测成功: 网络图标更新为“已连接(有互联网)”。
- 探测失败且未走代理: 状态可能被设为“本地”;若通过代理失败则可能设为“None”。
- 强制门户场景: 主动探测收到非预期内容/重定向,系统识别为受限网络,引导用户登录后再重试探测。
简要示意(流程)
网络异常显示和自动打开分析
由于NCSI是通过请求微软的网络测试域名 msftconnecttest.com来判断网络状态的,前面我们已经提到该域名已经被DNS误解析到了一个恶意ip,该ip的服务器利用了NCSI在此方面的漏洞:它返回302重定向请求,并且把location设为他指定的垃圾网站,这时NCSI发现返回的状态不是200,认为该网络需要进行登录验证,于是自动启动默认浏览器,并打开网址 http://www.msftconnecttest.com/redirect 试图让用户登录以连接至互联网。
重定向header
Cache-Control: no-storeContent-Length: 0Location: https://ddf0718.yy6ma5q.ccDate: Wed, 22 Jul 2026 08:07:59 GMT但是此刻已经中招了,由于 location 指向的是一个恶意网址,所以浏览器会跳转至到那个垃圾网站。这时由于后台NCSI请求 http://www.msftconnecttest.com/connecttest.txt 一直返回重定向,Windows又会自动打开edge引导用户进行登录,然后又跳转至垃圾网站。这就是为什么浏览器会重复自动打开并且跳转至垃圾网站的原因。
攻击过程
解决方案
解决方案很简单,把电脑或者路由器的DNS解析服务配置为其他的公共DNS服务,详细做法如下:
Windows
设置→ 网络和 Internet→ Wi-Fi 或以太网→ 当前网络/硬件属性→ DNS 服务器分配→ 编辑→ 手动→ 配置 IPv4/IPv6 DNS也可以通过传统控制面板修改:
控制面板→ 网络和 Internet→ 网络和共享中心→ 更改适配器设置→ 当前网卡属性→ Internet 协议版本 4(TCP/IPv4)→ 手动填写 DNS 服务器
路由器配置和上述相似.
也可以修改为其他公共DNS服务,重要的是将DNS解析服务换为一个权威、真实的服务。
总结
这是一起经典的 DNS欺骗攻击,攻击方攻破了移动的内部DNS服务器,将微软的网络测试域名绑定至一个恶意ip,利用了NCSI机制引导Windows进行跳转垃圾界面。
微软把NCSI设计为HTTP没有太大问题:用 HTTPS,很多强制门户会表现为 TLS 握手失败/证书错误,NCSI 很难区分这到底是“真的没网”“企业中间人/代理”,还是“只是需要登录”;而用 HTTP,大多数强制门户会直接给 302 重定向或返回非预期页面内容,NCSI 只要看返回内容是不是 “Microsoft Connect Test” 就能判断“是否需要登录”。使用 HTTP 是为了最大化兼容各类强制门户、简化状态判定逻辑、降低因证书/CA/代理带来的误判。
这次背锅的主要是移动
参考
- https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/troubleshoot-ncsi-guidance
- https://learn.microsoft.com/zh-cn/windows-server/networking/ncsi/ncsi-overview
- https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/troubleshoot-ncsi-guidance
- https://github.com/platformbuilds/Akamai-ASN-and-IPs-List/blob/master/akamai_ip_cidr_blocks.lst
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
忆枫の博客
