vb怎么运用api对文件夹进行加密_抖音是怎么检测越狱的???

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 23:22   11   0

在iOS上使用Frida

在iOS设备上,Frida支持两种使用模式,具体使用哪种模式要看你的iOS设备是否已经越狱。

使用场景

已越狱机器

未越狱机器

已越狱机器

在越狱的环境下,是用户权限最大的场景,在这样的环境下你可以很轻松的调用系统服务和基础组件。

在这篇教程中,我们来看下如何在iOS设备上进行函数追踪。

设置iOS设备

启动 Cydia 然后通过 Manage -> Sources -> Edit -> Add 这个操作步骤把 https://build.frida.re 这个代码仓库加入进去。然后你就可以在 Cydia 里面找到 Frida 的安装包了,然后你就可以把你的iOS设备插入电脑,并可以开始使用 Frida 了,但是现在还没有必要马上插到电脑上。

快速的冒烟测试

现在在你的主控端电脑上(Windows、macOS)执行如下命令,确保Frida可以正常工作:

如果你还没有把你的iOS设备插入到电脑里面(或者插到电脑但是没有被正常识别),那应该会像下面这样提示:

如果iOS设备已经正常连接了,那应该会看到设备上的进程列表了,大致如下:

如果到了这一步没有问题,那就可以很开心的继续往下走了。

跟踪Twitter中的加密函数

OK,现在我们来开始搞点好玩的。在你的设备上启动Twitter,然后让它持续的保持在前台,并确保你的机器不会进入睡眠状态。现在在你的主控端的机器上执行如下命令:

目前, 很多App的加密、解密、哈希算法基本上都是使用 CCryptorCreate 和相关的一组加密函数。

现在,开始尝试在App里面触发一些网络操作,然后就应该能看到一些输出了,比如我的输出是下面这样的:

现在,你还可以实时的修改JavaScript脚本,然后继续在App里面深挖各种功能。

没有越狱的iOS设备

为了让一个App能使用Frida,必须想办法让它加载一个 .dylib,就是一个 Gadget 模块。

在这篇教程里面我们需要配置一下 xcode 的编译配置来让你的App可以集成Frida。当然也可以使用相关的工具来修改一个已经编译好的App, 比如 insert_dylib 这样的工具。

定制你的xCode工程

给iOS设备下载最新的 FridaGadget.dylib 库,然后给这个库签名:

在xCode里面打开你的工程,然后把 Frameworks 文件夹拖动到 AppDelegate 旁边,注意一定要拖动整个文件夹,而不是文件,xCode会提示你 Choose options for adding these files:, 然后选择 Copy items if needed 选项,并且勾选 Create folder references,然后点击 完成。然后选中项目,切换到 Build Phases 页面,展开 Frameworks 文件夹,然后把 FridaGadget.dylib拖进 Link Binary With Libraries 一节,并确保 Frameworks 文件夹被加入了 Copy Bundle Resours 一节。

快速的冒烟测试

在xCode里面启动App,然后就应该能看到下面的输出:

现在你会发现App处于挂起状态,这是因为集成进来的Frida起作用了,Frida正在等待你来执行任何你感兴趣的API 或者你可以选择直接让程序继续运行。

现在Frida正在等待我们操作,并且集成到App内部的Gadget和frida-server提供的是一样的接口,现在我们尝试枚举一下进程列表试试:

不同于 frida-server,我们只能枚举到一个进程,就是这个App本身。

我们还可以使用下面的命令来看下可以运行哪些App:

到目前为止还不错, 现在如果我们调用 attach() 函数,目标App就会结束等待状态,继续运行。但是如果我们一开始使用 spawn([“re.frida.Gadget”]) 启动App的话,我们这个时候再 attach() 的话,这个时候目标App也不会直接运行的, 除非我们主动调用resume(),也就是说使用前一种方式我们的代码执行时机晚一点,后一种方式可以在更早的时机执行我们的代码。

跟踪libc函数

现在假如你使用xCode启动的程序,现在App处于挂起状态,现在我们尝试开始和Frida交互吧,看下面的例子:

现在你可以实时的编辑JavaScript脚本了,然后继续在iOS的App里面深挖。

使用模拟器

现在在模拟器中进行测试,就要把上面的命令行中的 -U 替换成 -R,这样一来底层的内部调用也从 get_usb_device() 变成 get_remote_device()。

打造自己的工具

像是 Frida,Frida-trace 等这些工具确实很有用,但是有时候你会发现你还是需要定制自己更加个性化的功能,那就最好去读一下 Functions 和 Messages 这两章,比如当你使用到 frida.attach() 的时候,其实底层调用的就是 frida.get_usb_device().attach()。

Frida是跨平台的函数级跟踪工具,可以提高分析效率。利用该工具可以很方便的调用进程内部函数;在实际分析过程中,lldb一般用来定位反调试,崩溃和指令级别的分析,而frida主要用作函数级别的分析,如修改函数输入参数和返回值,打印调用栈,跟踪调用的API流,用作逆向分析和渗透测试再好不过。

1946fb833ab67850ca4e189dbd9bf400.png

