Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在iOS应用程序中用Frida来绕过“越狱检测”?

如何在iOS应用程序中用Frida来绕过“越狱检测”?

作者头像
FB客服
发布于 2018-02-24 06:42:15
发布于 2018-02-24 06:42:15
2.6K0
举报
文章被收录于专栏:FreeBufFreeBuf

本文我将为大家展示,如何在iOS应用程序中使用Frida来绕过越狱检测。在正式开始之前,让我们先来简单了解下本文的具体流程。

以下是本文将要介绍的内容:

  1. Frida框架介绍
  2. Frida在iOS上的设置
  3. 将Frida连接到一个iOS进程
  4. dump类和方法信息
  5. 使用Frida进行iOS应用程序的运行时操作
  6. 总结

Frida介绍

Frida是一款基于python + javascript 的hook与调试框架。它允许你将 JavaScript 的部分代码或者你自己的库注入到 windows、macos、linux、iOS、Android,以及 QNX 的原生应用中,同时能完全访问内存和功能。

该工具由OleAndréV.Ravnås(@oleavr)开发,并且还有一个非常活跃的IRC频道,在这里你可以与其他许多同样热衷于Frida的技术人员探讨交流。你可以通过irc.freenode.net上的#frida加入IRC。

Frida的一些实际用例(根据自身使用的目的而定)–

  • hook特定函数并更改返回值
  • 分析定制协议,并迅速嗅探/解密流量
  • 对自己的应用程序进行调试
  • 从iOS应用程序中dump类和方法信息等等

除以上提到的作用之外,Frida 还提供了一系列的 API 以及方法。你可以使用命令行窗口或者像 frida-trace 的记录 low-level 函数(例如 libc.so 中的’open’调用)的工具来快速运行。你可以使用C,NodeJs或者Python绑定来完成更加复杂的工作。因此,Frida 也是我强烈推荐大家使用的安全或分析工具的首选。目前,已经有好几种工具都建立在了Frida上,包括Needle 和AppMon

Frida的另一大优势就是,可以在非越狱的设备上正常工作。为了更好的运行Frida来调试非越狱设备上的应用程序,你可以使用Swizzler2等工具来修改应用程序,以便在应用程序中添加FridaGadget dylib。

Frida在iOS上的设置

Frida在ios上的设置也非常的简单,只需要在你的iOS设备以及主机上执行以下操作。

要在你的iOS设备上安装Frida服务器,请参照以下步骤。

1.在你的iOS设备上打开Cydia应用程序。

2.添加一个源,URL为:https://build.frida.re

3.打开Source或搜索Frida,单击Modify,然后单击Install。

为了在你的系统上安装Frida的Python绑定,你需要启动erminal并输入pip install frida来进行安装。

将Frida连接到一个iOS进程

现在我们已经安装了Frida。下面我们就要正式开始使用Frida,对我们的iOS应用程序进行安全评估和开发了!

在本案例中,我们将使用Damn Vulnerable iOS App(DVIA)这款包含大量安全漏洞的app来进行测试,你可以从这里下载到它。以下大部分所使用的ios app Frida测试脚本你可以在Github获取到。

我们将分析DVIA的越狱检测行为,目前该设备显示已越狱。

让我们先来查看下,目标设备上所有正在运行的进程有哪些:

frida-ps –U

从上面的截图我们可以看到,所有当前正在运行的进程。

下面让我们来attach一个进程。你可以通过 ‘frida -U 进程名’ 的格式来attach某个进程。成功attach后,我们将进入到frida的控制台界面,在该控制台我们可以访问到目标进程的所有不同属性,内存内容和功能。

我们可以在Frida的shell中工作,并与我们的进程进行交互,或者我们还可以通过编写自己的JavaScript,来获取我们想要的数据。

dump类和方法信息

这项工作的目的是为了确定在DVIA的越狱检测中,负责验证我们的设备是否越狱的ViewController和function是哪个。

