作者历经千辛万苦,逆向了一个银行动态口令的APP,过程艰辛曲折。最后发现,其实生成算法也不算很复杂,其中主要使用了 android_id 系统时间戳 作为生成变量。看起来高大上的动态口令,在逆向工程师抽丝剥茧的分析下,亦不过如此。
正文
我这次要对全巴西最大的银行之一开刀,我也经常会使用到这家银行所提供的服务。他使用包括用户密码在内的多种途径来验证用户的身份。我逆向的动态口令(OPT)也是其中一种,并且我把他移植到了Arduino-compatible 平台上。
免责声明和更多的免责声明
在文章中我已经去掉了敏感的信息,以保护无辜的人的利益。而且这项研究的结果也不足以让我能够黑掉别人的银行账户。即使一个拥有root权限的第三方恶意应用,在没有足够的账户信息的前提下,都不能模拟动态口令的生成。而且,这次研究并没有发现任何代码层面的漏洞,这家银行的生成算法甚至比google的认证算法还要安全,甚至可以说这篇文章是对该银行APP安全性的一次褒奖。他的动态生成算法,完全符合TOTP规范。把数据安全做到了极致。
下面就是免责声明 balabala一大堆,请原谅小编就不翻译了,想看的可以去原文地址观看
通常对于新用户,他们会得到一张密保卡,但是密保卡这东西是极其不方便的。另外一个更好的方法就是使用android app生成一个动态口令,大胆的猜测,这个口令的生成可能把手机号,或者是pin值作为参数。在我每次刷机,或者更换手机的时候,都要重新绑定一遍这个安全服务。虽然过程比较简单,但还是令我不爽。所以我决定,逆向这个android APP做一个自己的动态密码生成工具。
Activating the application 激活应用
在阅读源码之前,我还是喜欢先把应用下载下来看看他长啥样,下面是三个阶段的截图。
第一张是安装时的截图,看一下他所需要的权限,这可不是开发人员为何好玩才加上去的。他们其中有些甚至有可能影响到动态口令的生成。第二张是激活界面,需要填四个数字,这四个数字只能通过给银行打电话被告知。第三幅图就是,成功激活后生成的动态口令。
(责任编辑:安博涛)