Android安全技术揭秘与防范——APK动态分析

代码安全分析

1 四大权限组件权限和安全检测,特别是广播容易被恶意发送,可以采用应用内部广播LocalBroadcastManager来规避
2 存储安全检测,内存存储不设置全局可读可写,不将隐私数据明文保存在外部存储。
3 通信安全,采用HTTPS+证书+强加密传输来保证安全

调试安全

关闭debuggable

项目发布前需要在application节点或者release配置中设置debuggable属性为true,否则会显示出Log并且可被外界调试。

发布之前最好进行测试,使用aapt工具:
aapt list -v -a myfile.apk
这个命令将会打印和apk相关的所有详细信息,找到“android:debuggable",它的值分为:
0x0: debuggable false
0xffffffff: debugabble true
例如打印结果:
android ebuggable(0x0101000f)=(type 0x12)0x0
说明Release Build已经关闭了debuggable

注入Log调试

为了动态逆向分析其他APP,可以修改smali,加入invoke语句调试

性能分析工具

TraceView

函数性能分析
代码前后加入语句(可以注入其他应用smail分析)
Debug.startMethodTracing("loveworld");
Debug.stopMethodTracing();
在sd卡根目录可以获得图形化表,展示了方法调用的时间和CPU消耗等信息

而DDMS中的Method Profiling则可以手动控制时间段内的性能变化

Android网络抓包工具——Fiddler

Fiddler 支持浏览器和智能设备抓包
实质是中间使用了一个Web代理服务器,所以可以中途拦截请求和修改请求,甚至可以改变本地返回结果
Android抓包:要求设备与PC同一局域网,设备设置为本地地址,PC修改抓包配置即可。
Request断点:选择Before Requests-disabled,可以拦截住请求并修改,包括修改请求地址和所有参数
AutoResponse:重新设定返回结果,例如将百度网页的图标替换为本地图标。

注意:非正常退出可能会影响网页正常浏览,重启Fiddler可修复

无源码应用调试工具——AndBug

环境:android开发环境、bottle库、python

AndBug可以在不拥有项目源码的情况下hookDalvik方法,进行断点。

运用范例:破解一个未知源码的应用内部参数加密方式
1 通过dumpsys命令可以获得包名、类名、方法名
2 猜测加密方法,设置方法断点,跳到断点将打印出线程参数信息
3 可以推测出简单加密算法规则,例如 字符串+ID+密码的总和来MD5

扫描二维码关注公众号,回复: 3696031 查看本文章

IDA pro 动态调试

可以调试原生so库,获取设备root权限后远程运行android_server,通过端口转发数据到PC进行调试
需要深入理解硬件、虚拟机、C、C++、linux

WebView安全问题

远程代码执行漏洞

android 4.2以前网页可以通过addJavaScriptInterface方法执行本地命令
后加入@JavaScriptInterface已修复

UXSS漏洞

android 4.4之前的Webkit出现的浏览器同源策略漏洞,危害极大,可窃取用户隐私,之后转chromium内核解决
二位

二维码钓鱼

通过生成虚假二维码替换应用二维码窃取资料,人们一般无法分辨二维码的区别,应用会跳转到相应钓鱼网址

SQL注入***

把SQL命令插入Web表单或者请求字符串,欺骗服务器执行恶意SQL
例如巧妙替换登录查询语句达到强行登陆账号

猜你喜欢

转载自blog.51cto.com/13952501/2308130