本月18号凌晨3点,发生了有史以来最大规模的针对WordPress的暴力攻击。根据我的记录,到目前为止,该攻击已经达到每小时1410万次,涉及的IP总数已经超过一万个,每小时有多达190000个WordPress网站被攻击,这是自2012年以来我在Wordfence历史记录中看到的最高攻击量。经过分析,我认为,这是一次僵尸网络攻击。
分析时,我从僵尸网络中提取了一些IP地址,然后将它们与我最近正在清理的一些网站的IP进行比较,发现其中有好多类似的地址,这就为我提供了一个很好的分析这次攻击的途径。
本次攻击的目标是什么?
要说明的是,我的大部分调查案例都是根据客户的投诉找来的。比如,最近有好多客户会向我投诉,托管WordPress的服务器上出现了很多次尝试登录失败的日志,于是我统计了一下,在我的公司托管的服务器上,仅周一就有超过10万次的尝试。
该服务器是一个托管的VPS,我的公司可以掌握客户的根访问权限,这就允许我对服务器上运行的进程进行一些更深入的分析。
结果分析的结果让我惊出一身冷汗,服务器的CPU资源不但长时间被运行的Apache进程占用,而且一个名为“29473”的奇怪进程使用了比其他所有进程加起来都要多的资源。另外,我还观察到服务器上有数千个连接到其他服务器上的端口80。
这意味着,我公司的客户服务器(以172开头的IP地址)已被连接到了数千个其它的网络服务器。我还发现,“29473”所连接的两个IP地址是开放的:
1.66.70.190.236在9090端口,这个加拿大IP地址属于OVH(法国的服务器)。该IP地址似乎没有相关联的域名,也没有任何历史域名数据。通过对该地址的扫描,我发现只有两个端口是开放的:一个运行SSH和一个运行IRC服务器的端口9090。
2.185.61.149.22在端口8080,该IP地址属于拉脱维亚的一个名为“Makonix SIA”的网络。它没有任何与之相关的域名。不过通过网络扫描,我发现有几个端口是打开的。其中一个是SSH服务器,其余的似乎是Web服务器,它们会用文本“在线挖掘代理”回答所有请求。
这样,我就知道了攻击者在我所扫描的服务器上的攻击范围。与IRC服务器的通信很可能是命令和控制(C&C),因为只有加密货币的挖矿过程才会占用大量资源并与“挖掘代理”进行通信。而且几乎是肯定是挖掘Monero(门罗币),因为它可以使用常规处理器而不是图形处理器来挖掘,和其他网络服务器的连接可能是我托管的服务器遭受WordPress暴力攻击的原因。
命令与控制
我的使用的是tcpdump来记录网络流量,以及正在运行进程的文件和内存。这样,我就可以捕捉到相当多的C&C流量,而且由于它们是未加密的IRC流量,通过对流量的分析,我可以以进一步了解攻击者的意图。根据我恢复的一些样本的流量和对它们的分析,我发现此次攻击所使用的恶意软件似乎是“Tsunami”或“Kaiten”的变种。
服务器
我确定了8台C&C服务器,它们都在端口8080或9090上运行IRC守护进程。每个服务器都有一个名称,且遵循相同的命名模式。例如下表中的前四台服务器全部托管在OVH,名称是从muhstik.ovh1到muhstik.ovh4。
66.70.190.236:9090 muhstik.ovh1
142.44.163.168:9090 muhstik.ovh2
192.99.71.250:9090 muhstik.ovh3
142.44.240.14:9090 muhstik.ovh4
202.165.193.211:8080 x.1
202.165.193.212:8080 x.2
211.103.199.98:8080 x.4
121.128.171.44:9090 muhstik.ras1
协议
命令协议相当简单,该恶意软件会加入IRC服务器,并将其用户名设置为一个字符串,该字符串包含了有关它所运行的服务器的一些信息。下图是我所截获的一个数据包的截图,其中标注红色的部分就是被攻击时产生的流量,C&C服务器的流量用蓝色标注。在这个所截获的数据包中,流量的名称是由“x86”(但其实它不是一个64位服务器)和主机名(我编辑的)组成,恶意软件会通过其它恶意木马或用户的私人消息接收攻击指令。
服务器似乎对所进行的连接没有做安全设置,似乎唯一需要的认证是在加入和设置昵称,回复消息等时遵循正确的格式。
命令
来自攻击者的大部分命令就像以上截图中的命令那样,都是从某个服务器下载脚本,然后悄悄地运行它。这些命令以固定的时间间隔发送,并通过几种不同的方法循环下载脚本(wget、curl等)。看来这些命令都是自动发送的,可能是为了确保在发生崩溃或攻击终止时恶意脚本能够被重新启动。
我还看到了其它几个命令,它们旨在收集有关受感染服务器的信息。其中一些看起来像是自动状态检查,但我注意到其中还是一些手动控制痕迹的。比如,攻击者一开始发送了一个拼写错误的命令“iptime”,然后稍后就将其该为了正确的拼写“uptime”。
虽然攻击者似乎已经编译了他们自己的自动货币挖矿软件,但我确实看到了一些他们实时发送命令来手动运行软件的例子,这证明该软件还不是很成熟,正在研发中。
恶意软件的持久性攻击特点
幸好,这个恶意软件不是一个rootkit,它仅仅作为一个普通的用户帐户运行。Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。尽管如此,它仍然试图隐身,为什么这么说呢?因为当它启动时,它会产生一个副本,但名称会与自身有所区别,根据观察,这些名称可能是从服务器周围的文件中随机选择的。例如,虽然一些副本的名称都和 “29473”有关,但其实它们就是“python”和其他一些常见程序。
通过对我所发现了几种不同的恶意软件进行分析,我发现它们的攻击思路的设计都非常雷同,当它们启动时,会自动从磁盘上删除自己的文件。这样,杀毒软件就不会检测到它们(除非扫描内存中的程序)。
为了保持攻击的持久性,进行挖矿的恶意软件会将自己伪装为一个计划任务工作(cron job),以便高频率的进行攻击(每分钟运行一次):
* * * * * /var/www/vhosts/[redacted].com/wp-content/plugins/bash > /dev/null 2>&1 &
另外,恶意软件还会监控高TCP端口(例如61008和63008)上的连接,但是截至目前,我没有观察到发送至那些端口的任何流量。
暴力攻击过程
当然,进行暴力攻击也是这些恶意软件的强项。根据我的观察,它们使用了通用密码列表和启发式算法的组合,来攻击站点的域名和网站内容,包括网站名称、浏览的用户名和密码。例如,在wordfence.com上,它会尝试使用像“admin”,“wordfence”,“mark”这样的用户名和“123456”这样的密码。
我还观察到,暴力攻击都是针对的那些在非标准端口上的网站,即只使用IP地址而不是域名的网站。所以不要认为你的网站是安全的,很可能它的IP地址就已经被人盯上了。
事实上,黑客就是通过这样的方式,来攻击我公司的客户服务器的。
如上图所示,黑客所开发的网站与一些将要进行攻击的目标网站托管在同一台服务器上,这是所有攻击的原点。所以这是为什么要安装Wordfence,如果安装了,它可能会将这些恶意攻击阻止下来或至少警告管理员,因为我的Wordfence就检测到了攻击者添加的后门。
另外,如下图的代码段,那是攻击者用来感染大多数网站的PHP文件,如果安装了Wordfence,它就会检测到这一代码段。
挖矿过程
你可以在supportxmr.com上输入这些信息,并查看他们最近的攻击统计信息以及支付记录。
其实,突然之间对门罗币的疯狂的挖掘是有原因的。在本月初,门罗币的价格几乎没有破200美元。但好像有预感一样,袭击发生前一天价格就达到了378美元。 虽然门罗币可以通过普通的CPU来开采,但是实施起来可不那么容易。即使对于完全控制了对方服务器的黑客来说,这也并非易事。
以上所举的这两个地址只是冰山一角,截止发稿前总共挖到了大约217个门罗币,按市值计算,大约10万美元。而且攻击者目前还在对受到攻击的服务器夜以继日地进行挖矿,并试图尽可能多地感染更多服务器。
总结
总而言之,攻击者利用复杂的恶意先软件远程控制受感染的WordPress服务器,然后再通过这些服务器攻击其它WordPress站点。
自从我星期一开始观察此次攻击行动以来,我发现虽然攻击的力量前所未有,但却极其不稳定。由于攻击者正在使用受感染的WordPress站点来同时发起攻击和挖掘货币,所以我推理他们正在对两个任务之间的资源进行重新分配。按着攻击预期,本次的攻击记录还会不断刷破历史记录。
缓解措施
亡羊补牢,为时不晚,以下5点是我的一些经验,可以有效避免你受到攻击:
1.运行Wordfence扫描,因为我在服务器上找到的PHP恶意软件已被被Wordfence检测到。
2.检查你的服务器资源,攻击者正在进行的挖掘肯定会使用过多的CPU资源。如果你有能力检查你网站的资源使用情况,则可以验证CPU使用率是否在正常水平之内。如果你有服务器的命令行访问权限,则可以使用监控与进程管理软件htop来查看哪些进程占用的CPU资源最多。
3.加强你网站的反暴力攻击能力,具体做法请点此。
4.监控黑名单,如果你的网站被黑客用来攻击其他网站,则很可能会被其它杀毒软件列入黑名单。
5.如果你已被感染,那么需要立即清理你的网站,因为如果你的网站已被用于攻击其它网站,那你的域名和IP地址将很快就被攻击
领取专属 10元无门槛券
私享最新 技术干货