Skip to content

Instantly share code, notes, and snippets.

@banyudu
Created April 1, 2021 09:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save banyudu/686a103e704d16fe2456b0ff276f87da to your computer and use it in GitHub Desktop.
Save banyudu/686a103e704d16fe2456b0ff276f87da to your computer and use it in GitHub Desktop.
软解公司监控

软解公司监控

今年公司强制要求所有人在工作电脑中安装了监控软件,不安装的话就会锁定账号。

最可恨的是这个软件居然还要求开录屏权限,打算监控屏幕吗?

想一想它可能会监控所有键盘输入,所有网络请求,就会浑身不自在。

那有没有什么方式可以破解监控呢?

监控原理(猜测)

image-20210401171154841

具体流程:

  1. 有专门的进程采集行为数据,如键盘操作、屏幕显示。并上报
  2. 有专门的进程采集身份信息,并向后台上报。这些进程不能杀死,因为一旦身份信息没有及时上报,就会引起后台监控平台的报警
  3. 另有一个进程负责更新版本
  4. 多个进程之间互相唤醒

难点

如果直接杀死进程,并卸载相关软件,会因为没有定时上报身份信息,被“老大哥”查出来。

即使它和采集行为的进程是两个相互独立的进程,因为彼此会相互唤醒,杀了个别进程也没用。

思路

我想到了下面几个思路:

  1. 开两个计算机用户,专门新建一个,运行监控软件,后台上传身份信息,另一个正常工作。

    这种方式不可行,因为监控进程以root身份启动,可监控所有用户的操作。

  2. 开虚拟机运行监控软件

    监控运行在虚拟机中,正常工作在宿主机中,有可能不可行,因为mac地址等用来校验身份的信息发生了变化。

  3. Docker,监控软件未提供linux版本,无法运行。

  4. 开两台电脑,一个工作,一个跑监控

    取决于监控实现方式,如果检测的是mac地址是否匹配,就不可行。如果检测的是有没有上报,则可行。

  5. 限制资源

    通过限制资源,使监控软件活在一片缺少算力的荒漠之中,虽然还能存活,但几乎无法正常工作。

目前的方案

目前我采用的是限制资源的方式。

首先找到监控软件对应的进程名,然后使用cpulimit限制其可用的cpu量。当它的cpu被限制到极低的时候,可能发生两种情况:

  1. 因cpu过低,虽然能够正常运行,但是采集数据掉帧严重,只能采取到一些片断的信息。
  2. cpu过低,无法正常工作。进程反复挂掉,又被其它进程重新启动。

两种方式下,都有可能偶发地上传一些身份信息,使“老大哥”不会起疑心。

同时因为可用资源低,掉帧严重的监控信息有可能已经不足为虑。

参考脚本:

#!/bin/sh

# Get cpulimit from https://github.com/opsengine/cpulimit
# or `brew install cpulimit` if you are on macOS

apps=("进程1" "进程2" "进程3" "进程4" "进程5")
# Set the respective limits here
limit=0.1

while true; do
  for app in ${apps[@]}; do
    for pid in $(pgrep ${app}); do
      cpulimit -l ${limit} -p ${pid}
    done
  done
  sleep 60s
done

后续可能的改进方向

  1. 限制网络传输速度
  2. 每隔几分钟杀死所有监控进程,再过几分钟唤醒。
  3. 伪造信息,造成干扰

PS

如果被发现限制了cpu,可以解释为cpu占用过高影响了正常工作。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment