【更新】XshellGhost后门代码详细分析

1,219 阅读7分钟
原文链接: mp.weixin.qq.com

简述

        近日,非常流行的远程终端Xshell被发现被植入了后门代码,用户如果使用了特洛伊化的Xshell工具版本可能导致所敏感信息被泄露到攻击者所控制的机器。 

        Xshell特别是Build 1322在国内的使用面很大,敏感信息的泄露可能导致巨大的安全风险,我们强烈建议用户检查自己所使用的Xshell版本,如发现,建议采取必要的补救措施。

受影响系统

  • Xshell 5.0 Build 1322

  • Xshell 5.0 Build 1325

  • Xmanager Enterprise 5.0 Build 1232

  • Xmanager 5.0 Build 1045

  • Xftp 5.0 Build 1218

  • Xlpd 5.0 Build 1220

技术细节

1.基本流程

        Xshell相关的用于网络通信的组件nssock2.dll被发现存在后门类型的代码,DLL本身有厂商合法的数据签名,但已经被多家安全厂商标记为恶意:

        360威胁情报中心发现其存在加载执行Shellcode的功能:

        调试发现shellcode_1(为了与后面的shellcode区分开来,这里使用shellcode_*来命名)会再解出一段shellcode_2,然后动态加载需要的Windows API,跳转到新的shellcode_2中;而shellcode_2会创建注册表项:HKEY_CURRENT_USER\SOFTWARE\-[0-9]+(后面的数字串随机生成),通过RegQueryValueExA查询该注册表项下”Data”键值来执行不同的功能流程。

功能流程1

        当”Data”的值不存在时,进入上传信息流程,该流程主要为收集和上传主机信息到每月一个的DGA域名,并保存服务器返回的配置信息,步骤如下:

        获取当前系统时间,根据年份和月份按照下面的算法生成一个长度为10-16的字符串,然后将其与”.com”拼接成域名。

        年份-月份和 生成的域名对应关系如下:

    

2017-06

vwrcbohspufip.com

2017-07

ribotqtonut.com

2017-08

nylalobghyhirgh.com

2017-09

jkvmdmjyfcvkf.com

2017-10

bafyvoruzgjitwr.com

2017-11

xmponmzmxkxkh.com

2017-12

tczafklirkl.com

2018-01

vmvahedczyrml.com

2018-02

ryfmzcpuxyf.com

2018-03

notyraxqrctmnir.com

2018-04

fadojcfipgh.com

2018-05

bqnabanejkvmpyb.com

2018-06

xcxmtyvwhonod.com

2018-07

tshylahobob.com

        接着,将前面收集的网络、计算机、用户信息按照特定算法编码成字符串,然后作为上面的域名前缀,构造成查询*. nylalobghyhirgh.com 的DNS TXT的数据包,分别向8,8,8,8 | 8,8,4,4 | 4,2,2,1 | 4,2,2,2 | [cur_dns_server]发送,然后等待服务器返回。

        服务器返回之后(udp)校验数据包,解析之后把数据拷贝到之前传入的参数中,下一步将这些数据写入前面设置的注册表项,也就是HKEY_CURRENT_USER\SOFTWARE\-[0-9]+的Data键中。这些数据应该是作为配置信息存放的,包括功能号,上次活跃时间,解密下一步Shellcode的Key等等。

功能流程2

        当RegQueryValueExA查询到的Data键值存在数据时,则进入后门执行流程,该流程利用配置信息中的Key解密shellcode_3并执行,解密出的shellcode_3主要功能是建立后门。

        解密shellcode_3的算法如下:先取出shellcode2偏移0x3128处的original_key,接着取key的最后一个byte对偏移0x312C处长度为0xD410的加密数据逐字节进行异或解码,每次异或后original_key再与从配置信息中读取的key1、key2进行乘、加运算,如此循环。

original_keykey1

0x340d611e

key1

0xC9BED351

key2

