破解企业安全软件网络拦截实战记录

作者:来点vc日期:2026/3/14

一、背景与现象

问题描述

image.png个人电脑访问某技术网站时,被企业安全软件(零信任安全架构)拦截,提示:

"您访问的站点或应用因不合规,企业安全软件 已自动拦截此次访问"

关键特征

  • 这是个人电脑,未连接公司 VPN,未访问公司内网
  • 浏览器和系统设置中看不到任何代理配置
  • 重启电脑后问题依然存在

二、排查与分析过程

第一阶段:DNS 层面排查

初始假设:DNS 被劫持到企业服务器

1$ scutil --dns | grep nameserver
2nameserver[0] : 10.x.x.x   企业 DNS
3nameserver[0] : 192.168.0.1
4

尝试修复

  • 修改 /etc/resolv.conf失败,文件被自动恢复
  • 使用 chflags schg 锁定文件 → 失败,企业安全软件 有更高权限
  • 创建 cron 定时任务每分钟修复 → 失败,治标不治本

关键发现/etc/resolv.conf 是一个符号链接,指向 /var/run/resolv.conf

1$ ls -la /etc/resolv.conf
2lrwxr-xr-x  1 root  wheel  22  /etc/resolv.conf -> ../var/run/resolv.conf
3

突破:删除链接,创建真实文件并锁定

1sudo rm /etc/resolv.conf
2echo "nameserver 192.168.0.1" | sudo tee /etc/resolv.conf
3sudo chflags schg /etc/resolv.conf
4

结果:DNS 正确了,但仍然被拦截


第二阶段:路由层面排查

检查路由表

1$ netstat -nr | grep 10.x
210.x.x.x         10.x.x.x         UH              utun0
330.0.0.1/32        10.x.x.x         UGSc            utun0
4198.18.0/16        10.x.x.x         UGSc            utun0
5

关键发现utun0 是一个 VPN 隧道接口,所有流量被路由到企业服务器!

术语解释:路由表中的地址含义

1$ netstat -nr | grep 10.x
210.x.x.x         10.x.x.x         UH              utun0
330.0.0.1/32        10.x.x.x         UGSc            utun0
4198.18.0/16        10.x.x.x         UGSc            utun0
5
地址含义作用
10.x.x.x企业安全软件 企业网关这是企业 零信任架构 服务器的入口地址,类似 VPN 服务器的 IP
30.0.0.1/32特定应用路由某些企业应用(如企业微信、OA 系统)强制走这个网关
198.18.0/16全流量劫持网段这是一个保留地址段,企业安全软件 用它拦截所有外网流量

通俗理解

  • 正常情况下,你访问 某网盘网站 → 直接走家用路由器 → 互联网
  • 被劫持后,流量走向:你 → 198.18.0/16 路由 → 10.x.x.x 企业网关 → 企业安全审查 → 可能放行/拦截

术语解释:VPN 隧道接口(utun0)

utun0 是什么?

  • utun = User Tunnel(用户隧道)
  • 它是 macOS 创建的一个虚拟网络接口,和物理网卡(Wi-Fi 网卡 en0)并列
  • 作用:把所有网络流量"打包"送进企业服务器,就像挖了一条"隧道"
1正常网络:  App  Wi-Fi 网卡(en0)  路由器  互联网
2                    
3企业安全软件 劫持: App  utun0(虚拟隧道)  企业服务器  互联网/拦截
4

为什么"退出 VPN"还能被劫持?

普通 VPN

  • 在菜单栏点"断开" → VPN 关闭 → 路由表清理 → 网络恢复

企业安全软件 零信任

  • 所谓的"退出"只是隐藏了界面图标
  • com.企业安全.sase.helper 守护进程仍在后台运行
  • 自动维护 utun0 接口,一旦发现被关闭,立即重建
  • 这种设计是为了"安全"——确保员工无法绕过企业监控

尝试关闭

1sudo ifconfig utun0 down
2

结果:utun0 被自动重新创建,背后有守护进程在维护


第三阶段:进程层面排查

查找幕后进程

