iOS逆向-Frida Hook所有TCP请求与响应

移动安全-IOS逆向第三天——实战HOOK RSA/DES加密 一、车联网APP加密破解 APP抓包发现有加密 1、首先使用frida-ios-dump下文件之后,找到Ipa中的match-O可执行文件 2、脱入ida中、直接搜索rsa xxx函数 3、使用frida-trace ios-trace脚本进行Hook查看是否调用,发现没有命中Hook函数 4、再次搜索rsa发现如下,使用相同方法进行验证 5、发现没有调用 6、继续搜索 7、发现命中加密函数,trace BKRSA类下encrypt关键字的函数 8、如下是objec 阅读详情
AI摘要

在移动安全研究中,网络通信分析很关键。本文介绍通过Frida工具实现iOS应用中Objective - C层和Native层TCP通信的全面监控,包括Frida简介、iOS网络通信机制、Hook实现步骤、完整脚本使用、注意事项及扩展思路,可提升逆向工程效率。

引言

在移动安全研究中,网络通信分析是理解应用行为的关键环节。对于iOS应用,虽然抓包工具(如Charles、Wireshark)可以捕获明文流量,但面对加密协议或非标准端口时,直接Hook应用层的TCP请求/响应能提供更底层的视角。本文将通过Frida工具,实现iOS应用中Objective-C层和Native层TCP通信的全面监控。

一、Frida简介

Frida是一款动态插桩工具,支持通过JavaScript脚本注入目标进程,实时修改内存数据或拦截函数调用。在iOS逆向中,Frida可用于:

  • Hook Objective-C方法

  • 拦截C/C++函数

  • 动态分析加密算法

  • 监控文件、网络等系统调用

二、iOS网络通信机制

iOS应用通常通过以下方式处理TCP通信:

  1. 高级API:

    • NSURLConnection / NSURLSession(HTTP协议)

    • CFStream(Core Foundation层)

  2. BSD Socket:

    • 使用C函数如socket, connect, send, recv

  3. 第三方库:

    • CocoaAsyncSocket、SwiftSocket等开源封装

三、Hook实现步骤

1. Hook Objective-C层通信

对于使用NSURLSession等高级API的应用,直接Hook相关类的方法:

// 监控NSURLSession的数据任务创建
ObjC.choose(ObjC.classes.NSURLSession, {
  onMatch: function(session) {
    var original = session.URLSession_dataTaskWithRequest_;
    session.URLSession_dataTaskWithRequest_ = ObjC.implement(
      session.URLSession_dataTaskWithRequest_,
      function(handle, selector, session, request, completion) {
        console.log(`[OC] Request URL: ${request.URL().absoluteString()}`);
        console.log(`[OC] Headers: ${JSON.stringify(request.allHTTPHeaderFields())}`);
        return original(handle, selector, session, request, completion);
      }
    );
  }
});

// Hook NSURLSession的接收数据回调
var URLSessionDelegate = ObjC.protocols.NSURLSessionDataDelegate;
ObjC.classes.NSURLSession.implement_method(
  URLSessionDelegate.methods[3],  // didReceiveData: 方法索引可能变化
  function(handle, selector, session, dataTask, data) {
    var bytes = data.bytes().readByteArray(data.length());
    console.log(`[OC] Response Data (${data.length()} bytes):\n${bytesToHex(bytes)}`);
  }
);

2. Hook Native层BSD Socket

拦截底层C函数以捕获原始TCP数据:

// 拦截socket连接
Interceptor.attach(Module.findExportByName('libsystem_network.dylib', 'connect'), {
  onEnter: function(args) {
    this.fd = args[0];
    var sockaddr = args[1];
    var family = sockaddr.add(0).readU16();
    if (family === 2) { // AF_INET
      var port = sockaddr.add(2).readU16();
      port = ((port & 0xFF00) >> 8) | ((port & 0xFF) << 8); // 转换端口字节序
      var ip = sockaddr.add(4).readByteArray(4);
      console.log(`[Native] connect -> ${ip[0]}.${ip[1]}.${ip[2]}.${ip[3]}:${port}`);
    }
  }
});

