DDOS 编年史:应对 WordPress Bot 的 XMLRPC 攻击

已发表: 2019-04-08

两天前,我们的一个客户网站 Nettsted Limited 遇到了困难。 我们通常不向我们的客户提供技术支持,但不幸的是我们客户的托管服务没有为她提供任何支持。 由于我们感到有责任帮助她,我们决定对僵尸网络攻击采取行动。 我们在攻击过程中遇到了机器人的奇怪行为。 我将在此页面上逐小时提及发生的事情以及我们为保护客户网站所做的行动。

目录

DDOS攻击的开始:攻击者识别自己

由于我是 Nettsted Limited 的所有者,我每天工作 16-18 小时为我们的客户提供支持。 我们有来自世界各地的不同客户,所以我需要在不同的时区保持清醒。 几个月后,我首先想看电影,和家人一起玩。 不幸的是,这是我职业生涯中最糟糕的日子之一。 看完电影,我们决定休息一下。 然而,一个看不见的东西戳了我一下,告诉我“嘿! 你必须看看你的作品然后睡觉”。 是的……这些是我在工作中缺席 5 小时时发生的事情:

  1. 我的一位客户删除了 SEO 插件,删除了网站的所有描述和标题。 他还破坏了网站的链接结构。
  2. 另一个客户端删除了我们安装的一些与 SEO 相关的插件。 更改了缓存的设置,并以某种方式破坏了所有 .js 和 .css 文件。
  3. 我的一位客户受到 DDOS 攻击,她只是看着她的网站崩溃。

当我加入 WhatsApp 和 Skype 时,在那 5 个小时里我看到了很多抱怨。 30% 的句子只是“你在哪里?!”。

我的客户告诉我,他通过 WhatsApp 收到了一条消息。 攻击者用电话号码表明了自己的身份,并告诉我的客户他要攻击她。 这听起来确实很愚蠢,但他确实做到了……当我回到工作岗位时,攻击已经开始了。

第 1 天-) 对攻击采取第一行动

这些是我们得到的攻击的一些日志:

103.9.156.249 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.1; ; verifying pingback from 93.174.93.163"
199.223.214.148 - - [07/Apr/2019:01:19:03 +0100] "GET / HTTP/1.0" 200 13194 "-" "WordPress/3.3.1; http://www.mentalic.gr"
216.240.176.141 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.0;
104.236.33.158 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.1; http://pmsearchpartners.com; verifying pingback from 93.174.93.163"
149.210.236.96 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/3.9.27; http://imageconsultant.mu/; verifying pingback from 149.210.236.96"
185.87.249.33 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1;
158.69.26.84 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/3.9.2; http://teensystudios.com; verifying pingback from 93.174.93.163"
103.233.76.243 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.26; http://help.worldmart.in; verifying pingback from 93.174.93.163"
203.175.180.254 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.1; http://www.cybertechriskcenter.com; verifying pingback from 93.174.93.163"
199.223.214.148 - - [07/Apr/2019:01:19:03 +0100] "GET / HTTP/1.0" 200 13194 "-" "WordPress/3.3.1; http://www.mentalic.gr"
68.71.60.249 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/4.1.26; http://www.itunesalternative.org; verifying pingback from 93.174.93.163"
66.55.132.6 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-" "WordPress/3.8.16;
163.172.103.45 - - [07/Apr/2019:01:19:02 +0100] "GET / HTTP/1.0" 200 73651 "-"

在日志中,您可以看到攻击来自 WordPress 用户代理。 然而,其中一些攻击也是在没有代理的情况下发生的。 我检查了所有那些被引用的网站,它们都是过时和废弃的网站。 有一个 IP 在所有日志中几乎相同,另外还有 2 个。 93.174.93.163 是荷兰 IP,但我相信是服务器/主机正在为我们准备僵尸网络攻击。 其他 2 个 IP 也是荷兰 IP。

由于关于攻击的“验证 pingback”通知太多,我认为他正在使用 pingbacks 和 xmlrpc.php 进行攻击。

我对攻击的第一反应是更改 xmlrpc.php 的名称,然后将其完全删除并从 WordPress 设置中删除 pingback

结果:它甚至没有减慢攻击速度。

由于我没有从第一个动作中得到任何好的结果,我决定从文件中删除 WordPress 的 xmlrpc.php 文件。 然而它仍然没有帮助。

然而,它已经证明它有助于某种 DDOS 攻击。 如果您也面临这种情况,您也可以尝试一下。

第 1 天-) 第一反应:利用本地化优势

