梆梆SDKs详细分析(2) - 安全键盘SDK揭秘

作 者: bighacker
时 间: 2016-02-15,14:57:49
链 接: http://bbs.pediy.com/showthread.php?t=207793

前言
    前段时间银行盗号木马盛行,由于对其中一些技术的好奇,所以乘着放假分析了梆梆的界面劫持SDK。文章发在了看雪上,地址如下:http://bbs.pediy.com/showthread.php?p=1414652#post1414652。
    分析完梆梆的界面劫持SDK之后,发现梆梆的技术实现比较简单,与其宣称的功效还是有一定的差距。而且还存在诸多的问题,例如,误报多、容易被绕过、仅支持5.0以下机型等。并且梆梆在SDK的介绍文档和集成文档中都没有写出这些问题。
    春节期间,为了学习梆梆的一些所谓先进技术,并且也想看看它的实际功效和宣传之间的差距,所以我拿了个用户量最大的安全键盘SDK来分析。

梆梆安全键盘SDK介绍
以下内容摘自梆梆安全键盘SDK介绍文档。

移动App输入键盘的安全现状
    移动App开发者们,通常会绞尽脑汁的对服务器数据存储安全、客户端与服务器间的数据通讯安全做很好的加密保护,但他们往往忽略了数据的第一入口保护--移动App键盘保护。很多开发者们仍习惯于让他们的App调用Android系统自带(或用户默认设置的)的输入法,而这将使用户输入的数据裸露在攻击者面前。
    目前App的输入法键盘主要采用了三种方式:系统默认输入法,自绘固定键盘和自绘随机键盘。
    当用户调用默认的手机输入法时,黑客安装的第三方输入法启动替换掉系统自带的输入法,我们称之为系统输入法被“劫持”。该输入法键盘可以直接记录用户输入的数字、字母、符号,并将这些敏感数据送回攻击者的服务器。
    自绘固定键盘,可以避免使用被劫持的系统默认输入,降低敏感数据泄露的风险,但对于键盘记录的防御能力有限。黑客可以记录到键盘点击的位置坐标。
    自绘随机键盘是安全性最高的输入方式,不仅避免了被第三方输入法劫持,并且键盘上每次点击位置都是随机的,无法恢复出用户输入的数据。
    基于键盘输入窃取信息的各类移动安全攻击非常普遍。黑客们通过反编译一些流行的应用,将键盘钩子(监控程序)捆绑嵌入其中,二次打包后上传到各个应用市场上扩散传播。当用户安装并运行了这些受感染的应用时,嵌入的钩子程序就会被激活,悄悄驻留在后台中,以监控用户通过键盘输入的数据。一些流行的键盘输入攻击包括: 
点击图片以查看大图图片名称:	1.png查看次数:	9文件大小:	54.9 KB文件 ID :	103159

梆梆安全键盘SDK的特点
点击图片以查看大图图片名称:	2.png查看次数:	6文件大小:	186.6 KB文件 ID :	103161

梆梆安全键盘SDK的优势
点击图片以查看大图图片名称:	3.png查看次数:	2文件大小:	144.2 KB文件 ID :	103160

梆梆安全键盘样式
点击图片以查看大图图片名称:	4.png查看次数:	2文件大小:	427.7 KB文件 ID :	103162
    在上图中,我们可以看到,梆梆的安全键盘是一个自绘的,并且是数字随机的键盘。这种键盘可以有效防止键盘劫持、记录用户敲击位置等多种黑客攻击。

梆梆安全键盘SDK逆向分析大揭秘
    前面的SDK介绍内容大部分都摘自梆梆的介绍文档。看完文档之后,给人的感觉就是梆梆这技术真牛逼。那么真相跟他描述的都一样吗?下面我们通过逆向分析来一一揭穿其真面目。

虚假宣传1 – 键盘按键是图片,且URL、MD5都不同
虚假宣传如下图:
点击图片以查看大图图片名称:	5.png查看次数:	2文件大小:	67.5 KB文件 ID :	103163
    梆梆宣称其按钮都是图片,并且每次都是从不同的URL拿到的,每次拿到的图片MD5也不同。因此,攻击者不可能通过图片来获取相应的内容。

真相如下图:
点击图片以查看大图图片名称:	6.png查看次数:	3文件大小:	112.0 KB文件 ID :	103164
    那么这些按钮实际是怎么回事呢?通过上面梆梆安全键盘SDK的布局文件我们可以知道,数字1,数字2,数字3等按钮其实都是系统自带的Button控件,跟URL、图片什么的没有半毛钱关系。

虚假宣传2 – 客户端记录点击顺序,服务端翻译
虚假宣传如下图:
点击图片以查看大图图片名称:	7.png查看次数:	4文件大小:	64.6 KB文件 ID :	103165
    梆梆的SDK宣传中说到,客户端记录了用户的图片标识及点击顺序,然后服务器端完成将这些标识翻译成实际字符、数字的过程。

那么实际的真相是怎么样的?
名称:  8.png查看次数: 0文件大小:  24.5 KB
    我们前面说过,客户端键盘的数字、字母等其实都是Android的Button控件。客户端在初始化阶段将Button控件设置成相应的字符。然后再点击事件中取出这个字符就可以了。没有客户端字母图片一说,所以就更没有服务器端翻译这个事情了。

虚假宣传3 – 安全键盘是一个HTML5安全控件
虚假宣传如下图:
点击图片以查看大图图片名称:	9.png查看次数:	4文件大小:	50.0 KB文件 ID :	103167
梆梆宣称其安全键盘是一个HTML5安全控件,因此可以有效防御一些列黑客攻击。

真相是这样的:
名称:  10.png查看次数: 0文件大小:  21.7 KB

名称:  11.png查看次数: 0文件大小:  4.0 KB
    查看demo的布局文件我们可以知道,安全键盘控件是一个名为com.bangcle.safekeyboard.PasswordEditText的控件。通过逆向分析,我们可以知道PasswordEditText是继承自系统的EditText控件。因此,其实现原理简单,根本不存在HTML5安全控件一说。

虚假宣传4 – 可以防止内存dump攻击
虚假宣传如下图:
点击图片以查看大图图片名称:	12.png查看次数:	0文件大小:	27.0 KB文件 ID :	103170
    通过逆向分析,可以发现梆梆的安全键盘确实对输入的数据进行了加密存储。但是,我们依旧可以dump出来加密的数据。

虚假宣传5 – 密码在内存中加密存储,无懈可击
虚假宣传如下图:
点击图片以查看大图图片名称:	13.png查看次数:	1文件大小:	37.7 KB文件 ID :	103171
    通过进一步的逆向分析,我们可以知道梆梆安全键盘使用的加密方式是DES对称加密。并且通过逆向其so,还知道了加解密使用的key。
点击图片以查看大图图片名称:	14.png查看次数:	0文件大小:	22.0 KB文件 ID :	103172

    有了dump出来的加密数据,还知道了加密使用的key,我们完全可以使用Python来编写一个简单的解密脚本。当然,使用更投机取巧一点的方法,我们可以直接调用其so中导出的加解密函数。
点击图片以查看大图图片名称:	15.png查看次数:	1文件大小:	25.0 KB文件 ID :	103173

总结
    通过逆向分析梆梆的安全键盘SDK,发现其使用的都是比较传统、简单的技术,与其宣称的高大上黑科技还是有一定的差距。因此,还是那句老话,不看广告看疗效。
    梆梆的安全键盘控件在一定程度上能加大攻击者的利用难度,但是理论上来说,密码最终还得解密出来,因此,攻击者无论如何还是有机会能拿到你的明文密码。

pdf附件:
梆梆SDKs详细分析(2) - 安全键盘SDK揭秘.zip .*转载请注明来自看雪论坛@PEdiy.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值