让kali用上EasyConnect

0x01 前情提要

随着疫情反复,今天我在家办公。我需要登一台服务器上配置,但是那个地址只能通过深信服vpn连接,在家办公一天就带了台kali系统的笔记本回来,没带windows的。 

kali上的win10虚拟机我打开了,太卡,而且那个地址没ping通,我退了出来,以为我的vpn没有访问权限(后来知道是禁ping)。

领导声声催促,那个配置虽然简单,但我却连不上服务器。杀伤力不大,侮辱性极强。羞愧难当,我就想着在kali上把深信服的EasyConnect客户端装上。

kali之前也装过EasyConnect,但是登录后闪退,当时没时间处理。后来更新了一下系统,焕然一新,本想着现在再安装可能会有种神奇的力量把这些错误给修复了。重新安装后,发现起都起不来。

我的kali版本:

 

深信服EasyConnect安装包:

http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_01/EasyConnect_x64.deb

我是用root权限安装和启动的EasyConnect的。

0x02 当EasyConnect起不来

访问我们公司的vpn地址,会直接跳转到下载页面:

我是kali linux,就下载适用于Ubuntu等操作系统的这个64位版本。

使用dpkg -i EasyConnect_x64.deb进行安装,没有出现任何报错。打开所有应用程序,搜索关键字”easyconnect”,点击启动。 

它就转啊转,就是起不来,后来就不了了之了。

问题分析:

安装之后EasyConnect会启动一个EasyMonitor服务,查看该服务运行情况:

可以看到运行良好,安装目录在/usr/share/sangfor/EasyConnect/,我们使用:

/usr/share/sangfor/EasyConnect/EasyConnect --enable-transparent-visuals --disable-gpu  来启动EasyConnect,发现失败了,错误信息如下:

(EasyConnect:113285): Pango-ERROR **: 14:59:27.292: Harfbuzz version too old (1.3.1)

就是这个问题导致的起不来,我们需要重构一个EasyConnect的依赖环境。首先从http://rpmfind.net/linux/rpm2html/search.php?query=harfbuzz下载3个rpm包,分别是

harfbuzz-icu-1.8.7-1.fc29.x86_64.rpm

harfbuzz-1.8.7-1.fc29.x86_64.rpm

pango-1.42.4-1.fc29.x86_64.rpm

分别将这3个rpm包解压缩,将解压出来的文件夹lib64中的所有内容复制到一个新文件夹中,重命名为lib,拷贝到/usr/share/sangfor/EasyConnect/下。重新运行上面命令,EasyConnect可以启动。

我已经把EasyConnect.deb安装包和解压的提取的lib目录上传到网盘了,想偷懒的同学后台回复easyconnect领取下载地址。

 

0x02 登陆后闪退

输入vpn地址、账号、密码、短信验证码,点击登录,一切都无比顺畅。登录成功后按道理浏览器会打开资源页面,展示你所拥有的访问资源地址,但是都还没打开资源页面程序就闪退了,果然不讲武德。

EasyConnect有以下依赖项,但是它的deb包中依赖信息没写,所以我们还是先补一下依赖:

apt-get install -y --no-install-recommends --no-install-suggests libgtk2.0-0 libx11-xcb1 libxtst6 libnss3 libasound2 libdbus-glib-1-2 iptables

在bin目录下可以看到一些可执行文件:

EasyMonitor,ECAgent是监听服务,监听客户端的启动,登录,连接和退出的状态

CSClient 是实际的客户端程序

svpnservice 是连接程序,客户端可以启动,但连接不上去就是因为这个程序没有启动

我们继续分析安装目录下的文件,主要用到了两个路径:

1、所有的日志文件在/usr/share/sangfor/EasyConnect/resources/logs路径下

2、调试脚本在/usr/share/sangfor/EasyConnect/resources/shell路径下

shell路径下主要有这几个脚本:

envcheck.sh 环境检查,主要是检查iptables和route是否安装,默认没有输出

sslcheck.sh 检查ssl连接配置文件是否满足,默认没有输出

sslservice.sh 启动svpnservice,重要性已经不言而喻

sslservice.sh相关程序(实际上是/usr/share/sangfor/EasyConnect/resources/bin/中的CSClient和svpnservice)在登录时建立虚拟网络设备tun0,通过该设备能够访问到 vpn。这些程序未运行时,前端登录后/usr/share/sangfor/EasyConnect/resources/logs/ECAgent.log中会不断产生报错:

[2021-01-20 11:37:58][E][12500][ 165][ConnectDomainSock][cms] /usr/share/sangfor/EasyConnect/resources/conf/ECDomainFile domain socket connect failed, errno:111.

[2021-01-20 11:37:58][E][12500][ 114][Register]cms client connect failed.

[2021-01-20 11:37:58][E][12500][ 114][Register]cms client connect failed.

这个错误如果得不到解决,前端程序就会在连接失败一会后自行关闭,在报错期间运行sslservice.sh能够让前端正确连接。如果我们检测到该报错后立刻执行sslservice.sh,就可以解决这个问题,bash脚本如下:

#!/bin/bash
while true
do
  tail -n 0 -f /usr/share/sangfor/EasyConnect/resources/logs/ECAgent.log | grep "\\[Register\\]cms client connect failed" -m 1
  /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh
  sleep 2
done

保存成sanfor.sh,并给执行权限,我们先启动前端:

此时,使用./sanfor.sh &运行上面的脚本,再输入用户名密码登录就不会闪退了。

 

0x04 其他问题

如果提示已经有用户登录,就把EasyConnect和上面脚本的进程都kill,再按照流程起一遍即可。

EasyConnect 的日志存放在/usr/share/sangfor/EasyConnect/resources/logs,部分登录信息存放在/usr/share/sangfor/EasyConnect/resources/conf/easy_connect.json

,该文件由前端创建,保存了登录凭据。/usr/share/sangfor/EasyConnect/resources/conf/目录的权限默认为rwxrwxrwx,但默认情况下easy_connect.json文件创建时权限为rw-r--r--,必要时可改为777权限。

0x03 最后

今天是腊八,过了腊八就是年,提前祝各位朋友新年快乐,身体健康,阖家团圆。

 

长按下方图片关注我们:

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值