某APP逆向分析与通讯解密

2022-04-26 15:24:07 浏览数 (1)

0x01 初始化

年轻人,你是否因看到这样的逆向结果而感到无力?

你是否为抓不到包而感觉渗透失去了意义?

回归正题,拿到app后初步了解后有下面几个问题:

  • 无法抓包
  • 做了加固
  • 通讯加密

也是常见APP反篡改的手段了,简单记录一下自己是如何解决这些问题的。

0x02 加载中

无法抓包

姿势其实特别多,大部分app的做法都只是反代理,挂vpn是不会拒绝连接的,所以原理上只需要建一个虚拟vpn,使app流量通过这个vpn中转,中间环节解密流量即可。

参考工具

安卓:HttpCanary

苹果:Surge (随便问问有没有师傅组队买surge mac版的授权)

做了加固

已知思路有三,

  • 脱壳
  • 模拟人工
  • Hook包中的相关函数直接进行测试

脱壳前

脱壳方式/工具也是蛮多的,引用一位师傅说过的话:

1.默念一声"我想脱个壳"。

2.启动 APP。

3.启动 frida-server。

4.python main.py。

默数三秒,脱好了。

第二种方式的demo:

第三中方式用的人最多,但是比较麻烦,加壳了找函数不方便,不加壳的话直接看代码硬怼就是行。

脱壳后

dex2jar,然后丢进反编译工具

找核心算法其实很容易,比如直接搜一下加密包中header的特征字段

跟踪到下面的加密部分:

圈起来的为止就是加密的关键点了,点击一下跳过去即可。

传入的第一个字符串是需要加密的值,第二个是密钥。密钥可以在上上图中getEncryptAES(paramRequest)跟过去找到:

加密算法代码已知,密钥已知,那顺手就可以copy出来自己加解密了:

还可以顺手写成burp插件,方便进行漏洞测试:

注册一个右键菜单方便在repeater里面加解密,注册一个Payload处理,方便用于爆破之类的操作。

打包一下就可以扔给burp了。

一切顺利成章。

0x03 加载成功

抓包问题可以以微信为测试目标进行尝试,能抓到微信的其他的基本也就都可以抓到了;脱壳不能指望静态脱壳,还是多考虑怎么从内存中提取出dex来;通讯解密/反校验需要java基础,跟着代码构造出正确的数据包即可,看多了其实也就那么几种算法,各个算法加解密的要素了然于心后还原出解密代码不过copy一下,再解决反编译工具的错误即可;写burp插件也是一个样子,看多了就和套模板,背答案做题目差不多。

解决抓包,解决脱壳,再解决通讯加密后就是常规的web测试方法了,一切变得索然无味。

0 人点赞