百度“美杜莎偷拍插件”技术分析

安全
美杜莎是百度对其"偷拍插件"自己定义的名称。它的原理是,百度插件上传用户屏幕截图等信息,由服务端判断用户正在使用哪款浏览器,从而挟持百度凤巢客户资源针对360浏览器进行不兼容提示。

美杜莎是百度对其"偷拍插件"自己定义的名称。它的原理是,百度插件上传用户屏幕截图等信息,由服务端判断用户正在使用哪款浏览器,从而挟持百度凤巢客户资源针对360浏览器进行不兼容提示。

百度"偷拍插件"系统结构和实现

"美杜莎"分为网页脚本、客户端和服务端三个部分,三者交互完成密码加密和浏览器检测"二选一"目的。

当用户访问开启了"美杜莎"计划的百度凤巢(北京测试时需要外地代理),网站会先通过加载指定的JS脚本,弹出对话框要求用户安装插件。在用户安装完成后,用户登录界面上密码框会变为输入控件的输入框,如图:

该插件会通过特殊方式获得用户输入的密码,加密后计算一个加密的密码,在用户选择登录时:

首先会发送一个握手请求给服务端,包括插件的版本号等,请求获取一个SID(Token),服务端若判断插件有更新,则会返回需要更新,由网页脚本弹出对话框提示:"控件已经更新,请重新下载安装!"

接着网页JS脚本会调用控件的接口: sendEnvironmentInfo,收集当前用户的环境信息并发送给服务端,这是独立于当前网站的一个收集和判定系统,由百度客户端插件收集以下信息:

用户的CPU信息

用户的磁盘序列号

用户的网络IP地址、MAC地址和网关信息

用户网络DNS信息

用户的当前浏览器进程名称信息

用户当前启动的所有程序的进程名称信息

用户当前电脑屏幕的图像截图

除了屏幕截图外,其它信息都使用AES加密算法进行了加密。百度将全部这些信息打包编码到数据包后,会通过加密的HTTP传输协议上传到百度的服务器:https://isafe.baidu.com/cinfo,百度服务端解密后看到的数据如下:

偷拍插件采集数据上传后,百度服务端程序会对上传的数据做判定,然后给控件返回一个状态码,网页脚本通过控件的getLastErrorCode接口获取到这个状态码。当服务端程序通过进程信息或截图判定用户正在使用360浏览器,则返回-3这个状态码。

网页脚本判断如果返回的状态码是-3,那么就调用控件的getSendbackMessage接口,目的是获得百度服务端返回的一段文字,并弹出对话框提示用户更换其他浏览器。

在这个过程中,上传信息判定是由百度云端决定的,弹框的文字也是由云端发送的,关键逻辑都由云控。

由于上传信息非常丰富,因此百度云端判断相当灵活,不仅可以针对360浏览器不兼容,还可以针对系统中其他任何软件做不兼容提示,提示文字也是完全云控、可随时变化的,同时还可以随时在服务端配置升级,要求用户更新插件,以便应用新的信息采集和对抗策略。

百度"偷拍插件"技术原理

npBaiduSafeInput.dll控件的关键在于sendEnvironmentInfo这个函数,它首先收集信息,收集的信息包括cinfo\bmp两个字段。

cinfo字段包括了除了截屏之外的其它系统信息,是一个简单的key-value结构数据,使用AES加密算法进行了加密,然后编码为ASCII-HEX后,保存在数据包的cinfo字段中。

获取cinfo.processlist字段系统进程列表信息使用的API是ToolHelp32 系列API,通过对比当前进程Pid,在进程列表中筛选出当前浏览器进程名并保存为cinfo.currentprocess字段。

截屏数据则通过GetDIBits截取屏幕指定区域的图像并保存为BMP数据,编码为ASCII-HEX后,保存在bmp字段。

这些数据再加上之前获取的sid数据,和计算整个数据包的md5数据,拼接成具有4个字段的数据包,通过WinHttp接口发送加密的HTTPS数据到http://isafe.baidu.com/cinfo这个百度服务器地址上。

综上,百度用于判定用户软件使用情况的数据有:当前进程、进程列表和屏幕截图。以下为几处代码分析:

1、百度"偷拍插件"通过GetDIBits对用户电脑屏幕截图:

2、把截取的BMP数据编码后发送到百度服务器:

3、抓取用户的Cpu、磁盘序列号、ip地址、mac信息、网关信息、DNS信息和所有进程列表上传:

4、网页脚本根据百度服务端返回的状态码弹出相应提示,怎样提示完全由服务端控制:

 

责任编辑:守望幸福 来源: 51CTO.com
相关推荐

2013-01-31 09:09:56

360安全中心偷拍插件

2012-03-23 12:12:37

百度开发者大会

2014-07-25 17:12:39

数据库WOT2014MongoDB

2013-08-22 17:08:50

2010-08-12 15:33:00

百度笔试

2017-04-28 19:28:39

百度技术学院繁荣技术

2018-09-30 10:58:20

云存储原理网盘

2012-05-28 22:51:53

百度

2015-01-18 15:16:03

百度百度移动分发百度91

2015-09-25 16:41:03

APIStore百度技术革新

2024-01-09 07:48:07

推荐排序算法策略数据背景

2018-09-06 18:37:45

百度云

2011-10-21 09:28:25

百度地图API

2012-10-19 09:47:30

百度云百度音乐云计算

2013-06-27 10:23:30

百度云百度开放云

2014-09-04 02:25:24

百度世界大会2014直达号BaiduEye

2011-06-03 16:04:05

SEO分词

2016-03-25 11:18:23

中华网

2020-12-03 06:13:46

iOS
点赞
收藏

51CTO技术栈公众号