主页 > 网络知识 > 隐藏在浏览器背后的“黑手”

隐藏在浏览器背后的“黑手”

 

隐藏在浏览器背后的“黑手”

 

作者:陶琦 笔者具有多年信息安全行业从业经验,目前在美团致力于研发安全体系建设。

一、事件概述

2020年10月,美团安全运营平台发现流量中存在恶意JavaScript请求,信息安全部收到告警后立即开始应急处理,通过对网络环境、访问日志等进行排查,最终锁定恶意请求由Chrome浏览器安装恶意插件引起,该恶意JavaScript文件会窃取Cookie并强制用户跳转到恶意色情站点、推广链接等,结合美团威胁情报大数据,发现该插件与Lnkr Ad Injector木马特征吻合。

此类木马传播方式多样,会通过浏览器插件、Broken Link Hijacking等方式在页面中植入恶意代码,不仅严重影响用户正常访问还会窃取用户数据。经追踪分析发现,多个国内大型互联网站点(Alexa全球排名前600)被感染,影响上亿网民的上网安全,建议各大平台对自身系统第三方加载源以及内部终端设备进行检查,避免遭受此类木马攻击。

二、溯源过程 2.1 安全运营平台发出异常告警

Chrome沙箱监测到恶意JavaScript文件,发出异常告警:

 

隐藏在浏览器背后的“黑手”

 

通过告警信息判断基本的攻击行为是:

 用户访问正常页面;

页面加载外部JavaScript文件(A):;

 A加载第二个JavaScript文件(B):;

 B包含恶意代码,向远程域名发送Cookie等敏感信息。

2.2  分析攻击路径

根据告警中涉及的触发页面、相关网络环境信息,排除流量劫持、XSS攻击等情况,猜测可能的原因为浏览器插件或恶意软件导致。

通过沙箱对问题设备上所有Chrome插件进行分析,发现一个名为Vysor的Chrome插件代码存在恶意行为,检测结果如下:

{ "call_window_location": { "info": "get document.location", "capture": [] }, "call_document_createElement": { "info": "call document.createElement, create script element", "capture": ["create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:INPUT", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:FIELDSET", "create element elementName:SCRIPT", "create element elementName:LINK"] }, "call_document_removeChild": { "info": "call document.removeChild", "capture": ["remove element {elementName:fieldset}", "remove element {elementName:fieldset}", "remove element {elementName:fieldset}"] }, "set_scriptSrcValue": { "info": "set script src unsafe value", "capture": ["//s3.amazonaws.com/js-static/18ced489204f8ff908.js"] } }

可以看到插件代码创建了script标签,然后将script标签的src属性设置为:

//s3.amazonaws.com/js-static/18ced489204f8ff908.js。

2.3  插件恶意代码分析

为了进一步研究该组织木马的特征,我们对该恶意插件的代码进行了人工分析。恶意插件的代码量较大,结构混乱,包含大量干扰代码。

首先恶意代码预先设置了许多无明显意义的字符串,用于构造Payload。

 

隐藏在浏览器背后的“黑手”

 

这些字符串通过下面方法的一系列转换最终构造出创建script标签的语句 document[‘createElement’](‘script’),doctype即为创建出来的script对象。

 

隐藏在浏览器背后的“黑手”

 

接下来为script对象的src属性赋值,在addHandler方法中,cl这个参数由elem传递过来,其中包含src字符串,通过cl[0].split(‘>’).slice(2, 3)拿到关键字src,tag是上文的doctype变量也就是script对象,在构造src值这部分,可以看到在常量中有一串一部分很像是base64的字符串:

 

mawaid = '^\%|PCQxPjwkMT5zM|y5hbWF6b25hd3Mu|?:^[^\\]+?:\%\.*

 

恶意代码利用该字符串结合其他预设变量进行一系列转换,最终形成base64后的加载地址:

PCQxPjwkMT5zMy5hbWF6b25hd3MuY29tPCQxPmpzLXN0YXRpYzwkMT4xOGNlZDQ4OTIwNGY4ZmY5MDguanM:

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!