什么是ios聚合安装


什么是ios聚合安装? 聚合安装又叫超级签名,一般说起ipa签名,大家首先想到的是ipa企业签名,即用苹果企业证书签名ipa文件,超级签名并不是超级企业签名,因为它用的……app广泛滥用。苹果其实早就迫于舆论的压力想整顿企业账号,从今年2月初,以谷歌和facebook滥用苹果企业账号获取用户隐私事件为导火索,苹果开始了一轮又一轮的大面积封账号。这就导致了企业签名稳定性以及……大不如前了。 苹果封账号可以有效的阻止色情、赌博等违规应用的传播使用,但是也阻碍了正规App的使用,正是为了解决这个问题,att科技潜心研发了聚合安装模式。因个人开发者udid安装基本不存在掉签名……,4,0,0,什么是ios聚合安装?

聚合安装又叫超级签名,一般说起ipa签名,大家首先想到的是ipa企业签名,即用苹果企业证书签名ipa文件,超级签名并不是超级企业签名,因为它用的不是企业开发者证书,而是个人开发者证书。

大家都知道苹果企业开发者账号拥有非常大的权利,它可以让你避开严格而繁琐的上架审核,直接分发你的App,只是多了‘添加信任’这个步骤,这个空子被色情、博彩类app广泛滥用。苹果其实早就迫于舆论的压力想整顿企业账号,从今年2月初,以谷歌和facebook滥用苹果企业账号获取用户隐私事件为导火索,苹果开始了一轮又一轮的大面积封账号。这就导致了企业签名稳定性以及大不如前了。

苹果封账号可以有效的阻止色情、赌博等违规应用的传播使用,但是也阻碍了正规App的使用,正是为了解决这个问题,att科技潜心研发了聚合安装模式。因个人开发者udid安装基本不存在掉签名可能,稳定性不亚于上架(有的应用即使上架了AppStore都会被很快下架),但是要实现用个人开发者账号签名ipa文件有两个问题,第一,必须先获取用户的udid(即设备id,每台苹果手机都有自己唯一的设备id);第二,一个个人开发者账号最多可以添加100台udid。第一个问题决定了技术难度,第二个问题决定了成本。

聚合安装可以有效解决以上两个问题,非常简单的安装流程,不限制安装数量,可以添加推送、vpn、groups、Voip等任何配置功能。聚合安装按照安装设备数量收费,同一台手机多次安装只算一次费用,安装量越大,单次成本越低。聚合安装不会掉签名,但是个人开发者证书有效期为一年,即聚合安装一次可以使用一年,每台设备因安装时间不同,到期时间也不同。

何为聚合安装,集大量个人开发者账号于一个整体,给用户提供简单便捷的安装体验即是我们的初衷与愿景。ATT科技苹果签名
逆向笔记 - iOS系统安全机制,https://www.jianshu.com/p/84f6256af2ad,文瑶906,2 年前,……看出 iOS 安全的几个点: 安全启动链:启动的时候,会保障我们启动的系统是受信任的 系统软件授权机制:能保障我们的系统更新之后就不能退回到原来的老的版本 应用代码签名:所有的运行的代码都要通过苹果的……化(ASLR): 每一次程序加载的时候,他的机地址都是变化的 数据加密保护:保护应用里面的数据的安全性 安全启动链 系统启动过程中每一步包含的所有组件都已经经过 苹果签名,并且只有在验证了信息链后才能继续往后…… “Boot ROM” 的代码 片段,这段代码被镶嵌到 处理器的一块存储上并且是只读的。 底层引导加载程序:在系统启动的时候会通过苹果的证书. 对底层引导加载程序,进行签名验证,如果通过验证,底层引导加载……,1144,0,2,一些经常遇到的问题:

修改app结构后无法运行?

不能直接读取其他应用程序的文件?

程序每次运行的时候地址都不一样?

系统升级了不允许降级?

iOS 系统官方 安全架构

硬件和固件:

设备秘钥、组秘钥、Apple 根证书

加密引擎

内核:

Secure、Enclave

安全元件

软件

文件系统

操作系统分区

用户分区(已加密)

应用沙盒

数据保护类

软件.png

硬件和固件:

加密引擎:对 设备密钥、组密钥、Apple 根证书 进行加密

Secure Enclave 模块:用来加密和解密

例如:touch ID: 保存用户名和指纹密码

软件:

用户分区: 完全加密的,并且加密功能是不能关闭的。苹果的iOS加密是硬件级别的,所有进出存取的都要通过苹果的 iAS以及 进行加密,而且iAS引擎进行加密的key 是跟硬件相关的。所以说,我不能把一个设备加密的数据拿到另外一个设备上去解密,这样是不能解密的

应用沙盒:提供 数据保护类的 一个 安全机制。

数据保护类: 可以保护应用内数据的安全性,比如我们在应用沙盒里面写入的数据,我们可以通过数据保护类限定,只有在用户解锁了设备之后才能读取这个数据

