Android安全测试集合一之客户端APP测试点(一)
我又来水文章啦~~~本章主要是想大致讲下客户端测试中的一些测试点和测试方法,比较偏向于基础,望轻喷。。。。。。
首先,Android的测试点也比较多,个人理解测试点也可以大致的分为三大类:客户端安全、服务端安全、通信安全。下面引用一个现在比较常见的Android测试点思维导图:
那么。我们今天主要就是讲一下这个客户端app安全:
- 反编译:这点主要是为了测试APP是否进行加固和混淆;
测试方法:这里推荐使用反编译工具进行测试,但是一般经过加固的APP,其实也就不太建议测试这个点了,意义不大。如果是更深层次的就考虑逆向和破壳的技术了,我太菜,说不了,哈哈哈~~~~
反编译工具基本一搜就有了很多介绍,这边推荐使用比较基础的就是apktool和dex2jar。两者有一定区别:
apktool反编译出来的是java汇编代码而dex2jar反编译出来的是java源代码。
我本人在使用过程中会看情况使用,如果只是为了查看一些配置文件之类的,apktool会比较方便;如果是需要进行简单的代审的话,那么dex2jar比较好,反编译之后使用jd-gui打开jar包可直接查看。注:这里的两个工具的详细的安装和使用方法,后面单独写下。
测试过程:1、先说apktool,这个简单,安装完工具后,直接在apktool.jar的目录下cmd运行后使用【java -jar apktool.jar d apk文件】来进行反编译。会得到一个反编译后与apk同名的的文件夹。
这里可以查看AndroidManifest.xml文件来看下基本的app的配置信息,也可以通过这里发现一些配置上的问题,例如:是否允许备份、是否允许调试、哪些权限开了、哪些组件对外暴露的是否有做权限设置或者限制等问题,当然这些也基本局限于配置项的问题。另外就是里面的一些资源文件,也可以看看是否有什么信息泄漏的点。
dex2jar的使用也比较简单,对于没有进行加固和混淆的apk可以通过这个看到源码,方便进行分析。使用方法也比较简单:把apk文件后缀改为zip压缩文件,然后解压缩可以看到classes.dex文件,把该文件复制到dex2jar的主目录中并在当前目录执行cmd命令d2j-dex2jar.bat classes.dex,随即可得到一个.jar的文件,可用jd-gui或者jadx之类的工具打开查看源码。
另外,关于反编译这块,也有集成工具可用,例如apktoolkit或者androidKiller等工具,集成了上述工具,有界面化操作很简单。
2、防二次打包:这里主要是为了测试app是否可以二次打包,也包含app签名问题。
测试方法:这边可以用两种方法:第一种是依然使用apktool工具java -jar apktool.jar b 之前反编译出来的文件夹,运行之后会在目录下多出两个文件夹,一个是build一个是dist,新的打包出的apk就在dist文件中。
第二种方法就是使用刚刚说的apktoolkit或者androidKiller,这两款工具都可以直接操作,相关工具的使用方法就太多了,这里就不细说了。
接下来就是对回编译的apk进行签名,这里主要是要看原先的apk是否有进行加固或者进行签名校验,如果都没有的话,那么可以通过自己签名后进行发布安装,存在隐患。
签名同样有两种方法:第一种是在java安装目录下的bin目录中执行命令:
keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore(会生成abc.keystore签名文件)
jarsigner -verbose -keystore abc.keystore -signedjar testx.apk test.apk abc.keystore(生成签名后的apk)
第二种方法就是刚刚说的那两个工具,有默认签名文件可用,可以直接界面化操作。
两种方式都是为了测试app是否做了签名校验或者加固,如果有做的话,那么加固的话可能会出现无法回编译成功的现象;签名校验的话则会在安装时发现提示apk包来源不正规等情况。
3、数据安全:数据安全这里主要包含几个模块:
1)敏感信息不要存在sdcard中
2)日志打印安全
3)app目录文件访问权限安全
4)app敏感数据不要本地存储
1)第一个主要是为了防止在root环境下,使用adb shell进入系统后pull拉取sdcard文件里面的内容,从而引起的敏感信息泄露。(这里需要先运行app并操作所有功能点之后)
2)第二个主要是针对开发过程中关于日志打印调试过程中产生的敏感信息输出的问题;通过logcat命令adb logcat -v time > 目录/log.txt,然后在手机测试端和PC端连接的情况下,通过操作手机测试端中的app各项功能进行日志抓取,从而分析日志敏感信息泄露的点。这里需要使用到adb命令,adb的安装使用可以看下我的另一篇文章:
3)可能存在敏感信息的目录需要设备访问权限,防止其他恶意app访问敏感数据。
4)与1)同理,也可以通过该方法获取以apk包名命名的文件夹下的内容,看是否有敏感信息泄露。一般是/data/data/apk文件夹。
4、组件安全:主要是四大组件的安全点
这里可以参考我的这篇文章:
Drozer的安装和使用教程(入门)_真的写不出来哇~的博客-CSDN博客
主要是讲解drozer使用方法,其中也写明了组建的大致测试方法。
5、界面类安全测试点:主要是针对一些基础的漏洞点
1)用户名枚举
2)验证码安全
3)界面敏感数据脱敏
4)登陆绕过
5)root环境检测
6)截屏保护
还有一些其他小点我就不一一列举了。
第一部分就先说这么多,后续会继续更的,各位大哥轻喷~~