乐趣区

关于ios:iOS逆向某车之家sign签名分析

1. 指标
剖析某车之家 sign 签名算法的实现
2. 操作环境

  • frida
  • mac 零碎
  • Charles 抓包
  • 越狱 iPhone

3. 流程
寻找切入点
通过 Charles 抓包获取到关键词为_sign,这也就是咱们的切入点:

动态剖析
在动态剖析前,咱们先察看 sign 值的特色,比方 32 位就有可能是 md5,数字加字母加 +/ 而后以 = 号结尾的,就有可能是 base64。通过肉眼察看,发现 sign 签名的长度是 32 位大写,第一直觉就是 MD5,接下来间接进入动静调试去 hook md5 函数,看看该加密是否为 md5 动态分析应用 frida 工具的 frida-trace -UF -i CC_MD5 命令跟踪 CC_MD5 函数,代码如下:

{onEnter(log, args, state) {log(`CC_MD5(${args[0].readUtf8String()})`);   },  onLeave(log, retval, state) {log(`CC_MD5()${hexdump(retval, {length:16})}`);  }}

执行 frida-trace -UF -i CC_MD5 后,点击登录按钮,日志输入如下:witchan@witchandeAir ~ % frida-trace -UF -i CC_MD5Instrumenting…CC_MD5: Loaded handler at “/Users/witchan/__handlers__/libcommonCrypto.dylib/CC_MD5.js”Started tracing 1 function. Press Ctrl+C to stop.           / TID 0x303 / 6214 ms CC_MD5(2222) 6215 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f051548 93 4b 53 58 00 b1 cb a8 f9 6a 5d 72 f7 2f 16 11 .KSX…..j]r./.. 6216 ms CC_MD5(@7U$aPOE@$Version1_appidapp.iphone_timestamp1658455619autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhoneisCheckModeratorsRemote1isapp1logincode%31%31%31%31%31%31%31%31%31%31%31reffersessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6showmob1userpwd934B535800B1CBA8F96A5D72F72F1611validcode3333@7U$aPOE@$) 6216 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f051478 50 03 73 09 75 58 bb 53 72 80 20 54 b1 39 2b d4 P.s.uX.Sr. T.9+. 6219 ms CC_MD5(https://118.116.0.118/api/Use…) 6219 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f051118 17 9a 87 99 d6 48 43 ab 69 a0 b8 62 1d d0 a8 0d …..HC.i..b…. 6221 ms CC_MD5(MGCopyAnswerDeviceName) 6221 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f0504c8 ae 4a a5 c0 f7 11 1f 08 b1 63 88 1a a4 f8 da 9f .J…….c…… 6221 ms CC_MD5(MGCopyAnswerProductVersion) 6221 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f0504c8 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU……..).. 6222 ms CC_MD5(MGCopyAnswerDeviceName) 6222 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f0504c8 ae 4a a5 c0 f7 11 1f 08 b1 63 88 1a a4 f8 da 9f .J…….c…… 6222 ms CC_MD5(MGCopyAnswerProductVersion) 6222 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f0504c8 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU……..).. 6223 ms CC_MD5(@7U$aPOE@$apisign1|a2b93cb5da721aa55ca1a87b2e919b3d3cd214e6|autohomebrush|1658455619@7U$aPOE@$) 6223 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f050498 70 c0 71 0b 37 23 3a 29 d8 44 02 d7 f6 20 a5 0c p.q.7#:).D… .. 6227 ms CC_MD5(MGCopyAnswerProductVersion) 6227 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f0527b8 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU……..).. 6228 ms CC_MD5(MGCopyAnswerProductVersion) 6228 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f052748 a8 d3 5d 76 55 0a f8 1f d8 96 8a 0d a3 29 b0 80 ..]vU……..)..           / TID 0x552bf /

搜寻 _sign 值 500373097558BB5372802054B1392BD4 后发现后果:

6216 ms CC_MD5(@7U$aPOE@$Version1_appidapp.iphone_timestamp1658455619autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhoneisCheckModeratorsRemote1isapp1logincode%31%31%31%31%31%31%31%31%31%31%31reffersessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6showmob1userpwd934B535800B1CBA8F96A5D72F72F1611validcode3333@7U$aPOE@$) 6216 ms CC_MD5()           0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF16f051478 50 03 73 09 75 58 bb 53 72 80 20 54 b1 39 2b d4 P.s.uX.Sr. T.9+.

后果
sign 就是一个简略的 32 位的大写 MD5 入参:

@7U$aPOE@$Version1_appidapp.iphone_timestamp1658455619autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhoneisCheckModeratorsRemote1isapp1logincode%31%31%31%31%31%31%31%31%31%31%31reffersessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6showmob1userpwd934B535800B1CBA8F96A5D72F72F1611validcode3333@7U$aPOE@$

一一剖析:

  • @7U$aPOE@$ 前缀
  • Version1 版本
  • _appidapp.iphone 利用标识
  • _timestamp1658455619 工夫戳
  • autohomeuaiPhone 12.5.5 autohome 11.25.0 iPhone 手机 UA
  • isCheckModeratorsRemote1 不知道
  • isapp1 是否为手机
  • logincode%31%31%31%31%31%31%31%31%31%31%31 手机号,原始手机号为 11111111111。当入参为 00123456789 时,该字段为 00%3123456789,论断:string 里的 1 替换为 %31
  • reffer 起源
  • sessionida2b93cb5da721aa55ca1a87b2e919b3d3cd214e6 队列 id
  • showmob1 不知道
  • userpwd934B535800B1CBA8F96A5D72F72F1611 明码 MD5
  • validcode3333 验证码
  • @7U$aPOE@$ 后缀

End

退出移动版