一.介绍
dvb是一个故意存在漏洞的 Android 应用程序,可以认为是APP靶机。它有一个官方文档,在APP的审计过程中,可以参考官方文档进行,官方文档中介绍了APP存在的各种安全漏洞。
从名字可以看出来,这是一个不安全的银行APP,整个APP包含的核心功能包含登录、个人资料、密码更改、转账、添加受益人等模块。
包含的具体漏洞,也是一些APP上常见的安全漏洞,例如典型的
root检测绕过(这个其实也说不上是漏洞),未开启SSL pinning,明文请求,硬编码,activity 导出,logcat泄漏等。
二.mobsf平台扫描
拿到APK后,直接在mobsf上静态扫一下看看结果先
可以扫描结果摘要,mobsf给了49分,看着好像还可以。不过mobsf评分也就看看就可以了,评分逻辑很不合理,很多正常的APP因为权限比较多,得分反而很低。这个靶机APP反而得分还可以。进一步看具体分析项。
1,权限部分
可以看到,没有申请任何危险权限。在APP升级过程中,一般比较有复杂功能的APP,都会申请一些被mobsf认为是危险的权限,例如国内APP几乎都有位置权限,摄像机权限。虽然mobsf提醒dangerous,但是业务逻辑需要,可以不用在意。只需要注意申请的权限是否满足合规要求。例如申请权限的具体原因、具体场景,需要在隐私政策里说明,在申请权限之前,需要弹窗提醒用户,在用户确认权限之前,不允许业务采集相关信息等等。
不过也有一些权限需要特别注意,例如写SD的权限,如果没必要,就不要申请,现在大部分APP没有写SD权限的必要。
2,系统API接口部分
上图是检测APP调用的系统API,因为APP没有进行加固,所以反编译代码也比较清晰,在对应的API调用中,可以点进去看到具体的反编译代码。
有几个可能比较敏感的API调用,可以进去看一下具体代码调用
Certificate Handling
Execute OS Command
看着是一个危险函数,点击去看,执行的command命令不是用户输入的,而是固定的/system/xbin/which,这里应该是root检测逻辑。
getInstalledPackages
高危接口,获取已安装应用的信息时,确保不会泄露敏感信息
3,BROWSABLE ACTIVITIES
这里可能存在风险,如果URL scheme没做好限制和过滤,可能会被利用,导入恶意的URL,或者造成信息泄露。
4,网络相关风险
这里的风险比较明确,首先是允许明文请求,然后是信任系统证书,没有进行ssl spinning。反应到动态测试上,可能会在动态测试中,发现有明文传输的HTTP请求,以及可以被抓包工具进行https抓包。这里额外注意,后续在动态测试中注意。
5,manifest风险配置项
这里列出了manifest文件中的风险项,具体风险,需要进一步关注
1,minsdk21 ,还可以,如果更低,例如17,就存在比较严重的风险
2,usercleartextfraffic,允许明文传输,这里最好设置成false
3,backu,需要关闭
4,设置了inten-fileter,隐式export,需要关注是否有敏感信息泄露
6,静态代码扫描部分
这里mobsf给了三个部分
1,log可能泄露敏感信息
代码中有Log函数,mobsf平台把所有log函数的代码入口都列出来了,很多。不过我找了一下,发现一个很明显的问题点
String string = jSONObject2.getJSONObject("data").getString("accessToken");
SharedPreferences sharedPreferences = BankLogin.this.getSharedPreferences("jwt", 0);
Log.d("accesstoken", string)
这里把token给打印出来了。
2,APP读取外部存储,可能泄露信息
,3,APP有root检测逻辑
root检测逻辑,这里调用了os.exe函数,需要注意的是绕过相关的逻辑。
三.总结
从静态扫描结果来看,APP还是存在不少问题。有些比较明确,例如log了token出来。有些还需要根据动态测试的结果进一步确认。例如很多APP有cleartext的配置,不过实际上APP并没有明文请求等等。
不过静态扫描,还是给除了不少需要注意的风险点,这些风险点,需要在后续的动态测试中进行验证。