0xA85DA1C9

        解密之后跳转到shellcode_3中,在shellcode_3中还存在3次解密再分配的过程,三次解密加载之后,将写入一个文件C:\ProgramData\YICIO\PMIEYKOS\IYM\XIEUWSOY(红色部分为随机名称),这个文件应该是日志文件。接着会遍历系统进程寻找”winlogon.exe”,然后启动svchost.exe并通过WriteProcessMemory、CreateRemoteThread注入代码,同时进行网络访问,上传当前系统、网络信息,其中用到的C2地址如下,可以确认notped.com是另一个Xshell后门相关的非DGA恶意域名。

2. 代码特点

        样本使用到的技术很多,例如动态加载、花指令、反调试、多层解密、代码注入等,使用的这些技巧大大增加了安全人员分析工作所需要花费的时间,也能有效躲避杀软检测,并使一些分析工具产生异常而无法正常执行恶意代码流程。下面举例说明一下使用到的技巧:

  • 代码中加入了大量的JMP类型花指令,还有一些无效的计算,比如下图中红框中ECX;

  • 在每次获取API地址之后,都会检测API代码第一字节是否等于0xcc,如果等于则结束后续行为,否则继续;

  • Shellcode通过自身的配置信息,通过一个for循环,循环4次。每次根据EDI定位配置信息,通过下面的结构体来获取要拷贝的数据的大小,将所有需要的数据拷贝到申请的内存中。然后解密数据。

3. 关联分析

        8月的域名为 nylalobghyhirgh.com,360威胁情报中心显示此域名为隐私保护状态:

        此域名目前在7月23日被注册,8月3日达到解析量的顶峰,360网络研究院的数据显示解析量巨大,达到800万。

        所有的请求类型为NS记录,也就是说域名极有可能被用来析出数据而不是用于C&C控制,这与前面的分析结论一致。

        而notped.com作为已知的相关恶意域名,我们发现其注册人为Yacboski Curtis,从而找到了一些其他的关联域名,具体见后面的IOC节,由于这些域名并没有找到对应的连接样本,目前只是怀疑,不能确定就是其他的相关恶意域名。

影响

        

        使用了特洛伊化的Xshell的用户极可能导致本机或相关所管理远程系统的敏感信息泄露。

解决方案

        检查目前所使用的Xshell版本是否为受影响版本,如果组织保存有网络访问日志,检查所在网络是否存在对于下节IOC域名的解析记录,如发现,则有内网机器在使用存在后门的Xshell版本。

        目前厂商已经在Xshell Build 1326及以后的版本中处理了这个问题,请升级到最新版本,修改相关系统的用户名口令。

IOC

域名

说明

vwrcbohspufip.com

2017年6月DGA域名

ribotqtonut.com

2017年7月DGA域名

nylalobghyhirgh.com

2017年8月DGA域名

jkvmdmjyfcvkf.com

2017年9月DGA域名

bafyvoruzgjitwr.com

2017年10月DGA域名

xmponmzmxkxkh.com

2017年11月DGA域名

tczafklirkl.com

2017年12月DGA域名

vmvahedczyrml.com

2018年1月DGA域名

ryfmzcpuxyf.com

2018年2月DGA域名

notyraxqrctmnir.com

2018年3月DGA域名

fadojcfipgh.com

2018年4月DGA域名

bqnabanejkvmpyb.com

2018年5月DGA域名

xcxmtyvwhonod.com

2018年6月DGA域名

tshylahobob.com

2018年7月DGA域名

notped.com

C&C域名,注册人Yacboski  Curtis

paniesx.com

同注册人Yacboski Curtis可疑域名

techniciantext.com

同注册人Yacboski Curtis可疑域名

dnsgogle.com

同注册人Yacboski Curtis可疑域名

operatingbox.com

同注册人Yacboski Curtis可疑域名

文件HASH

97363d50a279492fda14cbab53429e75

文件名nssock.dll

18dbc6ea110762acaa05465904dda805

文件名nssock.dll

22593db8c877362beb12396cfef693be

文件名nssock.dll

82e237ac99904def288d3a607aa20c2b

文件名nssock2.dll

3b7b3a5e3767dc91582c95332440957b

文件名nssock2.dll

参考链接

        https://www.netsarang.com/news/security_exploit_in_july_18_2017_build.html