公司配发的 Macbook 安装了一些监控软件,毕竟是办公设备,这点倒是无可厚非。但是,其中的 Forcepoint DLP Endpoint
会向日常使用的主力浏览器 Chrome 中安装一个 WebsenEndpoint
的扩展插件。
这个插件的作用不必多说,但是有一个副作用就是让 Chrome 无法自动填写任何网站用户名密码。每天要输入上百次的密码这种体力活是绝对不能忍受的。于是尝试卸载这个插件。但是这个插件是使用企业策略 (Installed by enterprise policy) 强制安装,无法在Chrome中下载。但是可以通过将与之关联的 Profile 删除实现卸载的作用:
但是过两天,Forcepoint 又会把这个插件装回来? 不过没关系,我们有的是办法。
方法一:通过占用 Chrome 插件文件位置,防止真正插件重新装回
原理是这样的:Chrome 的插件安装在 ~/Library/Application Support/Google/Chrome/Default/Extensions
目录下:
除去 Temp
, 每个文件夹对应一个插件。我们希望移除的插件的文件夹名称是 kmofofmjgmakbbmngpgmehldlaaafnjn
。由于 macOS 文件夹下,相同名称的文件和文件夹只能存在一个。因此,我们只需要在插件删除以后,在这个目录下新建一个名称为 kmofofmjgmakbbmngpgmehldlaaafnjn
的空文件:
1 2 3 4 |
cd ~/Library/Application\ Support/Google/Chrome/Default/Extensions touch kmofofmjgmakbbmngpgmehldlaaafnjn chmod 000 kmofofmjgmakbbmngpgmehldlaaafnjn |
然后,再通过文件系统的 Lock
功能锁定改文件,防止该文件被 Forcpoint 删除:
至此,大功告成,so easy!
方法二:修改 Forcepoint DLP Endpoint
插件安装脚本,禁止强奸 Chrome
法一虽然可以防止Chrome被重新安装插件,但是过几天以后,你会在你的 Profiles
配置下发现,虽然 Chrome 插件安装失败了,但是依然会成功安装这个 Profile
:
虽然不会干扰系统的任何功能,但是估计很多强迫症患者看到这个还是挺难受的……从图中我们可以看到,这个插件的路径在 /Library/Application Support/Websense Endpoint/DLP
:
其中 setup_chrome_ext.sh
就是强插 Chrome 的脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/bin/bash CUT="/usr/bin/cut" LSOF="/usr/sbin/lsof" PS="/bin/ps" PROFILES="/usr/bin/profiles" GREP="/usr/bin/grep" PIDS=`$PS -axc -o pid,command | $GREP "Google Chrome" | $GREP -v "Google Chrome Helper" | $CUT -c 1-5` LIBWEP_HOOKED=0 if [ ${#PIDS[@]} -gt 0 ] then for pid in $PIDS do CNT=`lsof -P -T -p $pid | grep libwep_chrome.dylib | wc -l` if [ $CNT == 1 ] then LIBWEP_HOOKED=1 fi done fi if [ $LIBWEP_HOOKED == 1 ] then echo "Configuring the chrome extension profile..." $PROFILES -I -F "/Library/Application Support/Websense Endpoint/DLP/WebsenseEndpointExtension.config" fi |
脚本写得简单粗暴:通过 $PROFILES -I -F "/Library/Application Support/Websense Endpoint/DLP/WebsenseEndpointExtension.config"
向系统强行安装 profile. 要防止其安装插件,把这行代码删除即可。但是,这个文件是属于 admin
用户组的,我们平时使用的账号,即使集合 sudo
也只是 wheel
用户组,是干不过 admin
的,导致我们无法在正常模式下编辑该文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
╭─liudanking@Daniel-rMBP.local /Library/Application Support/Websense Endpoint/DLP ‹ruby-2.3.1› ╰─➤ ll total 8800 drwxr-xr-x 2 root admin 68B Aug 17 08:43 Contained File -rw-r--r-- 1 root admin 2.9M Oct 20 10:39 DLPClient.log -rw-r--r-- 1 root admin 988B Oct 20 22:22 DLPClient.plist -rw-r--r-- 1 root admin 13K Oct 18 17:50 DLPClientConfig.hsw -rw-r--r-- 1 root admin 412B Jun 5 05:52 DLPClientConfig.hsw.default -rwxr-xr-x 1 root admin 112K Jun 5 05:51 DLPHelperService drwxr-xr-x 3 root admin 102B Aug 13 16:14 Websense Endpoint Helper.app drwxr-xr-x 3 root wheel 102B Jun 5 05:52 WebsenseEndpointDLP.kext -rw-r--r-- 1 root admin 1.5K Oct 18 17:50 WebsenseEndpointExtension.config -rw-r--r-- 1 root admin 11K Jun 5 05:51 WebsenseEndpointExtension.crx srwxrwxrwx 1 liudanking admin 0B Sep 25 16:31 cmdsrvdh.sock.501 srwxrwxrwx 1 dan admin 0B Aug 10 11:10 cmdsrvdh.sock.502 srwxrwxrwx 1 root admin 0B Sep 20 09:28 dlpcmd.sock -rw-r--r-- 1 root admin 12K Oct 18 17:50 dser_msg_template.xml -rw-r--r-- 1 root admin 84B May 31 17:19 enable_cext -rwxr-xr-x 1 root admin 137K Jun 5 05:52 libCodeSignFlag.dylib srwxrwxrwx 1 liudanking admin 0B Sep 25 16:31 promptsrv.sock.501 srwxrwxrwx 1 dan admin 0B Aug 10 11:10 promptsrv.sock.502 -rwxr-xr-x 1 root wheel 650B Jun 5 05:51 setup_chrome_ext.sh -rw-r--r-- 1 root admin 322B Jun 5 05:51 update.xml -rwxr-xr-x 1 root admin 1.0M Jun 5 05:51 wsdlpd -rw-r--r-- 1 root admin 17K Jun 5 05:51 {c748f1fa-f022-428c-9276-8dff4b830d33}.xpi |
因此,我们需要通过 Command (⌘)-R
重启到恢复模式,然后在 /Volumes/mac.os/Library/Application Support/Websense Endpoint/DLP
目录下,将对应代码删除即可。
至此,自己基本满意了?
后记
稍微浏览了一下 /Library/Application Support/Websense Endpoint
文件夹,发现其实这个软件不仅强插 Chrome, 还会强插 FireFox:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
─liudanking@Daniel-rMBP.local /Library/Application Support/Websense Endpoint ‹ruby-2.3.1› ╰─➤ sudo cat ff_config.sh Password: #!/bin/bash TARGETDIR=/Library/Application\ Support/Websense\ Endpoint FIREFOX_DEFAULT_PATH=/Applications/Firefox.app/Contents/Resources FIREFOX_APP_PATH=/Applications/Firefox.app/Contents/MacOS/firefox FIREFOX_WEBEX_PATH=/Applications/Firefox.app/Contents/Resources/browser/extensions FP_FFCFG=fp_firefox.cfg FP_LSET=local-settings.js FP_WEBEX_XPI={c748f1fa-f022-428c-9276-8dff4b830d33}.xpi DLP_PATH=/Library/Application\ Support/Websense\ Endpoint/DLP PXY_PATH=/Library/Application\ Support/Websense\ Endpoint/Proxy if [ -d "$DLP_PATH" ] then DLP_IS_INSTALLED=1 else DLP_IS_INSTALLED=0 fi if [ -d "$PXY_PATH" ] then PROXY_IS_INSTALLED=1 else PROXY_IS_INSTALLED=0 fi CMD=$1 START_ALL=0 STOP_ALL=0 if [ $CMD -eq "1" ] then START_ALL=1 fi if [ $CMD -eq "2" ] then STOP_ALL=1 fi ############################################################################# # Do start stuff ############################################################################# # Determine whether or not Forcepoint Firefox CFG file (fp_firefox.cfg) is installed if [ -d "$FIREFOX_DEFAULT_PATH" -a -f "$FIREFOX_APP_PATH" ] then FIREFOX_WAS_INSTALLED=1 else FIREFOX_WAS_INSTALLED=0 fi if [ $FIREFOX_WAS_INSTALLED -eq 1 ] then # If starting Proxy or DLP and neither is installed, erase ff cfg file and start it anew if [ $START_ALL -eq 1 ] then rm -rf "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" if [ $PROXY_IS_INSTALLED -eq 1 ] then echo "//" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "lockPref(\"network.proxy.type\", 2);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "lockPref(\"network.captive-portal-service.enabled\", false);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" fi if [ $DLP_IS_INSTALLED -eq 1 ] then echo "//" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "defaultPref(\"extensions.autoDisableScopes\", 0);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "defaultPref(\"extensions.enabledScopes\", 15);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" mkdir -p "$FIREFOX_WEBEX_PATH" cp -f "$DLP_PATH/$FP_WEBEX_XPI" "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" chmod 644 "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" else # Remove Firefox .xpi file rm -rf "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" rm -rf "$DLP_PATH/*.xpi" fi if [ $PROXY_IS_INSTALLED -eq 1 -o $DLP_IS_INSTALLED -eq 1 ] then cp -f "$TARGETDIR/$FP_LSET" "$FIREFOX_DEFAULT_PATH/defaults/pref" chmod 644 "$FIREFOX_DEFAULT_PATH/defaults/pref/$FP_LSET" fi fi if [ $STOP_ALL -eq 1 ] then rm -rf "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" rm -rf "$FIREFOX_DEFAULT_PATH/defaults/pref/$FP_LSET" rm -rf "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" fi fi |
艾玛……proxy…吓死宝宝了,已经不想改脚本了。直接在恢复模式下删除文件,然后用方法一的方法,建了一个 Lock
文件锁定这个位置。什么,还有 upgrade.sh
? 你怎么不上天呢,也一并删除了……突然想起,自己在无所不能的恢复模式下,要不整个软件一起删除了?想到隔天IT技术小哥可能过来找麻烦,就此打住吧?