我们先来写一个基本的Frida脚本,来转储目标应用程序中存在的所有类和方法。在这里,我们将寻找与越狱相关所有的内容,以便我们能够在Frida的帮助下绕过越狱检测。

基本操作流程如下:

使用Frida查找DVIA中的越狱检测类

我们先来看看,应用程序中的类都有哪些。

for (var className in ObjC.classes) { if (ObjC.classes.hasOwnProperty(className)) { console.log(className); } }

一旦运行它,你会看到Frida成功attach到目标进程(如下图所示),随后它将为我们显示目标进程中的所有类。

这里我们可以通过grep命令来筛查出包含Jailbreak字样的类。这里我们看到一个叫JailbreakDetectionVC的类,如下所示。

找到所有实例后,在这里你可能会遇到一个可忽略的错误语句。

在完成了目标类的查找之后,接下来让我们将目光转向类中的方法。

使用Frida查找DVIA中越狱检测类的方

为了找到方法,我们需要使用 ObjC.classes.class-name.$methods。在这里我们将只查找JailbreakDetectionVC类中的方法。

让我们继续运行它,并继续使用grep命令来检测那些带有Jailbreak , Jailbroken 和 Detection字符串的内容,如下所示。

我们发现该类中其中有三个方法,包含我们的查找关键字,它们分别为Jailbroken,jailbreakTest1Tapped:和 jailbreakTest2Tapped:。

在我们的案例中,isjailbroken 是最有可能被用于检测是否越狱,并发送返回值的函数。

使用Frida修改DVIA越狱检测类中方法的返回值

所以让我们继续看看,Jailbroken都发送了什么类型的返回值。

运行此脚本后,请在iOS应用程序中按 Jailbreak Test 1,你将看到Frida控制台中显示的返回值。

由于我们的设备已经越狱,所以它的返回值为0×1。

接下来我们需要做的就是覆盖此返回值并修补该方法,以便每次在应用程序中按下Jailbreak Test 1按钮时,它将返回false或0×0。

让我们添加以下代码,来更改这个特定函数的返回值并记录到控制台:

完整脚本如下。

运行该脚本后,我们可以看到返回值已经被修改,如下所示。

此时当你再次查看你的iOS应用程序时你会发现,应用程序将提示你的设备还未越狱(如下所示)。

总结

