最近在搞公司的安卓APP测试(ThinkDrive 企邮云网盘)测试,安卓app测试时使用代理抓包,发现所此app使用HTTP传输账号密码,且密码只是普通MD5加密,存在安全隐患,无法防止sniffer攻击、中间人攻击(因此这次安全问题,加强对这两安全术语的了解):
问题1:账号密码采用http传输,账号与密码(MD5值)均可以捕获;
问题2:密码虽采用MD5加密,简单密码可以在线解密;
问题3:密码不解密也一样可以登录,通过A账号在app登录,再用sniffer得到的B 帐号与密码(MD5值),使用Fiddler修改A账号的请求完成B账号在APP登录
 
     公司邮箱各版本其实使用的也是明文传输,最近WEB虽采用了HTTPS传输,但仍是传输的明文,可以抓包查看(HTTPS也可通过Fiddler解析成明文),基于此原因,于是对主流邮箱登录进行抓包分析,本文主要分析QQ是如何把账号密码从客户端传到服务端,学习借鉴相关经验。
 
===========分析结果(Findyou)===============
【QQ触屏版】
测试帐号:2198400585
用户密码:123qwe
加密方法:RSA非对称加密
传输协议:HTTPS
 
【WEB版】
测试帐号:2198400585
用户密码:123qwe
加密方法:MD5(hexchar2bin(MD5(密码))+QQ号16进制)+验证码
传输协议:HTTPS
分析结论:使随机验证码混合MD5加密以保证每次登录的值不一样
===========分析结果(Findyou)===============
 
 
  • 【QQ触屏版分析】
 
 
 
 
操作步骤:1.使用Chrome修改浏览器User Agent为iphone
              2.打开Fiddler准备抓包
              3.访问mail.qq.com,QQ会自动适配到触屏版
              4.查看http://w.mail.qq.com/cgi-bin/loginpage?f=xhtml源码
得到关键代码如下:
    loginForm.onsubmit = function(){
var pwd = document.getElementById("pwd");
var p = document.getElementById("p");
var tsValue = document.getElementById("ts").value;
var PublicKey = "CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9";
var RSA = new RSAKey();
RSA.setPublic(PublicKey, "10001");
var Res = RSA.encrypt(pwd.value+ '\n' + tsValue + '\n');
if (Res)
{
p.value = hex2b64(Res);
pwd.value = "";
}
return true;
}

如此可以看使用加密方法: RSA公钥加密算法

Fiddler抓包如下:(P为密码加密后的值)

 
 
 
 
 
  • 【WEB版分析】
 
注:网上查阅众多相关资料(网上有许多介绍QQ登录相关的内容),总结实践测试截图抓包如下
 
Step1:  打开mail.qq.com,向服务器 获取验证码 
捕获请求:
https://ssl.ptlogin2.qq.com/check?uin=2198400585@qq.com&appid=522005705&ptlang=2052&js_type=2&js_ver=10009&r=0.8771616001613438
返回数据有两种情况:
1). ptui_checkVC('1','aabf7b95f41689c5872740515288dcb5b1911c3de95f2092','\x00\x00\x00\x00\x83\x08\xee\x49');
2). ptui_checkVC('0','!BQI','\x00\x00\x00\x00\x83\x08\xee\x49');
其中 ‘1’代表需要验证码,‘0’代表不需要验证码 ,'!BQI' 就是默认的验证码;
 
Step2: 密码加密 
腾讯JS加密代码: 
M=C.p.value;
var I=hexchar2bin(md5(M));
var H=md5(I+pt.uin);
var G=md5(H+C.verifycode.value.toUpperCase());
 
密码“123qwe”通过以上加密方法,得到的结果与抓包请求中的加密值一样(请求截图见Step3)
pt.uin =  \x00\x00\x00\x00\x83\x08\xee\x49     QQ号 2198400585的16进制 000000008308ee49 
 
 
Step3:登录请求
捕获请求: 
https://ssl.ptlogin2.qq.com/login?ptlang=2052&aid=522005705&daid=4&u1=https%3A%2F%2Fmail.qq.com%2Fcgi-bin%2Flogin%3Fvt%3Dpassport%26vm%3Dwpt%26ft%3Dptlogin%26ss%3D%26validcnt%3D%26clientaddr%3D2198400585%40qq.com&from_ui=1&ptredirect=1&h=1&wording=%E5%BF%AB%E9%80%9F%E7%99%BB%E5%BD%95&css=https://mail.qq.com/zh_CN/htmledition/style/fast_login148203.css&mibao_css=m_ptmail&u_domain=@qq.com&uin=2198400585&u=2198400585@qq.com&p= 15A6FB7C3A0F0F12BE2BB2BFA52F7BDF&verifycode= !BQI&fp=loginerroralert&action=2-6-30865&g=1&t=1&dummy=&js_type=2&js_ver=10009
 
登录成功后返回的数据:
ptuiCB('0','0','https://ssl.ptlogin2.mail.qq.com/check_sig?pttype=1&uin=2198400585&service=login&nodirect=0&ptsig=9mgQ2dwnOftcwH965zksFLFPidMP2zxKQZJXkxdfOy0_&s_url=https%3a%2f%2fmail.qq.com%2fcgi-bin%2flogin%3fvt%3dpassport%26vm%3dwpt%26ft%3dptlogin%26ss%3d%26validcnt%3d%26clientaddr%3d2198400585%40qq.com&f_url=&ptlang=2052&ptredirect=101&aid=522005705&daid=4&j_later=0&low_login_hour=0&regmaster=0','1','登录成功!', 'QQ');
 
 
分析以上两种方法,采用非对称式(公/私钥)加密方法较为安全,已建议APP小组研发采用RSA非对称加密,使用HTTPS实现登录
 

