V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fkdog
V2EX  ›  Apple

macos 深信服的 easyconnect 是怎么做到自动提权到 root 的?

  •  
  •   fkdog · 2022-12-02 09:24:40 +08:00 · 7248 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考了这个方法,https://soulike.tech/article/64 使用普通用户执行启动命令,活动监视器里看到进程自动被提权为了 root 。。。 已经删除掉 launchagent 和 lauchdaemon 里相关的项目。

    第 1 条附言  ·  2022-12-02 14:20:19 +08:00
    /Library/LaunchDaemons/com.sangfor.EasyMonitor.plist
    /Library/LaunchAgents/com.sangfor.ECAgentProxy.plist
    /Library/PrivilegedHelperTools
    ~/Library/LaunchAgents/

    这几个目录都已经清理过,且重启。均无效,普通用户执行 /Applications/EasyConnect.app/Contents/Resources/bin/EasyMonitor ,均被提权为 root 。

    使用 chown -R user:staff /Applications/EasyConnect.app , 将所属用户群组其改为普通用户以后,发现不再提权了。。但是提示权限不足无法正常运行。
    第 2 条附言  ·  2022-12-05 11:16:38 +08:00
    折腾了半天 docker 还是放弃了。。。
    但是后边我发现 easymonitor 和 ecagent 在 vpn 链接成功以后其实是可以直接杀掉进程不影响 vpn 本身的。
    正好 venture 可以在设置里配置启动项,链接前开启 sangfor 相关启动项,链接完了再关掉就行了。
    进程里也找不到这两流氓进程。
    36 条回复    2023-08-12 01:12:35 +08:00
    nanjingwuyanzu
        1
    nanjingwuyanzu  
       2022-12-02 09:27:39 +08:00
    关闭了系统保护吧?
    0ZXYDDu796nVCFxq
        2
    0ZXYDDu796nVCFxq  
       2022-12-02 09:37:23 +08:00 via Android
    Linux 下有个权限位叫做 s ,具有这个权限的程序执行会自动获得 root 权限
    比如 passwd 等,允许用户修改自己的密码

    你看这两个程序是不是有类似的权限
    orangie
        3
    orangie  
       2022-12-02 09:56:04 +08:00
    在 Windows 上这玩意会安装系统服务,不知道 mac 上有没有安装某个服务,如果有的话,通过服务启动程序的时候可以提权的吧
    fkdog
        4
    fkdog  
    OP
       2022-12-02 10:09:04 +08:00
    @orangie 相关的启动项都已经删掉了。
    Ben2022
        5
    Ben2022  
       2022-12-02 10:22:34 +08:00 via iPhone
    我都把这货封印在 docker 里面了
    egan0606
        6
    egan0606  
       2022-12-02 10:50:17 +08:00
    刚试了下,的确是的, 一会就回自动重新启动个 进程 且为 root 用户 。 草
    bbbb
        7
    bbbb  
       2022-12-02 11:22:15 +08:00
    是不是安装的时候输入了密码,我观察一些进程,安装的时候给了密码,他们后面就把一些 daemon 添加到管理员权限启动的 lauchdaemon 里了
    root 用户:/Library/LaunchDaemons
    普通管理员用户:~/Library/LaunchAgents
    bbbb
        8
    bbbb  
       2022-12-02 11:25:38 +08:00
    还有:/Library/LaunchAgents
    fkdog
        9
    fkdog  
    OP
       2022-12-02 11:52:59 +08:00
    @bbbb 你说这个我都已经删掉了,然后重启。
    结果一试还是没用。启动用户依然是 root
    systemcall
        10
    systemcall  
       2022-12-02 12:45:16 +08:00
    关闭了 SIP 吗?
    加载驱动的话,提权是很简单的
    xtinput
        11
    xtinput  
       2022-12-02 13:42:02 +08:00
    sudo 提权了,安装的时候要了密码,然后应用可执行文件变成 root 所有了
    fkdog
        12
    fkdog  
    OP
       2022-12-02 13:55:28 +08:00
    @xtinput mac 上普通用户执行 root 所有的命令,会自动提权吗?
    fkdog
        13
    fkdog  
    OP
       2022-12-02 13:55:36 +08:00
    @systemcall 没关闭 sip
    supertan
        14
    supertan  
       2022-12-02 13:58:43 +08:00
    windows 一开还断网呢,除了远程桌面啥也连不了。封印虚拟机
    xtinput
        15
    xtinput  
       2022-12-02 13:59:40 +08:00
    @fkdog 对,sudo 执行就会变成 root 用户,你试试 sudo ping 和直接 ping ,去活动监视器看看
    NotFoundEgg
        16
    NotFoundEgg  
       2022-12-02 14:07:36 +08:00
    可以试试 https://github.com/Hagb/docker-easyconnect 把这个软件开在 docker 里,然后用 clash (增强模式)分流连接
    fkdog
        17
    fkdog  
    OP
       2022-12-02 14:10:50 +08:00
    @xtinput 但是关键是我执行的时候没有带 sudo ,而且也是重新打开过终端没有处于 sudo 免密上下文,执行了还是提权了。。
    fkdog
        18
    fkdog  
    OP
       2022-12-02 14:11:21 +08:00
    @NotFoundEgg 有看过这个,但是 m1 arm 架构能 run 这个镜像吗
    xtinput
        19
    xtinput  
       2022-12-02 14:11:21 +08:00
    @fkdog 会不会是软件记录了密码?
    xtinput
        20
    xtinput  
       2022-12-02 14:12:31 +08:00
    去这个文件夹看看 /Library/PrivilegedHelperTools
    fkdog
        21
    fkdog  
    OP
       2022-12-02 14:14:25 +08:00
    @xtinput 谢谢。去看了下这个目录里也没有。。。
    lcvs
        22
    lcvs  
       2022-12-02 15:26:43 +08:00
    之前用过这玩意,每次用完都 sudo launchctl unload ,用之前 load 下
    yimiaoxiehou
        23
    yimiaoxiehou  
       2022-12-02 17:41:05 +08:00
    用 docker 版吧
    lambdaq
        24
    lambdaq  
       2022-12-02 18:19:57 +08:00
    setuid ?
    NotFoundEgg
        25
    NotFoundEgg  
       2022-12-02 19:15:32 +08:00
    @fkdog 我就是 m1 的 mac 可以自己 build 一下
    ```
    git clone https://github.com/Hagb/docker-easyconnect.git --branch non-amd64
    cd docker-easyconnect
    docker image build -f Dockerfile.fake-hwaddr -t fake-hwaddr .
    docker image build --tag hagb/docker-easyconnect:cli-arm64 -f Dockerfile.cli .
    docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -p 1080:1080 -e EC_VER=7.6.8 -e CLI_OPTS="-d vpnaddress -u 账号 -p 密码" --name easyconnect-cli-arm64 hagb/docker-easyconnect:cli-arm64
    ```
    xtinput
        26
    xtinput  
       2022-12-02 19:34:57 +08:00
    Mac 版 docker 太耗资源了
    wu67
        27
    wu67  
       2022-12-02 20:28:28 +08:00
    安装时输入了密码呀. 幸亏我换了家公司, 不用装 vpn. 直接 git 裸奔.
    f0rger
        28
    f0rger  
       2022-12-02 21:20:04 +08:00 via iPhone
    关注下,我们这边要下 easy 上 atrust 了。好难
    cuqk
        29
    cuqk  
       2022-12-03 01:53:26 +08:00 via iPhone
    如果是安装时候记录了密码,那换一下密码,是不是就不能提权了?楼主可以试试
    wazggcd
        30
    wazggcd  
       2022-12-03 10:06:47 +08:00 via iPhone
    我部署在了腾讯云的 docker 里,然后 MacBook 通过 ssh 端口转发一下,好用
    fkdog
        31
    fkdog  
    OP
       2022-12-03 13:11:49 +08:00
    @NotFoundEgg 这个分支是全 arm 架构的吗?
    yc8332
        32
    yc8332  
       2022-12-03 14:13:21 +08:00
    不是你安装就是运行时给了 root 权限了。基本就是安装的时候给的。不然你可以删掉重装试试
    Hagb
        33
    Hagb  
       2022-12-04 19:22:28 +08:00
    @fkdog 那个 docker 镜像的 non-amd64 分支是用 qemu 模拟运行 x64 的 easyconnect 。

    现在应该可以用深信服官方提供的 arm64 版本,来自 https://bbs.sangfor.com.cn/plugin.php?id=service:download&action=view&fid=100000001552254#/100001638327289/all/0/0 ,虽然是为国产 arm 设备定制的,但是也可以在其他 arm 设备上用(不过还没有命令行版本,得用 vnc 来登录):

    git clone https://github.com/Hagb/docker-easyconnect.git --branch develop
    cd docker-easyconnect
    docker image build -f Dockerfile.build -t hagb/docker-easyconnect:build . # 被后面的构建引用

    # arm64 的 M761-M766R1 ( 7.6.3 )版:

    docker image build \
    --build-arg EC_URL=https://download.sangfor.com.cn/download/product/sslvpn/SSLVPN%E4%BF%A1%E5%88%9B%E5%AE%A2%E6%88%B7%E7%AB%AF/%E7%BB%9F%E4%BF%A1UOS%20%E9%B2%B2%E9%B9%8F%20SSL%20VPN%E5%AE%A2%E6%88%B7%E7%AB%AF.zip \
    --build-arg EC_DEB_PATH=UOS_EasyConnect_arm64.deb \
    --tag hagb/docker-easyconnect -f Dockerfile .

    # arm64 的 M767+( 7.6.7 )版:

    docker image build \
    --build-arg EC_URL=https://download.sangfor.com.cn/download/product/sslvpn/SSLVPN%E4%BF%A1%E5%88%9B%E5%AE%A2%E6%88%B7%E7%AB%AF/%E7%BB%9F%E4%BF%A1UOS%20%E6%B5%B7%E6%80%9D%E9%BA%92%E9%BA%9F990%20SSL%20VPN%E5%AE%A2%E6%88%B7%E7%AB%AF.zip \
    --build-arg EC_DEB_PATH=02-升级包及安装文件 /EasyConnect_UOS_arm64-20220302.deb \
    --tag hagb/docker-easyconnect -f Dockerfile .

    欢迎反馈使用情况(相关 issue 在 https://github.com/Hagb/docker-easyconnect/issues/25 )。此前能用和不能用的报告都有(但是不能用的情况我没有复现)。
    fkdog
        34
    fkdog  
    OP
       2022-12-04 22:46:23 +08:00
    @Hagb 辛苦,感谢!!!
    codingbody
        35
    codingbody  
       2023-08-12 01:07:03 +08:00
    @NotFoundEgg #16 如果在本地部署的话,是把这个服务当作 clash 的一个节点吧(假设是 node A),我这样设置好像有可能会形成环路。
    codingbody
        36
    codingbody  
       2023-08-12 01:12:35 +08:00
    @codingbody #35
    假设规则
    *.example.com -> node A
    a.example.com 会走 node A
    但是 docker 里的 b.example.com 也会走 node A

    即:a.example.com -> docker -> b.example.com -> docker
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:07 · PVG 19:07 · LAX 03:07 · JFK 06:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.