如何做好移动安全(梆梆加固后的APK破解提取dex)

智能手机的普及将移动互联网的发展推到了一个让所有人都为之兴奋的高度,我想即使是以商业眼光见长的“苹果教父”乔布斯也不会料想到短短几年时间,智能手 机就已经成为了所有人离不开的商业产品,各种商业应用层出不穷,人们越来越习惯在手机上选购商品,越来越习惯用手机来购买火车票、电影票,越来越习惯用手 机来完成支付。

但随着而来的是日趋凸显的移动安全问题,据多家安全机构调查显示,智能手机病毒特别是在Android平台上最近几年呈爆发式增长,套餐窃贼、支付宝大盗 等手机病毒则表明手机病毒已经越发智能、越发难以控制,并且危害巨大,窃取隐私、盗号、交易劫持等案例屡见不鲜……;这是一个技术贴,这些套话咱们到此为 止,下面咱们说说移动安全怎么做。

安全出了问题总要有人跳出来解决问题,但是我们希望跳出来的是“真卫士”而不是自身存在问题的“伪卫士”。笔者长期从事移动安全研究,对移动安全的各家解 决方案都做过一些研究,有的很有价值但有的却不那么让人满意,下面就让笔者来揭秘多家移动应用加固的安全保护效果到底怎么样。

国内某知名移动应用安全加固企业(针对Android平台)使用dex(android可执行文件)隐藏的技术,提供安全加固解决方案。但加壳/加密只是移动安全的第一步,也是最脆弱的一步。只能对抗静态分析和简单的逆向工程。

然而, 不管如何隐藏dex, 最终在运行时都必须释放到内存, 所以本文的思路是从内存中找到解密后的dex文件, 进而得到加固前的apk,由于dalvik的执行机制要求dex在内存中是连续的,所以想办法拿到内存的coredump就很可能完成破解。

破解的过程,已有Bob Pan(一名匿名安全研究人员)发表在其他安全论坛上但却未引起重视,笔者也于早些时候考虑到这种方案并予以验证,在此感谢Bob Pan,文章地址:http://blog.csdn.net/pxb1988/article/details/17167795

笔者的破解过程如下:

1:安装加固后的apk并运行

2:将前面编译好的gdbserver复制到android模拟器里面,修改其权限

adb push gdbserver/data/local/tmp/

adb shell chmod 755/data/local/tmp/gdbserver

2、查看所装apk的进程

adb shell

ps

可以看出,共有三个进程,且相互ptrace,所以不能直接用gdb连接其主进程,但是可以gc线程、binder线程。

3:进入线程的tid目录下

ls /proc/345/task

可以看到:

这么多的线程,任意链接上一个即可。

4:链接一个线程

adb shell

cd /data/local/tmp

./gdbserver :1234 --attach346

5:另开一个终端

adb forward tcp:1234 tcp:1234

6:启动上面生成的gdb

./gdb

7:链接本地:1234端口

target remote :1234

8:然后输入gcore 拷贝

gcore

出现一下结果则表示已完成:

9:用vim打开core.346文件

vim命令行下输入:

:%!xxd

等待一段时间后就会出现:

10:搜索与程序相关的类名,记下大概位置

如上面的行号:34672

11:然后通过查找dex.035找到离它最近的dex文件头

搜索发现在3569346行的dex.035最近,应该是我们所需的dex文件。

12、从中读取dex文件开始位置和大小

从中可以读出,dex文件开始位置为:3676c10  十进制为:57109520

dex文件大小为:3508e0(起始位置偏移32位)十进制位:3475680

13:抠出dex文件

dd if=core.346 bs=1count=3475680(十进制的dex文件大小数值) skip=57109520(dex文件头的

起始位置的十进制数值) of=x.dex

x.dex即为提取出来的dex文件

总结:成功逆向出dex文件,我们就可以使用常见的apktool等逆向攻击继续完成到smali甚至java语言的逆向,在此就不累述
了。整个过程不超过10分钟的时间,笔者就完成了对该Android应用的破解。该安全公司的安全加固似乎不能让人满意。此外,在笔者的研究下,该安全公
司的安全加固还存在以下问题:

A:对Android系统的不同版本兼容性不完美,Android 3.x系统上不能运行经过该安全公司加固的应用。

B:dex(Android)可执行文件的本地化问题,据笔者研究发现,安全加固只是将dex文件解密并释放在本地的隐藏文件夹下存储(/data/data/应用名/.cache),即使不在内存中还原也可以使用自动化脚本将该dex文件本地还原,破解更加简单。

对于移动安全的担心,笔者在游走于各大安全论坛时发现在近期即将举行的OWSAP安全沙龙苏州站的议题就是针对移动应用安全。活动网址:http://www.owasp.org.cn/OWASP_Events/20140121

据笔者的了解,该沙龙是由通付盾安全团队协调举办的属于OWSAP体系的移动安全沙龙,当中就有对业内各家移动安全加固方案的比较。

据悉,通付盾也有自己的安全加固解决方案,并为几家金融机构和银行提供了安全加固,经笔者实际下载其加固后的应用安装测试,通付盾对一些加固中出现的问题
做了处理。例如加固后的应用也可以在Android
3.x上运行,采用内存加载dex的加固方式,本地不存有解密后的dex文件,极大的提高了程序的兼容性、稳定性和破解的难度。此外,据了解,该公司提供
的安全服务有较高的门槛,为了防止被黑客利用,通付盾有较严格的安全审核机制,一般只为第三方企业和金融机构提供安全加固方案,并对其要加固的应用进行全
面的安全评估,确保其没有安全隐患。

