大家好,我是Lionhoo好久没投稿了,今天给大家奉上适合小白的APP测试思路,毕竟我就是一个小白,以下内容有我跟朋友一起做项目的一些实例希望能对朋友们有帮助,所用工具会打包。很多人对APP测试存在误解,好多群友问我说没学过安卓开发、不会脱壳等等怎么测APP,相信很多人也存在这样的疑问,以下呢我会为大家排忧解惑。
首先,当我们拿到一个apk文件的时候我们可以从外到内、从简单到复杂有一个自己测APP的顺序,当然以我自己的思路来说我会先测安装包的签名是否规范,因为只要安装了java环境只要一条命令就可以去检测。
命令:jarsigner.exe –verify apk文件路径 –verbose –certs
程序当输出结果为“jar已验证”时,表示签名正常。
当我修改apk内容时
这时候就可以继续测APP完整性校验了,攻击者能够通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息,为了方便观察我们替换启动界面的图片。
上面截图我们可以看出我们替换了jdk包中的一个图片,这时签名不正常,然后我们需要签一下名。
再去做签名检验
将签了名的APK安装、运行。若能正常运行且修改成功,则不存在自校验。
然后我会去测反编译保护机制,判断是否能反编译为源代码,java代码是否存在代码混淆、加壳等保护措施。
我们可以直接用ApkScan-PKID去查壳,当然不一定能查到。
也可以用jadx
当然已经使用jadx了那么为了省事我们是不是可以先导出一份源代码。
当然导出源代码的目的是为了方便我们去找敏感信息,虽然jadx工具中带有信息查找功能,但自我感觉不太好用。
所以我使用linux中的一条命令
grep -EHirn "accesskey|admin|aes|api_key|apikey| |SHA256 |token " APKfolder/
这样可以多个关键字查找,当然你可以添加自己想要查的关键字比如api、api_key。建议使用ubuntu去运行命令(因为Ubuntu运行后有色差方便查看)。
当我们安装好apk客户端后,我们快就可以继续测试程序在密码等输入框是否使用自定义软键盘。安卓应用中的输入框默认使用系统软键盘,手机安装木马后,木马可以通过替换系统软键盘,记录手机银行的密码。这时只要在输入密码框看一下就可以了。
这种软键盘的安全性在掌上银行app比较常见大家可以打开自己的掌上银行看一下
当然当客户端使用的随机布局软键盘对用户点击产生视觉响应时,安卓木马可以通过连续截屏的方式,对用户击键进行记录,从而获得用户输入,这时我们只需要使用手机截屏就可以了。
测试客户端在超过20分钟无操作后,是否会使会话超时并要求重新登录。超时时间设置是否合理 。
检查客户端程序在切换到其他应用时,已经填写的账号密码等敏感信息是否会清空,防止用户敏感信息泄露。如果切换前处于已登录状态,切换后一定时间内是否会自动退出当前会话 。
当然组件测试的话可能比较麻烦了,因为本次文章只是一篇小白APP测试思路这里就不再详细的写了,我们先略过。
重点到了,前面的客户端本地测试的一些简单测试方法及操作思路相信大家已经不再担心不会测试APP了。那么下面的业务测试就更加简单了,只要我们有过web测试经验,相信大家不会觉得难的。
我们想象一下把APP当成一个浏览器,那么我们访问的网站无非就是”浏览器”固定的URL,这时我们如果要测试的话第一步肯定得抓到包才行。
Burp的配置跟web是一样的就是ip需要设置成本地ip那么我只演示手机端如何设置(这里使用雷电模拟器)
当然证书配置的话也是访问http://burp
下载安装证书就可以
业务功能与web渗透测试相差不大以下就给大家简单的列一下就不再演示了。
测试APP注册帐号时容易产生的问题
可批量探测已存在帐号
任意手机号注册
短信验证轰炸
密码传输加密
登陆绕过
可能产生的WEB漏洞
信息泄漏
任意帐号密码重置
主要测试APP数据传输过程中敏感数据是否有效加密以及注
销后是否完全退出应用
等等……
隐私信息、订单、转账、地址、联系人、等等……
主要测试各个业务功能的安全性,较多的测试越权以及信息
泄漏问题,同时附带测试传统的WEB漏洞: 注入、xss等。