公司配发的 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技术小哥可能过来找麻烦,就此打住吧.
from