精易论坛

标题: [IOS逆向]记一次IOS逆向某APP登陆参数算法 [打印本页]

作者: 悟空666    时间: 2021-5-13 15:09
标题: [IOS逆向]记一次IOS逆向某APP登陆参数算法
本帖最后由 悟空666 于 2021-5-13 15:12 编辑

环境以及准备工作:
1 iphone 6  12.5.3 已越狱
2 macos 11.3.1 安装逆向环境 JEB IDA JAVA环境 Python环境 Frida (这些比较简单 百度就是一大堆)
3 app下载地址 http://ipad.guangjie568.com/downapple?randStr=aaxn7oe4hx


开始抓包

登陆包如下



提交参数只有一个body 经验告诉我 这个头部就是一个json的base64格式


base64解码后得到

  
{"head":{"code":"145158033844","timestamp":"1620886197","token":"bec1134ea20566e7b71182a8211e22cd","version":"2.6.58"},"data":"ewogICJzb3VyY2UiIDogIjIwIiwKICAibW9iaWxlU3lzdGVtVmVyc2lvbiIgOiAiMTIuNS4zIiwKICAibG9naW5UeXBlIiA6ICIyIiwKICAibmlja25hbWUiIDogIjE1MjUyNTI1MjUyIiwKICAiYXBwVmVyc2lvbk5hbWUiIDogIjIuNi41OCIsCiAgImRvbWFpbiIgOiAiaHR0cHM6XC9cL2NwYXBpMDUuc3BhcmtzdGVjaC5jbiIsCiAgImRldmljZU51bWJlciIgOiAiU3lSdTlWRTM5cVFKeXJKTjNPUHVURUxKN3dzNzUzem1OXC96dWZOVFwvK3hsenB5WWJWUFgrR3lWdCs0Z3ppYlRaIiwKICAibW9iaWxlQnJhbmRNb2RlbHMiIDogImlQaG9uZTcsMiIKfQ=="}


里面又有一个data 又尝试base64得到

  
{
"source" : "20",
"mobileSystemVersion" : "12.5.3",
"loginType" : "2",
"nickname" : "15252525252",
"appVersionName" : "2.6.58",
"domain" : "https:\/\/cpapi05.sparkstech.cn",
"deviceNumber" : "SyRu9VE39qQJyrJN3OPuTELJ7ws753zmN\/zufNT\/+xlzpyYbVPX+GyVt+4gzibTZ",
"mobileBrandModels" : "iPhone7,2"
}


里面有一个deviceNumber值 当我想继续base64时 发现不行了。。

所以我猜测应该是通过算法处理后base64编码的

上手逆向!

开始逆向
---砸壳
配置好前面的环境后 安装frida-ios-dump 给apk砸壳拿到ipa

打开终端 输入如下安装
  
git clone https://hub.fastgit.org/AloneMonkey/frida-ios-dump.git
cd frida-ios-dump
sudo pip3 install -r requirements.txt --ignore-installed six


安装完后进入目录

再开一个终端

手机连接ssh

ssh root@你的wifi ip地址(让你的mac 和iphone处于同一局域网)
输入openssh密码 (默认alpine iphone端在cydia里面下载frida源)


终端安装usbmuxd

brew install usbmuxs(需要先安装brew 百度即可)
然后
iproxy 2222 22

开启端口转发



回到刚刚的终端
python3 dump.py -l  查看app 名称及bundleID



python3 dump.py APP的Identifier -P***
如果你修改了默认的OPENSSH密码(alpine) 就需要带上-P 你的密码 没有就不用带


砸壳成功 这时候在我们的frida-ios-dump目录下就有我们的目标app ipa文件了

--反编译
解压ipa文件 找到我们app的源码(一般都是最大的文件 可执行文件或者是数据)

拖入IDA


编译完成后搜索字符串





x进行交叉引用查找 最后找到一个疑似点






可以看到是通过v28进行赋值的 v28又是v27赋值的

我们直接进入 +[NetworkClient ecTabbarViewControllerWithValue:completeBlock:]函数查看


我们看到了字符串 aes256EncryptWithKey:iv:
猜测应该是使用了aes算法 v14 和v20是key和iv

往上分析发现v14和v20都是通过sub_10011AE50得到的

我们直接进入sub_10011AE50函数看看


发现了两个16位的字符串 qV7H9B@X3m3iZYTe 25!Kb$yPfR^17Xr2 疑似key和iv

直接去解密试试


直接就解密成功了。。。

由于这次的样本不是特别难所以就没用到动态调试 下次遇到了再给大家讲解

总结
1.ios逆向准备环境
2.先砸壳拿到源码
3.字符串定位到关键点进行分析


作者: 宫廷程序猿    时间: 2021-5-13 16:43
这个还算是简单的了,没有做代码混淆。
作者: 晨曦666    时间: 2021-5-13 20:32
前排支持空哥
作者: flashgg    时间: 2021-5-22 13:51
老铁,你的ida哪里下载的?




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4