皇帝的新装——如何绕过深信服VSP防泄密安全桌面

做项目的时候,总会遇到一些视数据为生命的甲方,各种加密限制,各种网络隔离,与操作系统、其他软件还各种兼容性问题,给工作带来很大不便,比如亿赛通、深信服VSP安全桌面等,在我看来就如皇帝的新装,绕过限制只是分分钟的事情。

深信服VSP安全桌面这个产品在政府部门使用得比较多,属于XP时代的产品吧,用过这么多软件,没见过这么烂的软件,用户体验、兼容性令人嗤之以鼻,当下Windows 10当道,VSP还不支持……

言归正传,因为我的环境很多,各种操作系统,使用VSP过程中总能发现一些“奇怪”现象,比如:

  1. Administrator用户可以同时在本地桌面和安全桌面打开IE等多标签的程序,但User用户则不行;
  2. IE代理有时候无法修改,始终被VSP劫持,导致无法添加例外地址;
  3. 飞鸽、飞信、内网通等多种局域网通讯工具,有时候能从VSP安全桌面里发送消息到本地桌面,但无法传文件;
  4. ……

根据各种迹象,我构想出系统层、网络层、中间人、跳转、中转、提权、软件层、服务层、共享内存等多种绕过限制的模式,并验证了几种方式均成功,花式狂虐VSP。

  1. 系统层,如果你是Windows Server系统,可以多用户登录,在VSP安全桌面里,mstsc远程登录127.0.0.2到另一个用户,剩下的我不多说。如果没有Server系统,破解Windows XP、Windows7-10全系列操作系统变成多用户登录也是很简单的事。
  2. 中转,如果有一台服务器,能在本地桌面和VSP安全桌面同时访问,那么在VSP安全桌面里把数据传输到该服务器,然后本地桌面再从服务器下载。
  3. 网络、软件、服务层,前面不是提到局域网通讯工具能从VSP安全桌面里发送消息到本地桌面么?那可以在安全桌面里启动http、ftp服务提供下载么?答案是不行。但反过来呢?哈哈……在本地桌面搭建FTP等文件服务,在VSP安全桌面里使用FTP客户端连接127.0.0.1即可传文件。熟悉操作系统及网络的同学都知道电脑有个lo网卡,有IPv6地址,出去的网卡只有一个,利用回环或者IPv6隧道的特性绕过VSP的沙盒~
  4. 中间人的方式较为复杂,不推荐,无非就是iptables、3proxy代理、burp等工具做一些DNAT、SNAT,就不多言。乌云上有一篇利用中间人绕过VSP限制的帖子《看我如何利用burp大法绕过深信服SSL VPN访问权限控制》,原文没有了,这里有个暂存的 https://www.secpulse.com/archives/50144.html 网址,但是这个方式太过复杂了,本机环境无法完成,普通用户难以复制。
  5. 提权,VSP可以配置提供下载安全桌面里文件的权限,解决思路是“破解”,有简单的方式能绕过,就不搞这些费心思的事情了。

最容易实现的是方法3,练手写个 python 脚本搭建只能本机连接的匿名 FTP 服务器,在本地桌面运行脚本启动服务后,在 VSP 安全桌面里用 IE 或者资源管理器打开 ftp://127.0.0.1 即可传文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding: gb18030 -*-
#########################################
# Usage: python FtpServer.py
# Author: oicu
# Required: pip install pyftpdlib
#########################################

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

authorizer = DummyAuthorizer()
authorizer.add_anonymous('C:/pub', perm='elradfmwMT')
handler = FTPHandler
handler.authorizer = authorizer
server = FTPServer(('127.0.0.1', 21), handler)
server.serve_forever()