从对抗到出洞:某金融APP 实战渗透与 Frida 反检测绕过(Rpc + Flask + AutoDecoder)

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

Frida可以正常注入程序,但使用Java.use会导致闪退。通过编译frida-bridge或使用ZygiskFrida可以绕过检测。分析请求和响应体发现,签名字段通过HmacSha1实现,数据加密后再验证签名。clientKey_和clientIv_动态生成,需要使用frida和Python提取。

🎯

关键要点

  • Frida可以正常注入程序,但使用Java.use会导致闪退。
  • 编译frida-bridge或使用ZygiskFrida可以绕过Java.use检测。
  • 请求体和响应体都是json格式,签名字段通过HmacSha1实现。
  • 数据加密后再验证签名,签名算法通过配置决定使用国密SM3算法或其他算法。
  • clientKey_和clientIv_动态生成,需要使用frida和Python提取。
  • AESCipher.clientKey_和clientIv_在每次打开APP时都会改变。
  • clientKey_和clientIv_既不是通过HTTP请求传输的,也不是硬编码在代码中。
  • 通过frida+rpc+flask获取clientIv、clientKey、serverKey、serverIv。
  • 文中提供的技术信息仅供参考,读者需谨慎使用并遵守相关法律法规。

延伸问答

Frida如何绕过Java.use的检测?

可以通过编译frida-bridge或使用ZygiskFrida来绕过Java.use的检测。

请求体和响应体的签名是如何实现的?

签名字段通过HmacSha1实现,数据加密后再验证签名。

如何提取动态生成的clientKey和clientIv?

需要使用frida和Python提取clientKey和clientIv,这些值在每次打开APP时都会改变。

数据加密的过程是怎样的?

数据加密过程包括对请求体进行AES加密,并在此基础上进行HMAC运算,最后进行Base64编码。

clientKey和clientIv是如何生成的?

clientKey和clientIv并不是通过HTTP请求传输的,也不是硬编码在代码中,而是通过特定的密钥交换过程生成。

使用Frida进行渗透测试时需要注意什么?

在使用Frida进行渗透测试时,需遵守相关法律法规,并谨慎使用提供的技术信息。

➡️

继续阅读