1$ ps aux | grep -iE "(enterprise|sase|某企业)"
2root  120  /Library/PrivilegedHelperTools/com.企业安全.sase.helper
3

关键发现com.企业安全.sase.helper 是一个 Privileged Helper Tool(特权助手工具),拥有系统最高权限,即使退出主程序,它依然在后台运行。

最终解决

1# 停止守护进程
2sudo launchctl unload /Library/LaunchDaemons/com.企业安全.sase.helper.plist
3sudo pkill -f com.企业安全.sase.helper
4
5# 关闭隧道接口
6sudo ifconfig utun0 down
7
8# 禁用开机自启
9sudo launchctl disable system/com.企业安全.sase.helper
10

结果:🎉 成功! 网络恢复正常,不再被拦截


三、原理剖析

企业安全软件/零信任架构 的多层拦截机制

企业零信任安全软件通过五层架构实现流量劫持:

1┌─────────────────────────────────────────┐
2  5层:应用层     浏览器插件、证书注入    
3├─────────────────────────────────────────┤
4  4层:传输层     代理设置、PAC 自动配置  
5├─────────────────────────────────────────┤
6  3层:网络层     路由表劫持 (utun0)     
7├─────────────────────────────────────────┤
8  2层:DNS     resolv.conf 篡改       
9├─────────────────────────────────────────┤
10  1层:系统层     守护进程监控、自恢复    
11└─────────────────────────────────────────┘
12

各层工作机制

层级机制目的
DNS 层修改 /etc/resolv.conf 指向企业 DNS域名解析监控
路由层创建 utun0 虚拟接口,添加路由表流量强制转发
系统层com.企业安全.sase.helper 守护进程持久化控制、自修复

什么是 /etc/resolv.conf

这是类 Unix 系统(macOS/Linux)的 DNS 配置文件,告诉系统去哪里查询域名对应的 IP。

1正常流程:
2你输入 某网盘网站  系统查 /etc/resolv.conf  问家用路由器(192.168.0.1)  返回 IP  访问网站
3
4被劫持后:
5你输入 某网盘网站  系统查 /etc/resolv.conf  问企业 DNS(10.x.x.x)  企业说"这是非法网站"  拦截
6

为什么修改它没用?

  • 企业安全软件 的守护进程会每秒检测这个文件
  • 一旦发现被改了,立即恢复成企业 DNS
  • 它还把这个文件做成符号链接,指向一个 企业安全软件 控制的动态文件

什么是 PrivilegedHelperTools?

macOS 的一种特权助手机制

  • 普通 App 没有权限修改系统网络配置
  • 但 App 可以安装 Helper Tool,获得 root 权限
  • 即使主 App 退出,Helper 仍在后台运行
  • 这是 企业安全软件 能"阴魂不散"的根本原因

为什么简单退出无效?

普通用户退出 企业安全软件 应用,只是关闭了界面程序,而以下组件依然在运行:

  • PrivilegedHelperTools:系统级特权进程
  • LaunchDaemons:开机自启守护进程
  • 网络扩展:内核级网络过滤

四、完整解决方案

方案 A:手动命令

1# 1. 停止 零信任架构 守护进程
2sudo launchctl unload /Library/LaunchDaemons/com.企业安全.sase.helper.plist
3sudo pkill -f com.企业安全.sase.helper
4
5# 2. 关闭 VPN 隧道
6sudo ifconfig utun0 down
7
8# 3. 修复 DNS(删除链接,创建真实文件)
9sudo rm /etc/resolv.conf
10echo "nameserver 192.168.0.1" | sudo tee /etc/resolv.conf
11sudo chflags schg /etc/resolv.conf
12
13# 4. 禁用开机自启
14sudo launchctl disable system/com.企业安全.sase.helper
15
16# 5. 刷新网络
17sudo dscacheutil -flushcache
18

方案 B:自动化脚本

创建两个便捷脚本,随时切换:

disable-enterprise.sh - 禁用拦截

