0x00 背景


2013年互联网金融对的发展令人震惊。不论是网上银行、移动支付、三方支付、个人贷款都在迅速崛起。工作需要,上年12月初步探测(不能说研究)了下微信支付,其他小伙伴做的支付宝,现在就将探测到的一些成果比较后分享下。

概念性东西,例如微信支付不做过多说明,不了解的去看下百科。支付宝是小伙伴在研究我也不算很清楚,不过拿他测试的结果来和微信支付做下比对以更好的说明问题。

0x01 微信支付与支付宝钱包简单介绍


微信版本号:5.1

支付宝钱包版本号:7.6

微信支付的整体消费流程是这样子的:

微信账号--->绑定--->验证--->设置支付密码--->消费

为了更好的测试,我就绑定了自己的银行卡并消费。具体过程百科已经很详细贴个图说明下,绑定结果。大企鹅的绑定验证过程是怎样的呢?经过自己的测试我们不难发现验证过程是这样子:

1.初次绑定卡:

2014021722074747557.jpg

再次绑定其他卡相对简单只需要,预留手机、手机验证码。(这时候你会发现该微信只能绑定以第一张开户的户主的其他卡片,想绑定其他人卡与该微信对不起客官,不可以)。当以上信息同时满足时,银行卡便被微信绑定,支付时只需要

--->支付密码(6位数字)

不同的行银行卡最高限额不同。

支付宝钱包消费:

支付宝账号--->消费支付宝、消费信用卡、消费储蓄卡、消费余额宝

消费方式有三种:

1.复杂支付密码
2.数字支付密码(6位)
3.小额面密。

仍用一张图说明3种支付方式的依赖关系:

2014021722251656217.jpg

0x02 探测结果及比对


经过以上的消费过程,我们不难发现这些的全部过程我们的银行卡密码是完全没有用到的。ok,个人认为这些可称作快捷支付吧?那么我们的银行卡会不会被别人恶意绑定并消费呢?看微信给出的答案:可以。支付宝钱包给出的答案是:不可以。为什么呢?我们来分析下:

微信的绑定过程在上面已经了解过了:重新去注册个新的微信按以上步骤去绑定、消费。我们发现是完全行的同的。而且不同的微信账号,设置不同的支付密码去同时消费同一张银行卡。绑定过程:卡号+身份证+卡片预留手机号+手机验证码。做一个不要脸的假设,社工搜集(可以对自己的同事下手,哈哈)一旦搞定手机(借收机打个电话、也有小伙伴说补卡)你钱就没了。小心同事借你手机打个电话你的银行卡上的钱就莫名其妙的少了………… 恭喜你,他可以随意消费你的银行卡了。

卡号+身份证+预留手机+验证码---|---|-->钱少了

一个图说明下银行卡和微信直接多对多(一个微信可以绑定多个第一个卡片户主下的其他卡片)的关系:

2014021722512821935.jpg

那么支付宝钱包为什么不可以呢?我们都知道,注册支付宝的时候会有实名验证,而且你一但注册是不能二次注册的。而后期的消费过程中密码设置更是逐层要求相加。例如你想小额免密支付,必须有以上两个密码设置。支付宝安全首先从,根本抑制了以上微信中的问题。当然Tencent注册的底层基数已经不可能抑制,那么是不是从安全角度去思考是不是该比阿里做的好点呢?为了表明本次探测的真实性,贴几张探测过程中的图片证明:

同一张卡被不同微信绑定:

2014021723042841558.jpg

2014021723044869418.jpg

两个手机最后消费成功的证明:

2014021723062713981.jpg

2014021723064957054.jpg

根据上面的图标我们可以清晰的分辨事实的可行性。

0x03 其他


本diaosi,在Java空白加上本身编程能力不强,所以没对相关apk做反编译。另外,对于微信银行做了简单探测,发现绝大数都是跳到自身银行WAP页面进行的相关操作,要想做神一步的研究需要伪造生成证书,过程较麻烦且数据量大,所以没有诸个测试。数据传输和数据存储部分没技术不过关没发现什么东西,有兴趣的小伙伴可以研究一下。本文仅仅起到抛砖引玉的作用,移动安全、互联网金融是热门,大家冲啊!