如何使用Theos对iOS应用程序进行注入
导语:如何使用Theos对iOS应用程序进行注入
Theos 是一个越狱开发工具包,今天我就讲讲如何使用Theos对iOS应用程序进行注入。
方法1——Theos
使用Theos进行调整,为了获得所有必要的信息,我搭配使用了其他工具,有:
1.Frida:一款基于python +java的hook框架,可运行在androidioslinuxwinosx等各平台,主要使用动态二进制插桩技术。
2. Passionfruit:一个iOS应用程序黑盒审计工具,该工具由frida.re和vuejs共同驱动。
3.class-dump-swift :class-dump是进行iOS逆向开发常用的一款工具,其主要作用是导出App的头文件内容。根据这些头文件可以大致分析出APP的结构和内容。
4. Theos:Theos是iOS越狱插件开发的集成环境,它可以创建工程,调用XCode的命令行工具编译、ldid签名打包,并提供上传手机、安装等一系列操作,安装成功后可以Cydia的已安装插件中看到。
安装条件
出于这个目的,我使用的是运行在iOS 12.4.3上的越狱版iPhone 6,越狱版使用的是带有mobilesubstrate软件包的Checkra1n。我的测试主机是macOS,根据操作系统的不同,你可能需要更改指令以匹配Windows或Linux。
安装Brew
通过运行该命令,我在macOS安装上安装了Homebrew。Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装XCode
Xcode是从Mac应用程序商店安装的,安装XCode后,在终端运行以下命令行工具:
xcode-select --install
安装Theos
要安装theos,你可以点此教程。总之,就是用以下命令将安装Theos:
brew install ldid xz echo "export THEOS=~/theos" >> ~/.profile echo "source ~/.profile" >> ~/.zshrc source ~/.zshrc git clone --recursive https://github.com/theos/theos.git $THEOS curl -LO https://github.com/theos/sdks/archive/master.zip TMP=$(mktemp -d) unzip master.zip -d $TMP mv $TMP/sdks-master/*.sdk $THEOS/sdks rm -r master.zip $TMP
安装Frida(macOS)
安装Frida需要在主机上安装pip,安装pip后,运行以下命令安装必需的工具:
pip install frida-tools
安装Frida(iPhone)
请按照下列步骤操作:
1. 在Cydia中,转到“源”>“编辑”>“添加”;
2. 添加源链接;
3. 刷新源代码后,转到“搜索”,然后搜索Frida;
4. 安装Frida 12.8.1。
完成这些设置后,Frida将被安装在设备上。
安装Passionfruit
要安装Passionfruit,第一步是安装节点。使用命令brew install node安装节点。安装节点后,可以用npm install -g passionfriut来安装Passionfruit,然后可以与Passionfruit一起运行。
安装二进制文件
为此,我假设测试人员用的是ipa,不过FreeIPA在实现上存在信息泄露漏洞,攻击者利用此漏洞可获取敏感信息。
安装AppSync(iPhone)
请按照下列步骤操作:
1. 在Cydia中,转到“源”>“编辑”>“添加”;
2. 添加源链接;
3. 刷新源链接后,转到“搜索”,然后寻找AppSync Unified;
4. 安装AppSync Unified 70.0。
安装ideviceinstaller
ideviceinstaller提供了安装,卸载,通过UDID定位等基础功能,基本上可以满足我们的自动化安装需要。
要安装ideviceinstaller,请运行以下命令:
brew install libimobiledevice brew install ideviceinstaller
ideviceinstaller
有了Karen(AppSync Unified)提供的App Signing绕过功能,现在可以安装未签名的二进制文件。该应用可以通过以下方式安装:
ideviceinstaller -i
命令执行完成后,DVIA应用程序就被安装在iPhone上了。
挂钩DVIA应用程序
挂钩应用程序可提供有关该应用程序的信息,在本文的示例中,我使用的是Passionfruit。首先,我使用USB将iPhone连接到主机。然后,在终端中,我运行Passionfruit,并进入http://localhost:31337进行浏览,如下所示:
单击设备菜单下的iPhone,我们可以看到设备上安装的所有应用程序:
点击DVIA-v2应用程序,我可以看到这些应用程序的详细信息:
需要注意的重要信息是标识符:com.highaltitudehacks.DVIAswiftv2,接下来,可以在“类”选项卡中看到。在“类”选项卡的第2页上,可以看到:
现在,在确定了类之后,我需要查看可用的函数。单击DVIA_v2.HomeViewController,我可以看到可用的类:
此时,要挂接的函数是viewDidLoad。
编写Theos代码
现在开始运行以下代码行编写代码:
$THEOS/bin/nic.pl
在此代码段内,唯一重要的是选择选项10-iphone / tweak,其他信息可以根据你的个人喜好进行修改。
现在,使用tweak目录,将Tweak.x文件重命名为Tweak.xm。你可以创建以下一些文件:
1. Makefile:Makefile定义了调整的构建方式;
2. control:定义有关调整的信息;
3. < Tweakname > .plist:这定义了将向其中注入调整的应用程序;
4. Tweak.xm:定义调整的代码。
有一些需要改变的地方,在Makefike中,我添加了一行:
THEOS_DEVICE_IP = x.x.x.x
在文件顶部,将行
{ Filter = { Bundles = ( "com.highaltitudehacks.DVIAswiftv2" ); }; }
这告诉我们目标应用程序是DVIAswiftv2,它是我们从上面的Passionfruit获得的。Tweak.xm文件内容更改为以下内容:
%hook classname -(void)viewDidLoad{ %orig; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Injection Test" message:@"A simple injection test on the application" delegate:nil cancelButtonTitle:@"Done" otherButtonTitles:nil]; [alert show]; } %end %ctor{ %init(classname = objc_getClass("DVIA_v2.HomeViewController")); }
重要的是,类名是在文件底部的%ctor代码块中定义的。
安装调整
使用makefile中定义的Theos 设备IP时,安装调整就像运行命令一样简单:
make package install
它将提示你输入root密码, root用户的默认密码是alpine。
总结
安装了tweak并运行DVIA v2应用程序后,我们将在tweak.xm文件中看到被定义过的警报:
方法2——使用Supercharge程序
Supercharge程序的目标是提供与Theos相同的功能,同时被安装在iOS设备上。然而,在应用程序中,在编写目标脚本代码时似乎存在一些漏洞。修复漏洞后,将对其进行更新。
发表评论