IOS逆向攻防-某kuai xig3字段分析算法

admin 2025年5月30日13:39:20评论25 views字数 242阅读0分48秒阅读模式

作者:yueji0j1anke

首发于公号:剑客古月的安全屋

字数:2025

阅读时间:    15min

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。本文章内容纯属虚构,如遇巧合,纯属意外

目录

  • 前言

  • 定位

  • 补环境

  • 总结

0x00 前言

chomper,该工具类似于android端的unidbg,使用强度灰常的不戳,笔者借此机会分析新版本的某手试试水

受害者字段 xig3

版本:最新版

感谢前人指路

https://mp.weixin.qq.com/s/JG56KxPC7s3oSvoGkQVBRQ

0x01 定位

frida-trace,我这里先跟踪了sig3的生成算法

这里hook一下c和设置键值对的方法

发现sig字段是直接由参数排列之后md5生成

IOS逆向攻防-某kuai xig3字段分析算法
IOS逆向攻防-某kuai xig3字段分析算法

那接下来就需要追sig3,过程比较繁琐,当然你也可以直接ctrl+f大法。。。

这里我那就直接hook 对应create函数追堆栈了

IOS逆向攻防-某kuai xig3字段分析算法

对应这里,path是路由,sig是传入值,输出则是最终的sig3值

那就开始追了。。。

暂时没有头绪,又不想去把一整块取拖入ida,那就追踪这个类看看调用关系,找找关键点,抽丝剥茧一下

frida-trace  -m "*[xxxryptor *]"
IOS逆向攻防-某kuai xig3字段分析算法

核心流程如下,最后进入isxxxxign函数,赋值sign后拜拜

核心加载sign算法对应的库属于xxxxxework

这里建议还是不要去直接手撕ida分析,跟trace分析

这里多跟了几个常用的类,发现逻辑就变的豁然开朗了

关键点 sub_11xxxx

0x02 补环境

这里看到很多方法都是-符号,需要进行对类初始化才能继续调用

根据我们的trace日志,初始化操作应为 +[KWSecurity defaultInterface]

对应上我们的初始操作即为

IOS逆向攻防-某kuai xig3字段分析算法

这里返回了一个int数,因此还要做一下hook

这里代码报错了

IOS逆向攻防-某kuai xig3字段分析算法

追过去发现是xxxeport类报错,没有正确初始化

那就把intercept的地址变到此处

emu.add_interceptor(base + 0xFDD2C, hook_retval(0))

解下来就是 createParamContextWithAppKey 补充

这里我们直接对其hook一下,看看对应输出参数

IOS逆向攻防-某kuai xig3字段分析算法

input即为对应encode信息

IOS逆向攻防-某kuai xig3字段分析算法

这里尝试生成了一下,发现是ascll编码+hex

那直接调用方法传入即可

接下来就需要取出对应输出结果了,我们之前trace的流程,sig3值第一次出现是在setOutput中,但对应的地址并没有在前面有所对应,所以需要找另外一个取出点

当然这里在过程中还碰到了另外一个点。。

IOS逆向攻防-某kuai xig3字段分析算法

这里存在了相关检验

比较简单,可以直接hook该函数即可

取出点直接定在plus即可,plus最后输出一个context对象,里面包含了最终的sign值。。。踩坑不少。。

0x03 纯算分析

这里尝试主动调用了一下,sign值不固定,猜测是拿了一些其他函数随机值或者纯算之内的

核心算法通过trace,是在这里  xxxxmand

IOS逆向攻防-某kuai xig3字段分析算法

这里值不固定,肯定涉及到随机数等生成,这里笔者不去追了

这里可以也先hook一下,看看传入哪些参数,方便分析

IOS逆向攻防-某kuai xig3字段分析算法

细致分析了一波,

IOS逆向攻防-某kuai xig3字段分析算法

走该分支

核心算法在 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出现的地方

IOS逆向攻防-某kuai xig3字段分析算法

追了一下,这波分析不算太难

生成过程调用AES + sha256,这里不再还原

0x04 总结

好久没逆ios,手还是生了些。

本期重点

&trace寄存器与主动调用 &定位堆栈多跟类 &trace定位调用关系

原文始发于微信公众号(剑客古月的安全屋):IOS逆向攻防-某kuai xig3字段分析算法

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月30日13:39:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   IOS逆向攻防-某kuai xig3字段分析算法https://cn-sec.com/archives/3873086.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息