导语:过去几天,陆续有用户报告有名为“pluginsamonsters”的恶意组件安装到站点上。本文主要讲解攻击的过程以及如何预防。
总结
1. 攻击者用被黑的凭证登录WordPress.com账户。
2. 如果WordPress.com上的账户被设定为通过Jetpack插件管理所有的WordPress安装,攻击者就可以利用这样的访问在目标站点上安装恶意“pluginsamonsters”插件。
3. 该插件可以给攻击者对目标站点的完全控制。该插件在WordPress.com的面板上是可见的,但当激活后就不可见了。
要想该攻击产生,必须满足下面的条件:
· 网站所有者必须安装Jetpack。
· Jetpack必须配置为允许用WordPress.com账户来管理站点。
· WordPress.com账户的凭证必须被黑。这种情况通常发生在在其他被黑的站点或服务上重用邮箱或密码。
· WordPress.com没有开启双因子认证。
攻击入口:WordPress.com弱凭证和Jetpack
Jetpack是非常流行的WordPress插件,有很多的特征。为了使用Jetpack,必须在WordPress.com上创建一个账号。这样就可以在WordPress.com的中央控制器来管理多个WordPress站点。其中一个特点就是可以管理插件,甚至安装新插件。
正如在服务器上安装WordPress,用户可以从WordPress公共库上去选择插件或以zip文件的形式上传新插件:
当Jetpack连接到用户的站点,就拥有了与站点管理员账户同样的权限。所以,如果用户选择上传插件,无论用户上传的是什么都会进行安装。
研究人员对安装了“pluginsamonsters”的站点进行了调查,发现该标志被滥用了。比如,在插件创建的时候去检查站点的访问日志,发现了下面的记录:
192.0.89.53 - - [22/May/2018:02:38:06 +0000] "POST /wp-admin/admin-ajax.php?token=[redacted]×tamp=1526956686&nonce=uFn5aA OgH4&body-hash=gwB8z8pKX%2F6xzYdAbNzYTNeD8cc%3D&signature=gxiGNsGi2Z9Ba3SwaNUn7Dq yBXc%3D HTTP/1.0" 200 141 "-" "Jetpack by WordPress.com"
源IP地址是Automattic网络的一部分,也就是Jetpack的作者。研究人员还找了受影响的网站共有的插件,Jetpack是唯一相同的。
我们将Jetpack连接到一些测试站点上,并尝试上传一个恶意插件。访问日志表明了相同的活动。
Pluginsamonsters恶意软件
下一步是分析恶意软件并找出其工作流程。它会将自己隐藏在WordPress仪表盘中的插件列表中。插件在WordPress.com管理控制台上可见的,但是当被激活后在受害者网站的管理接口上不可见的。
恶意插件含有一个txt文件,该文件所含有的代码会在WordPress loop_start action上执行。该插件还含有一个单独的文件上传功能的PHP脚本文件。
该工具有两个用途。首先,在被感染的网站中加入后门来维持对站点的访问。这些后门也都是一些简单的文件上传工具,创建的文件名也是无害的名称,比如wpcfgdata.php, wpplugdata.php。第二,修改受感染站点的根index.php文件。这是攻击活动的真实原因,也就是黑客盈利的部分。
加入到index.php文件的恶意代码是经过混淆的,但是比较简单。最终会到到一个恶意域名,在样本中,恶意域名是roi777[dot]com。从该恶意域名,会获取另一个恶意域名,而这些恶意域名都是.tk结尾的。使用了JS来将访问者重定向到第二个恶意域名的页面,并设置cookie,所以重定向每12个小时才会发生一次。
下图是添加到index.php中混淆后的代码:
在测试中,研究人员发现访问者访问后被重定向的恶意页面含有恐吓软件(scareware),文本转语音、成人广告和鼠标劫持:
在受感染的站点上,.tk域名每分钟更新一次。
在一些案例中,攻击者会编辑核心的JS文件,用可以生成成人广告的代码来感染访问者。这些jQuery文件位于/wp-includes/js/jquery中。
研究人员发现的第一个攻击实例发生在5月16日。从5月21日开始,攻击者开始以wpsmilepack这个名字来安装同样的恶意插件。
攻击者如何进入
研究人员发现这些攻击者在2月份的时候还进行了credential stuffing攻击(凭证填充攻击,俗称撞库)。攻击者利用数据泄漏获取的用户名和密码来直接登录WordPress站点。攻击者资源丰富,看起来Jetpack只是他们最近使用的插件。这也证明了跨服务重用密码的危险性。
我们怎么做?
研究人员提出以下建议来保护用户免受此类攻击:
· 确保WordPress.com账户使用强密码和唯一的密码。尤其是通过WordPress.com和Jetpack管理其他站点的管理级账户。
· 对WordPress.com账户启用双因子认证。
采取上面的步骤可以确保攻击者不会用WordPress.com账户作为攻击你管理的站点的入口。
以中心化的管理服务为目标
WordPress.com通过Jetpack插件给予用户远程管理多个站点的能力。许多其他的服务也提供这样的功能。这对管理大量WordPress站点的开发者和机构来说是非常有用的工具。更新数百家网站不是件容易的事,任何可以让更新便容易的事情都是有价值的服务。
那么远程管理工具就有这样的作用,管理工具对所管理的网站具有管理级的访问权限。作为用户,确保用户使用强密码和唯一密码以及启用双因子认证就是用户的责任。如果不这样做的话,那么可能同一服务管理的所有站点都有被黑的风险。
此次网站被入侵事件并不是因为漏洞,而是因为站点所有者(管理者)重用凭证造成的。如果对管理级账户重用凭证,还不开启双因子认证,那么可能离被黑不远了。