← 返回博客
2026-08-12 10:19:59

你的电脑在被公司监控吗?程序员自查指南

你的电脑在被公司监控吗?程序员自查指南

2026-08-12 · 标签:安全、程序员、职场、教程、隐私

某个周一早上,你打开公司配发的 MacBook,发现风扇在没跑任何重任务的情况下嗡嗡转。你打开活动监视器,看到一个叫 carbonblack 的进程占了 15% 的 CPU。你搜了一下——是企业端点安全软件,能看你的文件、网络连接、甚至屏幕。

这一刻,你开始想:公司到底能看到什么?

这不是妄想。企业监控在技术行业已经是标配,但大多数程序员对自己电脑上跑了什么、谁在看、看了多少,几乎一无所知。本文从三个层面帮你搞清楚——网络层、端点层、开发工具层——并给出每层的检测方法和可选的应对措施。

阅读提示:本文讨论的是技术层面的检测与个人隐私保护,不鼓励违反公司安全策略。如果你决定采取措施,请先读最后一节的「风险边界」部分。

一、网络层:谁在看你的流量?

你在公司网络里访问的每一个网站、发的每一个请求,理论上都可以被记录。判断网络层是否被监控,最直接的方法是检查代理设置和 DNS 配置。

1.1 系统代理和 PAC 文件

macOS 上打开「系统设置 → 网络 → 高级 → 代理」,Windows 上打开「设置 → 网络和 Internet → 代理」。如果「自动代理配置」指向一个 .pac 文件,或者手动代理填了内网地址,你的 HTTP/HTTPS 流量正在经过公司网关。

PAC 文件本身值得一看——它定义了哪些流量走代理、哪些直连。浏览器地址栏输入 PAC 文件的 URL 下载下来,里面通常能看到公司的代理策略,甚至能发现哪些域名被特殊处理。

# macOS: 查看当前代理配置
scutil --proxy

# 输出中关注:
#   HTTPProxy / HTTPSProxy — 手动代理地址
#   ProxyAutoConfigURLString — PAC 文件地址

1.2 证书:TLS 中间人检测

这是最关键的一项检查。如果公司在你机器上安装了自签名的根证书,他们可以解密你的 HTTPS 流量——你在浏览器里看到的「绿锁」形同虚设。