通过本案例,我们已经学会了Frida的基本使用方法。在后续的文章中我将带大家更深入的了解Frida脚本以及如何利用Frida的API和其它工具,来执行iOS和Android应用程序的安全性评估工作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ios逆向之frida安装与使用
frida tools主要有Frida CLI、frida-ps、frida-trace、frida-discover、frida-ls-devices、frida-kill等命令工具
用户4682003
2022/05/19
4.7K0
ios逆向之frida安装与使用
如何在Electra越狱的设备上使用LLDB调试应用程序
我试图在google搜索,有关使用Electra越狱的iOS设备上调试AppStore应用程序的简要说明。但令我失望的是,竟然没有找到任何有用的资料。因此我决定写一篇相关的指南,经过我的测试它非常的适用于我,但我无法确定它是否同样适用于你。我在以下设备进行了测试:
FB客服
2018/07/30
2.4K0
如何在Electra越狱的设备上使用LLDB调试应用程序
r2frida:基于Frida的远程进程安全检测和通信工具
Radare2项目提供了针对逆向工程分析的完整工具链,功能也比较稳定,而且还支持利用其他编程语言和工具来扩展其功能。而Frida则是一个动态指令工具包,可以通过注入JavaScript代码来对正在运行的目标进程执行检测和操作,而且还可以与脚本进行通信。
FB客服
2024/06/25
2620
r2frida:基于Frida的远程进程安全检测和通信工具
MEDUZA:一款针对iOS应用程序的通用SSL解绑工具
MEDUZA是一款针对iOS应用程序的通用SSL解绑工具,该工具基于Frida开发,可以当作SSLKillSwitch工具的替代品。本来我是想自己开发自己用的,而且原本并不打算开源出来。我个人不太喜欢开源,但棱角总会被磨平的…
FB客服
2020/11/23
1.3K0
MEDUZA:一款针对iOS应用程序的通用SSL解绑工具
免越狱调试与分析黑盒iOS应用
上篇文章我们从开发者的角度介绍了如何建立iOS项目并且在真机上运行, 上上篇文章则介绍了Objective-C的基本概念和用法。而这一切,都是为了这次的铺垫。 今天,我们就要从攻击者的角度,尝试对黑盒iOS应用进行调试与动态跟踪(instrument)。
evilpan
2023/02/12
2K0
【建议收藏】Android和iOS逆向分析/安全测试/渗透测试工具
1.Appie用于Android Pentesting的便携式软件包,是现有虚拟机的绝佳替代品
测试开发技术
2024/06/11
8090
【建议收藏】Android和iOS逆向分析/安全测试/渗透测试工具
iOS应用程序的脱壳实现原理浅析
对于诸多逆向爱好者来说,给一个app脱壳是一项必做的事情。基于安全性的考虑,苹果对上架到appstore的应用都会进行加密处理,所以如果直接逆向一个从appstore下载的应用程序时,所能看到的“源代码”将非常的晦涩难懂。为了能看懂应用程序的“源代码”,就必须对应用程序进行解密,也就是所谓的脱壳。脱壳后的目的是可以分析应用程序的一些技术实现原理,或者利用一些漏洞进行攻击和测试。
欧阳大哥2013
2018/11/09
1.2K0
从微信扔骰子看iOS应用安全与逆向分析
在之前《免越狱调试与分析黑盒iOS应用》以及前几篇文章中已经介绍了如何开始分析iOS应用,不过都是基于非越狱的机器,其本意是为了能够在自己的主力设备中进行简单的分析和调试。但是执着于免越狱其实在很多情况下需要额外的工作,如果想要在iOS上做进一步研究的话,完全的访问权限是很有必要的。
evilpan
2023/02/12
2K0
从微信扔骰子看iOS应用安全与逆向分析
越狱检测手段
许多iOS应用都包含一些越狱检测机制,有些会被攻击者绕过,有些却非常困难。之前我也在公众号上放了一篇iOS有反检测能力的越狱工具shadow的分析和检测,但没有整理检测的方法。
血狼debugeeker
2021/12/06
1.5K0
2017年最佳iPhone渗透APP及工具
与Android不同,搜索和查找iPhone的黑客工具及应用是一项艰巨的任务。这与ios系统及其强大的安全性不无关系。由于许多黑客工具,必须要以‘root’的权限才能正常运行,而iPhone的越狱却是
FB客服
2018/02/28
2.6K0
2017年最佳iPhone渗透APP及工具
【移动安全】移动应用安全基础篇——破掉iOS加密数据
声 明 本文由Tide安全团队成员“tales”首发于TideSec专栏: https://zhuanlan.freebuf.com/column/index/?name=TideSec 文中所涉
用户1631416
2019/05/28
3.6K0
四种绕过iOS SSL验证和证书固定的方法
几个月前,Cody Wass曾发表过一篇关于如何绕过Android验证和证书固定的文章。这篇文章给予了我很大的灵感,因此我决定也分享一些我在工作当中发现的,关于绕过iOS SSL验证和证书固定的方法。Cody在他的文章里重申了中间人攻击,在任何标准渗透测试当中的重要性。通过中间人攻击,我们可以拦截和fuzz所有的HTTP请求,并检查是否存在安全漏洞。在下面的例子中,我将使用Burp Suite作为我的Web代理。本文假设读者对iOS,Xcode,设置手机和在iOS使用Burp拦截HTTP流量有基本的了解。本文我将为大家介绍以下四种,绕过iOS中的SSL验证和证书固定的方法:
FB客服
2018/10/25
5.3K0
四种绕过iOS SSL验证和证书固定的方法
iOS应用构建与部署小结
上篇文章介绍了Objective-C的基本概念,本文就来接着看如何创建我们的第一个简单iOS应用, 本着简单可复现的方式,我们会以尽可能小的成本来构建并在真机运行iOS应用。 也就是说, 不用越狱, 也无需开发者账号。当然,一台iPhone手机还是需要的,最好还有一台Mac。
evilpan
2023/02/12
2.1K0
iOS应用构建与部署小结
安卓Frida Hook基础
设置环境变量WORKON_HOME为下面自己建立好的路径,当然默认也可以不设置,默认在用户目录下
用户1423082
2024/12/31
1050
安卓Frida Hook基础
hook框架-frida简单使用模板以及frida相关接口
用途:确认当前进程的java虚拟机是否已经启动,虚拟机包括Dalbik或者ART等。虚拟机没有启动的情况下不要唤醒其他java的属性或者方法。
小小咸鱼YwY
2020/06/22
2.2K0
ios逆向-app登录协议逆向分析破解
从上图中可以看到ydtoken、请求响应以及该接口涉及到的mobile为要破解的内容。
吾爱小白
2021/11/16
3K0
“盲”逆向:iOS 应用 Blind 寻踪
原文:https://exceptionlevelone.blogspot.tw/2017/10/blind-reversing.html 译者:hello1900@知道创宇404实验室 01前 言 “Blind是一款用于工作场合的匿名社区应用。” 换句话说,作为一名员工,如果有“畅所欲言”或以匿名方式抨击雇主或同事的打算(当然这种情况极为常见),那么Blind可能是你的不二之选。这款有趣的小应用能够帮助我们透过事物表象了解真实情况。 02范围与环境 我重点关注应用本身,因此使用Linkedin账
Seebug漏洞平台
2018/03/30
1.5K0
如何对iOS App进行打补丁和重新签名
有没有想过在非越狱设备上运行修改后的iOS二进制文件?比如,你可以使用该技术插装app,以进行动态分析。又或者你需要进行GPS欺骗,从而可以在锁区玩Pokemon,但又担心越狱检测。 福利来了,你可以按照以下过程对修改后的应用程序进行重新签名,然后便可在自己的设备上运行该应用程序。注意,该技术仅适用于非FairPlay加密二进制文件(从应用商店获取的app均为FairPlay加密)。 苹果的配置和代码签名系统本身就让人有点晕头转向,所以,对app进行重新签名着实不易。只有在配置文件和代码签名头完全正确的前提
FB客服
2018/02/23
2.4K0
如何对iOS App进行打补丁和重新签名
在越狱的iPhone/iPad上安装自开发环境
自开发跟自编译意思一样,后者表示一个开发语言的开发能力成熟度;前者则表示一个开发平台的开发能力成熟度。 iPhone跟iPad面世这么多年,一直无法摆脱“娱乐”工具的宿命。Apple曾经希望通过iPad Pro为平台增添“生产力工具”的特征,但看起来成效不大。 而竞争对手的Surface Pro,虽然娱乐性不足,但没有人否认Surface Pro是一个优良的生产力工具。 在实用上,iPad跟Surface在于对文化创意类“生产力”的支持都不错。但是在其它方面,特别是软件开发之类的支持,iOS差的实在太多。 如果你有一台尚可越狱的iOS设备,那么通过社区的支持,这种情况可以有所缓解。虽然依然离“生产力”的要求差的比较远,但一些必要的基础性工作已经有很高的可用度了。
俺踏月色而来
2018/08/31
3.1K0
在越狱的iPhone/iPad上安装自开发环境
“盲”逆向:iOS 应用 Blind 寻踪
原文地址:《"BLIND" Reversing - A Look At The Blind iOS App》
Seebug漏洞平台
2018/03/16
1.2K0
“盲”逆向:iOS 应用 Blind 寻踪
相关推荐
ios逆向之frida安装与使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档