什么是Android应用程序的渗透测试技术?

时间:2016-11-17 15:15:49

标签: android

我开发了一个Android应用程序,我想知道可用于测试的渗透技术,以帮助保护我的应用程序。有人可以解压缩我的apk并进入我的java文件。我尝试在apk上使用apktool,将所有java文件转换为SMALI格式。有没有工具可以将我的dex文件转换回java文件?

我已经设置了debuggable false,所以当有人试图挖掘时,我认为我的日志不可见。

并且,我甚至使用了硬编码字符串,我在某处读取它以使用硬编码字符串。

对不起,我错过了Diva工具& Apk Inspector,一个测试应用程序,但我无法正常使用它。

有人可以穿透我的应用程序并且混淆真的有助于预防吗?

实现这一目标的任何特定混淆?

2 个答案:

答案 0 :(得分:0)

您可以尝试在线apk反编译器并检查哪些数据可见。然后,您可以尝试根据您的要求限制您的计划。

答案 1 :(得分:0)

有两个关于检查Android安全的主要网站:

  1. Open Android Security Assessment Methodology
  2. Android Testing Cheat Sheet
  3. 首先,Open Android Security Assessment Methodology包含以下部分:

    1. OASAM-INFO:信息收集:信息收集和攻击面定义。
    2. OASAM-CONF:配置和部署管理:配置和部署评估。
    3. OASAM-AUTH:身份验证:身份验证评估。
    4. OASAM-CRYPT:密码学:密码学使用评估。
    5. OASAM-LEAK:信息泄漏:机密信息泄漏评估。
    6. OASAM-DV:数据验证:用户输入管理评估。
    7. OASAM-IS:Intent Spoofing:意图接收管理评估。
    8. OASAM-UIR:未经授权的意向收据:意图解析评估。 9 OASAM-BL业务逻辑:应用业务逻辑评​​估。
    9. 在第二个Android Testing Cheat Sheet中,它提供了执行Android应用程序渗透测试的任务清单。它遵循OWASP Mobile Top 10 Risks列表。

      这里是网站的文档:

      测试方法
      在设备级别,有两种方式可以测试应用程序。

      1. Android设备以出厂默认模式或正常模式运行
      2. Android设备以root模式运行
      3. 在应用程序级别,有两种方法可以进行测试

        1. 在设备上运行的应用程序(以利用与触摸相关的功能)
        2. 在模拟器上运行的应用程序(为了便于使用更宽屏幕的台式机或笔记本电脑进行测试)
        3. 应用程序映射
          将应用程序映射到可能的安全向量

          1. 什么是应用类型? (游戏,商业,生产力等)
          2. 应用程序是否连接到后端Web服务?
          3. 该应用程序是纯粹原生的还是包含现成的框架?
          4. 应用程序是否在设备上存储数据?
          5. 应用程序使用了该设备的所有功能? (相机,陀螺仪,触点等)
          6. OWASP循序渐进方法

            (对于以下每个标准,测试人员应遵循多个步骤])

            M1 - 较弱的服务器端控件

            M2 - 不安全的数据存储

            在使用该应用程序一段时间后,应对此部分进行理想的测试。这样,应用程序就有时间在磁盘上存储一些数据。

            要查看的公共场所

            • /数据/数据/ app_folder
            • / SD卡/
            • / sdcard1 /

            M3 - 传输层不足

            这里要执行多层检查

            1. 在服务器端

              • 识别所有ssl端点。
              • 使用(sslscan)[1]或类似软件执行SSL密码扫描。
              • SSLv2,SSLv3已停用
              • 支持TLS 1.2,1.1和1.0(1.2对于确保最高可能的安全连接至关重要)
              • 禁用基于RC4和CBC的密码
              • DH Params>> 2048 Bits
              • SSL证书使用至少sha2 / sha256
              • 签名
              • 首选支持完美前向保密的ECDHE密码/密码
              • SSL证书来自受信任的RootCA
              • SSL证书未过期
            2. 在设备端

              • 通过导航确保应用程序正常工作。
              • 在应用程序和远程服务器之间放置代理。如果应用程序无法加载。应用程序可能正在进行证书验证如果打印了任何消息,请参阅logcat。
              • 将代理RootCA放置在设备中受信任的根CA列表中。 (打嗝)[2](OWASP-ZAP)[3]
              • 再次尝试使用应用程序。如果应用程序仍然无法连接,则应用程序可能正在进行证书固定。
              • 安装(Xposed Framework)[4]和(Just Trust Me)[5],启用JustTrustMe,然后重启设备。
              • 如果一切正常,请再试一次我们有一个应用程序员工的证书固定。
            3. M4 - 意外数据泄漏

              与M2类似,本节要求使用应用程序,但在使用应用程序时,我们需要监视以下位置。

              • adb logcat output
              • 缓存和webcache文件夹位置

              M5 - 差的授权和认证

              在应用程序使用一段时间后执行的最简单的检查之一,它有时间将数据放入系统。

              • 枚举所有导出的活动
              • 开始每项活动,并确定该活动是否可以公开访问。
              • 任何显示机密信息的活动都应该在身份验证之后。 (机密信息包括PII(个人可识别数据),财务数据等)

              M6 - 破碎密码术

              有很多事情要看

              • 使用已知的弱密码算法,如Rot13,MD4,MD5,RC2,RC4,SHA1
              • 自己动手/让我设计自己的算法进行加密
              • 在应用程序代码本身中硬编码的密钥。

              M7 - 客户端注入

              Android应用程序需要在本地以sqlite文件或XML结构存储数据,因此需要执行SQL / XML查询或文件I / O.

              这引起了两个主要问题。

              1. SQL / XML注入,如果阅读意图公开,另一个应用程序可以读取它。
              2. 本地文件读取,允许其他应用程序读取相关应用程序的文件,如果它们包含敏感数据,则通过此媒体泄漏数据。
              3. 如果应用程序是HTML5混合应用程序,则还应考虑跨站点脚本(XSS)。 XSS会将整个应用程序暴露给攻击者,因为HTML5应用程序将能够调用本机功能,从而控制整个应用程序。

                M8 - 通过不受信任的输入做出的安全决策

                M9 - 会话处理不当

                不正确的会话处理通常会导致与不良身份验证相同的结果。一旦您通过身份验证并获得会话,该会话就允许一次访问移动应用程序。有很多事情要看

                • 检查并验证后端的会话
                • 检查会话超时保护
                • 检查不正确的Cookie配置
                • 不安全令牌创建

                M10 - 缺乏二元保护

                Android二进制文件基本上是dex类,如果不受保护可以导致源代码的轻松反编译。这可能导致代码/逻辑泄漏。

                需要检查以下控件并进行验证:

                • 越狱检测控件
                • 校验和控制
                • 证书固定控件
                • 调试器检测控件