检测方法:打开浏览器的证书查看器,随便点一个 HTTPS 网站的证书链。如果根证书不是公共 CA(如 DigiCert、Let's Encrypt),而是一个公司内部名称,说明 TLS 被中间人解密的可能性很高。

# macOS: 列出所有系统信任的根证书
security find-certificate -a -c "*.corp" /System/Library/Keychains/SystemRootCertificates.keychain

# 查看是否有可疑的内部 CA
security dump-trust-settings -d | grep -i "corp\|enterprise\|company"

为什么这一项重要:如果是自签证书做中间人,公司能看到 HTTPS 流量的明文内容,包括你在网页上输入的内容、API 请求里的 token 等。Git 操作(通过 HTTPS 协议时)的账号密码也可能被看到。

1.3 DNS 与 VPN

# 检查 DNS 服务器是否被强制指向内部
scutil --dns | grep "nameserver"

# 如果输出是 10.x.x.x、172.16-31.x.x、192.168.x.x,说明用了内部 DNS
# 内部 DNS = 公司知道你解析了哪些域名

VPN 回公司内网是一个更强的信号。你的所有流量都经过公司网关,相当于全程走代理。

# 检查有没有 VPN 类型的网络接口
ifconfig | grep -A 5 "utun\|tun\|tap\|ipsec"

小结:如果你发现了公司自己的根证书 + PAC 代理的组合,意味着你的网络流量在公司网关处是完全透明的。这一层通常不是针对你个人,而是全公司统一的安全策略,但确实是最底层的监控手段。

二、端点层:你电脑上装了什么东西?

网络层监控影响的是流量,端点层直接在你电脑上跑进程。这部分是很多程序员最担心的——它不仅能看你在做什么,还能看你电脑上有什么文件。

2.1 MDM(移动设备管理)配置

如果你拿的是公司配发的设备,它大概率被 MDM 管理。MDM 能做什么?取决于配置,下面是一些常见权限:

# macOS: 检查是否被 MDM 管理
sudo profiles show -type enrollment

# 如果输出里有 MDM 相关条目(含 DEP/ABM 信息),你的设备被企业管理
# 还可以看具体装了哪些配置描述文件
sudo profiles show -all

实际上,大部分公司发的 MacBook 都在设备激活时就注册了 Apple Business Manager,开机联网后自动加上 MDM。这属于「出厂自带」的监控基础设施。

2.2 EDR / AV 进程

EDR(端点检测与响应)是企业安全的核心工具。它不像传统杀毒软件那样只扫病毒——EDR 记录进程创建、网络连接、文件修改、注册表变更等行为,形成一个持续的活动日志。

常见的 EDR 产品包括 CrowdStrike Falcon、Carbon Black、Microsoft Defender for Endpoint、SentinelOne 等。这些进程通常有 root 权限,很难被终止。

检测方法:

# macOS: 列出所有非 Apple 签名的进程
ps aux | grep -v "apple\|/usr/libexec\|/System/" | sort -u

# 重点关注进程名包含这些关键字的:
#   falcon, carbon, sentinel, defender, crowdstrike, tanium, jamf
#   cyber, dlp, dlp, endpoint

# 用 kextstat 看内核扩展(macOS 11+ 逐步被系统扩展替代)
kextstat | grep -v "com.apple"

如果你看到一个叫 falcon-sensor 或者 carbonblack 的进程在跑,那意味着你的进程创建、网络连接、文件操作都在被日志记录。但请注意——这不等于「有人在实时盯着你的屏幕」。大多数 EDR 是在后台自动采集日志,只有在触发告警规则时才有人工介入。

2.3 屏幕监控与键盘记录

这是员工最担心的,但实际上并不像大家想象的那么普遍。合法的企业监控工具(如 Teramind、ActivTrak)确实能做屏幕截图和按键记录,但通常只在特定行业(如客服中心、金融交易台)使用。

检测方法:

# 检查有没有屏幕录制权限被授予
# macOS: 
tccutil dump ScreenCapture

# 检查登录项和启动后台进程
osascript -e 'tell application "System Events" to get the name of every login item'

# 列出 LaunchDaemons 和 LaunchAgents(重点关注第三方路径)
ls -la /Library/LaunchDaemons/ | grep -v "com.apple"
ls -la /Library/LaunchAgents/ | grep -v "com.apple"
ls -la ~/Library/LaunchAgents/

判断原则:如果发现的进程你搜不到公开产品页面、或者进程名看起来像是内部项目名(如 ct-agentmon2),那需要多留意。知名产品通常可以在网上查到功能范围。

2.4 文件系统权限与 DLP

DLP(数据防泄漏)工具会监控文件操作:什么文件被复制到 U 盘、什么文件被邮件附件发送、什么文件被上传到网盘。它们通常以内核扩展或系统扩展的形式运行。

# 查看系统扩展(macOS 11+)
systemextensionsctl list

# 输出中有非 Apple 签名的扩展可能就是安全软件

三、开发工具层:被忽视的监控入口

前面讲的是全公司统一的安全基础设施。但作为程序员,我们用的开发工具本身就是数据源——公司不需要装 EDR,你用的 IDE、浏览器、Git 就能提供大量行为数据。

3.1 IDE 插件遥测

VS Code、JetBrains 系列 IDE 都有插件市场和遥测。如果你安装了公司内部开发的插件(比如内部代码审查工具、强制代码格式化工具),这些插件可以读取你的代码、记录你的 Git 操作、甚至上传文件内容。

检查点:

  1. VS CodeCmd+Shift+X 打开插件列表,逐个看哪些是公司内部开发的。内部插件不受微软商店审核,功能范围完全看开发者怎么写。
  2. JetBrains:Preferences → Plugins,同样关注非公开来源的插件。
  3. 插件权限:VS Code 插件在 package.json 里声明权限,但实际上安装后可以做任何 Node.js 能做的事——读写文件、网络请求、执行 shell 命令。
# 列出 VS Code 已安装插件
code --list-extensions --show-versions

# 非市场来源的插件会显示路径而不是版本号,这些要额外关注

3.2 Git Hooks 与仓库预检

很多团队在项目里配置了 Git hooks(通过 Husky、pre-commit 等工具)。这些 hooks 在 git commitgit push 时自动执行,能做代码格式化、lint、甚至运行自定义脚本。

从监控角度看,值得关注的是:hooks 是否上传了代码片段?是否记录了提交时间分布?是否有超出代码质量检查的行为?

# 查看当前项目的 Git hooks
ls -la .git/hooks/

# 检查 husky 配置
cat .husky/pre-commit 2>/dev/null

3.3 浏览器策略与扩展

如果你用公司管理的 Chrome 或 Edge(用公司账号登录的),管理员可以通过 GPO 或管理控制台推送策略,包括:

检查方法:在 Chrome 地址栏输入 chrome://policy,如果列表非空,说明浏览器被企业管理。

3.4 终端会话记录

部分公司会在跳板机或堡垒机上记录终端会话。如果你 SSH 到服务器前需要先连一个中间主机,那个中间主机可能在录屏。

检测方法:

# 检查当前 shell 是否被 script 命令包裹
ps -o comm= -p $PPID

# 如果输出是 "script" 或 "ttyrec",说明终端被录制

四、理解你发现的东西:合理的底线在哪里?

做完上面三层的检查,你可能会发现一堆进程和配置。关键不是「有没有监控」,而是「监控到了什么程度」。

企业安全基线(正常范围)

大多数科技公司会部署以下措施,这些属于行业标准:

层面常见措施正常/过度
网络PAC 代理 + 公司 DNS正常,用于防病毒和安全过滤
端点EDR(如 CrowdStrike)正常,自动化日志采集,非人工盯屏
端点MDM 管理正常,设备配发标配
开发Git hooks / Lint正常,代码质量控制
网络自签 TLS 证书需要关注——HTTPS 解密意味着明文可见

越过红线的信号

以下情况超出了常规安全管理的范围,属于你应该警惕的:

五、应对:你能做什么?

知道了这些以后,你能采取的措施取决于你的目标和你能接受的风险。我从低风险到高风险排列。

低风险:调整使用习惯

最安全也最实际的方法是用好「公司设备」和「个人设备」的边界:

这些不需要任何技术对抗,纯粹是习惯调整,但对隐私保护的效果最大。

中风险:技术层面隔离

如果你是本地管理员(很多公司给开发人员 admin 权限),有一些额外的控制:

高风险:主动对抗(不推荐)

这类操作可能违反公司安全策略,仅列出供了解,不代表建议:

再次强调:这些操作可能触发 EDR 告警。CrowdStrike 之类的工具对进程注入、hosts 文件修改等行为有专门的检测规则。你试图绕过监控这件事,本身恰好就是监控最容易捕获的行为。

与其对抗,不如搞清楚

如果你真的担心某个具体工具在采集什么,最有效的方法是直接问 IT 或安全团队。在很多公司,安全团队并不排斥回答「这个工具采集哪些数据」——事实上,他们比你更担心隐私合规问题(GDPR、个人信息保护法等)。你可以这样问:

"我注意到我电脑上有 X 软件,想了解一下它采集了哪些类型的数据?采集频率是什么?什么情况下会有人查看这些数据?"

如果对方闪烁其词或不回答,那才是真正需要警惕的信号。

六、一个快速自查脚本

如果你不想逐项手动检查,我写了一个快速自查脚本。它会检查上文提到的主要项目,输出一份报告:

#!/bin/bash
# workplace-monitor-check.sh — 快速自查脚本
echo "===== 代理设置 ====="
scutil --proxy 2>/dev/null | grep -E "HTTP.*Proxy|ProxyAutoConfig"

echo ""
echo "===== MDM 状态 ====="
sudo profiles show -type enrollment 2>/dev/null || echo "无 MDM 或需要 sudo"

echo ""
echo "===== 非 Apple 系统扩展 ====="
systemextensionsctl list 2>/dev/null | grep -v "com.apple"

echo ""
echo "===== 可疑安全进程 ====="
ps aux | grep -iE "falcon|carbon|sentinel|defender|crowdstrike|tanium|jamf|dlp|cyber" | grep -v grep

echo ""
echo "===== 第三方 LaunchDaemons ====="
ls /Library/LaunchDaemons/ 2>/dev/null | grep -v "com.apple"

echo ""
echo "===== 浏览器策略 ====="
# Chrome
defaults read com.google.Chrome 2>/dev/null | head -20
# 你也可以在浏览器里访问 chrome://policy

echo ""
echo "===== VS Code 内部插件 ====="
code --list-extensions --show-versions 2>/dev/null | grep -v "@"

echo ""
echo "===== Git Hooks ====="
ls -la .git/hooks/ 2>/dev/null

echo ""
echo "报告结束。以上每一项的含义请参照正文。"

写在最后

公司的安全软件不是为了针对你——大多数情况下,它甚至不知道「你」是谁,只是在自动采集日志。对安全团队来说,这些日志的主要用途是事后溯源(出了安全事件后回去查),而不是日常监督。

但这不代表你不需要关心。知道监控的边界,才能做出明智的决策:什么可以在公司设备上做、什么要切到个人设备、什么值得和 IT 团队沟通。

如果你读完本文只带走一件事,那就是:打开活动监视器,看一遍你电脑上所有不是自己装的进程,搜一遍它们是什么。 这比任何脚本都管用。