概述
近日,NetSarang旗下的Xmanager、Xshell、Xftp和Xlpd等在全球流行使用的服务器远程管理软件曝出被多家杀毒软件报毒查杀的情况,经过360科技集团追日团队调查分析确认,NetSarang旗下多款软件的关键模块被植入了高级后门,这是一起入侵感染供应链软件的大规模攻击事件,我们将其命名为“XshellGhost”(xshell幽灵)。
事件时间轴
2017年7月17日,NetSarang公司发布旗下多款产品的新版软件,更新修复多处bug和增强了会话加密能力,用于对抗CIA木马“BothanSpy”的密码劫持功能。
2017年8月7日,NetSarang与卡巴斯基发布联合声明,声称7月18日发现软件存在安全漏洞被攻击。
2017年8月15日,NetSarang与卡巴斯基更新联合声明,发现在香港利用该软件漏洞的案例。
攻击形式
NetSarang系列软件的关键网络通信组件nssock2.dll被植入了恶意代码,厂商在发布软件时并未发现恶意代码,并给感染组件打上了合法的数字签名随新版软件包一起发布,用户机器一旦启动软件,将会加载组件中的恶意代码,将主机的用户信息通过特定DGA(域名生成算法)产生的DNS域名传送至黑客的远程命令控制服务器,同时黑客的服务器会动态下发任意的恶意代码至用户机器执行。
攻击影响面
使用被感染的软件的用户,将会被黑客窃取用户信息,并在云端下发任意的恶意代码进行远程控制,由于该系列软件在国内的程序员和运维开发人员中被广泛使用,多用于管理企事业单位的重要服务器资产,所以黑客极有可能进一步窃取用户所管理的服务器身份验证信息,秘密入侵用户相关的服务器,请相关软件用户和企事业单位提高警惕。
XshellGhost技术分析
“XshellGhost”(xshell幽灵)是一个精密的定向攻击平台,所有的功能模块实现均为shellcode形式,客户端攻击通过感染供应链软件和各个shellcode模块,实现了无自启动项、无落地文件和多种通信协议的远程控制,后门潜伏于受害者电脑等待黑客在云控制平台下发shellcode数据执行,黑客在云端甚至可能通过上传的用户信息进行选择性的定向攻击。
远程控制逻辑分析
XshellGhost的远程控制主要分为5个步骤:
1.软件启动加载被感染组件nssock2.dll,解密shellcode1执行。
2.Shellcode1解密Shellcode2执行如下功能:
a)创建注册表项,上报数据到每月对应的DGA域名当中;
b)通过发往知名的域名解析器当中上传用户信息给攻击者;
c)将接收的数据写入到创建的注册表项当中;
d)通过获取的key1和key2解密Shellcode 3并执行;
3. Shellcode3会创建日志文件并写入信息,启动系统进程Svchost.exe,修改其oep处的代码,并注入shellcode形式的Root模块执行。
4. Root模块的初始化过程中,会加载并初始化Plugins、Config、Install、Online和DNS等功能模块,然后调用函数Install->InstallByCfg以获取配置信息,监控注册表并创建全局互斥体,调用Online-> InitNet;
5. 函数Online-> InitNet会根据其配置初始化网络相关资源,向指定服务地址发送信息,并等待云端动态下发代码进行下一步攻击。
初始加载模块分析
此次攻击的所有模块调度加载实现方式都是通过shellcode形式,采用了模块化的方法进行统一管理。每个Shellcode的入口函数都会根据传入的第2个参数的数值决定将其具体要执行的功能,参数数值和对应的功能列表如下所示:
根据Shellcode编号102、103和104所对应的功能,可以获取每个Shellcode的信息列表:
关键的网络通信模块,除DNS协议通信,此后门还会利用其他5种网络协议进行远程控制。
基础管理模块分析
Root模块是该次攻击的基础管理模块,其它各个模块的功能的展开和运行都依赖于Root模块提供的函数接口列表:
Root模块的初始化逻辑如下图所示:
插件功能模块分析
Plugins模块为其他插件提供接口,包括读写注册表指定字段的加密数据,加载DLL等,以及监控注册表指定字段变化并将其数据解密作为插件加载:
在调用Install模块的InstallByCfg函数时,会调用Plugins模块的MonitorRegLoadShellCode函数。该函数负责监控注册表指定key,如果key值被改变,该函数将会读取注册表中的数据并调用Root模块的LoadAndInsertShellcodeEx函数将其加载。
如果网络控制端下发调用Plugins模块的OpByCmd函数的指令,将会设置其注册表指定key的数据,过后MonitorRegLoadShellCode函数将会监控到key值发生改变,读取注册表数据动态加载下发的Shellcode代码。
C&C配置模块分析
配置模块Config主要负责管理当前机器当中的配置文件以及对应机器的ID:
该模块包含了一个大小最大为0x858的配置数据块,其中配置数据块是从文件中读取的,文件位置是由该模块的第三个函数RandomStr提供
随机串生成的过程跟系统的卷序列号相关,所以在不同的机器上其位置并不相同。但是其有固定的格式,RandomStr均为大写字母:
%ALLUSERSPROFILE%RandomStr RandomStr RandomStr RandomStr
配置信息是加密存储在配置文件中的,通过调用该模块的接口函数,可以获取解密后的配置文件,配置数据块的结构如下:
配置块的头部是一个OffsetTable,其中记录了各项配置串相对于EncryptStringStub的偏移,
目前已知的配置位置:
OffsetTable[8]配置块0x10要注入的进程路径
OffsetTable[0xC]配置块0x18CC URL地址和CC类型
原始串的前2个字节为本串加密的Key,之后通过解密函数解密获取解密后的串,所以解密后的串长度要比原始串的长度少2。经分析还原的解密函数如下:
通过对程序自身的配置文件进行分析:
注入程序路径,加密前的字符:
x1FxE5x3Ax86xF4x31xFFxB8x9Fx64x81x96xAAxC4xB1xF0x02x5ExC5xB1x3ExAFx98x19xF6x00x21x39x20xC5xC4x39
解密后:%windir%system32svchost.exe
CC远程命令控制服务器的 URL,加密前的串:
x7Bx3Cx1Fx9Fx7Ex01xA0x08xF0xF6x1Cx7Fx71x60xBDx63x66x95x7BxE6x62x4CxB3
解密后:dns://www.notped.com
DNS查询地址:
8.8.8.8
8.8.4.4
4.2.2.1
4.2.2.2
代码注入模块分析
主体代码注入模块Install,负责将Root模块代码注入到指定的进程当中,以及调用Online模块的相关初始化工作:
函数InstallByCfg的逻辑如下所示:
功能A:
1、调用Plugins的MonitorRegLoadShellCode函数,创建并监控指定注册表键,读取注册表数据加载shellcode执行;
2、调用Config的RandomStr函数获取字符串,用来创建全局互斥体
a)如果全局互斥体已存且Root的Op数值为3,结束自身进程。
b)调用 Online的 InitNet,初始化网络模块
功能B:
1、调用Plugins的MonitorRegLoadShellCode函数,打开并监控指定注册表键, 读取注册表数据加载shellcode执行;
2、查询Shellcode 106,如果不存在,则休眠1秒继续查询
3、调用Shellcode 106的第2个接口函数
功能C:
1、调用Config的函数GetCfgCon获取配置文件中保存的Pe路径
2、启动Pe,修改Oep处的代码,注入Shellcode Root
a)如果失败,则创建线程调用功能A
b)如果成功,则结束自身
网络通信模块分析
Online模块是本次攻击的网络通信管理模块,在本次攻击事件当中我们已经发现了DNS模块,其它几个网络模块(TCP、HTTP、UDP、HTTPS、SSL)虽然在代码当中有所体现,但是在shellcode当中尚未主动运行,各个网络模块的函数接口及其作用如下表所示:
各个网络模块的功能的展开和运行依赖于Online模块提供的函数接口列表:
InitNet在读取网络代理配置以后每隔1秒调用功能A,如果功能A返回20000,则函数彻底结束,功能A逻辑:
功能B逻辑,用于等待云端下发代码执行:
此次攻击已知使用的通信模块是DNS模块,该后门基于DNS隧道技术进行通信:
该模块发送的数据包有3种类型:
1.初始化数据包,大小为0x18
2.Data数据包,大小0x8+
3.关闭数据包, 大小0x8
其发送函数如下:
在调用DNS模块2号函数返回自定义对象时,其调用了GetAdaptersAddresses获取适配器的DNS
最多收集0x10个DNS,随后在调用该模块第3号函数时,其使用收集到的DNS,合并Config文件中的4个DNS地址,循环往每一个DNS发送查询,等到到任何一个返回数据,或者超时,并记录下第一个返回应答的DNS数据包,以后再次发送的时候,只会给第一个返回应答的DNS发送数据。
在发送数据包时,会将数据嵌套到DNS协议中发送,其中数据会编码成特定的字符串,添加在要配置文件中的CC DNS URL前,实现DNS隧道通讯。
总结
通过技术分析,我们发现“XshellGhost”(xshell幽灵)是一整套复杂的模块化的精密木马病毒,这是一起黑客入侵供应链软件商后进行的有组织有预谋的大规模定向攻击,我们仍将会持续关注此次攻击的进一步发展,建议广大用户使用360安全卫士查杀“XshellGhost”(xshell幽灵)木马病毒和防御供应链软件攻击。
360追日团队(Helios Team)
360 追日团队(Helios Team)是360科技集团下属的高级威胁研究团队,从事APT攻击发现与追踪、互联网安全事件应急响应、黑客产业链挖掘和研究等工作。团队成立于2014年12月,通过整合360公司海量安全大数据,实现了威胁情报快速关联溯源,独家首次发现并追踪了三十余个APT组织及黑客团伙,大大拓宽了国内关于黑客产业的研究视野,填补了国内APT研究的空白,并为大量企业和政府机构提供安全威胁评估及解决方案输出。
已公开APT相关研究成果
联系方式
邮箱:360zhuiri@360.cn
微信公众号:360追日团队
扫描上面二维码关注微信公众号