一、4a流程

出入安全审计的目的,很多公司会上4a系统,尤其是国企,所有的用户登陆都会走该系统。而对用户的登陆操作信息也会进行记录和录屏。国内很多4a系统是基于cirtrx xenapp为基础进行二次开的,即用户每登陆一次,都会先从windows主机上调用xenapp 弹出一个虚拟桌面,通过该虚拟桌面调用 ssh 或 ftp客户端,再通过该客户端连接堡垒机或直接连接主机。先看下流程图:

4a
4a

二、安全点

虽然4a系统看似很强健,登陆web系统需要使用手机动态码进行登陆,动态码每5分钟更新一次。不过在登陆后,存在以下绕行点和提权点。

1、web层明文密码

第一个绕行安全点在web系统到xenapp 这一层 。其中在4a支持的客户端类型里,ftp类应用、mstsc远程桌面都存在直接能够获取密码的问题。使用浏览器,打开其网络分析界面,这里比如常用的国内的基于 chrome + IE 双核浏览器,都是F12键 。如下:

4a-web-crack
4a-web-crack

其中password项就是对应的密码,resoureceAccount就是帐号信息。

2、xenapp层越界

这一层在桌面上直接出来的是一个类似于应用窗口的界面,直接可能是看不出是台虚拟桌面的。因为windows的开始栏,任备栏等信息都是隐藏的。不过只需要简单的使用快捷键就可以调用出来,这里列下常用的快捷键。

► SHIFT+F1: Local Task List
► SHIFT+F2: Toggle Title Bar
► SHIFT+F3: Close Remote Application
► CTRL+F1: Displays Windows Security Desktop – Ctrl+Alt+Del
► CTRL+F2: Remote Task List CTRL+F2: Remote Task List
► CTRL+F3: Remote Task Manager – Ctrl+Shift+ESC
► ALT+F2: Cycle through programs ALT+F2: Cycle through programs
► ALT+PLUS: Alt+TAB
► ALT+MINUS: ALT+SHIFT+TAB

具体可以参看:https://www.blackhat.com/presentations/bh-usa-08/Gupta/BH_US_08_Gupta_Got_Citrix_Hack_IT.pdf

进入该虚拟桌面和直接使用mstsc进入该服务器的桌面是没有区别的。这里可以查看所有相关的文件、配置和程序。比如金库ws调用服务信息、审计系统、是否录屏、自动代填地址等。

boco-xenapp
boco-xenapp

这里以其中的最安全的ssh登陆为例吧。具体调用信息如下(只选取部分日志):

1【04-08 16:14:59】/> [70520`CCmdApp]  <App.Start var="pid" appName="$fileName" appPath="$filePath" param="*param"/>
2【04-08 16:14:59】/> [70520`CCmdApp]  param: $fileName = SecureCRT.exe
3【04-08 16:14:59】/> [70520`CCmdApp]  param: $filePath = D:\crt\SecureCRT_V6.6.1_CN\
4【04-08 16:14:59】/> [70520`CCmdApp]  param: *param = /n temp
5【04-08 16:14:59】/> [70520`CCmdApp]  CreateProcess: cmdLine: D:\crt\SecureCRT_V6.6.1_CN\SecureCRT.exe /n temp
6…………
7【04-08 16:14:59】/> [29544`CIamPortal]   filldata:<?xml version="1.0" encoding="UTF-8"?><response><head><responseTime>2019-04-08 16:15:57</responseTime><method>findFillagentMessageReturn</method></head><body><result>1</result><fillagentParamsId>ff80808168eeecd20169fc0361850ad1</fillagentParamsId><userId>3chengyq</userId><fillagentParams><F><userName><![CDATA[3chengyq]]></userName><port>8022</port><password><![CDATA[961523462]]></password><ip>10.212.41.108</ip><showIp>hfbdNN[10.211.191.140]</showIp><prot>ssh</prot><userId><![CDATA[3chengyq]]></userId><ss></ss><si></si><tsi></tsi><sn></sn></F></fillagentParams><message>???</message></body></response>

上面就调用了位于D盘的securecrt程序登陆堡垒机,这里代填内容会使用base64进行加解密。其中961523462()为动态码,这点是和前台web界面抓取的结果是相同的。从测试结果来看,该动态码为一次性密码,下次使用就会重新生成。该动态码是登陆堡垒机用的。堡垒机是通linux主机。登陆该堡垒机后,再调用具体的主机用户名,密码通过自动代填登陆相应的主机。

3、堡垒机提权

通过堡垒机登陆对应的主机上后,在相应的主机上操作完成后,通过logout是会退出堡垒机这一层的。这一次并未做任何受限shell 配置,通过该普通用户,可以查看其自动登陆目标机的程序位于/opt下,很多配置也是可以直接查看的。而且查看系统版本等信息发现,可以很容易的进行提权操作。提权到root后,这台主机上我相信应该秘密就不多了。

线上使用的这套4a系统已经多年,该问题实际上也已经存在多年,虽然中间维护厂家几经更新,不过其中的安全问题一直存在。最近由于要切掉该系统,这里记录一笔吧!