1#!/bin/bash
2sudo launchctl unload /Library/LaunchDaemons/com.企业安全.sase.helper.plist
3sudo pkill -f com.企业安全.sase.helper
4sudo ifconfig utun0 down 2>/dev/null
5sudo rm -f /etc/resolv.conf
6echo "nameserver 192.168.0.1" | sudo tee /etc/resolv.conf
7sudo chflags schg /etc/resolv.conf
8sudo launchctl disable system/com.企业安全.sase.helper
9echo "企业安全软件 已禁用"
10

enable-enterprise.sh - 恢复企业网络

1#!/bin/bash
2sudo chflags noschg /etc/resolv.conf 2>/dev/null
3sudo ln -sf /var/run/resolv.conf /etc/resolv.conf
4sudo launchctl enable system/com.企业安全.sase.helper
5sudo launchctl load /Library/LaunchDaemons/com.企业安全.sase.helper.plist
6echo "企业安全软件 已恢复"
7

五、企业安全软件拦截手段总结

常见拦截技术

技术手段检测命令解决思路
DNS 劫持scutil --dns cat /etc/resolv.conf修改 DNS 为公共 DNS,锁定文件
路由劫持netstat -nr ifconfig删除企业路由,关闭虚拟接口
代理设置networksetup -getwebproxy关闭自动代理配置
系统扩展systemextensionsctl list卸载网络过滤扩展
证书注入钥匙串访问 → 系统根证书删除企业根证书
守护进程ps aux launchctl list停止并禁用 LaunchDaemon

本次案例的拦截技术分析

技术手段本次是否涉及严重程度说明
DNS 劫持✅ 涉及⭐⭐⭐修改 resolv.conf 指向企业 DNS
路由劫持主要⭐⭐⭐⭐⭐创建 utun0 隧道接口劫持所有流量
代理设置❌ 未涉及-未修改系统代理配置
系统扩展❌ 未涉及-未安装网络过滤扩展
证书注入❌ 未涉及-未进行 HTTPS 中间人攻击
Hosts 劫持❌ 未涉及-hosts 文件未被修改
守护进程✅ 涉及⭐⭐⭐⭐⭐PrivilegedHelperTool 持续监控和修复

结论:本次属于 "路由劫持 + 守护进程控制" 的组合拦截,是最顽固的一种形式。


其他拦截技术的详细解决方案

1. 代理设置劫持(HTTP/HTTPS 代理)

原理:修改系统代理设置,让流量通过企业代理服务器转发。

检测

1# 查看代理设置
2networksetup -getwebproxy "Wi-Fi"
3networksetup -getsecurewebproxy "Wi-Fi"
4scutil --proxy
5

预期输出(被劫持)

1Enabled: Yes
2Server: 10.x.x.x
3Port: 8080
4

解决

1# 关闭所有代理
2networksetup -setwebproxystate "Wi-Fi" off
3networksetup -setsecurewebproxystate "Wi-Fi" off
4networksetup -setautoproxystate "Wi-Fi" off
5
6# 或设置为空
7networksetup -setwebproxy "Wi-Fi" "" 0
8networksetup -setsecurewebproxy "Wi-Fi" "" 0
9

2. PAC 自动代理配置

原理:通过 PAC(Proxy Auto-Config)脚本,根据网址决定是否走代理。比固定代理更隐蔽。

检测

1networksetup -getautoproxyurl "Wi-Fi"
2# 输出:URL: http://10.x.x.x/proxy.pac
3

解决

1networksetup -setautoproxystate "Wi-Fi" off
2

额外检查:某些软件会修改 .pac 文件的系统设置,需检查:

1# 查看系统网络偏好设置
2defaults read /Library/Preferences/SystemConfiguration/NetworkInterfaces
3

3. 系统扩展/网络过滤(Network Extension)

原理:安装内核级网络扩展,直接过滤所有网络数据包。比应用层代理更底层,更难发现和清除。

检测

1# 列出所有网络扩展
2systemextensionsctl list
3
4# 预期输出(正常):
5# 0 extension(s)
6
7# 被劫持时可能看到:
8# com.某企业.sase.filter [active enabled]
9

解决

