《Android安全技术揭秘与防范》读书笔记
该书作者周圣韬,曾经任职360、百度。
第1章 Android简介
Android的开放与安全 :较早的版本会有一些安全隐患,需要用户的手机能够及时更新。Google在Android的安全上也做了改善与补救措施,但是,国内的很多Google服务无法使用,许多第三方应用商店监管不严,导致恶意软件泛滥的问题难以解决。
第2章 Android地下产业链分析
盈利模式: 只要有足够的用户,植入广告、窃取用户的隐私、窃取话费等。
恶意吸费 :好奇的用户点入就有可能造成扣费。
广告、恶意推广 :
诱骗欺诈 :利用手机中的亲朋好友求助,实施诈骗。
隐私窃取 :
安装包分析 :打包党,将apk反编译后插入广告,逆向分析获取付费信息等,拦截开发者的收入,重新打包进入应用市场。
Android安全的发展趋势 :系统级别的杀毒 ;应用市场的监管;智能硬件安全;Google官方ROM中自带云查杀引擎。
第3章 理解Android系统
Android系统的层级架构 :应用层 ;框架层 ;核心库与运行环境层 ;Linux内核层 ;Android系统的分区结构。
启动过程 :Boot Loader加载阶段 ;加载Kernel与initrd阶段;初始化设备服务阶段;加载系统服务阶段(init,pid为1,父进程为linux kernel 0号进程,加载init.rc启动核心服务) ;虚拟机初始化阶段 (zygote创建Delvik VM,启动java组件系统服务、framework服务);启动完成阶段 (home启动,发送ACTION_BOOT_COMPLETED)
系统关键进程与服务 :系统1号进程init,ADB进程 存储类守护进程Vold(Volume Daemon), 进程母体Zygote(由init启动,因为其行为很像受精卵的复制自身分裂的行为,故名zygote) ,服务管理器ServiceMananger, 进程复制Android Fork,进程间通信Binder机制, 匿名共享内存机制Ashmem, 日志服务Logger。
APK生成 :编译过程 ,打包过程 ,签名优化过程。
系统安全执行边界 :沙箱隔离机制(系统使用重定向技术,将应用的所有操作都放在一个虚拟的系统中运行,就算有病毒也不会危害到真实的系统) ,权限授予机制 (API权限、文件权限、IPC权限),数字签名机制;
系统的安全结构 :
Android应用层:接入权限、代码保护
Android框架层:数字证书
Dalvik虚拟机层:沙箱机制
用户空间原生代码层和Linux内核层:Linux文件权限
Android 5.0(Lollipop)的安全架构 :加强型内核SEAndroid ;安全的锁屏 ;充分的加密 。
Android5.0安全总结 :Google的很多新功能很可能被国内的设备精简,国内Android安全的发展节奏远低于国外,国内的Android系统安全比Google慢一个步伐。
第4章 Root你的设备
获取Root权限原理 :su、sudo获取超级权限。被root的系统安装了superuser.apk,用来管理root权限。
Root思路 :刷机将su放入系统,或,通过有root权限的进程(adbd、rild、mtpd、vold)。
Root的分类 :临时Root (重启后恢复非root,还原当前用户的非root级别),永久Root。
Root之后 :静默安装 ()安装时无需用户干预直接安装),删除预装 ,键盘监控 ,短信拦截与静默发送 ,电话监控。
第5章 APK静态分析 :安装包分析也称为逆向分析
什么是静态分析 :不允许代码,进行词法分析、语法分析、数据分析,对代码进行扫描。
常用分析利器 :资源逆向工具AXMLPrinter 2 ,查看源码工具dex2jar、jd-GUI ,APK逆向工具APKTool ,Android逆向助手 ,反汇编工具IDA PRO ,超级编辑器UltraEdit。
认识APK文件 :App的种类 (Web app, Hybrid App、Native App)
APK反编译前结构 :一个压缩包文件
APK反编译后结构 :
分析DEX文件:反汇编的工具很多Dedexer、IDA PRO、dex2jar等。smali不仅提供反汇编,还提供打包反汇编代码重新生成dex的功能。
分析SO文件 :利用反汇编工具IDA PRO等。
通过反编译、反汇编重新打包,可以:篡改代码逻辑 ,广告植入与去除 ,收费限制破解 ,应用程序汉化。
第6章 ARM汇编速成
第7章 APK动态分析 :通过在真实或模拟环境中执行程序进行分析,用于性能测试、功能测试、内存泄漏测试等
应用体系架构 :代码安全分析 (apk被篡改、盗版的风险,避免被反编译、重打包),组件安全分析 (四大组件安全隐患),存储安全分析 (文件安全、敏感隐私数据)),通信安全分析 (敏感数据加密传输)
root后的设备,数据库信息、私有目录,都已经不再安全
AndBug:可以进行断点调试 。是一个开源工具:使用与Android中eclipse ADT调试插件相同的接口、java线调试协议JDWP和ddms允许用户hookDalvik的方法。可以在没有源代码情况下,直接对apk进行断点调试。
使用IDA Pro进行动态调试:使用IDA动态调试原生库so dex。
调试WebViewApp :WebView已知漏洞 (WebView使用JavaScriptInterface,让远程的网页通过此漏洞执行本地命令)
HTML安全:
网络钓鱼:伪装成网络银行、信用卡公司等
第8章 动态注入技术 :
java层级的hook、native层级的hook
Hook技术:将自身的代码“融入”被勾住的程序的进程中,成为目标进程的一部分。
Hook原理 :linux用户态,每个进程都有自己独立的进程空间,先注入到hook的进程空间,修改其内存中的进程代码,替换其过程表的符号地址。一般通过ptrace函数附加进程,然后向远程进程注入so库,从而达到监控以及远程进程关键函数挂钩。
常用的Hook工具 :Xposed框架 ,CydiaSubstrate框架 ,ADBI/DDI框架
HookAndroid应用。
Hook原生应用程序
Hook检测/修复 :hook后的应用毫无安全可言。如何检测进程是否被hook,如何修复被hook的进程以消除安全隐患?
java层Hook检测:举例浏览器应用 ,1),查看应用的进程pid号,比如5425,2)查看/proc下该进程的虚拟地址空间信息。对于系统应用,应该在/system@app下,但是该应用www.dhgcn.com过滤结果,有些是/data@app下,查看地址空间中对应的dex文件有哪些是非系统应用提供的。3)该进程被附加了很多非系统的dex文件,这个应用已经被hook,存在安全隐患。
native层Hook检测:与java层Hook检测实现原理一样。查看地址空间中对应的so文件是第三方提供的,该进程被附加了很多非系统的so动态库,这个应用已经被hook。
Hook修复:第三方库通过dlopen注入应用程序进程中,可以通过dlclose将第三方函数卸载。
第9章 应用加固与渗透测试
防止利用系统组件漏洞:Activity编码安全(exported为false、不声明LaunchMode等);Broadcast Receiver编码安全(设置exported为false,不添加Intent filter,处理后终止广播);service编码安全(exported为false,发送intent注意数据敏感性,return时不放置敏感信息,Signature permission,启动permission);provider编码安全(exported为false,对包名和签名做检验等)
防止逆向:代码混淆(proguard,可能出现混淆错误第三方jar调用出错,调试定位比较痛苦);dex保护(自定义逻辑注入dex文件,加壳和去壳);so文件保护(防二次打包,可以用java签名验证、md5校验等)
防止动态分析:检测运行环境,调试环境一律拒绝运行;so白名单机制,非本包名so一律拒绝加载。
Android渗透测试:模拟黑客的攻击方法进行测试。
第10章 系统安全措施
启动验证
磁盘加密
屏幕安全:屏幕锁。屏幕锁密码/data/system/gesture.key。如果被root,删除此文件后屏幕锁会失效。
USB调试安全:读书笔记500字
增强型内核SELinux/SEAndroid
第11章 内核攻击与防护
Rootkit
相关文章:大卫科波菲尔读后感
智能推荐
- 下一篇:红色经典《青春之歌》读书笔记
- 上一篇:开国元帅陈毅口述自传读书笔记