// 拦截send函数
Interceptor.attach(Module.findExportByName('libsystem_network.dylib', 'send'), {
  onEnter: function(args) {
    this.fd = args[0];
    this.buf = args[1];
    this.len = args[2].toInt32();
  },
  onLeave: function(retval) {
    if (this.len > 0) {
      var data = ptr(this.buf).readByteArray(this.len);
      console.log(`[Native][send] fd=${this.fd}, len=${this.len}\n${bytesToHex(data)}`);
    }
  }
});

// 拦截recv函数
Interceptor.attach(Module.findExportByName('libsystem_network.dylib', 'recv'), {
  onEnter: function(args) {
    this.fd = args[0];
    this.buf = args[1];
    this.len = args[2].toInt32();
  },
  onLeave: function(retval) {
    var bytesRead = retval.toInt32();
    if (bytesRead > 0) {
      var data = ptr(this.buf).readByteArray(bytesRead);
      console.log(`[Native][recv] fd=${this.fd}, len=${bytesRead}\n${bytesToHex(data)}`);
    }
  }
});

3. 辅助工具函数
// 字节数组转HEX字符串
function bytesToHex(bytes) {
  return Array.from(new Uint8Array(bytes), byte => 
    byte.toString(16).padStart(2, '0')
  ).join(' ');
}

// 监听进程退出
Process.enumerateModules();

四、完整脚本使用

  1. 保存脚本:将代码保存为ios_tcp_hook.js

  2. 注入进程:

    frida -U -f com.example.app -l ios_tcp_hook.js --no-pause

  3. 触发网络请求:操作应用触发TCP通信

五、注意事项

  1. 环境要求:

    • 越狱iOS设备

    • 安装Frida服务(通过Cydia)

  2. 数据过滤:高频请求需添加过滤规则,避免日志爆炸

  3. 加密流量:若通信使用TLS,需额外Hook SSL库(如SecureTransport)

  4. 多线程处理:网络请求可能在子线程执行,注意线程安全

六、扩展思路

  1. 协议解析:将HEX数据解析为HTTP、Protobuf等格式

  2. 流量重放:修改数据包内容后重新发送

  3. 自动化分析:结合Python脚本批量处理日志

  4. 非越狱方案:通过Frida Gadget注入未签名应用

结语

通过Frida Hook TCP通信,开发者可以深入理解iOS应用的网络行为,快速定位协议漏洞或分析加密逻辑。本文提供的方法覆盖了从高级API到底层Socket的全链路监控,读者可根据实际需求调整Hook点,进一步提升逆向工程效率。

“知识是武器,请合法使用技术。”

附录

Frida学习笔记(iOS为主)(不定时更新) 目录1. 基础1.1 字符串处理1.2 根据关键字搜索方法并Hook1.3 直接Hook类方法1.4 OC类常用参数1.5 直接调用OC类方法2. 进阶2.1 根据地址Hook方法2.1 Hook Native方法2.3 向内存中写入数据2.4 直接调用Native方法 1. 基础 1.1 字符串处理 const NSString = ObjC.classes.NSString # 创建字符串 var mystr = NSString.stringWithString_("Example"); 1.2 阅读详情

相关推荐

Frida动态Hook逆向分析小程序云托管API调用与加密通信

在移动应用安全研究和逆向工程领域,动态代码插桩技术是分析应用内部逻辑的关键手段。其原理是通过在目标进程运行时注入代码,拦截和监控函数调用、内存访问等行为,从而实现对应用行为的深度洞察。这项技术的核心价值在于能够绕过混淆和加密,直接观察应用的真实执行流程,对于安全审计、漏洞挖掘和协议分析至关重要。在移动生态中,小程序因其跨平台和云端集成的特性,其通信安全机制尤为复杂,尤其是云托管服务将核心逻辑后移,形成了通信黑盒。针对这一场景,结合Frida这一跨平台动态插桩框架,可以有效地对小程序运行时环境进行Hook,重

