背景:
最近,XShell远程终端工具发现被加入了恶意代码,目前官方就此事也做出了回应,要求使用者尽快下载最新版本。腾讯安全反病毒实验室就此跟进分析,对此次带有后门的XShell工具进行了分析。
技术分析:概述:整个恶意过程可以通过下图来展示
整个作恶过程分为3部分,第一部分是被patch的XShell启动后,执行到恶意的shellcode1。shellcode1解密后续数据后,执行该段代码shellcode2。第二部分shellcode2运行后会判断注册表项,如果不存在Data键值,则会收集用户信息,通过DNS协议传走,并获取云端配置数据写回到注册表。第三部分,如果注册表项中有该键值,则会开始执行后续的恶意行为,通过注册表中的key来解密出shellcode3,最终会创建svchost进程,并盗取主机信息。下面我们就分别介绍一下各个过程。
XShell启动:Xshell.exe启动后会调用自己的nssock2.dll,在sub_c6c0函数出,调用VirtualAlloc申请一段内存后,解密数据赋值到这段内存后,调用并执行。
Shellcode2部分:Shellcode1解出shellcode2后就去调用执行。shellcode2动态加载获取系统函数后,会调用CoCreateGuid生成一个Guid,这个Guid会在后续上报信息时用到。
随后调用RegCreateKeyExA创建HKEY_LOCAL_MACHINESOFTWARE注册表项,这里的数字路径是随机产生的。
通过判断此表项中是否存在Data键值,来决定后续流程。
如果不存在则会进行数据上报。数据上报的方式比较独特,通过DGA域名随机算法,每个月产生一个随机域名。
随后会调用getNetWorkParam,getUserName获取计算机名和用户名,并与前面的Guid以及标志位rood拼接成45个字符的上报数据。
在经过两次加密处理,最终将45字符的上报数据加密成90字符。
然后将这个长域名,发往知名的域名解析器,通过域名解析将用户上线信息传到黑客的后台服务器。
随后木马会通过调用recvfrom来接受服务端下发的数据
对接收到的数据进行判断后,便把数据写入到之前的注册表项
HKEY_CURRENT_USERSOFTWARE的Data键中。
写入的数据包括下一步要解密执行shellcode3时用的key1和key2。
shellcode3:随后发现Data键值存在数据后,便准备调用解密函数来解密执行shellcode3了,这里的a1,a2就是从云端获取到的key1和key2.
解密执行后,运行shellcode3,会创建一个日志文件
C:ProgramDataCCGQWCSHACMOQORUAAAYKK,然后在里面写入以下数据
随后会创建傀儡svchost.exe进程,注入后运行恶意代码。
IOC:通过每个月的DGA算法,可以获取到一些域名
ribotqtonut.北京中科白殿疯医院好不好北京专业的白癜风医院