ios+app抓包及frida绕过(学习笔记)

傲渊山岳  金牌会员 | 2024-6-19 18:47:20 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 820|帖子 820|积分 2460

一、burp设置代理抓包

1、同网段下设置好burp的监听IP和port
2、手机访问代理下载证书,然后在手机设置里形貌文件安装证书,装好证书后留意在:设置→通用→关于本机→证书信托设置,开启证书信托

二、shadowrockt设置VPN抓包

有的app可能会设置无视体系代理,此时可以使用VPN的方式让app强制通过burp。
1、该软件可在商店直接下载,如下设置即可

2、在设置中耽误测试选择TCP,末了通过耽误测试检察是否设置成功。

三、frida绕过代理检测

思绪:部分app打开会提示类似“请先关闭代理或VPN”的关键字,那么将移动程序的软件包IPA文件中的可执行程序(如果必要砸壳,可使用工具frida-ios-dump和CrackerXI)放到IDA中,全局搜索程序提示的关键字,定位到该关键字所在的函数,使用frida注入js修改函数的返回值(检测结果),从而实现绕过。
1、将砸壳后的可执行文件放到IDA中打开,shift+fn+f12打开可执行文件中的所有字符串,再CTRL+C搜索字符串,选择后按X检察该字符串(请关闭代理)的引用。注:一般来说,程序实现某一功能是定义一个函数,然后用到时去调用这个函数,所有‘请关闭代理’这个字符串会出现多次,只需找到实现检测代理功能的函数地点即可,忽略调用检测代理函数的函数。

2、利用frida-trace快速天生js修改后如下,执行 frida -U -l xx.js -f 包名进行注入
  1. var module_addr = Module.findBaseAddress("xxx"); //获取可执行程序的基址
  2. Interceptor.attach(module_addr.add(0x108540), {  //添加实现检测代理功能函数的偏移地址
  3.     onEnter: function (args) {
  4.     }, onLeave: function (retval) {   //离开该函数时替换函数原本的返回值
  5.         console.log("retval", retval);
  6.         retval.replace(0);
  7.     }
  8. })
复制代码
3、另一个思绪可以记下常见检测代理的体系函数,通过frida-trace -U -i 函数名 -p PID(-i代表c语言  -m代表oc语言)来确认程序是否使用该函数以及针对性去调试获取 内存地点、返回值等信息辅助编写绕过脚本。
如下是网上关于CFNetworkCopySystemProxySettings函数检测代理时的绕过通杀脚本
  1. var _imports = Process.findModuleByName("XXX").enumerateImports();
  2. //获取可执行文件所有的导入函数
  3. var _CFNetworkCopySystemProxySettings = null;
  4. //遍历导入函数,当包含CFNetworkCopySystemProxySettings时,获取其地址
  5. for (var i = 0; i < _imports.length; i++) {   
  6.     //查找CFNetworkCopySystemProxySettings系统代理函数
  7.     if (_imports[i].name.indexOf("CFNetworkCopySystemProxySettings") !== -1) {
  8.         console.log(_imports[i].name, _imports[i].address);
  9.         _CFNetworkCopySystemProxySettings = _imports[i].address;
  10.     }
  11. }
  12. //修改CFNetworkCopySystemProxySettings函数的返回值
  13. if (_CFNetworkCopySystemProxySettings) {
  14.     Interceptor.attach(_CFNetworkCopySystemProxySettings, {
  15.         onEnter: function (agrgs) {
  16.         }, onLeave: function (retval) {
  17.             console.log("retval: ", ObjC.Object(retval));
  18.             //将返回值全部nop
  19.             retval.replace(0);
  20.         }
  21.     })
  22. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表