一、实验环境与结果概述
1.1 实验环境
手机型号:HUAWEI C8812
操作系统:Android 4.0.3
应用版本:百度贴吧4.0.0
分析工具:Tcpdump for Android,WireShark 1.10.0rc2
【抓包的具体方法详参我的下一篇博文:《基于tcpdump的Android智能移动终端数据包捕获完整解决方案》】
1.2 结果概述
在安卓手机上运行php百度贴吧客户端的所有重要通信行为都使用了HTTP协议。
贴吧客户端发出的HTTP请求一般采用POST方法,表1-1对比展示了不同操作对应的请求报文。其中application/x-www-form-urlencoded格式将请求正文分成多个元素,各元素本身由名和值(可能使用URL编码)组成,各元素之间使用&符号隔开;multipart/form-data格式被用在使用POST方法发送HTML表单时,请求正文被分隔符(由boundary定义)分割成很多子段,每个子段可以自定义子段名称和值,从而实现在单个消息实体中封装多个主体的功能。
表1-1 不同操作对应的POST请求对比
服务器返回的响应有着类似的头部,如图1-1所示。
图1-1 贴吧服务器返回的响应头部
状态行一般为HTTP/1.1 200 OK,正文的类型一般纯文本文件,正文本身一般经过gzip编码压缩,且在传输过程中一般使用了chunked编码进行分块传输。后文在说到响应正文时,一般是指重组解压后的正文,后文中不再特别指出这一点。一个简单的正文示例如图1-2所示。
图1-2 一个最简单的响应正文示例
如上图,还原出来的完整响应正文普遍使用了JSON格式。该数据格式的特征是整个正文都处于一对大括号{ }内。正文一般分成多个段,每个段由名和值组成,段与段之间用逗号隔开。有些段的值会由多个子段构成,一个段的所有子段也会用一对方括号[ ]或是大括号{ }括起来。大部分情况下,有四个一级段在正文是都存在的,包括:error_code(操作成功时值为0,操作失败时为对应错误代码)、time、ctime,以及logid。
【我们约定,与error_code处在同一层次的称为一级段,一级段的子段为二级段,以此类推。】下面就各行为做具体分析。
二、登录行为分析
2.1 登录请求
登录时,贴吧客户端使用一个POST请求来提交认证信息。该登录请求的请求行使用固定的URI:/c/s/login。由请求行的特征和Host头域的值可以确定一个登录行为。图2-1展示了当登录用户名为xinhua0123,登录口令为fengping888时,该请求报文的具体形式。
图2-1 一个登录请求报文示例
请求报文的正文中存在变化过的登录口令和明文的用户名,其特征分别如下:
∙变化后的口令
前缀特征:passwd=
∙用户名
前缀特征:un=
口令与用户名的结束标志均为&。贴吧客户端在发送登录请求前先对明文口令fengping888进行了Base64编码,得到中间结果ZmVuZ3Bpbmc4ODg=,接着再对中间结果进行了URL编码,由此得到最终结果ZmVuZ3Bpbmc4ODg%3D。
2.2 登录结果
登录的结果在前述请求所对应的响应报文中。该响应报文的头部类似于图1-1所示的范例,其响应正文根据登录的结果不同而格式不同。图2-2分别展示了登录成功和失败时,所对应的响应正文。
(a)登录失败后响应正文
(b)登录成功后响应正文
图2-2 登录请求的响应正文
如上图,登录成功与否可以根据error_code的值来判定,若为0,则成功。登录失败后的响应正文里存在名为error_msg的一级段,其值为服务器返回的错误提示信息的Unicode编码【详参我的另一篇博文:《HTTP协议分析中几种常见的汉字编码》】,如上图(a),将
\u5bc6\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165转换为对应的Unicode字符,为:密码错误,请重新输入。这个错误信息将会显示在贴吧客户端,如图2-3.所示。
图2-3 登录失败后贴吧客户端给出错误提示“密码错误,请重新输入”
登录成功后,服务器所给响应正文中一个比较重要的段是user,其子段中包含一些重要信息,一是登录
用户的id和用户名,另一个是BDUSS。BDUSS是贴吧服务器在用户每次登录成功后所给出的一个通行证,以后用户在进行一些非匿名的操作时,就不用每次都重复登录,只需在请求正文中包含BDUSS 即可。BDUSS在用户注销登录后失效,再次登录获得的BDUSS和上次不同。但尚不清楚BDUSS是否存在最长有效期(即在超过某个时限后不论用户是否注销登录,均强制失效)。推测在有效期内,通过BDUSS应该可以实施重放攻击,即可冒充登录用户进行操作,但尚未进行验证。
在贴吧客户端上有“首页”、“进吧”、“身边”、“个人中心”四大功能区,下面按使用频率依次进行分析。
三、“进吧”相关操作分析
3.1 选择“进吧”功能区
(……略,详参备注……)
3.2 进入某一个吧

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。