weixin_30617737的博客 453

frida-ios-hook:一个脚本,可帮助您在iOS平台上跟踪类,函数和修改方法的返回值

Frida iOS挂钩 一个脚本,可帮助您在iOS平台上跟踪类,函数和修改方法的返回值。 对于Android平台: : 环保操作系统支持 作业系统 支持的 著名的 苹果系统 :check_mark_button: 主要的 Linux :check_mark_button: 子 视窗 :check_mark_button: 子 兼容于 的iOS 弗里达 支持的 13.2.3 14.2.13 :check_mark_button: 14.4.2 14.2.13 :check_mark_button: 特征 使用python3.x运行 同时支持生成和附加脚本进行处理。 [+] Options: -p(--package) Identifier of application ex: com.apple.AppStore -n(--name) Name of application ex: AppStore -s(--script) Using script format script.js -c(--check-

iOS微信登录抓包实战:Frida Hook与Burp Suite绕过代理检测

在移动应用安全测试与协议分析领域,抓包是理解应用通信机制的基础技术。其核心原理是通过中间人代理拦截并解析网络数据包,从而分析请求与响应内容。然而,现代应用如微信普遍采用代理检测、SSL Pinning等安全机制来对抗抓包,这为技术研究带来了挑战。Frida作为动态代码插桩工具,其技术价值在于能在应用运行时注入脚本,实时修改内存中的函数逻辑,从而绕过这些防护。通过Hook iOS底层网络API(如NSURLSessionConfiguration),可以强制应用流量定向至指定代理(如Burp Suite),实

weixin_33924220的博客 459

iOS逆向之hook框架frida的安装和使用

一、Frida Frida 是一款基于 Python + javascript 的 hook 框架,通杀 android\iOS\linux\win\osx 各平台。Frida 原理是手机端安装一个 server 程序把手机端的端口转到 PC 端写的 python 脚本进行通信,而 Python 脚本中采用 javascript 语言编写 hook 代码。 ① install frida on device Start Cydia and add Frida’s repository by navig

╰つ栺尖篴夢ゞ 7万+

Frida动态Hook技术破解微信小程序云托管API抓包限制实战

在移动应用安全测试和逆向工程领域,网络流量分析是理解应用行为的关键技术。传统基于代理的抓包方法依赖于中间人攻击原理,通过拦截和解析HTTPS流量来获取请求与响应数据。然而,随着应用安全防护的加强,证书固定技术使得这一方法在面对微信小程序等应用时常常失效。动态代码插桩技术应运而生,它通过在应用运行时注入代码来直接监控和修改程序逻辑,从而绕过网络层的限制。Frida作为一款强大的动态插桩工具,能够在不修改应用源码的情况下,实现函数级别的Hook,为安全研究人员和开发者提供了深入分析应用内部通信的能力。在微信小程

weixin_34200628的博客 474

基于Frida的SSL库Hook技术:实现iOS/Android双端HTTPS抓包与SSL Pinning绕过

SSL/TLS协议是保障网络通信安全的基石,它通过非对称加密、对称加密和数字证书验证等机制,在客户端与服务器之间建立加密通道,确保数据传输的机密性、完整性和身份认证。其核心原理在于握手过程中的证书链验证,这正是SSL Pinning(证书绑定)技术所依赖的关键环节。在移动安全测试与逆向工程领域,SSL Pinning常被应用用于防止中间人攻击,但也给安全研究人员带来了抓包挑战。传统方法如修改系统证书或Hook应用层网络框架,往往面临兼容性差、操作繁琐等问题。通过深入理解SSL库(如Android的OpenS

weixin_33767813的博客 452

Frida—HOOK 学习笔记2

frida

天在等我,菜鸟想飞 4040

iOS HTTPS抓包全攻略:从证书安装到Frida Hook绕过SSL验证

HTTPS作为保障网络通信安全的核心协议,通过SSL/TLS加密机制防止数据在传输过程中被窃取或篡改。其工作原理基于非对称加密和数字证书体系,在客户端与服务器握手阶段完成身份验证和密钥协商。这一技术对保护用户隐私和敏感数据至关重要,广泛应用于移动应用、在线支付等场景。然而在开发调试和安全测试中,分析HTTPS流量成为刚需,尤其是面对iOS应用时,证书绑定等安全机制常导致常规抓包失效。本文聚焦iOS平台,深入探讨如何通过系统证书配置、代理工具调优及运行时注入等技术,特别是利用Frida动态插桩和SSL Kil

weixin_30920853的博客 323

Frida hook/invoke iOS以及内存搜刮和黑盒调用

终于学到了Frida的部分,在本篇中我们将从objection这款自动化hook框架的源码出发,学习使用Frida内置的ApiResolver搜刮器来枚举内存中的所有符号,包括所有类/所有方法/所有重载,再对其进行hook后输出参数调用栈返回值,并且对参数与返回值进行修改,以实现修改函数逻辑的目的。

大数据安全技术学习 4万+

iOS自动化逆向工程:基于Frida与LLDB的动态数据抓取实践

在移动安全研究和应用分析领域,逆向工程是理解软件内部工作机制的关键技术。其核心原理是通过静态与动态分析,解析程序的执行逻辑与数据流,从而揭示其功能实现与潜在风险。这项技术的价值在于赋能安全评估、漏洞挖掘、协议分析及竞品研究,广泛应用于移动应用安全、物联网设备固件分析等场景。本文聚焦iOS平台,深入探讨如何利用Frida动态插桩框架与LLDB调试器,构建自动化数据抓取流水线,实现对网络请求、加密函数等关键数据流的精准拦截与分析,显著提升逆向工程效率与可重复性。

weixin_33770878的博客 612

Frida动态分析实战:从环境搭建到Android应用Hook

动态代码插桩技术是现代软件逆向工程和安全分析的核心手段,它允许在程序运行时注入自定义代码,实时监控和修改其行为。其原理是通过向目标进程注入一个轻量级运行时环境,拦截函数调用、读写内存数据,从而实现对应用逻辑的深度洞察与控制。这项技术的核心价值在于提供了静态分析无法比拟的“运行时视角”,能有效应对代码混淆、加密等防护措施。在移动安全、漏洞挖掘、协议分析和恶意软件检测等应用场景中,动态插桩都是不可或缺的工具。本文以Frida这一主流动态插桩框架为例,深入讲解其架构原理,并详细演示如何搭建Android分析环境,

weixin_30536513的博客 455

Frida iOS Hook 使用指南

--- ## 安装指南 ### 系统要求 本工具支持MacOS、Linux以及Windows操作系统,推荐使用Python环境3.x版本。 #### 获取工具 你可以通过两种方式获取最新版本的`frida-ios-hook`: 1. 直接从**GitHub Releases**页面下载最新版本。 2. 通过Git克隆开发分支:`git clone -b dev https://github....

gitblog_01294的博客 1911

Android动态Hook实战:Frida从入门到精通,实现Java/Native层双向调试

Hook技术是软件逆向分析和安全研究的核心基础,它允许在不修改源代码的情况下,动态拦截和修改程序执行流程。其原理是通过注入代码或修改内存,在目标函数执行前后插入自定义逻辑。这项技术的价值在于提供了对闭源软件的深度可观测性和可控性,广泛应用于漏洞挖掘、协议分析、自动化测试和软件保护研究等领域。在移动安全领域,随着应用加固和反调试技术的普及,传统的静态分析手段面临挑战,动态Hook成为关键技术。Frida作为新一代动态插桩框架,通过注入JavaScript运行时,实现了对Android应用Java层和Nativ

weixin_34185320的博客 404

《爬虫和逆向教程》 - 专栏介绍和目录

本专栏为爬虫初学者和进阶开发者量身定制的爬虫和逆向学习园地。为你提供全面而深入的爬虫和逆向技术指导,从入门到精通,从基础理论到高级实战,助你在数据的海洋中畅游,挖掘出有价值的信息。通过本专栏的学习,你将具备独立开发和优化爬虫程序的能力,及逆向分析能力和项目开发能力,成为爬虫领域的佼佼者。

数据知道的博客 2万+

Frida动态插桩实战指南:从环境搭建到Hook实战

动态代码插桩(Dynamic Instrumentation)是一种在程序运行时注入代码以监控、分析或修改其行为的核心技术。其原理是通过向目标进程注入代理脚本,实现对函数调用、内存访问等行为的实时拦截与操作。这项技术在软件安全、逆向工程和自动化测试领域具有重要价值,能够帮助开发者深入理解程序内部逻辑、定位加密算法或绕过安全检测。在实际应用场景中,动态插桩常用于移动应用安全分析、协议逆向、游戏修改与自动化测试等。Frida作为一款功能强大的动态插桩框架,通过JavaScript或Python脚本实现跨平台(A

cuizhu0832的博客 413

Android动态分析实战:Frida Hook环境搭建与核心API详解

动态代码插桩是移动安全分析和逆向工程中的关键技术,它允许开发者在应用运行时监控和修改其行为,而无需访问源代码。其核心原理是通过向目标进程注入脚本运行时,拦截函数调用、读写内存数据,从而实现对应用逻辑的动态分析和干预。这项技术在安全研究、漏洞挖掘、协议分析和功能调试等领域具有极高价值,尤其适用于Android和iOS平台的移动应用分析。Frida作为当前主流的动态插桩框架,凭借其跨平台、脚本化驱动和强大的内存操作能力,已成为移动安全领域的标准工具。本文聚焦于Frida在Android平台上的实战应用,详细解析

weixin_34268169的博客 353

iOS逆向实战:从UI事件到网络协议,拆解社交App礼物发送功能

在移动应用开发与安全研究领域,理解应用内部功能的具体实现链路是一项核心技能。其原理通常涉及对客户端代码逻辑、用户交互事件流以及网络通信协议的深入分析。掌握这项技术的价值在于,不仅能帮助开发者优化自身应用的架构与安全,也能让安全研究人员评估业务逻辑的健壮性。典型的应用场景包括分析虚拟商品交易、支付流程以及用户行为触发机制。本文以社交或直播类App中常见的“送礼物”功能为具体案例,通过静态分析与动态调试相结合的方法,详细演示了如何从界面点击事件入手,逐步追踪至网络请求的完整过程,并重点探讨了参数签名、加密等安全

weixin_34006468的博客 427

iOS动态插桩实战:基于Frida的Swizzler 2原理与应用

动态插桩技术通过在程序运行时注入代码,实现对应用行为的监控与修改,是软件逆向工程和安全分析的核心手段。其原理基于进程注入和函数Hook机制,能够在无需源码的情况下,实时拦截和修改目标函数调用。这项技术的核心价值在于提供无侵入式的运行时分析能力,广泛应用于安全审计、漏洞挖掘、协议分析和性能监控等场景。以iOS平台为例,Frida框架提供了跨平台的动态插桩能力,而Swizzler 2作为其上层工具集,通过模块化设计简化了Hook操作,特别针对网络流量监控和钥匙串访问等高频需求进行了优化,使开发者能够快速构建定制

weixin_33834628的博客 432
上一篇: iOS逆向-动态链接库共享缓存(DSC)深度解析
下一篇: iOS逆向-利用LLDB动态调试app
destiny12__
博客等级 码龄9年 69粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值