跳过内容

MASTG-TEST-0244: 网络流量中缺少证书绑定

概述

应用程序可以通过多种方式实现证书固定,包括通过 Android 网络安全配置、自定义 TrustManager 实现、第三方库和原生代码。由于某些实现可能难以通过静态分析识别,尤其是在涉及混淆或动态代码加载时,因此此测试使用网络拦截技术来确定运行时是否强制执行证书固定。

此测试用例的目标是观察 中间人攻击 是否可以拦截来自应用程序的 HTTPS 流量。 成功的中间人拦截表明该应用程序要么未使用证书固定,要么未正确实现证书固定。

如果应用程序正确实现证书固定,则中间人攻击应失败,因为该应用程序会拒绝由未经授权的 CA 颁发的证书,即使该 CA 受系统信任也是如此。

测试技巧:在执行中间人攻击时,监视系统日志可能很有用(请参阅 监视系统日志)。 如果证书固定/验证检查失败,则可能会看到类似于以下日志条目的事件,表明该应用程序检测到中间人攻击并且未建立连接。

I/X509Util: 无法验证证书链,错误:Pin verification failed

步骤

  1. 设置拦截代理,请参阅 设置拦截代理
  2. 在连接到该代理的设备上安装该应用程序,并拦截通信。
  3. 提取所有被拦截的域名。

观察

输出应包含已成功拦截的域名列表。

评估

如果拦截到任何相关域名,则测试用例失败。