安卓漏洞(apk破解总览)
安卓常见漏洞有,APK破解、不安全的⽤户数据存储、任意备份漏洞、不安全的数据传输、不安全的加密算法、组件导出拒绝服务漏洞等,我们这次主要研究的是apk破解
APK的破解主要有apk篡改(⼆次打包与重签名)、反编译(dex反编译、so反编译
)、动态调试(java层动态调试、native层动态调试)、动态注⼊(java层动态注⼊、native层态注⼊)
⼀、APK篡改
⼆次打包、重签名
⼆次打包(缺少⾃⾝⽂件完整性校验)
Android应⽤在编译后会将其代码、资源⽂件、配置⽂件打包成APK⽂件,APK⽂件的格式为zip包,任何⼈均可通过解压的⽅式获取其内部⽂件。如果不对内部⽂件进⾏完整性校验,攻击者可能会对APK包中的资源⽂件、代码⽂件进⾏篡改(插⼊恶意代码、⽊马、后门、⼴告等),⼆次打包和重新签名并且发布,并使⽤钓鱼的⽅式对终端⽤户进⾏攻击
重签名(缺少⾃⾝签名完整性校验)
Android系统使⽤JAR包的签名机制对APK进⾏完整性保护,确保APK在不安全的⽹络传输时的完整性得到保护。但Android系统没有对数字签名的颁发者进⾏管理,任何⼈都可以⽣成数字签名,并使⽤该签名对APK包进⾏重新签名。如果App本⾝不对⾃⾝的签名来源进⾏有效的完整性检查,攻击者可以篡改应⽤(插⼊恶意代码、⽊马、后门、⼴告等),重新签名并且⼆次发布,导致应⽤程序完整性被破坏
⼆、反编译
dex⽂件反编译、so⽂件反编译
dex⽂件反编译(dex缺少加密保护或加固强度不⾜)
dex⽂件缺少加密保护(没有壳)
dex⽂件加固强度不⾜(加了壳,但是不够坚固,可以脱壳)
App在发布的时候并没有对classes.dex⽂件进⾏保护。classes.dex是Android App的可执⾏⽂件,包含了编译后的Java代码的字节码。由于没有对该⽂件进⾏加密或加密不⾜,使⽤⼯具可以将字节码还原成Java代码。攻击者可以轻松的获取App客户端所有的业务逻辑代码,并发起其他攻击,如⼆次打包、植⼊恶意代码、WebApi逆向等。
so⽂件反编译(so⽂件未加密)
App在发布的时候没有对核⼼的SO库进⾏加密、加壳处理。SO中包含了编译后的机器码,由于没有对该⽂件进⾏加密,使⽤⼯具可以将字节码还原成类C代码,漏洞的危害是,核⼼代码未被保护,核⼼代码泄露。
三、动态调试安卓软件签名工具
动态调试:通常利⽤程序语⾔提供的调试功能或专门的调试⼯具来分析程序的动态⾏为。⼀般程序语⾔和⼯具提供的调试功能有检查主存和寄存器。设置断点,即当执⾏到特定语句或改变特定变量的值时,程序停⽌执⾏,以便分析程序此时的状态
分类
java层动态调试、native层动态调试
调试⼯具
⼀般使⽤ida和gbd进⾏动态调试
四、动态注⼊
动态注⼊:本质上还是调试技术,就是通过代码实现⾃动化调试并达到加载⾃定义动态链接库的过程。通过动态注⼊可以实现:查看变量值、修改变量值、跟踪进程跳转以及查看进程调⽤堆栈
分类
java层动态注⼊、native层态注⼊
调试⼯具
⼀般会使⽤xposed和frida进⾏动态注⼊
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论