渗透中遇见的apk逆向Sign解码分析 | 实战

admin 2023年7月9日23:40:39评论35 views字数 1661阅读5分32秒阅读模式
 

在对某次渗透测试任务中,目标为一个apk,对其进行渗透测试,在使用抓包测试中发现存在sign的数据包防篡改,通过分析获取加密方法

小编只想说:tiantang大佬yyds渗透中遇见的apk逆向Sign解码分析 | 实战

渗透中遇见的apk逆向Sign解码分析 | 实战

0x02 初步渗透

 

配置好https证书,使用Burpsuite配置代理,抓取目标apk注册数据包

渗透中遇见的apk逆向Sign解码分析 | 实战
发现存在用户遍历的问题,不存在的用户会显示未注册,存在的用户显示已发送短信。
放到intruder模块进行手机号爆破,看下有没有测试的手机号信息
姜姜,修改mobile参数发现会显示认证失败,请求的数据包中存在sign参数

渗透中遇见的apk逆向Sign解码分析 | 实战

这里解释下什么是sign

sign签名校验法本质上是对客户端传输数据合法性的一种校验手段其常用手法为,在用户客户端传输的数据中额外加上时间戳以及特殊字符,随后一起得出整体数据的加密值(常用MD5,SHA1等加密算法)这就导致了用户在不知晓程序的原始数据生成sign值的方法情况下,若对传输到服务端的数据进行篡改,在后端都会鉴权失败,导致用户篡改后的数据无效。

.
0x03 解决sign签名问题

目前想到的有三种方法:

测试下sign是否为弱加密方法测试下sign是否可以置空绕过对apk进行逆向,分析其加密算法

首先看来下加密字符,长度不太像md5的,可能是其他的加密算法,丢到cmd5上也没解开,G下一个
置空发送也是失败了

渗透中遇见的apk逆向Sign解码分析 | 实战

只能尝试最不擅长的apk分析源码了
首先使用几个查壳工具查看下存不存在加壳

渗透中遇见的apk逆向Sign解码分析 | 实战

渗透中遇见的apk逆向Sign解码分析 | 实战

还行,用了几个工具都没显示加壳了,省了不少事情
使用AndroidKiller工具分析一下这个apk

渗透中遇见的apk逆向Sign解码分析 | 实战
我干,试了好几个工具不知道为啥都会爆这个错误,有没有大佬讲解下的。
既然这样不行的话只能使用frida-dexdump脱源码了,这里就不讲怎么操作了,网上应该都有操作流程。
脱下来了两个dex文件,通过dex2还原成jar格式查看源码。

渗透中遇见的apk逆向Sign解码分析 | 实战
通过搜索sign关键字,分析了半天,并未发现存在相关的加密代码。

 

渗透中遇见的apk逆向Sign解码分析 | 实战
渗透中遇见的apk逆向Sign解码分析 | 实战
0x04 神奇的思路二

渗透中遇见的apk逆向Sign解码分析 | 实战

 

想着既然java代码里没有,它又是存在加密的想到可能是通过js实现的,所以想着怎么把apk中的其他源码搞出来。
在网上搜寻找到了一个方法,在没有壳的情况下,把apk后缀名改成zip方法,在解压缩,获取到了更多的信息了

渗透中遇见的apk逆向Sign解码分析 | 实战
使用idea再次进行搜索,终于在漫长的查询中发现了其加密的算法,果然是在js当中的。

渗透中遇见的apk逆向Sign解码分析 | 实战
存在一个为secretKey的加密密钥,通过跳转也获取到了

渗透中遇见的apk逆向Sign解码分析 | 实战

懒得写python的脚本,直接丢给chatgpt,帮我写一下。

渗透中遇见的apk逆向Sign解码分析 | 实战
gpt牛皮,面向gpt渗透
不过目前还是有个问题,不知道是传什么样的值来做加密,主要因为菜看不懂js,调的层级太多了。

想到了两种方法:

通过hook查看能不能获取到加密之前的信息通过分析猜一下,会加密那些数据包信息

 

1
渗透中遇见的apk逆向Sign解码分析 | 实战
方法一:

因为我安装了现成的环境,使用xp框架配合Inspeckage来进行hook

首先打开Inspeckage,选择你要抓取的apk,然后打开目标的apk程序

渗透中遇见的apk逆向Sign解码分析 | 实战
然后使用adb工具执行下面的命令
adb forward tcp:8008 tcp:8008

渗透中遇见的apk逆向Sign解码分析 | 实战

打开你本机的127.0.0.1:8008

渗透中遇见的apk逆向Sign解码分析 | 实战
要保证App is running: true Module enable: true都为true
然后打开burp进行抓包,获取当前加密的sign值

渗透中遇见的apk逆向Sign解码分析 | 实战

获取到的为d3开头的,打开网页点击成on状态,然后查看hash

渗透中遇见的apk逆向Sign解码分析 | 实战
又陷入的坑里,发现并没有存在我想要的值,只能把最后的希望放到方法二了

 

2
渗透中遇见的apk逆向Sign解码分析 | 实战
方法二:

首先需要判断下这个sign有没有把head包也做了加密,还是只是data的数据一些数据。
通过测试发现,更改cookie的信息和token都不会影响sign的认证,只有在改data里面的值会显示认证失败。
那就好办了直接把data要发送的数据,放到py脚本中,进行加密,看看加密后的结果一不一致

渗透中遇见的apk逆向Sign解码分析 | 实战

奈斯

 

渗透中遇见的apk逆向Sign解码分析 | 实战
渗透中遇见的apk逆向Sign解码分析 | 实战
后言

渗透中遇见的apk逆向Sign解码分析 | 实战

 

这是本小白的第一次进行sign的逆向,中间遇到了很多挫折,绕过很多弯路,搞了好几天才成功,总体过程中也学到了很多知识点,只能说坚持就是胜利,成功就在眼前。

 

 

原文始发于微信公众号(渗透安全团队):渗透中遇见的apk逆向Sign解码分析 | 实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月9日23:40:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透中遇见的apk逆向Sign解码分析 | 实战http://cn-sec.com/archives/1863551.html

发表评论

匿名网友 填写信息