Xbash是一款融合了僵尸网络、勒索软件、加密货币挖矿蠕虫的恶意软件,可以攻击Linux和Windows设备。
早在2016年,Unit42研究人员就发现一个用python语言开发并、然后用PyInstaller转变成PE可执行文件的Windows恶意软件。而发现的4个Xbash版本中都用了同样的技术,这种技术的好处就是:
图1 VirusTotal对Xbash的检测
通过对恶意软件进行逆向,研究人员提取了Xbash可执行文件的主要恶意python模块,并成功进行了反编译。在后面的分析中,会有python源码。
Xbash硬编码了一些域名,将其作为C2服务器。还会从Pastebin获取一个web页面来更新C2域名列表。一些C2域名与之前Iron组织使用的Windows挖矿使用的域名相同。
所有的C2通信都是用HTTP协议,研究人员共发现三种C2流量:
下面三种类型的URI用于扫描目标:
研究人员发现不同的请求会返回不同的结果,也就是说C2服务器会动态地将任务分到不同的僵尸主机。随机选择域名测试未发现有特定区域或行业的攻击目标。
图2 Xbash从C2服务器取回的域名
Mirai、Gafgyt这类僵尸恶意软件通常只扫描IP地址。Xbash代表了一种新型Linux僵尸网络,将目标扩展为IP地址和域名。
除了获取扫描目标的列表外,Xbash还会通过URL/P
请求C2服务器获取暴力破解的弱口令列表。
Xbash在扫描目标并成功获取特定的开放端口、弱凭证、可漏洞的漏洞后,就会通过HTTP POST URI /c
到随机的C2服务器来报告结果。
如果扫描的目标是IP地址,Xbash就会尝试扫描TCP/UDP端口。下面是探测的一些服务和端口:
HTTP: 80, 8080, 8888, 8000, 8001, 8088
VNC: 5900, 5901, 5902, 5903
MySQL: 3306
Memcached: 11211
MySQL/MariaDB: 3309, 3308,3360 3306, 3307, 9806, 1433
FTP: 21
Telnet: 23, 2323
PostgreSQL: 5432
Redis: 6379, 2379
ElasticSearch: 9200
MongoDB: 27017
RDP: 3389
UPnP/SSDP: 1900
NTP: 123
DNS: 53
SNMP: 161
LDAP: 389
Rexec: 512
Rlogin: 513
Rsh: 514
Rsync: 873
Oracle database: 1521
CouchDB: 5984
对于VNC, Rsync, MySQL, MariaDB, Memcached, PostgreSQL, MongoDB, phpMyAdmin这样的服务,如果相关的端口是开放的。就使用内置的弱用户名/密码词典来登陆服务,如图3所示。词典中含有Telnet、FTP、Redis这类服务的默认密码。
图3 Xbash尝试暴力破解服务
如果Xbash成功登入了包含MySQL、MongoDB、PostgreSQL的服务,就可以从服务器上删除所有现有的数据库,创建名为PLEASE_READ_ME_XYZ
的新数据库,并在新数据库的WARNING表中插入勒索信息,如图4和图5。
Send 0.02 BTC to this address and contact this email with your website or your ip or db_name of your server to recover your database! Your DB is Backed up to our servers!If we not received your payment,we will leak your database
1jqpmcLygJdH8fN7BCk2cwwNBRWqMZqL1
[email protected]
图4 Xbash创建的勒索信息
图5 Xbash创建的新数据库、表和勒索信息
如果Xbash成功登入phpMyAdmin服务,会通过phpMyAdmin会做与上面数据库中操作相同的行为,这是因为phpMyAdmin服务常被用于管理MySQL数据库。
需要注意的是Xbash使用的数据库名、表名、table schema、勒索信息等几乎与2016到2017年针对MySQL, MongoDB, ElasticSearch, Hadoop, CouchDB, Cassandra, Redis, AWS S3的勒索攻击完全相同。Xbash中的变化为:
PLEASE_READ_ME
变为PLEASE_README_XYZ
;图6 其中一个比特币钱包的收入交易
当Xbash发现Hadoop, Redis或ActiveMQ的运行,就会尝试利用这些服务来进行自繁殖。已知的三个漏洞有:
图7 Xbash利用Redis漏洞
如果利用成功,Xbash会直接执行shell命令来下载和运行恶意shell或python脚本,创建新的cron任务来做图6中相同的任务。恶意脚本是从Xbash使用的相同的C2服务器上下载的。在其中一个实例中,其主要功能是杀掉主流的加密货币挖矿机,并下载Iron阻止开发的加密货币挖矿机,还会下载Xbash来进行自我繁殖。
Xbash的另一个特征就是使用Redis和HTTP服务来确定在Linux或Windows中是否安装有漏洞的Redis服务。如果被扫描的目标既安装了有漏洞的Redis服务和运行的HTTP服务,Xbash会尝试用Redis漏洞泄露的信息来猜测HTTP web服务器安装的位置。然后Xbash使用位置来猜测目标设备上运行的操作系统,如图7。
图8 Xbash用于确定操作系统的Web服务器路径
如果确定是Windows服务器,Xbash会利用Redis漏洞创建一个Windows开始菜单项而不是Linux定时任务,如图6。根据Xbash的版本,开始菜单项会从Xbash的C2服务器下载恶意HTML或Scriptlet文件,并通过mshta
或regsvr32
执行文件中的JS或VB脚本。这些脚本会唤醒PowerShell来下载恶意PE可执行文件或从C2服务器下载PE DLL文件,如图9。
图9 在有漏洞的Windows服务器上执行的恶意JS代码
研究人员通过调查发现这些恶意PE文件是加密货币挖矿机或Iron组织开发的勒索软件,如图10。
图10 与恶意PE文件相关的AutoFocus
在发现的所有Xbash版本中,都有一个名为LanScan
的python类。其功能主要是获取内网信息,产生相同子网内的IP地址列表,执行这些IP地址的端口扫描,如图11。
图11 生成受害者子网IP地址列表,并进行端口扫描
在企业网络中,一般都会有提供内部服务或公开服务的服务器。这些服务是未受保护的,或使用弱口令配置。在内网中找到有漏洞的服务的可能性比在外网中找出有漏洞的服务的可能性要大很多。
Xbash是一个新型和复杂的Linux恶意软件,也是活跃的网络犯罪组织的最新杰作。基于其特征和行为,研究人员发现: