【读书笔记】iOS-iOS安全基础知识
一,iOS硬件/设备的类型。
iPad的问世,就是在这一方向上迈出的第一步。第一代iPad使用了ARM Cortex-A8架构的CUP,它的速度大约是第一代iPhone所使用CPU速度的两倍。
iPad2和iPhone4S则是另一个巨大的跨越。它们都使用了ARM Cortex-A9架构的双核处理器,就CPU运算的速度而言,要比A8架构的处理器快20%.更惊人的是,A9的GPU要比A8的快9倍。
另一方面,iPad2使用子双核处理器,它让iOS的分配程序可以全力运行。这样就对漏洞攻击的构造带来了巨大影响,因为漏洞攻击在多处理器环境下的可靠性要弱很多。
二,苹果公司如何保护App Store.
来源于App Store的应用会以较低级别的权限运行在沙盒中,这种方式可以降低它们的破坏性。大家秀快就能看到更多与此相关的内容。
三,理解安全威胁。
总体来说,很多桌面电脑所遭受的攻击同样会发生在iOS设备上。这些攻击可分为两种类型:恶意软件和漏洞攻击。
保护设备不受恶意软件危害的常规方式是使用杀毒软件。杀毒软件的工作就是确定哪些软件是安全的,哪些是不安全的。
四,理解iOS的安全架构。
1,更小的受攻击面
不管用户喜不喜欢,iOS都是不支持Java和Flash的。这两种应用的安全问题由来已久。所以不含它们就使得攻击者更难找到可利用的漏洞。
此外,苹果公司自有的.mov格式也只被iOS部分支持,因此很多可以在Mac OS X上播放的.mov文件在iOS上无法播放。
最后要说的是,虽然,iOS原生支持.pdf文件,但是只解析改文件特性的部分功能。再来看看与之有关的一些数据,有人曾用一些模糊的文件来测试Preview(Max OS X系统自带的PDF阅读器),结果引起了100多个错误。而他在用iOS测试相同的文件时,只有约7%的文件在iOS中引发了问题。这意味着减少iOS能够处理的PDF特性,苹果公司减少了这种情况下90%的潜在安全漏洞。瑕疵越少,攻击者发动漏洞攻击的机会就越小。
2,精简过的iOS
3,权限公离。
iOS使用用户,组和其他传统UNIX文件权限分离机制分离了各进程。
4,代码签名。
iOS中最重要的安全机制是代码签名。所有的二进制文件和类库在被内核允许执行之前都必须经过受信任机构(比如苹果公司)的签名。
5,数据执行保存(DEP)。
DEP不允许数据的执行,只允许代码的执行。
6,地址空间布局随机化。(ASLR)。
在iOS中,二进制文件,库文件,动态链接文件,栈和堆内存地址的位置全部是随机的。
当系统同时具有DEP和ASLR机制时,针对该系统编写漏洞攻击代码的一般方法就完全无效了。在实际应用中,这通常意味着攻击者需要两个漏洞,一个用来获取代码执行权,另一个用来获取内存地睛执行ROP,不然攻击者就需要一个极其特殊的漏洞来做到这两点。
7,沙盒。
五,iOS攻击简史。
1,Libtiff
2,短信攻击。
3,lkee蠕虫。
参考资料:《黑客攻防技术宝典-iOS实战篇》
【读书笔记】iOS-iOS安全基础知识的更多相关文章
- C++程序设计(第4版)读书笔记_C++概览:基础知识
变量赋值 常用的变量赋值都是用“=”去赋值的 ; 但是如果把一个浮点数赋值给i的话,就会造成精度损失,在C++中最好使用初始化列表的方式“{}”给变量赋值,这样可以保证不会发生某些可能导致信息丢失的类 ...
- 【读书笔记】Java核心技术-基础知识-反射
在网页中运行Java程序称为applet. 反射 这项功能被大量地应用于JavaBeans中,它是Java组件的体系结构. 能够分析类能力的程序称为反射(reflective).反射机制的功能及其强大 ...
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- 《Essential C++》读书笔记 之 C++编程基础
<Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...
- Spring Cloud微服务实战阅读笔记(一) 基础知识
本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识 1:什么是微服务架构 是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...
- android、IOS和手机基础知识
一.手机基础知识 1.固件.刷固件.固件版本 固件是指固化的软件,英文为firmware,它是把某个系统程序写入到特定的硬件系统中的flashROM.手机固件相当于手机的系统,刷新固件就相当于刷系统. ...
- IOS Socket 02-Socket基础知识
1. 简介 Socket就是为网络服务提供的一种机制 通信的两端都是Socket 网络通信其实就是Socket间的通信 数据在两个Socket间通过IO传输 2. Socket通信流程图 3. 模拟Q ...
- IOS 蓝牙相关-基础知识(1)
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...
- 【记】《.net之美》之读书笔记(一) C#语言基础
前言 工作之中,我们习惯了碰到任务就直接去实现其业务逻辑,但是C#真正的一些基础知识,在我们久而久之不去了解巩固的情况下,就会忽视掉.我深知自己正一步步走向只知用法却不知原理的深渊,所以工作之余,一直 ...
随机推荐
- Zhu-Takaoka Two-dimensional Pattern Matching
Two dimensional pattern matching. Details may be added later.... Corresponding more work can be foun ...
- 菜刀(代码执行)函数和命令执行函数详解及Getshell方法
i春秋作家:大家奥斯的哦 原文来自:https://bbs.ichunqiu.com/thread-41471-1-1.html 代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时 ...
- Java 实现将其他类型数据转换成 JSON 字符串工具类
这是网上一个大神实现的,具体出处已找不到,在这做个记录,方便以后使用. package com.wb.test; import java.beans.IntrospectionException; i ...
- javascript History对象属性和方法
History对象 History对象包含用户(在浏览器窗口中)访问过的URL length: 返回浏览器历史列表中的URL数量(打开浏览器,访问淘宝,返回1,再访问百度,返回2) History对象 ...
- JS 数据类型和数据分析
栈区:(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等. 特点是存放体积小,使用频率高的数据.可以类比内存. 堆区:(heap)-一般由程序员分配释放,若开发者不释放,程序结束时 ...
- Spring Boot 单元测试详解+实战教程
Spring Boot 的测试类库 Spring Boot 提供了许多实用工具和注解来帮助测试应用程序,主要包括以下两个模块. spring-boot-test:支持测试的核心内容. spring-b ...
- [视频]K8飞刀 Discuz csrf Exp教程
[视频]K8飞刀 一键构造Discuz csrf Exp教程 链接:https://pan.baidu.com/s/1tVseP_ZBneKpXQueIncPcA 提取码:6qnh
- C# 本进程执行完毕后再执行下一线程
最近做了一套MES集成系统,由上料到成品使自动化运行,其中生产过程是逐步的,但是每一个动作都需要独立的线程进行数据监听,那么就需要实现线程等待. 代码: using System; using Sys ...
- 课程三(Structuring Machine Learning Projects),第二周(ML strategy(2)) —— 1.Machine learning Flight simulator:Autonomous driving (case study)
[中文翻译] 为了帮助您练习机器学习的策略, 在本周我们将介绍另一个场景, 并询问您将如何行动.我们认为, 这个工作在一个机器学习项目的 "模拟器" 将给一个任务, 告诉你一个机器 ...
- 堆排序——HeapSort
基本思想: 图示: (88,85,83,73,72,60,57,48,42,6) 平均时间复杂度: O(NlogN)由于每次重新恢复堆的时间复杂度为O(logN),共N - 1次重新恢复堆操作 ...