现在你要告诉我为什么我不使用 cloudflare。 CF 需要时间来设置,名称服务器的更改有时真的很痛苦。 所以我想减慢攻击速度,但我也为网站设置了 cloudflare。 更改了名称服务器。 攻击很严重,对I/O、带宽等的使用造成了严重的破坏。 我相信他们是 2-3 个人从不同的服务器进行攻击。 我客户的网站每天赚取 1000 美元,这对他来说是一个严重的问题。 网站关闭了大约 6 小时。

由于该站点是本地站点,因此我决定设置一个 htaccess。 我需要丹麦的所有 IP 地址。 在网站的帮助下,我设法找到了所有丹麦 IP。 我会暂时关闭所有外国流量的网站。 我创建了一个 htaccess 文件并阻止了该网站的所有外国流量

结果:这是一个很好的暂时结果。 现在所有恶意机器人都达到了 403 页。 然而坏消息。 谷歌机器人也达到了 403。 由于漫游器流量主要来自美国,因此我没有为美国或 Google 漫游器 IP 进行任何设置。 由于在名称服务器更改发生之前这是暂时的,所以这不是问题。

在整个过程中,我一直在和我的客户通电话,让她冷静下来。 由于这种情况,她非常生气和不安。 她告诉我她收到了攻击者的信息。 她有他的电话号码!

第 1 天-) 名称服务器更改和 Cloudflare 设置问题

大约 2 小时后,我设置了 htaccess,更改了名称服务器并激活了 cloudflare。 从 .htaccess 文件中删除了拒绝/允许规则。 但是 Cloudflare 的 WAF 设置存在问题。 我要求我的客户更改服务器 IP ,她已经做到了。 稍后我会更改 cloudflare 的 DNS 记录,因为旧的 IP 信息仍然存在。 但是,如果我在购买 IP 后不久就这样做,网站将再次关闭。 “Under Attack Mode”已经在网站上激活

结果在我们激活 Cloudflare 后,所有攻击都停止了。

经过 6-7 小时的兴奋之后,我从椅子上站起来睡觉。 我们以为我们赢了,但还没有结束。

第2天-)他回来了! 通过僵尸网络绕过 Cloudflare!

早上我们换了IP,因为我认为网站是安全的,所以我将攻击模式改为中等。 我对 .htaccess 做了一些其他的更改。 我为我的客户购买了 PRO cloudflare。 我设置了一些 WAF 设置以使网站更安全。 然而一段时间后,他设法以更严重的攻击回来了,并且大量的攻击击中了原点。 他绕过了 Cloudflare。

Cloudflare 的一些 WAF 设置有望阻止 WordPress 机器人攻击、XMLRPC 攻击,但事实并非如此。 我决定在 Cloudflare 上将所有 WAF 设置设置为默认设置。

结果:所有没有用户代理的机器人攻击开始达到 403。

结果让网站松了一口气,服务器再次启动。 然而,我们受到了太多的攻击,而且已经接近了。

第 2 天-) Cloudflare 上的国家/地区封锁

最后我认为我们应该在 cloudflare 上做更多的投资来摆脱这些攻击。 通过我最近的更改,我们几乎消除了 50% 的威胁。 然而,还有其他 50%。 对于本地网站,国家/地区封锁不会是问题。 此外,由于我们已经修复了 50% 的 bot 流量,因此来自美国的攻击对我们来说不会是一个严重的问题。 我们收购了 Cloudflare 企业并封锁了除美国和丹麦以外的所有外国流量

结果:这修复了 90% 的僵尸网络流量。

第 3 天-) 复仇是一道最好的冷菜

我们的服务器可以处理 90% 的僵尸网络流量。 然而,他们并没有停止攻击。 然后我在 WordPress 上发现了一个有趣的插件。 但是,我必须先对其进行测试。 否则网站可能会崩溃,这会毁了一切。 我请一位程序员朋友攻击我的一个网站。 它工作得很好。 然后我调查攻击者。 我明白他是谁以及他为什么要攻击我们。

我先联系了攻击者。 我要求他停止攻击。 然而,他用大量的侮辱和咒骂来回答我。 我只是将他从 WhatsApp 中屏蔽,甚至没有回应他。 我的客户要求我为这项服务支付更多费用,但我拒绝了。 我把它当作一种骄傲。 我询问了我的客户许可并删除了攻击模式。 我设置了插件。

我开始将他讨厌的、血腥的、卑鄙的机器人发送回他的网站。 他的网站在我眼前崩溃了。 我的感觉和看着毁灭贝勒圣堂的瑟曦一样。然后我给他们发送了他的另一个网站,然后是另一个,然后是另一个……当他们停止攻击时,系统正在停止。 然而,当他们开始使用机器人时,它会将他们重定向到他们所有的网站。