天融信.阿尔法实验室 陈思远
一、事件描述
1.1事件背景:
Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
Xshell开发公司NetSarang发布公告称,2017年8月4日与卡巴斯基工程师发现Xshell软件中存在后门。黑客似乎入侵了相关开发人员的电脑,在源码植入后门,导致官方版本也受到影响。并且由于dll文件已有官方签名,众多杀毒软件依据白名单机制没有报毒。
1.2时间表:
1 2 3 4 5 |
7月21日之前 xshell部分版本已经被植入后门 7月24日 恶意域名注册 8月1日 第二批恶意域名注册 8月4日 官方和卡巴斯基发现后门 8月5日 更新软件修复后门 |
二、恶意代码定位
恶意文件
版本:5.0.0.26
签名时间:2017年7月21日
MD5 值: 22593DB8C877362BEB12396CFEF693B
正常文件
版本:5.0.0.27
签名时间:2017年8月5日
MD5 值: 57F30B1796FDE08655415CFEECC32055
恶意文件版本是被添加后门的版本,正常文件版本是官网最新更新的版本,这里分析下他们的区别。
首先,我们用IDA看一下这2个文件的函数。
正常文件:
恶意文件:
正常文件711个函数,恶意文件713个函数,多了2个函数。下一步尝试找出多出来这 2个函数。我们可以查一下恶意文件新增了哪些函数。函数是按照地址系列排序,所以很容易查找到增加的函数。
经过分析发现,恶意文件一共新增了2个函数。
第1个函数:
如下图:恶意文件第1个函数在正常文件第326函数后面,新增了一个函数,函数地址为1000C6C0。该函数为恶意文件的第327个函数。函数大小0xB8字节,所占空间0xC0字节。
第2个函数:
如下图:恶意文件第2个函数在正常文件第701函数后面,新增了一个函数,函数地址为1000E600。该函数为恶意文件的第703函数。函数大小0x0F字节,所占空间0x0F字节。
第3点不同:
在.rdata中。恶意文件增加地址1000E600。
如下图,上图是正常文件,下图是恶意文件。
三、恶意代码分析
恶意函数1:1000E600 这个函数没有什么有用信息,只是调用函数1000C6C0而已。
恶意函数2:1000C6C0
首先,进入恶意地址00E9E600
跳转00E9C6C0,在00E9C6DE处开启存放shellcode的地址。
以本机为例,开启后空间起始地址为014F0000,大小为1000H.
由代码可知Shellcode的大小为0x0FB44,接下来就是解密过程了。
解密完成,跳向shellcode区域
跳转到shellcode区域,下面有很多花指令以及更多解密过程。
再次解密完毕,跳转到shellcode
开启线程
在本机中,新恶意代码地址是01551911。
开启线程后这个函数就结束了,恶意代码核心函数都在这个新线程里面。
DNS地址分别为:
计算域名采用了dga算法。根据系统的本地时间,每个月都会生成一个域名。
下图列出了2017年1月-2018年7月的域名信息。
之后向DNS服务器发送数据包,后门代码将明感信息传送到远程服务器(包括计算机名称,用户名称等)。
四、修复方案
1 第一时间查看本单位xshell等相关产品的版本信息,如不是最新版本,去官网更新至最新版本。官网地址:http://www.netsarang.com/download/main.html。
2 屏蔽域名列表中的域名,尤其是2017年8月匹配的nylalobghyhirgh.com域名。