此外,其公司创始人Dr.Wang从硅谷带回了移动安全的全新解决方案——“移动安全三战法:加固、密信、风控”,对移动应用实现从发布到使用、从客户端
到会话再到安全风控的全程安全保护,或许能构建移动安全领域真正的SafeZone,让安全成为应用的DNA,增强自身的防护能力。

时间: 2024-10-05 15:31:22

如何做好移动安全(梆梆加固后的APK破解提取dex)的相关文章

梆梆加固破解

本文假设你已经使用过梆梆加固,手头至少有个一个通过梆梆加固后的apk 梆梆加固的原理,这里就不仔细描述了,可以将加固后的apk反编译后分析一下,看看梆梆在里面都加了什么内容,我总结一下梆梆加固做了哪些事情: 1.创建.cache目录,/data/data/packageName/.cache/" 2.自定义DexClassLoader: dexPath: /data/data/packagename/.cache/classes.jar optimizedDirectory: /data/dat

百度加固后检测反jdb调试apk的小记录

百度加固后的apk检测反jdb调试apk的简单分析,就一个很简单的记录而已,方便以后查阅. 按照正常IDA调试,在开始用jdb来连接,出错了 毕竟是加壳的东西,所以反编译看一下,竟然找到了一点内容,如下: static { if(!Debug.isDebuggerConnected()) { String v0 = Build.CPU_ABI; if(v0 != null && (v0.startsWith("x86"))) { StubApplication.load

Apk脱壳圣战之---如何脱掉“梆梆加固”的保护壳

一.前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁.这样的恶意软件是非常让人痛恨的.所以本文就用一个案例来分析如何破解这类应用,获取解锁密码,让被骗的用户可以找回爽快! 二.分析软件锁机原理 本文用的是一款叫做:安卓性能激活.apk,关于样本apk文件后面会给出下载地址,从名字可以看到它肯定不会是一个恶意软件,但是当我们安装的时候,并且激活它的权限之后就完了.下面不多

Android逆向之旅---获取加固后应用App的所有方法信息

一.前言 在逆向应用的时候,我们有时候希望能够快速定位到应用的关键方法,在之前我已经详细介绍了一个自己研发的代码动态注入工具icodetools,来进行动态注入日志信息到应用中,不了解的同学可以查看这里:icodetools动态注入代码解析,看完之后都会发现这个工具对于现在加固的应用是没有办法的,所以我们如何能够得到加固的应用的所有方法信息呢?再不用复杂的脱壳步骤也可以轻松的获取对应的方法信息.这个就是本文需要介绍的内容. 二.获取加固应用方法 在之前了解过加固应用原理的同学或者是弄过脱壳的同学

梆梆SDKs详细分析 - 防界面劫持SDK

前言 前段时间,国外知名的安全公司fireeye发表了一篇病毒分析文章,讲述的主角是一个专门针对手机银行的android手机病毒.文章链接如下:https://www.fireeye.com/blog/threat-research/2015/12/slembunk_an_evolvin.html.这个手机病毒变种甚多,影响广泛,也不乏一些高端技术的应用.其中有一个很有意思的特性,就是它可以劫持手机银行的登录界面,从而盗取受害者的银行账号.密码. 看完fireeye这篇精彩的分析文章之后,我对这

android黑科技系列——获取加固后应用App的所有方法信息

一.前言 在逆向应用的时候,我们有时候希望能够快速定位到应用的关键方法,在之前我已经详细介绍了一个自己研发的代码动态注入工具icodetools,来进行动态注入日志信息到应用中,不了解的同学可以查看这里:icodetools动态注入代码解析,看完之后都会发现这个工具对于现在加固的应用是没有办法的,所以我们如何能够得到加固的应用的所有方法信息呢?再不用复杂的脱壳步骤也可以轻松的获取对应的方法信息.这个就是本文需要介绍的内容. 二.获取加固应用方法 在之前了解过加固应用原理的同学或者是弄过脱壳的同学

系统加固后的一些事项

1.linux配置yum mount  -o  loop  /home/cfzqoper/CentOS-6.9-x86_64-bin-DVD1.iso  /media/CentOS/ 2.linux共享访问其他机器目录 sudo mount //10.65.54.224/share /media/windows -o username=user,password=password -t cifs sudo mount //10.60.136.197/temp /media/linux -o us

SSH安全加固后不密码登录异常

最近在折腾openstack封装镜像,基础软件安装.优化.安全加固后封装,创建虚拟机登录,发现报Permission denied (publickey).异常,根据字面意思是公钥的问题,通过VNC本地登录后,检查相关账户的SSH 相关的配置和权限.没有发现任何异常.再核对相关的配置文件. 有一配置参数为 PasswordAuthentication no #不允许账户密码登录  更改其为yes ,然后重启SSHD服务 systemctl  restart sshd 然后登录正常. 原文地址:h

手游Apk破解疯狂,爱加密apk加固保护开发人员

2013年手游行业的规模与收入均实现了大幅增长,发展势头强劲.权威数据显示, 我国移动游戏市场实际销售收入从2012年的32.4亿猛增到2013年的112.4亿元,同比增长了246.9%,手游用户从2012年的8900万迅 速增长到2013年的3.1亿,增长幅度高达248.5%.来源!www.ijiami.cn 可是,在移动手游快速发展的同一时候,暴露出的手游破解问题也日益严重,手机游戏软件被破解后注入恶意代码.盗取用户財产.窃取用户设备信息的现象屡见不鲜.2014年1月,台湾易游网络有限公司旗