一、概述
日前,火绒安全团队通过"火绒威胁情报系统"发现蠕虫病毒"Worm/Sharp"正在全网传播,其中在政府、企业、学校、医院等单位的局域网具有非常强的传播能力。该病毒通过"永恒之蓝"漏洞、多个电脑常用端口传播,入侵电脑后,会横向攻击局域网内所有电脑,同时还会在用户电脑中留下后门病毒,用以执行更多恶意攻击,如勒索病毒、挖矿病毒。
火绒工程师通过技术分析发现,该蠕虫病毒会通过远程服务器和自身爬虫功能收集局域网内的IP列表,然后对其中的多个服务端口发起攻击,包括RPC服务(135端口)、SQLServer服务(1433端口)、FTP服务(21端口),同时还会通过 "永恒之蓝"漏洞,入侵445端口,攻击电脑。
由于该病毒针对企业不便关闭的多个常用端口进行攻击,并且利用了局域网电脑中普遍未修复的"永恒之蓝"漏洞,一旦任何一台电脑被该病毒感染,将意味着局域网内所有电脑都面临被感染的风险,尤其给政企机构用户造成极大威胁。
如果病毒成功入侵或攻击端口,就会从远程服务器下载病毒代码,进而横向传播给局域网内其他电脑。同时,该病毒还会在被感染电脑中留下后门病毒,以准备进行后续的恶意攻击,不排除未来会向用户电脑传播更具威胁性病毒的可能性,例如勒索病毒等。
火绒工程师通过技术溯源发现,从2017年06月23日(甚至更早) 至今,该黑客组织一直使用该系列蠕虫在全网进行大规模的信息收集。且一直保持对病毒的更新。
二、详细分析
今年上半年,"火绒终端威胁情报系统"检测到Worm/Sharp变种在肆意传播,Worm/Sharp或将卷土重来。该变种通过与C&C服务器进行通讯以及内置的爬虫功能获取目标的IP地址及端口,对RPC服务(135端口)、SQLServer服务(1433端口)、FTP服务(21端口)进行爆破,使用永恒之蓝漏洞对445端口进行入侵,如果入侵或爆破成功则执行脚本从C&C服务器上下载初始样本,初始样本经过多重释放,最终运行Worm/Sharp蠕虫。除此之外还会判断目标IP是否为代理服务器,以及对从C&C服务器获取的路由器IP地址列表发起TCP连接以判断7547端口的连通性,为下一步的攻击做准备。
初始样本执行流程,如下图所示:
初始样本执行流程
原始样本(A22.exe)是经过PECompact加壳过的,在运行过程中会释放lib32Waxe.exe,lib32Waxe.exe带有混淆器在内存中会解压缩.Net恶意代码,并通过调用ComCallPreStub来执行这段.Net恶意代码,之后进入Worm/Sharp核心代码,Worm/Sharp有两大核心功能。核心功能,如下图所示:
病毒核心功能
初始样本(A22.exe)由VB编写并且加了PECompact壳,在执行过程中会释放lib32waxe.exe,并创建服务WaxeSvc,主流程执行完后会启动自删除进程。初始样本主流程,如下图所示:
初始样本执行流程
lib32Waxe.exe带有混淆器在执行过程中解压缩 Worm/Sharp蠕虫代码。载入二进制资源代码,如下图所示:
载入资源
载入的二进制资源经过zlib压缩,zlib版本为1.2.3。解压后可以获得.Net恶意代码。解压缩代码,如下图所示:
解压缩代码
在最后使用CLR API 实现在C++中运行.Net恶意代码,调用Clr.dll中未公开的函数ComCallPreStub运行Worm/Sharp蠕虫。 调用ComCallPreStub函数相关代码,如下图所示:
启动蠕虫代码
该蠕虫分为获取被攻击的IP列表和入侵攻击两部分功能,两部分功能相互协作,不分先后,且两部分功能中的每一个操作均为一个独立线程。
(一)获取被攻击的IP列表
1.爬虫功能
该蠕虫内置了爬虫功能,可以根据随机字符串搜索、关键字搜索、与C&C服务器通讯和Weblogs搜索来扩充自己的IP列表,为入侵攻击功能提供数量庞大的主机列表。
1.1通过搜索引擎搜索随机字符串
该线程会维持一个list列表,当列表中的数量小于等于200时,调用Random_Sting_1函数随机生成字符串,并作为GetList_FromYahooAndBing方法的参数,在Yahoo和Bing 搜索引擎中进行搜索。筛选出符合要求的,进行正则过滤,正则代码如下[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\:[0-9]{1,5}。
在List_Filter方法中会根据端口号对list中的目标主机进行分类,为入侵攻击功能提供攻击目标。
函数逻辑,如下图所示:
搜索随机字符串
1.2通过搜索引擎搜索关键字扩充FTP列表
函数逻辑,如下图所示:
ExpandFTPList()函数逻辑
在GetIPList_keyWordString_FromBingAndYahoo方法中定义了一个数组array,如下图所示:
用于拼接的字符串数据
拼接了两个字符串
String a = "domain:"+array[Random(array.Length)]+Random(10000).ToString
String b = "site::"+array[Random(array.Length)]+Random(10000).ToString
使用Bing搜索字符串a,添加符合要求的IP保存到list
使用雅虎搜索字符串b,添加符合要求的IP保存到list
UseIPList_FromBing回调使用Bing搜索"ip:"+list列表中的地址,筛选21端口的IP地址,调用AddFTPList回调将筛选后的IP加入FTP爆破的List中,用于入侵攻击功能进行攻击。
1.3通过与C&C通讯更新相应的列表
Route_TCP_Connect函数从C&C服务器(hxxp://tz.gxout.com/ip/route_tcp.aspx)获取DES加密后的路由IP地址列表,DES解密的key=" 20110520",IV={32,17,5,32,33,1,88,72}。解密之后发起TCP连接,判断7547端口是否存活,如果存活则添加到相应的List中。
TCP_Connect函数与上述类似,只是请求的地址有所不同,通讯地址为 (hxxp://tz.gxout.com/ip/tcp.aspx),主要筛选135、445、1433端口的IP地址。整体逻辑,如下图所示:
与C&C服务器通讯逻辑
1.4通过weblogs.com搜集信息扩充1433端口IP列表
蠕虫会从http://rpc.weblogs.com/shortChanges.xml下载shortChanges.xml,对xml文件进行解析。调用GetWeblogList_AfterFilter函数过滤Xml的内容,调用GetUrl_FromList将WeblogList中的URL提取出来,调用UrlListFilter过滤以.xml、.rss、.pdf、.gz、和.doc结尾的URL。调用StringManipulationAndAddList函数筛选端口为1433的IP地址,添加到1433爆破的List中。整体逻辑,如下图所示:
Weblogs搜集信息逻辑
2.执行远程恶意代码
通过访问黑客的C&C服务器(ftp:// in.siolio.com),下载FTP上的exe并执行。该功能可以作为一个后门功能,便于后续攻击的展开。相关代码,如下图所示:
下载可执行文件并执行
FTP账号及密码,如下图所示:
FTP账号密码
3.修改注册表关闭TCP/IP的连接数限制。
修改注册表,如下图所示:
修改连接数限制
(二)入侵攻击功能
蠕虫会通过与C&C服务器(hxxp://api.gxout.com/ip/google.aspx)进行通讯获取加密后的IP列表,解密过滤后,加入相应的List中。入侵攻击功能分为以下6个部分:FTP爆破、135端口爆破、445端口入侵、1433端口爆破、7547端口回连、代理服务器检测,并且当断网的情况下,会自动遍历内网IP对内网的其他服务器进行爆破和漏洞攻击。功能线程,如下图所示:
功能线程
1.FTP爆破
获取被攻击的IP列表功能中已经对FTP的列表进行了扩充,所以在入侵攻击功能中直接开始爆破,内置的字典(部分),如下图所示:
登录信息字典
如果爆破成功则向目标IP上传测试文件,对上传路径进行Http请求,删除上传的文件,比较内容,相同则返回全路径,之后将网站的域名(ip地址)+ftp用户名+ftp密码+上传文件的完整路径进行URL编码发送到C&C服务器(hxxp://tz.gxout.com/ftp/set.aspx)上。程序流程,如下图所示:
测试和发送流程
2.135端口爆破
使用的账号为Administrator,密码字典,如下图所示:
密码字典
爆破成功之后,会在目标服务器生成批处理文件并执行最终执行的批处理,如下图所示:
批处理内容
3.445端口入侵
该蠕虫除了爆破功能之外还会通过漏洞进行入侵,使用永恒之蓝对服务器进行攻击。 部分Payload,如下图所示:
永恒之蓝Payload
4.1433端口爆破
账号默认sa,密码字典(部分),如下图所示:
密码字典
爆破成功的行为除了执行批处理命令之外还会执行脚本和数据库操作,部分脚本如下:
命令脚本
此外还会对目标主机的注册表进行操作,禁用CMD、映像劫持。注册表操作,如下图所示:
注册表操作
5.7547端口IP列表发送
在获取被攻击的IP列表功能中已经对从C&C服务器获取的路由器IP列表进行了过滤和检测,入侵攻击功能中对该列表进行DES加密URL编码后发送到C&C服务器(hxxp://tz.gxout.com/ip/port_set.aspx)。通讯代码,如下图所示:
HTTP连接
6.代理服务器检测
当端口不是135、445、1433、7547时,会检测目标机器的IP地址和端口是否为代理服务器,将其作为代理服务器连接Yahoo,连接成功则进行DES加密发送给C&C服务器(hxxp://api.gxout.com/proxy/google.aspx)。逻辑流程,如下图所示:
代理服务器检测
三、同源性分析
对黑客的C&C服务器进行溯源,可以发现该C&C服务器地址最早可以追溯到2017年6月23日,如下图所示:
VT上的分析结果
当时从该网站上面下载的蠕虫的名称为A11.exe,而我们分析的样本名为A22.exe,最近一次更新时间为2018年7月23日。如下图所示:
黑客FTP上的内容
由此可知,从2017年06月23日(甚至更早) 至今,该黑客组织一直使用该系列蠕虫在全网进行大规模的信息收集,且一直保持对病毒的更新。
四、预警
该蠕虫的目的是全网传播并将搜集到的相关信息发送到C&C服务器上,况且Worm/Sharp还有一个后门功能,黑客已经使用该系列的蠕虫收集了一年多的时间,在未来很有可能会发动大规模的攻击。
五、附录
文中涉及样本SHA256:
网友评论