1# 方法1:命令行卸载(需知道 team ID  bundle ID)
2systemextensionsctl uninstall <team_id> <bundle_id>
3
4# 方法2:图形界面(推荐)
5# 系统设置  隐私与安全性  扩展  网络扩展  取消勾选
6
7# 方法3:强制删除(如果无法卸载)
8sudo rm -rf /Library/SystemExtensions/*
9# 重启后生效
10

注意:系统扩展可能需要 SIP(系统完整性保护)权限才能完全清除。


4. 证书注入(HTTPS 中间人攻击)

原理:企业安装自己的根证书到系统,可以解密 HTTPS 流量进行检查,再重新加密转发。

检测

方法一:浏览器查看证书

  • 访问任意 HTTPS 网站 → 点击地址栏锁图标 → 查看证书
  • 如果看到证书颁发者是公司名而非正规 CA,说明被中间人

方法二:命令行检查

1# 查找企业证书
2security find-certificate -a -c "某企业" /System/Library/Keychains/SystemRootCertificates.keychain
3security find-certificate -a -c "Company" /System/Library/Keychains/SystemRootCertificates.keychain
4
5# 列出所有根证书
6security dump-trust-settings
7

解决

1# 删除指定证书(需知道证书名称)
2security delete-certificate -c "某企业 零信任架构 CA" /System/Library/Keychains/SystemRootCertificates.keychain
3
4# 或在"钥匙串访问"应用中:
5# 1. 打开"钥匙串访问"(Keychain Access)
6# 2. 选择"系统"钥匙串  "证书"
7# 3. 找到企业证书(通常名称包含公司名、零信任架构、Proxy 等)
8# 4. 右键  删除
9

风险提示:删除企业证书可能导致无法访问企业内网的 HTTPS 网站。


5. Hosts 文件劫持

原理:修改 /etc/hosts 文件,将特定域名指向错误 IP 或本地地址,实现屏蔽。

检测

1cat /etc/hosts
2

预期异常输出

1127.0.0.1   某网盘网站
2127.0.0.1   www.youtube.com
3

解决

1# 编辑 hosts 文件,删除企业添加的规则
2sudo nano /etc/hosts
3
4# 或使用 sed 删除特定行
5sudo sed -i '' '/某网盘网站/d' /etc/hosts
6

6. 浏览器插件

原理:安装浏览器扩展,在应用层拦截和修改网页内容。

检测

  • Chrome: 地址栏输入 chrome://extensions/
  • Edge: edge://extensions/
  • Safari: 系统设置 → 扩展

查找可疑插件

  • 名称包含:安全、防护、监控、某企业、企业
  • 未主动安装,突然出现
  • 无法删除或禁用(被企业策略锁定)

解决

1# Chrome/Edge 强制删除被策略控制的插件
2# 1. 找到插件 ID(在 extensions 页面)
3# 2. 删除插件目录
4rm -rf ~/Library/Application\ Support/Google/Chrome/Default/Extensions/<插件ID>
5
6# 或通过组策略(如果企业用了策略)
7# 可能需要删除策略文件
8sudo rm -f /Library/Managed\ Preferences/com.google.Chrome.plist
9

快速诊断流程图

1访问网站被拦截?
2       
3       
4┌─────────────┐     异常      ┌──────────────┐
5 检查 DNS     ───────────→  修复 resolv.conf 
6 scutil --dns│               并锁定          
7└─────────────┘     正常      └──────────────┘
8       
9       
10┌─────────────┐     异常      ┌──────────────┐
11 检查路由表    ───────────→  停止守护进程   
12 netstat -nr                关闭 utun 接口 
13└─────────────┘     正常      └──────────────┘
14       
15       
16┌─────────────┐     异常      ┌──────────────┐
17 检查代理     ───────────→  关闭代理设置   
18 networksetup│                             
19└─────────────┘     正常      └──────────────┘
20       
21       
22┌─────────────┐     异常      ┌──────────────┐
23 检查 hosts   ───────────→  清理 hosts    
24 cat /etc/hosts│                           
25└─────────────┘     正常      └──────────────┘
26       
27       
28┌─────────────┐     异常      ┌──────────────┐
29 检查证书     ───────────→  删除企业证书   
30 钥匙串访问                                
31└─────────────┘     正常      └──────────────┘
32       
33       
34    问题解决!
35

排查 checklist

1# 1. 检查 DNS
2scutil --dns
3
4# 2. 检查路由表
5netstat -nr | grep -E "(utun|10\.251)"
6
7# 3. 检查代理
8networksetup -getwebproxy "Wi-Fi"
9scutil --proxy
10
11# 4. 检查 hosts
12cat /etc/hosts
13
14# 5. 检查网络扩展
15systemextensionsctl list
16
17# 6. 检查后台进程
18ps aux | grep -iE "(某企业|enterprise|sase|ioa)"
19
20# 7. 检查证书(钥匙串访问)
21security dump-trust-settings | grep -i "某企业\|company"
22
23# 8. 检查浏览器插件(手动查看 chrome://extensions)
24

六、总结

核心要点

  1. 企业安全软件具有持久化机制,简单退出无法停止拦截
  2. 多层架构:DNS + 路由 + 进程,需要全部清理
  3. 最高权限:PrivilegedHelperTools 拥有系统级控制权
  4. 自恢复机制:守护进程会持续监控并修复配置

解决思路

1定位问题层  停止守护进程  清理配置  锁定防护  验证
2

最后建议

  • 个人电脑:建议完全卸载企业安全软件
  • 公司电脑:遵守企业安全策略,不要擅自绕过
  • 边界场景:如本文情况(个人电脑被强制安装),使用脚本灵活切换

技术无罪,但请合规使用。 各位大佬,本文仅供技术研究和问题排查参考。


破解企业安全软件网络拦截实战记录》 是转载文章,点击查看原文


相关推荐


AI大模型小白手册|Embedding 与向量数据库
树獭非懒2026/3/5

前言 在人工智能快速发展的今天,大模型虽能理解并生成人类语言,却高度依赖外部工具来高效处理和检索海量信息。其中,Embedding(嵌入)  技术将文本、图像等复杂数据转化为计算机可计算的向量,而向量数据库则专门用于存储和快速检索这些高维向量,从而实现语义级别的相似性匹配。这两项技术共同构成了现代AI应用如智能问答、推荐系统和知识库检索的基石。 本手册专为AI初学者设计,旨在用通俗易懂的方式讲解Embedding的基本原理、主流模型特点、向量数据库的核心功能及典型使用场景,并通过简单示例帮助你快


【深度学习基础篇04】从回归到分类:图像分类与卷积神经网络入门
ppppppatrick2026/2/25

【深度学习基础篇】从回归到分类:图像分类与卷积神经网络入门 文章目录 【深度学习基础篇】从回归到分类:图像分类与卷积神经网络入门一、前情提要:从回归实战到分类任务的核心转变回归与分类的核心区别:输出逻辑的本质不同分类任务的输出解码:从“置信度”到“类别标签” 二、图像分类的前提:理解图像的张量表示1. 图像的核心维度:通道×高度×宽度(C×H×W)2. 批量图像的张量格式:N×C×H×W3. 全连接层处理图像的痛点:维度爆炸 三、卷积的核心概念:从“局部感知”到特征提取1


丰田正在使用 Flutter 开发游戏引擎 Fluorite
恋猫de小郭2026/2/17

近日,丰田汽车旗下子公司丰田互联北美公司宣布,即将开源基于 Flutter 的自主研发的游戏引擎 Flourite ,而实际上在此之前,Flutter 已经是丰田车机的开发 SDK 之一。 Toyota Connected North America,TCNA,是丰田的北美子公司,专注于车载软件、AI 等。 Fluorite 是首款完全集成 Flutter 的主机级(console-grade)游戏引擎,主要针对车载数字座舱(digital cockpit)和嵌入式低端硬件设计,已在 202


用 Python 30 分钟做出自己的记事本
忘忧记2026/2/8

🌟 《零基础手把手:用 Python 30 分钟做出自己的记事本》 —— 不是照抄代码,而是理解每行代码的「灵魂」 🧩 第一步:为什么我们需要「基础窗口」?(新手必懂!) ❌ 常见错误:直接写 window.show() 但窗口不显示? ✅ 正确逻辑:程序运行流程图 #mermaid-svg-OKGSEAHaVwdJVXr3{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyf


type-challenges(ts类型体操): 10 - 元组转合集
fxss2026/1/30

10 - 元组转合集 by Anthony Fu (@antfu) #中等 #infer #tuple #union 题目 实现泛型TupleToUnion<T>,它返回元组所有值的合集。 例如 type Arr = ['1', '2', '3'] type Test = TupleToUnion<Arr> // expected to be '1' | '2' | '3' 在 Github 上查看:tsch.js.org/10/zh-CN 代码 /* _____________ 你的代


LeetCode 377 组合总和 Ⅳ
展菲2026/1/21

文章目录 摘要描述题解答案题解代码分析1. 动态规划的基本思路2. 初始状态3. 状态转移方程4. 为什么这样能计算出排列个数?5. 与组合问题的区别6. 优化:避免不必要的计算 示例测试及结果示例 1:nums = [1,2,3], target = 4示例 2:nums = [9], target = 3示例 3:nums = [1,2], target = 3示例 4:nums = [1], target = 1 时间复杂度空间复杂度进阶问题:如果数组中含有负数问题分析解决方


HarmonyOS一杯冰美式的时间 -- UIUtils基础功能
猫猫头啊2026/1/13

一、前言 最近在写状态管理相关的代码,发现 HarmonyOS 的 UIUtils 这个工具类还挺实用的。它主要解决一些状态管理框架在使用过程中遇到的边界问题,比如代理对象、V1/V2 混用、数据绑定这些场景。 今天顺手整理一下它的几个核心功能,方便以后查。 该系列依旧会带着大家,了解,开阔一些不怎么热门的API,也可能是偷偷被更新的API,也可以是好玩的,藏在官方文档的边边角角~当然也会有一些API,之前是我们辛辛苦苦的手撸代码,现在有一个API能帮我们快速实现的,希望大家能找宝藏。 如果您有


Elasticsearch 8.13.4 动态同义词实战全解析
detayun2026/1/4

在搜索引擎的江湖里,“词不达意"往往是阻碍用户找到心仪内容的最后一道鸿沟。当用户搜索"番茄"时,如果你的库里只有"西红柿"和"圣女果”,传统的精确匹配只能让用户空手而归。同义词库,便是那把填补语义裂痕的钥匙。然而,在 Elasticsearch 8.13.4 这个版本中,我们不再满足于重启服务来更新词库的"笨办法",我们要的是如丝般顺滑的动态热更新。 今天,我们就来一场技术突围,深度剖析在 ES 8.13.4 时代,如何玩转动态同义词,让你的搜索引擎拥有"自我进化"的灵魂。 一、 告别"文件搬运


卷积神经网络CNN
代码洲学长2025/12/26

CNN简介 卷积神经网络就是一个包括卷积层和池化层的神经网络,主要应用于计算机视觉方面,应用场景包括图像分类、目标检测、面部解锁、自动驾驶等。 整体架构流程 CNN的主要结构为 输入层,隐藏层 和输出层,主体架构主要体现在隐藏层中的网络,依次为卷积层 池化层 然后全连接层直接输出。CNN分别进行了两场卷积和池化 ,最终通过三个全连接层进行输出。 卷积层结构图 input(32, 32, 3) conv(3, 3, 6) relu(30, 30, 6) pool(2, 2, 6)


设计模式——责任链模式实战,优雅处理Kafka消息
KD2025/12/18

一、业务背景 Kafka接收消息,需要A,B,C...多种策略做处理,再通过http请求发送给下游。多种策略混在一起很难维护,通过责任链模式把每种策略的代码收敛到自己的Handler中 二、具体设计 classDiagram Handler <|-- StrategyAHandler Handler <|-- StrategyBHandler Handler <|-- UploadHandler Handler: +void handleUserData(UserContext, Handler

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客