Frida安装分两部分:1. 在越狱机从cydia源build.frida.re安装frida-server,安装成功后便会自动在手机上以daemon执行server2. PC上用pip安装frida-tools即可。注意win上容易安装失败,即使成功也可能出现缺少dll的问题,该如何解决呢?可以在参考编译好的版本:https://pypi.org/project/frida/#files。例如Windows x64下使用python3.7安装frida,就不需要编译安装,也不会出现各种错。脱壳 首先我们进行静态分析,第一步要脱壳,常见的工具有dump-decrypted/frida-ios-dump/clutch等工具。先来看看App哪些模块需要脱壳,从下图可以看到App内部模块有Aweme,AwemeDylib和两个第三方Rtc库,对这两个动态库进行脱壳,然后拖到IDA分析。b94a1915055836bcac65119a7584004d.png二、越狱检测分析 抖音二进制比较大,两个二进制的IDA分析加上跑add_xref_for_macho.py要半小时以上。如此该如何寻找呢,由浅入深可以采用如下方法:

  • 在IDA字符串窗口和函数窗口查找jail,jeil,jb,break,cydia,substrate,bash,apt,ssh等关键字

  • 使用fiddler等抓包工具捕获app所有网络请求,在url和body中查找jail,jeil,jb,break等关键字。如果body加密则需要跟踪和逆向。(网络请求定位到代码逻辑,可以从跟踪URLWithString甚至connect开始)

  • 使用frida对常用越狱检测函数对应的系统调用进行跟踪access,creat,faccessatgetxattr,getxattr,link,listxattr,lstat,open,opendir,readlink,realpath,stat,statfs,symlink,这样可以检测到所有函数级

  • 在IDA汇编中搜索SVC指令,这样能检测出指令级系统调用。

1. 初步检测 首先找到比较明显的痕迹,例如函数名字符串,检测到得到如下函数:

[Asm] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

[ANSMetadata computeIsJailbroken];

[ASSStaticInfoCollector checkJB)];

[ASSStaticInfoCollectorOpen checkJB]

[AWECloudJailBreakUtility jailbroken];

[AWEYAMInfoHelper isJailBroken]

[BDADeviceHelper isJailBroken];

[BDLogDeviceHelper isJailBroken]

[IESLiveDeviceInfo isJailBroken]

[HMDCrashBinaryImage isJailBroken];

[HMDInfo isJailBroken]

[MobClick isJailbroken]

[TTAdSplashDeviceHelper isJailBroken];

[TTInstallDeviceHelper isJailBroken]

[UAConveniece deviceWasJailed];

[UIDevice btd_isJailBroken]

[UMANProtocolData isDeviceJailBreak]

[WXOMTAHelper isJB]

进行分析以后可以找到如下检测逻辑:

  • 文件系统检测

[Asm] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

/bin/bash

/Applications/Cydia.app

/Library/MobileSubstrate/MobileSubstrate.dylib

/user/Applictations

/user/Continers/Bundle/Application

/usr/sbin/sshd

/etc/apt

/Applications/RockApp.app,

/Applications/Icy.app,

/usr/sbin/sshd,

/usr/bin/sshd,

/usr/libexec/sftp-server,

/Applications/WinterBoard.app,

/Applications/SBSettings.app,

/Applications/MxTube.app,

/Applications/IntelliScreen.app,

/Library/MobileSubstrate/DynamicLibraries/Veency.plist,

/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist,

/private/var/lib/apt,

/private/var/stash,

/private/{uuid}可写

/System/Library/LaunchDaemons/com.ikey.bbot.plist,

/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist,

/private/var/tmp/cydia.log,

/private/var/lib/cydia,

/etc/clutch.conf,

/var/cache/clutch.plist,

/etc/clutch_cracked.plist,

/var/cache/clutch_cracked.plist,

/var/lib/clutch/overdrive.dylib,

/var/root/Documents/Cracked/

/etc/fstab 分区检测

  • 沙盒完整性检测 system函数

  • 环境变量检测 使用environ检测MobileSubstrate环境变量

  • mmap检测

  • 进程检测 MobileCydia Cydia afpd

  • schema检测 cydia://

2. 深度检测 使用frida工具跟踪前面提到的系统调用。插句题外话,frida的-f参数目前是不能用的,也就是不能以-f启动app(其实老一些的iOS是可以的),所以只能附加进程进行跟踪,然而frida在附加进程的时候会有几秒延迟导致App初始化时执行的函数和数据包无法跟踪到,怎么解决呢?简单做法是写个tweak,在%ctor里sleep几秒就可以了。跟踪代码可以参考我git中的antijailbreak.js代码。得到如下结果:cf1148b054ebd035e8d27673daa87e05.png此时可以看到果然AwemeDylib是有猫腻的,只不过把OC函数名进行了混淆,同时存在字符串加密,那么接下来就是分析这些混淆名的函数,最终发现几个与越狱检测有关的函数:ee7d133dcb9acd07c10994d0fce9678c.png 199a10b115ba583bb22e4e4bc6691d25.png 经过分析可知,App存在SVC指令级别的越狱检测并封装成函数__libc_do_sycall,同时也调用了syscall函数来隐藏api调用。通过跟踪__libc_do_sycall和iOS系统调用号,可以发现的系统调用有: read/close/getpid/getppid/open/sysctl/stat64/getdirentries64, 根据该结果进行二次跟踪,又会得到一些检测文件,未防止有遗漏,可以将data段内存dump下来查看解密后的敏感路径

/Library/TweakInject   /Library/LaunchDaemons/   /Library/MobileSubstrate/DynamicLibraries   /Library/MobileSubstrate/MobileSubstrate.dylib   /Applications/iGameGuardian.app   /Applications/GamePlayer.app

c09f29d6fa9fc052bef4ff0ac088bbcb.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP