【权威发布】360追日团队:Xshellghost技术分析——入侵感染供应链软件的大规模定向攻击
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4280.html
概述
近日,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。经分析还原的解密函数如下:
通过对程序自身的配置文件进行分析:
注入程序路径,加密前的字符:
1
|
\x1F\xE5\x3A\x86\xF4\x31\xFF\xB8\x9F\x64\x81\x96\xAA\xC4\xB1\xF0\x02\x5E\xC5\xB1\x3E\xAF\x98\x19\xF6\x00\x21\x39\x20\xC5\xC4\x39
|
解密后:%windir%\system32\svchost.exe
CC远程命令控制服务器的 URL,加密前的串:
1
|
\x7B\x3C\x1F\x9F\x7E\x01\xA0\x08\xF0\xF6\x1C\x7F\x71\x60\xBD\x63\x66\x95\x7B\xE6\x62\x4C\xB3
|
解密后: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相关研究成果
【权威发布】360追日团队:Xshellghost技术分析——入侵感染供应链软件的大规模定向攻击相关推荐
- ARP病毒攻击技术分析与防御(补充知识)
ARP病毒攻击技术分析与防御 -- ARP病毒攻击技术分析与防御 一.ARP Spoofing攻击原理分析 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议 ...
- 权威发布:《麻省理工科技评论》2020年“全球十大突破性技术”
权威发布:<麻省理工科技评论>2020年"全球十大突破性技术" 今天,<麻省理工科技评论>一年一度的"十大突破性技术"(TR10)榜单如 ...
- 【权威发布】360天眼实验室:Xshell被植入后门代码事件分析报告(完整版)
本文由 安全客 原创发布,如需转载请注明来源及本文地址. 本文地址:http://bobao.360.cn/learning/detail/4278.html 文档信息 事件概要 事件简述 近日,非常 ...
- 权威发布丨2022 中国开源先锋 33 人之心尖上的开源人物
国家政策的扶持,开源在千行百业的应用,有人说开源最好的时代到了: 全球政治经济环境的快速变化,疫情的肆虐,有人说最寒冷的时代到了. 开源社主办的 COSCon'22 中国开源年会上,我们也以「开源站在 ...
- ETH:2018年06月03日《ETH技术及其应用大会》总结(转自CSDN灵钛科技)
个人感悟:V神是94年的,我是早知道的,但,ETH的PoS 开发者Karl Floersch竟然才23岁!!!!!!我是惊呆了!相比V神的腼腆(闲庭信步),Karl是相当幽默和无所畏惧,我天,他真的可 ...
- AMiner权威发布区块链大数据报告(附下载)
背靠密码学.共识机制与博弈论,"区块链"成为2018最炙手可热的讨论点. 互联网之痛,是区块链之幸. 目前,各大巨头都在依靠庞大的日活数据搭建自己的区块链基础,布局上已然体系化:而 ...
- 权威发布丨2021 中国开源先锋 33 人之心尖上的开源人物
| 作者:SegmentFault | 编辑:王玥敏 # 前言 "开源"是 2021 中国技术发展的年度热词,越来越多人关注开源.贡献开源. 在本土,"开源"作 ...
- 权威发布|恭喜 Apache Doris PPMC 陈明雨入选 2021 中国开源先锋 33 人之心尖上的开源人物...
# 前言 "开源"是 2021 中国技术发展的年度热词,越来越多人关注开源.贡献开源. 在本土,"开源"作为国家战略被首次写入国家 "五年规划&quo ...
- 《麻省理工科技评论》发布2019全球十大突破性技术 阿里巴巴成唯一上榜中国公司...
2月28日,美国权威科学杂志<麻省理工科技评论>评选出2019年"全球十大突破性技术".阿里巴巴语音AI技术成功入选,阿里巴巴也是唯一上榜的中国科技公司. <麻省 ...
最新文章
- 【数据分析】Python :视频网站数据清洗整理和结论研究
- Echarts使用笔记
- Qt-Focus事件处理,重写qpushbutton实现背景切换鼠标样式及eventFilter的用法
- bzoj 4736: 温暖会指引我们前行 (LCT 维护最大生成树)
- JUnit ExpectedException规则:超越基础
- linux常用命令 打开文件,【Linux】常用命令 lsof查看打开的文件
- PAT-乙级-1039. 到底买不买(20)
- 最小二乘法、梯度下降法和两者区别
- 11.11 开课二个月零七天(ajax和bootstrp做弹窗)
- python学习笔记--python数据类型
- Geodesic Distance(测地距离)
- Java基础之线程原子量
- android timepicker 设置颜色,android TimePicker 踩过的坑 颜色设置
- php函数-wordwrap,sprintf,ucwords,ucfirst,substr_replace
- 20162328WJH实验五网络编程与安全实验报告
- seo从入门到精通_SEO入门书籍推荐:从入门到精通,新人必看的3本书
- nginx proxy_temp 文件夹权限问题
- python爬虫简单入门级,小白讲说
- [Go实战]简单使用scylladb
- js 跳转到指定位置 高德地图_第三方高德地图Javascript API
热门文章
- 某短视频的X-Gorgon,X-Ladon等加密
- sap怎么删除服务器文件,SAP服务器的文件管理
- java打印星型_初识java java入门知识 基础知识 打印各种星型图形 源代码
- 6.0 深度学习图片常见转换操作
- 微信机器人_微信聊天消息记录拦截分析
- edgewin10无法安装_处理win10无法打开edge怎么解决
- php中运算符的作用,在php中,双反位运算符(~~)(也称为“双颚化符”)的作用是什么?...
- 最新、最全开心网钓鱼外挂下载_开心网001钓鱼外挂
- vue拍照功能PC+手机需要的可以看一下
- 上榜豆瓣2020年度经管榜,让《重来3》带你逃离内卷、摆脱焦虑