实战 | 记一次渗透中遇见的apk逆向 sign解码分析
2023-6-3 09:18:29 Author: 渗透Xiao白帽(查看原文) 阅读量:24 收藏

作者:tiantang

本文首发奇安信攻防社区:https://forum.butian.net/share/2290 

0x01 前言

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

小编只想说:tiantang大佬yyds

0x02 初步渗透

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


发现存在用户遍历的问题,不存在的用户会显示未注册,存在的用户显示已发送短信。
放到intruder模块进行手机号爆破,看下有没有测试的手机号信息
姜姜,修改mobile参数发现会显示认证失败,请求的数据包中存在sign参数

这里解释下什么是sign

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

.
0x03 解决sign签名问题

目前想到的有三种方法:

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

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

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

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


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


通过搜索sign关键字,分析了半天,并未发现存在相关的加密代码。

0x04 神奇的思路二

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


使用idea再次进行搜索,终于在漫长的查询中发现了其加密的算法,果然是在js当中的。


存在一个为secretKey的加密密钥,通过跳转也获取到了

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


gpt牛皮,面向gpt渗透
不过目前还是有个问题,不知道是传什么样的值来做加密,主要因为菜看不懂js,调的层级太多了。

想到了两种方法:

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

方法一:

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

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


然后使用adb工具执行下面的命令
adb forward tcp:8008 tcp:8008

打开你本机的127.0.0.1:8008


要保证App is running: true Module enable: true都为true
然后打开burp进行抓包,获取当前加密的sign值

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


又陷入的坑里,发现并没有存在我想要的值,只能把最后的希望放到方法二了

2

方法二:

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

奈斯

后言

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

网 安 考 证
需要考以下各类安全证书的可以联系我,价格优惠、组团更便宜

CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...

23hvv红蓝py交流群,共享资源 一起py 

不定期福利赠送

群满可以后台加vx备注py 邀请进群

【往期推荐】

【内网渗透】内网信息收集命令汇总

【内网渗透】域内信息收集命令汇总

【超详细 | Python】CS免杀-Shellcode Loader原理(python)

【超详细 | Python】CS免杀-分离+混淆免杀思路

【超详细 | 钟馗之眼】ZoomEye-python命令行的使用

【超详细 | 附EXP】Weblogic CVE-2021-2394 RCE漏洞复现

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现

【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞

【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】

【超详细】Fastjson1.2.24反序列化漏洞复现

  记一次HW实战笔记 | 艰难的提权爬坑

走过路过的大佬们留个关注再走呗

往期文章有彩蛋哦


一如既往的学习,一如既往的整理,一如即往的分享

仅用于学习交流,不得用于非法用途

如侵权请私聊公众号删文


文章来源: http://mp.weixin.qq.com/s?__biz=MzI1NTM4ODIxMw==&mid=2247497847&idx=1&sn=d06e8f5ae3b9375ddf6cb0d5c68989c5&chksm=ea34072ddd438e3bebaddad83840d8dd079f7e827c17eea6d7a688a86c2419162fb891a7eea2#rd
如有侵权请联系:admin#unsafe.sh