【Android】组件安全

【Android】组件安全

本文主要在实战过程中的一些经验总结,长期更新,目前状态是初学,目前实战中会挖一些webview沙箱任意读、lauchanywhere等比较常见的问题,其他类型的漏洞还在不断地学习中。

drozer

通过drozer可以看出apk有哪些组件可导出

下载

https://labs.f-secure.com/tools/drozer/

常用命令

run app.activity.info -a com.xxx
run app.service.info -a com.xxx
run app.broadcast.info -a com.xxx
run app.provider.info -a com.xxx

jadx

尽管知道了导出的组件,也是需要通过阅读代码来观察组件利用的逻辑

下载

https://github.com/skylot/jadx

常用命令

这里有个trick就是改变jadx运行内存。

step1:cd ~/jadx-1.3.3/bin
step2:vim jadx-gui
step3:找到这一行,DEFAULT_JVM_OPTS=""-Xms128M" "-Xmx16g""(xms就是最小内存,xmx就是最大内存),例如我的mac内存是16g就可以打到16g
step4:加入命令行参数alias jadx="填自己的目录/jadx-1.3.3/bin/jadx-gui"
step5:键入jadx即可运行,

frida

当代码比较多,有点看不过来入参出参返回值时,可以用hook的方式进行调试,至少我暂时是这么做的。

下载

https://github.com/frida/frida/releases

常见命令

中间插入要hook的函数即可,可以log出入参和返回值,如果有需要也可以篡改return来看看效果,一般用得少。

if (Java.available) {
    Java.perform(function () {
        代码块
    });
}

小strick,jadx1.3.3支持一件生成frida hook代码块,按f即可。

实战trick

基本上目前我接触到的客户端问题,上述的工具即可解决了,当然还有android stuio,编写poc代码。这个这里就不阐述了。下面介绍实战中,组件相关的漏洞挖掘时的一些trick

strick即集合

实战中会遇到的一些小trick,因为也是不断在挖掘和学习,会不断地遇到新的情况,如果记得住的话会持续更新。

  1. oncreate,也就是必然触发的入口。
  2. 带init的函数,通常带init的函数也会自动触发。
  3. getintent函数,通常getintent函数都是我们能控制的数据。
  4. url、uri、webview等常见的url相关的入参。
  5. 关注extends继承关系,通常有可能a组件继承了b组件,a没问题,但是b有问题。
  6. startactivity,通常这是最终的触发点。有可能存在控制的数据start了另外一个组件b,那就要去审计组件b的代码看看数据最终如何控制。
  7. 自有协议绕过webview限制,通常直接file读沙箱可能会被拦截,但有时候有些自有协议通常会接收一些参数作为url传入,这里可能存在绕过,可以全局搜索**sheme://**找有无自有协议绕过的可能
  8. 当存在url可控时,可以关注是否能用intent协议执行,如果能执行intent,通常就是lauchanywhere了。
  9. handlermessage,通常service进行通信时,也会存在信息交互,可看看信息交互是否存在敏感信息,毕竟是可导出的,所以存在敏感信息和恶意apk之间的交互,劫持对应的敏感信息。
  • 2022.03.18更
  1. 关注扫一扫+【7】自有协议绕过,通常扫一扫会支持该app的私有协议。

你可能感兴趣的:(客户端逆向,安全,android)