Android攻防五

来源:互联网 发布:阿里云药师招聘 编辑:程序博客网 时间:2024/06/09 16:12

虚拟机中执行;用户空间的组件都是本地代码,如RIL守护程序和库;当然,Linux内核也以本地代码形式执行

 

RIL中最重要的组件是RIL守护进程(vild),RIL守护程序是一个系统核心服务,以本地linux进程的形式运行,主要功能是在android电话框架层与设备硬件之间建立连接

 

在android中,代码签名使用最普遍的是bootloader锁。在bootloader引导设备的各个阶段,较早一级代码会验证要加载的下一级代码是否来自可信任的源。这个验证过程会构成一条信任链,将信任归结到最初一级bootloader代码上,这一级通常存储在专门用于设备引导的ROM芯片之中

 

在有的设备上,bootloader的最后一级还会验证接下来的内核和初始化RAM空间,在极少数设备(入google tv)上,还会进一步验证每个内核模块的签名

 

除了设备引导,代码签名验证还被用于OTA升级。OTA升级主要通过一个ZIP文件进行,其中包括补丁文件,新增文件和一些必要的配置

 

当算术运算产生的结果超出这个有限的表示范围时,超出的位将被舍弃,未超出的位则被存到结果寄存器的空间中,这就是所谓的同余算术。整数溢出可能导致内存出错。例如,将一个被舍弃的值传给内存分配函数,就会分配一个远小于预期的缓冲区

 

现代操作系统为了对抗任意代码执行类型的攻击,广泛采用的漏洞缓解技术是阻止数据执行。基于哈佛结构的计算机自带这种保护机制,因为这类系统从物理上将存储代码和存储数据的内存分离开来

 

地址空间布局随机化(ASLR)是一种将熵引入进程内存地址空间的缓解技术。和防止数据执行一样,内存是否启动ASLR取决于二进制可执行代码模块中的信息,也就是说,还需要编译器工具链的相应支持

 

Linux内核提供了多种内存区域,包括提供brk和mmap系统调用使用的区域。栈内存空间和其他区域。Brk系统调用创建的内存区域用于进程存储堆中的数据,mmap系统调用负责将库文件、普通文件和其他贡献内存映射到进程的虚拟地址空间。栈内存空间则在进程创建时就被分配好了

 

只有当所有可能的内存段都被随机化时,才称该操作系统实现了“安全的ASLR支持”

 

Android中的cat程序通常只是toolbox二进制文件的一个符号链接。此外,android提供的shell经常会内建一条cat命令。这样的系统上,需要执行/system/bin/cat来获得精确的(多次执行的)采样结果

 

另外需要注意的内存区域是vsdo区域(x86)或vedors区域(ARM)。这类内存映射可以帮助内核更轻松、更快捷地进行通信

 

如果完全启动ASLR而没有XN,也被容易被堆喷射(heap spraying)之类的技术攻陷

 

从嵌入式设备接收诊断和调试信息最常用到的就是UART(通用异步收发器)接口。它使用一种简单的方式直接从控制器和微处理器中接收数据,不需要经过中间硬件

 

UART串口一般用于人与设备进行交互,而几乎所有的嵌入式设备都实现了一些更为简单的串行协议,这些协议是为了满足电路中各个集成芯片互相通信的需求,它们可以用极少的引脚来实现。最常见的是I2C,是集成电路之间的缩写(inter-intergrity circuit)的缩写;SPI是串行外围接口(serial peripheral interface)总线

 

在PCB中,并不是任意两个原件之间的链路都可以承载串行数据,许多集成芯片用一种非常古老的方式与其他芯片共享数据,即简单地变化各个引脚的状态(通过相对高低的电压值来确定或规范标准来表达二进制的1和0),通常情况下这些引脚被称为GPIO,即通用目的输入输出的缩写。一些引脚承载模拟信号,一些承载数字信号。

 

每一个VGI,DVI,HDMI线及其要连接的设备上都有专门的I2C引脚

 

Micro sd 和sd卡通常一根SPI串行总线来传输所有的数据

 

智能手机的应用处理器与基带处理器之间也普遍使用I2C通信

 

JTAG是一个描述芯片、集成电路或微处理器中某个特性的通用词汇

 

绝大部分JTAG实现都提供了这些核心功能,单步、断点、重启、监视点、寄存器查看和边界扫描

 

JTAG本身产生于一种叫做边界扫描的技术,这种技术将PCB板上的多块芯片串接到一起进行底层诊断,比如检查引脚状态(前面提到的EXTEST模式),测量电量、分析逻辑,因此,JTAG本质上意味着将多块芯片连接起来

 

JTAG规范设置了一个主设备和多个从设备,因此它支持将多个处理器不以特定先后顺序地用菊花链串起来。主设备通常是调试器硬件(比如PC和JTAG调试器适配器)或者诊断硬件,PCB板所有的设备则通常是从设备

 

商业产品中的JTAG接口往往既与核心处理器相连,也与外设控制器(蓝牙、以太网和其他串行设备)相连

 

JTAG规范并不指明设备之间的具体顺序,从设备也绝不会自己引导一个通信会话

原创粉丝点击