腾讯反病毒实验室为你揭秘Xshell软件后门技术!

背景:

最近,XShell远程终端工具发现被加入了恶意代码,目前官方就此事也做出了回应,要求使用者尽快下载最新版本。腾讯安全反病毒实验室就此跟进分析,对此次带有后门的XShell工具进行了分析。

技术分析:

概述:

整个恶意过程可以通过下图来展示

整个作恶过程分为3部分,第一部分是被patch的XShell启动后,执行到恶意的shellcode1。shellcode1解密后续数据后,执行该段代码shellcode2。第二部分shellcode2运行后会判断注册表项,如果不存在Data键值,则会收集用户信息,通过DNS 协议传走,并获取云端配置数据写回到注册表。第三部分,如果注册表项中有该键值,则会开始执行后续的恶意行为,通过注册表中的key来解密出shellcode3,最终会创建svchost进程,并盗取主机信息。下面我们就分别介绍一下各个过程。

XShell启动:

Xshell.exe启动后会调用自己的nssock2.dll,在sub_1000c6c0函数出,调用VirtualAlloc申请一段内存后,解密数据赋值到这段内存后,调用并执行。

Shellcode2部分:

Shellcode1解出shellcode2后就去调用执行。shellcode2动态加载获取系统函数后,会调用CoCreateGuid生成一个Guid,这个Guid会在后续上报信息时用到。

随后调用 RegCreateKeyExA 创建 HKEY_LOCAL_MACHINESOFTWARE6094805 注册表项,这里的数字路径是随机产生的。

通过判断此表项中是否存在Data键值,来决定后续流程。

如果不存在则会进行数据上报。数据上报的方式比较独特,通过DGA域名随机算法,每个月产生一个随机域名。

随后会调用getNetWorkParam,getUserName获取计算机名和用户名,并与前面的Guid以及标志位rood拼接成45个字符的上报数据。

在经过两次加密处理,最终将45字符的上报数据加密成90字符。

然后将这个长域名,发往知名的域名解析器,通过域名解析将用户上线信息传到黑客的后台服务器。

随后木马会通过调用recvfrom来接受服务端下发的数据

对接收到的数据进行判断后,便把数据写入到之前的注册表项

HKEY_CURRENT_USERSOFTWARE6094805的Data键中。

写入的数据包括下一步要解密执行shellcode3时用的key1和key2。

shellcode3:

随后发现Data键值存在数据后,便准备调用解密函数来解密执行shellcode3了,这里的a1,a2就是从云端获取到的key1和key2.

解密执行后,运行shellcode3,会创建一个日志文件

C:ProgramDataCCGQWCSHACMOQORUAAAYKK,然后在里面写入以下数据

随后会创建傀儡svchost.exe进程,注入后运行恶意代码。

IOC:

通过每个月的DGA算法,可以获取到一些域名

ribotqtonut.com (2017年7月) nylalobghyhirgh.com (2017年8月) jkvmdmjyfcvkf.com (2017年9月) bafyvoruzgjitwr.com (2017年10月) xmponmzmxkxkh.com (2017年11月) tczafklirkl.com (2017年12月)

SHA256:

462a02a8094e833fd456baf0a6d4e18bb7dab1a9f74d5f163a8334921a4ffde8 696be784c67896b9239a8af0a167add72b1becd3ef98d03e99207a3d5734f6eb 536d7e3bd1c9e1c2fd8438ab75d6c29c921974560b47c71686714d12fb8e9882 c45116a22cf5695b618fcdf1002619e8544ba015d06b2e1dbf47982600c7545f 515d3110498d7b4fdb451ed60bb11cd6835fcff4780cb2b982ffd2740e1347a0

查杀与建议:

1,目前NetSarang公司已经发布公告,如果有运维人员使用了公告中提到的受影响版本,请尽快升级。 2,运维人员发现IOC中列出的域名请求时,请尽快进行排查。 3,已经中毒的电脑,建议查杀后,应尽快修改服务器的密码。


原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

我所理解的RESTful Web API [设计篇]

《我所理解的RESTful Web API [Web标准篇]》Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一...

2366
来自专栏【转载】DRF+Vue+Mysql_生鲜超市系统

十三、首页、商品数量、缓存和限速功能开发

实现这个接口只要在goods/filters/GoodsFilter里面添加一个过滤就可以了

1190
来自专栏开源项目

码云推荐 | Java 持久层工具 jSqlBox

一个支持动态配置、ORM、SQL 重构、跨数据库的 Java 持久层工具。 ? 1jSqlBox 是什么? jSqlBox 是一个微型的、易学易用的、支持简单的...

4847
来自专栏美团技术团队

分布式系统互斥性与幂等性问题的分析与解决

前言 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩...

5324
来自专栏高性能服务器开发

(三)一个服务器程序的架构介绍

本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节。 一、程序运行环境 操作系统:centos 7.0 编译器:gcc/g++ 4.8.3 c...

3636
来自专栏Jackson0714

PHP内核之旅-1.生命周期

3336
来自专栏deed博客

充分利用4G 空间 C8815 修改DATA分区,扩大存储空间,重新分配内置存储空间

1904
来自专栏高性能服务器开发

(三)一个服务器程序的架构介绍

本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节。 一、程序运行环境 操作系统:centos 7.0 编译器:gcc/g++ 4.8.3 c...

3755
来自专栏FreeBuf

Java反序列化漏洞:在受限环境中从漏洞发现到获取反向Shell

Java反序列化漏洞可以说是Java安全的一块心病,近年来更是在安全界“出尽风头”。其实说到Java反序列化的问题,早在2015年年初的在AppSecCali大...

1072
来自专栏JavaEdge

Netty4 实战精华EventLoop 和线程模型(更新中!!!)1 线程模型概述2 EventLoop 接口3 任务调度

简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。 显而易见地,如何以及何时创建线程将对应用程序代码的执行产生显著的...

891

扫码关注云+社区

领取腾讯云代金券