砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump

一、砸壳

软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。

只有砸过壳的才能反汇编分析、才能class-dump、才能重签名

正版应用的MachO的cryptid 为 1,越狱应用的MachO的cryptid 为 0
1、砸壳原理

1.1、应用加壳(加密)
提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权。经过App Store加密的应用,我们无法通过Hopper等反编译静态分析,也无法Class-Dump,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟知的砸壳(脱壳)

1.2、应用砸壳(解密)

  • 静态砸壳:静态砸壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术。
  • 动态砸壳:动态砸壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。
2、iOS应用运行原理
砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第1张图片

二、工具一:Clutch

Clutch是由KJCracks开发的一款开源砸壳工具。工具支持iPhone、iPod Touch、iPad,该工具需要使用iOS8.0以上的越狱手机应用,iOS11以上好像也没法用了。

1、安装
  • 官网:https://github.com/KJCracks/Clutch
  • 找到发布版本
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第2张图片
  • 下载最新的
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第3张图片
2、使用
  • 映射端口
    python tcprelay.py -t 22:12345

  • 拷贝工具到手机
    scp -P 12345 Clutch-2.0.4 root@localhost:/usr/bin 拷贝到/usr/bin,是为了在任何地方都可以用Clutch-2.0.4,如果不放在这个文件夹下,则需要到放Clutch-2.0.4的文件夹下./执行Clutch-2.0.4

    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第4张图片
    mv Clutch-2.0.4 Clutch 移动一下,重命名
    mv 文件名1 文件名2 把文件名1重命名为文件名2,mv移动的意思
    mv 文件1 位置1 把文件1移动到位置1
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第5张图片
    如果Clutch~目录下tab不出来,那是Clutch没有权限,添加个权限即可

  • 列出可以砸壳的应用列表
    $Clutch -i
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第6张图片
  • 砸壳
    $Clutch –d 应用ID(或编号) eg:Clutch -d com.tencent.edu$Clutch –d 4
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第7张图片
  • 拷贝到电脑上
    scp -P 12345 root@localhost:/private/var/mobile/Documents/Dumped/ketang.ipa ~/Desktop/ 拷贝到桌面
    可以用Xcode安装.ipa了,
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第8张图片
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第9张图片

三、插入动态库

是插入,不是注入哦

砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第10张图片

砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第11张图片
这个Framework由于需要在5s上运行所以选择iOS 9.0
砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第12张图片

选择项目 TestDyz Build一下会把所有的Framework都Build出来;
选择对应的 Framework Build一下会把对应的Framework Build出来;
砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第13张图片
选择项目 TestDyz
砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第14张图片
选择对应的 Framework
砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第15张图片
先把 test1.framework拷贝到桌面
拷贝到手机 scp -P 12345 -r ~/Desktop/test1.framework root@localhost:~/
砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第16张图片

查看运行的machO ps -A
插入,是插入不是注入 DYLD_INSERT_LIBRARIES=动态库的路径 运行的machO的路径
eg: DYLD_INSERT_LIBRARIES=test1.framework/test1 /var/mobile/Containers/Bundle/Application/98E64AC3-BB0C-4E0B-AB5A-55182669FE87/AlipayWallet.app/AlipayWallet
这个 test1.framework/test1动态库依附在 /var/mobile/Containers/Bundle/Application/98E64AC3-BB0C-4E0B-AB5A-55182669FE87/AlipayWallet.app/AlipayWallet这个MachO上运行

砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第17张图片

四、工具二:dumpdecrypted

Github开源工具。 dumpdecrypted这个工具就是通过建立一个名为dumpdecrypted.dylib的动态库,插入目标应用实现脱壳。

1、安装
  • 官网 :https://github.com/stefanesser/dumpdecrypted 直接Git Clone

  • dumpdecrypted 砸出来的是可执行文件MachO

  • 通过Make 编译生成动态库
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第18张图片
  • 远程拷贝到手机
    scp -P 12345 dumpdecrypted.dylib root@localhost:~/

    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第19张图片

  • 通过DYLD_INSERT_LIBRARIES环境变量插入动态库执行

  • 查看运行的machO
    ps -Aps -A | grep Ali(添加了筛选)

  • 插入
    DYLD_INSERT_LIBRARIES=动态库的路径 运行的machO的路径
    eg:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/DF6975A8-3987-4B3C-8617-268C90EA378D/AlipayWallet.app/AlipayWallet

  • 然后ls,多出来一个AlipayWallet.decrypted,这个是砸过壳之后的MachO

  • 拷贝到电脑
    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第20张图片

五、工具三:frida-iOS-dump

该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件。

1、安装frida
1.1、Mac安装方式:
  • 查看python版本,Mac都是自带的。python -Vpython3 -VV大写

  • 查看pip版本。 pip -V V大写

    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第21张图片

  • 安装pip。 $sudo easy_install pip

  • 安装frida。$sudo pip install frida-tools

  • frida-ps 查看电脑的进程

    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第22张图片

  • frida-ps -U 查看USB链接端的进程,此时电脑可以不用登录(SSH USB登录)手机,但是手机的Cydia必须要安装Frida插件

    砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第23张图片

1.2、iOS安装方式:

1、添加源 http://build.frida.re
2、安装Frida

砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump_第24张图片

1.3、Mac配置ios-dump

frida-ios-dump

下载脚本
git clone 网址;下载到当前文件夹
$sudo git clone https://github.com/AloneMonkey/frida-ios-dump

进入下载好的frida-ios-dump目录安装依赖
$sudo pip install -r requirements.txt --upgrade
如果报没有权限就加一个--user
$sudo pip install -r requirements.txt --upgrade --user

1.4、执行
  • 先要端口映射一下 usbConnect.sh
  • ./dump.py Display name or Bundle identifier eg:./dump.py 支付宝
  • 会在当前文件夹下生成一个砸过壳.ipa
  • 自己配置脚本之后就是:dumpIPA.sh 微信

你可能感兴趣的:(砸壳、Clutch、插入动态库、dumpdecrypted、frida-iOS-dump)