软解公司监控
今年公司强制要求所有人在工作电脑中安装了监控软件,不安装的话就会锁定账号。
最可恨的是这个软件居然还要求开录屏权限,打算监控屏幕吗?
想一想它可能会监控所有键盘输入,所有网络请求,就会浑身不自在。
那有没有什么方式可以破解监控呢?
监控原理(猜测)
具体流程:
- 有专门的进程采集行为数据,如键盘操作、屏幕显示。并上报
- 有专门的进程采集身份信息,并向后台上报。这些进程不能杀死,因为一旦身份信息没有及时上报,就会引起后台监控平台的报警
- 另有一个进程负责更新版本
- 多个进程之间互相唤醒
难点
如果直接杀死进程,并卸载相关软件,会因为没有定时上报身份信息,被“老大哥”查出来。
即使它和采集行为的进程是两个相互独立的进程,因为彼此会相互唤醒,杀了个别进程也没用。
思路
我想到了下面几个思路:
-
开两个计算机用户,专门新建一个,运行监控软件,后台上传身份信息,另一个正常工作。
这种方式不可行,因为监控进程以root身份启动,可监控所有用户的操作。
-
开虚拟机运行监控软件
监控运行在虚拟机中,正常工作在宿主机中,有可能不可行,因为mac地址等用来校验身份的信息发生了变化。
-
Docker,监控软件未提供linux版本,无法运行。
-
开两台电脑,一个工作,一个跑监控
取决于监控实现方式,如果检测的是mac地址是否匹配,就不可行。如果检测的是有没有上报,则可行。
-
限制资源
通过限制资源,使监控软件活在一片缺少算力的荒漠之中,虽然还能存活,但几乎无法正常工作。
目前的方案
目前我采用的是限制资源的方式。
首先找到监控软件对应的进程名,然后使用cpulimit限制其可用的cpu量。当它的cpu被限制到极低的时候,可能发生两种情况:
- 因cpu过低,虽然能够正常运行,但是采集数据掉帧严重,只能采取到一些片断的信息。
- cpu过低,无法正常工作。进程反复挂掉,又被其它进程重新启动。
两种方式下,都有可能偶发地上传一些身份信息,使“老大哥”不会起疑心。
同时因为可用资源低,掉帧严重的监控信息有可能已经不足为虑。
参考脚本:
1#!/bin/sh 2 3# Get cpulimit from https://github.com/opsengine/cpulimit 4# or `brew install cpulimit` if you are on macOS 5 6apps=("进程1" "进程2" "进程3" "进程4" "进程5") 7# Set the respective limits here 8limit=0.1 9 10while true; do 11 for app in ${apps[@]}; do 12 for pid in $(pgrep ${app}); do 13 cpulimit -l ${limit} -p ${pid} 14 done 15 done 16 sleep 60s 17done
后续可能的改进方向
- 限制网络传输速度
- 每隔几分钟杀死所有监控进程,再过几分钟唤醒。
- 伪造信息,造成干扰
PS
如果被发现限制了cpu,可以解释为cpu占用过高影响了正常工作。