转载请注明出处:Findyou

APP账号密码传输安全分析的更多相关文章

  1. 利用SharedPreferences完成记住账号密码的功能

    利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 Sh ...

  2. archive成功了,但是在输出ipa时要求有账号密码

    archive成功了,但是在输出ipa时要求有账号密码 可以通过命令行方式输出,绕开账号检查1.进入Windows-Organizer-Archives,找到要输出的scarchive列表项:2.右键 ...

  3. C# ASP.NET MVC:使用Cookie记住账号密码

    MVC记住账号密码 使用cookie操作 前端: <div> 用户名:<input type="text" id="UserName" val ...

  4. php 加密 解密 密码传输

    php 加密 解密 密码传输 <?php /* * * 使用按位异或运算 加密 * $str 明文 * $salt 盐 * */ public static function xor_encry ...

  5. 利用PPPOE认证获取路由器中宽带账号密码

    前言 回家时买了一台极路由准备换掉家里老掉牙的阿里路由器,想进后台看一下宽带账号密码,咦???后台密码是什么来着??? 我陷入了沉思,家里的路由器一般都是pppoe拨号,而路由器在与pppoe认证服务 ...

  6. 28.【转载】挖洞技巧:APP手势密码绕过思路总结

    说到APP手势密码绕过的问题,大家可能有些从来没接触过,或者接触过,但是思路也就停留在那几个点上,这里我总结了我这1年来白帽子生涯当中所挖掘的关于这方面的思路,有些是网上已经有的,有些是我自己不断摸索 ...

  7. APP手势密码绕过

    之前写的文章收到了很多的好评,主要就是帮助到了大家学习到了新的思路.自从发布了第一篇文章,我就开始筹备第二篇文章了,最终打算在07v8首发,这篇文章我可以保障大家能够学习到很多思路.之前想准备例子视频 ...

  8. 802.1X 账号密码+设备信息双重认证

    名词解释 802.1X: IEEE802 LAN/WAN 委员会为解决无线局域网网络安全问题,提出了 802.1X 协议.后来,802.1X协议作为局域网端口的一个普通接入控制机制在以太网中被广泛应用 ...

  9. Lab: Brute-forcing a stay-logged-in cookie:点击保持登录状态返回的Cookie里面破解账号密码靶场复盘

    靶场内容: 此实验室允许用户在关闭浏览器会话后仍保持登录状态.用于提供此功能的 cookie 容易受到暴力破解. 为了解决实验室问题,暴力破解 Carlos 的 cookie 以访问他的"我 ...

随机推荐

  1. android更换工具链

    欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=73 android编译系统是跟随android源码一起发布的,使用了gcc编译器,也就是 ...

  2. Eclipse无法启动错误之Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini)

    悲剧,在安装Android Build Tools时,提醒需要关闭Eclipse进行安装,于是我在Tools安装完成后重启了Eclipse.但是Eclipse却无法启动,在log中有如下提示: Una ...

  3. CSharpGL(40)一种极其简单的半透明渲染方法

    CSharpGL(40)一种极其简单的半透明渲染方法 开始 这里介绍一个实现半透明渲染效果的方法.此方法极其简单,不拖累渲染速度,但是不能适用所有的情况. 如下图所示,可以让包围盒显示为半透明效果. ...

  4. C#基于Socket的简单聊天室实践

    序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...

  5. smartroute简单集成集群聊天通讯

    在制定一个规模比较多大的聊天应用时,往往需要制定部署多个应用服务,其一可以保障服务的可靠性,其二可以增加用户负载量.但制定这样一种应用体系是一件复杂的事情,毕竟同一群体的用户实际上会在不同的服务器接入 ...

  6. 人人都是 DBA(XI)I/O 信息收集脚本汇编

    什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知道啊,得找 DBA 啊. DBA 人呢?离职了!!擦!!! 程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA& ...

  7. 作业三:PSP记录个人项目耗时情况

    PSP2.1        Personal Software Process Stages Time Planning  计划    20min              Estimate 估计开发 ...

  8. 赴美工作常识(Part 5 - 绿卡优先级)

    这个系列的第一篇<赴美工作常识(Part 1 - 签证)>是三年前写的,过了这么久这个系列终于要继续下去了.接下来当然时讨论绿卡的事情了.跟讨论签证一样,这里必须要有免责声名.因为我不是移 ...

  9. Ubuntu环境搭建系列—JavaEE篇

    恩,其实我是一时兴起,所以就写了目前这几篇环境的博文,希望能给自己做一个笔记,同时也能够给一些新手带来一些帮助,不会在配置方面那么迷茫.本篇文章主要就是针对Java web开发进行环境搭建. 一.To ...

  10. Azure China (8) 使用Azure PowerShell创建虚拟机,并设置固定Virtual IP Address和Private IP

    <Windows Azure Platform 系列文章目录> 本文介绍的是由世纪互联运维的Windows Azure China. 相比于Global Azure (http://www ...