其实咱中国的Maxthon遨游浏览器在国际上也还是有一定知名度的,从StatsMonkey前年的数据来看,它在中国的市场份额排名第6,在波兰的份额也是第6。最近,国外两家安全公司联合发布报告称,遨游浏览器会将用户隐私数据发往中国北京的服务器,遨游这次又火了一把。
其实遨游有个UEIP用户体验提升计划——在此计划中,浏览器会收集用户的各类数据。这类计划不算新鲜,很多浏览器都有,目的是收集BUG、提升和改进用户的浏览器使用体验,比如Firefox和Chrome都有。
不过从两家安全公司Exatel和Fidelis Network的分析数据来看,遨游收集的这些数据可越过了他的本分。在使用遨游浏览器期间,这款浏览器会收集的数据包括,你所用的操作系统版本、屏幕分辨率、CPU类型、CPU速度、内存、遨游可执行文件所在位置、广告阻止情况、Home页设置。
最重要的还有用户访问的每一个完整的URL地址(也就是你的网页浏览历史,包括用户的谷歌搜索操作…),以及用户在系统中安装的应用列表,甚至包括这些应用的版本号。
分析报告显示,这些数据都打包放在一个名为ueipdat.zip的文件中,定期通过HTTP发往位于北京的遨游服务器。这个zip压缩文件中,包含一个名为dat.txt的加密文件(AES-128-ECB),实际这并非本文文档。要解密该文件并不困难,注意仔细看上图中出现的信息,都是你在用的其他软件。
前面我们说,打开遨游的UEIP计划,遨游浏览器就会收集用户的这些私人信息。那在浏览器设置中选择不参与该计划,是不是就行了呢?遨游自己说,在用户选择UEIP计划的时候,才会收集更多用户数据,而且是完全匿名的。如果不参与该计划,浏览器只会收集一些有关浏览器状态的基本数据。
遨游UEIP计划详情
但这份分析报告提到,不管用户是否加入该计划,遨游浏览器始终会收集用户的这些数据。这是一件多么悲剧的事情。
今年1月份,国外已经有用户在遨游官方论坛上反映了这一问题。其中提到,dat.txt收集的信息是经过加密的,“我们无法得知浏览器究竟从我们的计算机中上传了什么样的信息,你们能不能告诉我们在退出UEIP后,遨游究竟还收集了哪些信息?”
遨游CEO陈明杰针对本次事件做出了回应,内容如下:
我们对于用户的隐私和信息安全非常谨慎。我们确保用户的信息和隐私安全。遨游已经从事该行业超过10年,从未向任何第三方机构泄露过隐私数据。我们是家真正意义上的国际型企业,服务器遍及美国、欧洲和亚洲。我们努力提升产品质量,保护用户安全与隐私。
这席话听起来并没有针对此事做出非常正面的回应。实际上,遨游在国外宣传自家浏览器产品的时候也曾经提过一个卖点:我们不会将数据给NSA。那么这些数据是给谁了呢?
更悲剧的是,采用中间人攻击很容易获取到遨游收集的这些数据——可被用于恶意用途。这两家安全公司就演示了整个攻击过程,并且在结论中提到,这也表现出遨游浏览器是不安全的。
那么,我们就来稍稍来关注一下Exatel和Fidelis Network给出的这份分析报告,有兴趣关注细节内容的,可以 点击这里 了解详情。
实际上Exatel原本并没有刻意对遨游发起安全检查。Exatel有个安全运营中心,简称SOC。今年3月份的时候,SOC在搞Fedelis Network的高级威胁检测解决方案——这是个安全产品。他们将内部LAN连接到Fidelis Network平台,监视整个网络,每天查看相关违反DLP.sendfiles.exfiltration规则的情况——这里这个什么规则,是SOC监视是否有文档通过HTTP协议和POST方式发往外部的一个安全规则。
结果在整个过程中发现, 网络内部有3台计算机,会周期性发出一个大约几百字节、名叫ueipdata.zip的文件,而且是发往位于北京的一台服务器 。
上面这张截图来自Fidelis平台的事件分析控制台,里面出现了一个警告,警告内容为存在违反DLP.sendfiles.exfiltration规则的情况,有数据偷偷发往位于中国的服务器。于是SOC的专家们就对此进行了一番研究。
他们发现这个ueipdata.zip文件中包含一个dat.txt文件——实际上这并非真正的文本文件,里面的数据似乎经过了加密。从HTTP协议content-type字段标识来看,ueipdata.zip被标记为image/pjpeg,所以这是个…图片?
不过这次测试中还有更引人注目的一件事,发出的HTTP包中,数次出现的一个字符串:
"IllBeVerySurprisedIfThisTurnsUp"
I’ll be very surprised if this turns up ,这句话难道不是应该翻译成“如果此事被曝光,我将非常震惊”吗?真调皮!SOC甚至还想到了,由于当时愚人节将至,可能是公司内部有人做了点手脚,以测试Fidelis Network平台能不能把它抓出来。但随后的分析又发现,其目标服务器就是中国,Fidelis记录下的user-agent标识也明确了谁才是发出这些数据的幕后主使,即:Maxthon遨游浏览器。
Exatel对公司内部进行了检查,发现果然有3名员工在电脑上安装了遨游浏览器。
其实上面的这个字符串,这句话估计是某个程序猿的神来之笔。它有自己的实际作用,分隔HTTP传输的文件,在这里是引导遨游浏览器对HTTP包中的ZIP文件进行解码的。而且这位程序员同学从很早之前就开始用这句话了。不过这句话的完整版其实应该是:“I will be very surprised if this sequence of characters appears somewhere in the attached file sent by this program.”
Exatel的研究人员也了解到了遨游的UEIP计划,所以亲自在电脑上安装了遨游浏览器,然后清清楚楚撤销“加入UEIP计划”前面的勾选。结果发现,浏览器使用期间,ueipdata.zip依旧按照惯例发往遨游浏览器(u.dcs.maxthon.com)。
于是,研究人员对遨游浏览器执行数据加密命令的主进程进行了调查,很快就发现我们上面提到的dat.txt加密采用AES对称加密算法,密钥是个定量:eu3o4[r04cml4eir——并无其他混淆数据的方案。
这个密钥作为参数,执行位于遨游浏览器动态链接库MxEncode.dll中的Encode解密导出函数。这里的MxEncode.dll就负责UEIP数据的加密。这个库采用Crypto++开源库构建,这一点在遨游PE文件的符号表中可以看到。
实际上MxEncode库也负责遨游浏览器本地配置文件的加密和解密。SOC的专家们深入监视了遨游浏览器和加密模块MxEncode.dll间的通讯,另外还在遨游的加密库之上进行中间人攻击。
讲到这里其实已经很清楚了,遨游浏览器首先会加载安装目录中的MxEncode.dll库,对传输数据进行加密(触发输出Encode之类的),然后再将加密过后的输出缓存数据返回给遨游浏览器进程,然后再传输这些加密的数据。
SOC专家进行中间人攻击的方法是这样的:他们构建了自己的DLL库,模仿原有的MxEncode库。其中插入的代码,会先将每次遨游浏览器加密请求数据保存起来,随后再加载遨游原有的加密库(此处重命名为MxEncodeOrig.dll)。这样一来,所有的数据再发往遨游浏览器之前,都会流经SOC自己的库。另外令遨游解密配置文件,捕获加密密钥,以及原有MxEncode库Decode函数返回的数据。
然后我们就知道,这货究竟收集了哪些信息了。要进行中间人攻击,Extatel在分析报告中提供了一份Python代码,解密dat.txt轻而易举。从中似乎也能看出,其实遨游浏览器的安全性做得不怎么样。
目前遨游浏览器的最新版4.9.3.1000仍会传输这些UEIP数据,无论用户是否选择UEIP计划。
* FreeBuf官方报道,本文作者:欧阳洋葱,参考 Exatel分析报告 ,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)