360深度揭秘Xshell后门事件:入侵感染供应链软件的大规模定向攻击

释放双眼,带上耳机,听听看~!
360深度揭秘Xshell后门事件:入侵感染供应链软件的大规模定向攻击概述近日,NetSarang旗下的Xmanager、Xshell、Xftp和Xlpd等在全球流行使用的服务器远程管理软件曝出被多家杀毒软件报毒查杀的情况,经过360科技集团追日团队调查分析确认,NetSarang旗下多款软件的关键

360深度揭秘Xshell后门事件:入侵感染供应链软件的大规模定向攻击

概述

近日,NetSarang旗下的XmanagerXshellXftpXlpd等在全球流行使用的服务器远程管理软件曝出被多家杀毒软件报毒查杀的情况,经过360科技集团追日团队调查分析确认,NetSarang旗下多款软件的关键模块被植入了高级后门,这是一起入侵感染供应链软件的大规模攻击事件,我们将其命名为“XshellGhost”(xshell幽灵)。

 

事件时间轴

2017717日,NetSarang公司发布旗下多款产品的新版软件,更新修复多处bug和增强了会话加密能力,用于对抗CIA木马“BothanSpy”的密码劫持功能。

 

201787日,NetSarang与卡巴斯基发布联合声明,声称718日发现软件存在安全漏洞被攻击。

 

2017815日,NetSarang与卡巴斯基更新联合声明,发现在香港利用该软件漏洞的案例。

 

                                              1.png

1

攻击形式

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)       通过获取的key1key2解密Shellcode 3并执行;

3.  Shellcode3会创建日志文件并写入信息,启动系统进程Svchost.exe,修改其oep处的代码,并注入shellcode形式的Root模块执行。

4.  Root模块的初始化过程中,会加载并初始化PluginsConfigInstallOnlineDNS等功能模块,然后调用函数Install->InstallByCfg以获取配置信息,监控注册表并创建全局互斥体,调用Online-> InitNet

5. 函数Online-> InitNet会根据其配置初始化网络相关资源,向指定服务地址发送信息,并等待云端动态下发代码进行下一步攻击。

 

2.png

2

初始加载模块分析

此次攻击的所有模块调度加载实现方式都是通过shellcode形式,采用了模块化的方法进行统一管理。每个Shellcode的入口函数都会根据传入的第2个参数的数值决定将其具体要执行的功能,参数数值和对应的功能列表如下所示:

 

编号

作用

1

初始化shellcode自身的相关信息

100

相关初始化,获取shellcode Root的功能列表

101

释放shellcode申请的资源

102

获取shellcodeID

103

获取shellcode的名称

104

获取shellcode的函数列表接口

 

根据Shellcode编号102103104所对应的功能,可以获取每个Shellcode的信息列表:

 

ID

名称

状态

100

Root

已知

101

Plugins

已知

102

Config

已知

103

Install

已知

104

Online

已知

 

关键的网络通信模块,除DNS协议通信,此后门还会利用其他5种网络协议进行远程控制。

ID

名称

状态

200

TCP

未知

201

HTTP

未知

202

UDP

未知

203

DNS

已知

204

HTTPS

未知

205

SSL

未知

 

 

基础管理模块分析

Root模块是该次攻击的基础管理模块,其它各个模块的功能的展开和运行都依赖于Root模块提供的函数接口列表:

 

ID

名称

作用

1

空指针

2

InsertShellcodeInfo

获取shellcode的信息,保存在全局shellcode信息链表当中

3

ShellCodeQueryIncRef

通过shellcode的地址在全局信息链表中查询对应的信息指针,并增加引用

4

ShellCodeQueryIncRef

通过shellcodeID在全局信息链表中查询对应的信息指针,并增加引用

5

ShellCodeQueryDecRef

减少shellcode信息指针的引用计数。
 
如果引用计数为0,则创建线程,调用该shellcode101功能,释放资源。然后释放shellcode

6

ShellCodeQueryDecRef

先判断shellcode的结构成员(0x18 0x1c)。如果都为0,则减少引用计数

7

ShellCodeGetName

获取该shellcode的名称

8

EnterCriSec

进入全局信息链表的临界区

9

LeaveCriSec

离开全局信息链表的临界区

10

GetLastShellcodeInfo

获取最后一个被插入到全局链表的shellcode的信息

11

GetNextShellcodeInfo

获取当前shellcode所指向的下一个shellcode指针

12

LoadDll

调用LoadDllEx

13

LoadDllEx

Shellcodedll文件的形式存在,加载对应的dll文件,并将Shellcode对应的信息保存到全局shellcode信息链表中

14

LoadAndInsertShellcode

调用LoadAndInsertShellcodeEx

15

LoadAndInsertShellcodeEx

加载转换后的shellcode,依次调用其功能号1100102104,然后将信息添加到全局shellcode信息链表中

16

LoadShellcode

加载shellcode,并调用其功能号1

17

InjectShellcode

调用InjectShellcodeEx,第3个参数为0

18

InjectShellcodeEx

注入到指定的进程句柄当中,根据第3个参数决定启动该shellcode的方式:

      0:更改进程oep处的代码跳转到加载处

      1:直接远程线程启动shellcode的加载代码

19

TransDataInternal

根据传入的键值转换数据的编码格式

20

TransDataInternal

根据传入的键值转换数据的编码格式

21

Malloc

申请空间

22

TransDataByTime

根据当前时间转换数据的编码格式

23

TransDataEx

根据数据头转换数据的编码格式,并返回转换后的数据的相关信息

给TA买糖
共{{data.count}}人
人已赞赏
HackerNews

CTFcrackTools-V3 – 一款旨在帮助 CTFer 在 CTF 中发挥作用的一个框架

2017-8-22 4:28:50

HackerNews

教你如何快速关闭危险端口

2017-8-23 3:16:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索