找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

630

积分

0

好友

90

主题
发表于 3 天前 | 查看: 7| 回复: 0

0x01 前言

在进行iOS应用安全测试时,动态插桩与逻辑修改离不开Frida工具的hook注入能力。出于成本考虑,并非所有人都有条件配置Mac+iOS的“黄金组合”。本文将探讨如何在Windows平台下,利用一台旧款iOS设备(iPhone 6s, iOS 12.5.7)搭建移动端与跨平台开发逆向测试环境,并解决Frida导致的系统崩溃问题。

0x02 测试环境

测试工具与环境版本如下:

  • 系统平台: Windows 11
  • iOS设备: iPhone 6s (iOS 12.5.7)

设备系统信息如下:

iPhone:~ root# uname -a
Darwin iPhone 18.7.0 Darwin Kernel Version 18.7.0: Fri Aug 19 23:28:26 PDT 2022; root:xnu-4903.272.5~1/RELEASE_ARM64_T7000 iPhone7,2 arm64 N61AP Darwin

0x03 设备越狱

为设备获取root权限是第一步。本案例中,可直接通过爱思助手等工具选择适用于iOS 12.5.7的越狱方案进行一键越狱。笔者使用的是Chimera越狱工具,并搭配了Sileo包管理器。

0x04 Frida导致系统崩溃分析与排查

在越狱环境(Chimera+Sileo)就绪后,便开始安装Frida。常规操作是在Sileo中添加官方源https://build.frida.re,然后直接搜索安装。此时会看到最新版本(如17.5.1),安装后通过命令行可查看到frida-server进程已存在。

通过Sileo安装Frida

查看已安装的Frida

随后,在Windows端安装对应版本的fridafrida-tools。然而,当尝试使用frida-ps -U命令列出USB连接的iOS设备进程时,手机立即发生内核恐慌(Kernel Panic),系统崩溃并重启,越狱状态也随之丢失。

初步怀疑是版本兼容性问题,于是尝试降级安装多个旧版Frida(如16.5.7)。通过SFTP将deb包传至设备,并用dpkg -i命令手动安装。进程虽然可以运行,但Windows端一执行连接命令,崩溃依旧发生。

崩溃日志分析

为了定位根本原因,通过爱思助手导出了系统崩溃日志,并结合分析工具进行解读。关键信息总结如下:

  1. 直接原因:日志显示为CS_KILLED initproc exited引发的内核恐慌。这表明iOS内核的安全机制(代码签名和沙盒)检测到了非法操作,强制终止了核心进程launchd,导致系统崩溃。
  2. 根本原因:在Chimera越狱环境下,对iOS内核的代码签名(Code Signing)和沙盒(Sandbox)验证机制的绕过可能不彻底或不稳定。当Frida尝试以系统守护进程(由launchd加载)的方式运行时,触发了内核最严格的验证,从而被判定为非法并引发清场重启。

推测过程是:通过deb包安装Frida时,会将其注册为系统守护进程服务。系统进程launchd在加载该服务时,会触发内核的AMFI验证。由于越狱环境的绕过存在缺陷,内核判定frida-server非法,进而杀死launchd导致崩溃。

0x05 解决方案:手动运行非守护进程版Frida

既然通过系统服务方式启动会触发严格验证,那么尝试绕开它,改为手动在用户态启动frida-server二进制文件。

  1. 获取独立的frida-server二进制文件:前往Frida的GitHub发布页,寻找适用于iOS arm64架构的独立server文件。本例中使用了较旧的frida-server-14.2.10-ios-arm64寻找独立的frida-server

  2. 上传并手动启动:通过SFTP将该二进制文件上传至iOS设备(如/var/root/目录),赋予可执行权限,并在终端中直接运行。

    chmod +x frida-server-14.2.10-ios-arm64
    ./frida-server-14.2.10-ios-arm64

    手动启动frida-server

  3. 配置Windows端匹配的Frida环境:由于server版本较老,需要在Windows端创建Python虚拟环境(如Python 3.8),并手动下载对应版本的fridawheel包进行安装。

    easy_install frida-14.2.10-py2.py3-none-any.whl
    easy_install frida-tools-9.2.5-py2.py3-none-any.whl

    安装特定版本Frida

  4. 建立连接与测试:由于USB连接可能受低版本限制,推荐使用网络连接。确保iOS与Windows处于同一局域网,在iOS端执行./frida-server-14.2.10-ios-arm64 -l 0.0.0.0,然后在Windows端使用设备IP进行连接。 通过网络连接Frida

连接成功后,即可对目标应用进行hook等操作,成功完成在Windows环境下对旧版越狱iOS设备的安全与渗透测试任务。 成功注入目标App

此方法的核心在于避免了将frida-server注册为系统服务,从而绕开了由launchd加载所触发的严格内核级代码签名验证,为在特定不稳定的越狱环境下使用Frida提供了一种可行的解决思路。




上一篇:网络安全工具箱开源工具v4.0发布:PyQt6重构界面与实战工具集成
下一篇:数据的本质与核心价值:从符号记录到智能决策的认知基础
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-12 01:40 , Processed in 1.097582 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

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