APP 安全测试(OWASP Mobile Top 10)--后篇之三

接续:APP 安全测试(OWASP Mobile Top 10)--后篇之二


M7- 客户端代码质量

测试点:

  • 将不受信任的输入传递给移动代码中的方法调用的实体
  • Activity组件本地拒绝服务
  • Activity劫持
  • Activity组件绕过
  • Broadcast Receiver组件本地拒绝服务
  • Broadcast盗窃
  • 恶意Broadcast注入
  • Content Provider组件本地拒绝服务
  • Service组件本地拒绝服务
  • Service劫持
  • 恶意Activity/Service调用
  • Symbols Remnant
  • 弱Check-sum控制/改变检查
  • Unix domain sockets的不安全权限
  • 不安全网络sockets的使用
  • 本地数据文件存储安全
  • 调试信息是否关闭
  • 第三方SDK安全性检测
  • 留存的测试组件或信息
  • 代码中不当的异常处理
  • 保留的内网地址信息
  • 数字签名检测

测试内容:

   1. 上篇已经说明

   2. 该篇介绍蓝色部分

   3. 其他

 测试方法:我这边主要的测试方法,看源码,源码查找。

  • Unix domain sockets的不安全权限
  • 不安全网络sockets的使用

1. 反编译,查找代码中有无Socket相关的SDK。

  

2. 代理拦截查看有没有走socket。使用的是Burpsuite,具体应用网上应该有相应的说明

Http请求:

socket:

 注意,可以看到上面socket是空的。


  •  Symbols Remnant
  • 调试信息是否关闭
  • 第三方SDK安全性检测
  • 留存的测试组件或信息
  • 代码中不当的异常处理
  • 保留的内网地址信息

这几块都是涉及纯粹的源码查找:

1. Symbols Remnant:

2. 留存的测试组件或信息

代码中查找一些特殊的开发留着源码中的特殊字符,测试组件,调试日志,打印日志,注释代码

3.调试信息是否关闭:

Debug = "false"设定,这里不仅要注意自身SDK的调试状态,还要注意第三方的SDK的调试状态。

4. 代码中不当的异常处理

代码查找error的处理,例如下面finally的处理位置放错了:

5. 保留的内网地址信息

测试前可先知道公司内网的ip段:如172.123.*.*,然后源码查找。

6. 第三方SDK安全性检测:1. Debug的状态。2,SDK是不是冗余的,这块我是跟负责打包的开发每个sdk进行确认的。


其他:

7. 弱Check-sum控制/改变检查:这块可以放在应用完整性模块来测,后续再说。

8. 本地数据文件存储安全:这块因为root机的原因logcat命令一直报错。但之前这方面做过。

可先参考:https://blog.csdn.net/m0_37268841/article/details/95617015

但这块logcat的测试点有两部分:log中的敏感信息泄露,像手势密码这种敏感信息是不是存储再log中。用户名/密码,身份证号码等有没有存储。

.9. 数字签名检测:

签名证书虽然有警告,但整体来说应该是验证通过。



M8- 代码篡改

测试点:

  1. 修改代码
  2. 修改资源
  3. 修改API

测试前提:代码没有加固,没有混肴,当然有大神比较厉害可能这些不需要也能搞。。。

测试工具:我个人使用的是Bytecode-Viewe,这款是反编译后在线修改代码打包一起的工具。

网上有这个工具下载,用法很简单如下:

C:\tools>java -jar Bytecode-Viewer-2.9.22.jar
https://the.bytecode.club - Created by @Konloch - Bytecode Viewer 2.9.22, Fat-Jar: true
Start up took 1 seconds
java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at sun.security.ssl.InputRecord.readFully(Unknown Source)
        at sun.security.ssl.InputRecord.read(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.waitForClose(Unknown Source)
        at sun.security.ssl.HandshakeOutStream.flush(Unknown Source)
        at sun.security.ssl.Handshaker.kickstart(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.kickstartHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLCon

打开后,直接将apk拖进主窗口后界面:

左边是反编译后的包,右边是代码,可编辑

这边的不管是修改代码,修改资源还是API可根据需求进行修改后,进一步操作可参考:

注:如果代码中有混肴的话,存在编译不过的现象。

重新打包后,需要将修改后的apk装到手机里面进行验证,看是否能运行。



待续:APP 安全测试(OWASP Mobile Top 10)--后篇之四

 

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值