首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

隐藏在Chrome插件商店中的恶魔——恶意插件User-Agent Swither分析

0x00 插件背景

User-Agent Swither 是一款Chrome插件,用户切换访问web时候的User-Agent的,这个插件有51万条安装量。大部分都是前端工作人员或者安全研究人员使用,需要频繁切换User-Agent。

然而,在v2ex上有人发了这么一篇文章

0x01 插件分析

通常,chrome插件的物理地址打开background.js,看这个js文件的第80行

格式化后

可以看出,这段js从图片中取数据。下图为这段js代码解析出来的后门js代码。

随后跳转到从图片中解析出来的javascript代码

代码抠出来是这样的

很明显,这段js代码是经过深度混淆过的。然后,通过的方式来执行从图片解析出来的javascript代码。下面需要几个知识1.中这两种调用方法是一样的。和2.这个符号是ES6的特性,代表匿名ES函数3.Promise为承诺,ES6的新特性已经被大多数

0x02 恶意JavaScript分析

这段javascript用了大量的Promise对象,用了大量的这样的匿名函数,函数名用了这种ascii码的16进制作为函数名,且使用了这种调用的方式。首先是一个字符串数组,数组内的数据在之后的js代码中被大量引用作为函数名。不过这个数组在函数中被重新排序了,排序后的

这个数组中的数据在之后被作为函数名来调用相关的函数。其实就是取中第0x30个元素,也就是。function t 就是用来对这个list进行重新排序的函数

function e 主要作用是post数据,更新执行的步骤

比如,恶意js在init的时候,此时发送的请求如下

响应的请求function n 主要是完成了一个xhr请求,通过来完成。

function o 用于解析返回的js代码,取出其中的code和version字段,并通过l.set方法持久化存储到本地。

function a 更新插件运行状态

function i 为入口函数

function r 是用来下载执行恶意JS

这段js里面有一个比较重要的变量c

还有一个 重要的l,l包含了四个函数,,,function EE

function get 用于从存储的文件中取数据

function set 用于将数据写入到存储文件中

function yJ

这段恶意js的执行流程如下:这段恶意js的入口函数为function i,随后function i首先会向更新运行状态随后会调用function r,这个函数完成了下载恶意js并持久化存储到本地并执行的功能。此时向n函数中传递的参数为和,也就是用请求获取这个网页的内容。

下载下来的东西保存在了这里

0x03 外部恶意JavaScript分析

恶意js会向chrome增加一些事件的处理函数,比如新打开一个tab,这段恶意js回将你打开的网址上传到服务器上。接受上传用户信息的api,上传用户隐私数据,数据中包含用户的插件版本,tabs是重载还是新打开、用户的浏览器等。

向发送相关信息,其中s是代码中指定的,不知道含义,ver是插件的版本。返回的o是与本地的settings做对比,返回的u是接收用户隐私数据的域名。

更新恶意js的状态

这段js还会从获取推广连接

顺手遍历了一下其他的id,也会存在一些规则,应该是给其他用的,这个是代码中写死的。

用于处理推广数据的代码

至此,这个恶意插件的流程就非常清楚了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227G0MTC900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券