从 上图可以看出 iOS 安全的几个点:

安全启动链:启动的时候,会保障我们启动的系统是受信任的

系统软件授权机制:能保障我们的系统更新之后就不能退回到原来的老的版本

应用代码签名:所有的运行的代码都要通过苹果的签名才能运行

运行时进程安全性:

沙盒机制(Sandbox): 让应用运行在沙盒里面

数据执行保护(DEP): 能区别哪些是数据,哪些是代码。数据是不能运行的,代码是才可以运行。

地址空间布局随机化(ASLR): 每一次程序加载的时候,他的机地址都是变化的

数据加密保护:保护应用里面的数据的安全性

安全启动链

系统启动过程中每一步包含的所有组件都已经经过 苹果签名,并且只有在验证了信息链后才能继续往后执行。

启动流程:系统启动 -> Boot ROM -> 底层引导加载程序(LLB) -> 引导加载程序(iBoot) -> Kernel

Boot ROM: 在iOS 设备里面集成了一段 名为 “Boot ROM” 的代码 片段,这段代码被镶嵌到 处理器的一块存储上并且是只读的。

底层引导加载程序:在系统启动的时候会通过苹果的证书. 对底层引导加载程序,进行签名验证,如果通过验证,底层引导加载程序就会对 引导加载程序进行验证

如果引导加载程序也通过验证,才会去加载内容。

在上面所有加载步骤中,都会有签名验证,如果某一步发现签名验证失败,就会进行到 恢复/固件升级模式。

安全启动链.png

系统软件授权

为避免设备降级为缺少最新安全性更新的早期版本,iOS采用了为名为 “系统软件授权”的过程。

下面的流程是iTunes 刷入固件到手机上面的流程

固件 -> CPU -> iTunes -> 固件签名 -> 服务器 -> 开启验证 -> 验证许可 || 验证许可+随机串 -> 通过验证

如图:

开启验证.png

固件通过 CPU 刷到手机上面去,CPU在写入我们的固件之前,会让 iTunes 把 我们的 固件签名 发送到服务器,如果服务器开启了验证,就返回一个验证许可或者是 验证许可+随机串,拿到验证许可后,通过验证。cpu才会真正把我们的固件刷到手机上去。

如果关闭 开启验证,在早期的版本,只会返回一个验证许可,可以通过保存 SHSH来欺骗cpu刷入我们的固件。

如图:

Snip20170704_7.png

在后面的版本,苹果除了返回验证许可之外,还返回了一个随机串。这个随机串是和硬件相关的,并且只能使用一次。也就保证了这个是不能模拟的,所以保存SHSH无效。

如图:

Snip20170704_8.png

应用代码签名:

为确保所有应用均来自批准的已知来源并且未被篡改,iOS要求所有可执行代码均使用 Apple 颁发的证书进行签名。

包括

可执行代码 : 可执行程序里面的代码

加载的动态库

加载的资源

这三个在我们运行的时候会进行签名验证。

验证通过以后,才能正常运行。

如图:

应用代码签名.png

应用沙盒机制(Sandbox)

/var/mobile/Containers/Data/Application/[GUID]

保证我们所有的应用都是在一个沙盒模块里面,如下图

沙盒模块.png

在这个图片中可以看到:

安装完一个应用后,都是运行在一个隔离的环境,每一个应用都是一个隔离的环境,并且互不干扰,也不能随意去访问其他应用程序的数据。

沙盒的特点:

每个应用程序都有自己的存储空间

应用程序不能直接去访问别的存储空间的内容

应用程序请求的数据都要通过权限检测,如:

短信、照片等

数据执行保护(DEP)

处理器能区分哪部分内存是可执行代码以及哪部分内存是数据。

DEP不允许数据的执行,只允许代码执行。

如图,讲解代码无法再数据段里执行

数据段.png

在上边的图中,恶意代码作为数据,写入到数据段里面去,是不能被执行的,但是如果恶意代码 放在了代码段,就可以执行。

但是:

可以通过ROP创建一块可写入可执行的内存区域

ROP的含义

ROP就是相当于把程序里面不同地方的代码片段组合起来,通过一个指定流程去执行,来达到我们最终的目的

如果我们通过 ROP 写入代码,这个代码是没有被签名的,这个时候代码签名的好处就体现出来了。这段代码是不会被允许执行的

地址空间布局随机化(ASLR)

在 iOS中,二进制文件、库文件、动态链接文件、栈和堆内存地址的位置全部是随机的。

把这些文件加载到内存中的时候,它加载的机地址每次都是随机变化的,可以通过命令来查看应用模块的机地址:

image list -o -f

如图:

加载地址是 9dd800

应用模块机地址.png

图片.png

加密和数据保护

文件内容是根据 文件密钥加密的

文件秘钥是 根据 类密钥加密的

 

企业签名QQ:281442504

分享到