作者:yueji0j1anke
首发于公号:剑客古月的安全屋
字数:2025
阅读时间: 15min
声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。本文章内容纯属虚构,如遇巧合,纯属意外
目录
-
前言
-
定位
-
补环境
-
总结
0x00 前言
chomper,该工具类似于android端的unidbg,使用强度灰常的不戳,笔者借此机会分析新版本的某手试试水
受害者字段 xig3
版本:最新版
感谢前人指路
https://mp.weixin.qq.com/s/JG56KxPC7s3oSvoGkQVBRQ
0x01 定位
frida-trace,我这里先跟踪了sig3的生成算法
这里hook一下c和设置键值对的方法
发现sig字段是直接由参数排列之后md5生成
那接下来就需要追sig3,过程比较繁琐,当然你也可以直接ctrl+f大法。。。
这里我那就直接hook 对应create函数追堆栈了
对应这里,path是路由,sig是传入值,输出则是最终的sig3值
那就开始追了。。。
暂时没有头绪,又不想去把一整块取拖入ida,那就追踪这个类看看调用关系,找找关键点,抽丝剥茧一下
frida-trace -m "*[xxxryptor *]"
核心流程如下,最后进入isxxxxign函数,赋值sign后拜拜
核心加载sign算法对应的库属于xxxxxework
这里建议还是不要去直接手撕ida分析,跟trace分析
这里多跟了几个常用的类,发现逻辑就变的豁然开朗了
关键点 sub_11xxxx
0x02 补环境
这里看到很多方法都是-符号,需要进行对类初始化才能继续调用
根据我们的trace日志,初始化操作应为 +[KWSecurity defaultInterface]
对应上我们的初始操作即为
这里返回了一个int数,因此还要做一下hook
这里代码报错了
追过去发现是xxxeport类报错,没有正确初始化
那就把intercept的地址变到此处
emu.add_interceptor(base + 0xFDD2C, hook_retval(0))
解下来就是 createParamContextWithAppKey 补充
这里我们直接对其hook一下,看看对应输出参数
input即为对应encode信息
这里尝试生成了一下,发现是ascll编码+hex
那直接调用方法传入即可
接下来就需要取出对应输出结果了,我们之前trace的流程,sig3值第一次出现是在setOutput中,但对应的地址并没有在前面有所对应,所以需要找另外一个取出点
当然这里在过程中还碰到了另外一个点。。
这里存在了相关检验
比较简单,可以直接hook该函数即可
取出点直接定在plus即可,plus最后输出一个context对象,里面包含了最终的sign值。。。踩坑不少。。
0x03 纯算分析
这里尝试主动调用了一下,sign值不固定,猜测是拿了一些其他函数随机值或者纯算之内的
核心算法通过trace,是在这里 xxxxmand
这里值不固定,肯定涉及到随机数等生成,这里笔者不去追了
这里可以也先hook一下,看看传入哪些参数,方便分析
细致分析了一波,
走该分支
核心算法在 sub_xxxx
这里我hook一下参数。。
对应a9,10为关键点
这里我主动调用失败了,参数类型没固定好。我又懒得lldb动调
最后主动调用framework里面的函数,开始trace,这里之前在android 使用的frida高版本,trace起来没问题。在ios这边frida版本低一点,不然很有可能trace出问题,同时这里大多数的trace脚本适用与android,不适用ios,所以这里需要在获取base和size的过程中做适当改变
我的脚本
function tracecode_sub_11
xxx() { moduleBase = Module.getBaseAddress(""); var functionAddress = moduleBase.add(0x); // traceAddr(functionAddress, moduleBase) traceAddr(functionAddress, moduleBase)// traceFunction(functionAddress, functionAddress);}
这里BaseSize直接在ida最后一行中找,不然很有可能dump不出来
这过程中存在一个死循环,应该是检验了相关stalker检测,需要hook
最后通过寄存器定位到这里,为第一次sig3出现的地方
追了一下,这波分析不算太难
生成过程调用AES + sha256,这里不再还原
0x04 总结
好久没逆ios,手还是生了些。
本期重点
&trace寄存器与主动调用 &定位堆栈多跟类 &trace定位调用关系
原文始发于微信公众号(剑客古月的安全屋):IOS逆向攻防-某kuai xig3字段分析算法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论