1

如果我们将哈希指定为纯文本,是否容易对应用程序进行逆向工程并检查它所针对的证书network_security_config.xml?我遇到了一种观点,即此类常量应该以字节数组的形式存储在应用程序中,以使攻击者更难推理、应用程序中发生了什么以及它不想与之交谈的原因他的服务器。然后可以将该字节数组转换为混淆代码中某处的适当字符串。当然,它并不能阻止攻击,但它会使攻击变得更加困难。在 Android 上实施证书固定时,最佳实践是什么?

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config>
    <domain includeSubdomains="false">abc.aaa</domain>
    <pin-set>
      <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin>
    </pin-set>
  </domain-config>
</network-security-config>
4

1 回答 1

0

使用apktool从 apk 中提取 xmls 很简单. 也就是说,拥有 SSL 证书公钥的哈希并不是很有用,因为很难生成另一个拥有相同密钥的证书(而且 SSL 证书每隔一两年就会更改一次),通常攻击者可能会做的是更改 xml 并重新打包应用程序以使用另一个固定证书,然后分析数据包以了解通信协议/数据格式。或者他们可以直接反编译 dex/字节码并直接查看处理通信的代码。如果您有非常敏感的数据并希望在传输过程中提高其保护级别,您可以在使用 HTTPS 发送/接收数据之前添加额外的加密层。但是请注意,现在数据在用户身上时最容易受到攻击' s 设备(在 RAM 或存储中)作为 OS 因数不清的漏洞(已知和未知)而臭名昭著,这些漏洞多年来仍未修复。这真的取决于你试图从谁那里保留这些数据......

于 2020-12-11T10:39:28.507 回答