本发明专利技术提出了一种基于固件更新协议的Android取证方法,获取Android固件更新协议中转储指令;逆向分析固件更新程序与设备的数据交互例程,发送步骤1获取的转储指令,从Android设备转储数据;基于字符串匹配算法从转储数据中提取信息。本发明专利技术基于固件更新模式获取数据,该模式下设备只引导fastboot分区,保证了数据分区的完整性;数据的转储不需要解除屏幕锁定,不需要root权限,适用性更广。
An Android forensics method based on firmware update protocol
【技术实现步骤摘要】
一种基于固件更新协议的Android取证方法
本专利技术涉及数字取证技术,具体涉及一种基于固件更新协议的Android取证方法。
技术介绍
随着Android智能设备的广泛应用,越来越多的犯罪分子使用Android设备从事违法行为。为了更好协助取证人员顺利地从证物设备中提取关键证据,面向Android系统的取证研究的需求也越加迫切。数字取证是司法部门获取电子证据和案件线索的一种重要手段。传统的数字取证方法主要有逻辑获取、芯片拆除等方式,其中逻辑获取技术受限于操作系统逻辑层的控制,当移动设备处于非root权限下,或者USB调试没有开启、系统被密码锁定时,会导致逻辑获取方法不可用。而芯片拆除方式则须将移动设备中存储数据的芯片与主板分离,利用JTAG等与芯片直接通讯技术将其中的数据读取出来,然而,该方法按位读取的数据获取速度缓慢,且易于由于手工失误而导致证据被毁。
技术实现思路
本专利技术的目的在于提供一种基于固件更新协议的Android取证方法。实现本专利技术目的的技术解决方案为:一种基于固件更新协议的Android取证方法,包括以下步骤:步骤1、获取Android固件更新协议中转储指令;步骤2、逆向分析固件更新程序与设备的数据交互例程,发送步骤1获取的转储指令,从Android设备转储数据;步骤3、基于字符串匹配算法从转储数据中提取信息。本专利技术与现有技术相比,其显著优点在:1)基于固件更新模式获取数据,该模式下设备只引导fastboot分区,保证了数据分区的完整性;2)数据的转储不需要解除屏幕锁定,不需要root权限,适用性更广。附图说明图1为本专利技术获取Android固件更新协议中内存转储指令的原理图。图2为本专利技术涉及的Android固件更新模式引导流程示意图。图3为本专利技术步骤3中涉及的Sunday算法示例图。具体实施方式基于固件更新协议的Android取证方法,包括以下步骤:步骤1、获取Android固件更新协议中内存转储指令Android设备通过固件更新程序对设备进行系统升级、固件更新以及漏洞修复,固件更新协议中隐藏的内存转储指令能够获取设备存储器中的原始数据。本专利技术通过监控固件刚更新程序的API调用,对usb通讯数据进行抓取分析,以及Fuzzing测试,提取固件更新协议中的内存转储指令。如图1所示,所述步骤1包含以下3个子步骤,如下:步骤1-1、控制Android设备进入download模式,然后进行固件更新升级;Android设备进入download模式有三种方式:(1)设备关机状态下使用组合键进入,不同型号的设备使用的组合键有所不同,如samsung手机使用组合键“电源键”+“音量键”进入。(2)通过adb指令“adbrebootfastboot”进入。(3)通过发送AT指令“AT+FUS?”进入。步骤1-2、监控固件更新程序的API调用,对Android设备进行抓包,以此获得协议数据包的结构。API监控重点关注三个函数:CreateFile(),ReadFile()和WriteFile(),因为CreateFile()打开了串行端口,WriteFile()将数据从PC传输到智能手机,而ReadFile()从智能手机读取了数据。步骤1-3、根据转储指令格式生成测试用例,进行Fuzzing测试寻找隐藏的转储指令。为了充分理解目标设备的固件更新协议,Fuzzing测试分为三个部分:(1)不考虑协议数据包的格式,生成任意的数据发送至设备,检查响应数据并收集错误消息,将包含所有这些错误响应消息的集归类为ER(ErrorRespose)集。(2)基于变异的模糊测试(Mutation-basedfuzzing):该测试目的是查找隐藏的协议指令的操作码,在固件更新过程中,客户端程序不一定会发送内存转储指令,需要根据抓包结果和API监控日志综合分析的数据格式。根据经验,大多数固件更新协议的数据格式并不复杂,并且操作码位于数据包的开头(通常为4字节)。因此,通过修改客户端发往设备的数据包的开头来生成变异的数据包。(3)基于生长的模糊测试:固件更新协议的数据结构通常分为多个字段,每一个字段有其特殊的意义,基于生长的模糊测试目的是为数据包有效载荷(从PC到设备)制定了规范/格式。根据经验,在大多数固件更新协议中,数据结构由定界符,操作码(4字节),自变量和CRC/trailer/定界符组成。据此,对每个数据包的有效负载预测,由于生成空间很大,因此第一个字节是从0x00到0xff生成的,第二个字节是根据常用值生成的。(例如,0x00至0x05或0xff)。其他值可以设置为0x00,也可以设置为可变长度的随机值。模糊数据包的传输和分析:生成模糊数据包后,将其发送并接收响应数据。如果响应是在ErrorResponse中或没有响应,则将其排除在外,这种情况视为模糊的消息格式不正确,否则,将其存储在模糊测试日志中。模糊测试完成后检查日志中是否有有意义的字符串(例如英语单词)。如果发现这种情况,则其很可能是内存或扇区的内容,相对应的模糊数据包则可能是内存转储指令。步骤2、逆向分析固件更新程序,重构固件刚更新程序的交互例程,并从设备中获取数据;如果无法理解响应数据,则设备可能对响应数据进行了加密,压缩或与身份验证相关操作,这种情况大多出现在samsung,googlenexus等品牌,这些厂商都数据加密,身份认证等安全性问题上更加看重。这时候需要逆向分析客户端程序,寻找其中的数据处理模块。逆向分析根据分析过程中客户端程序是否运行分为动态分析和静态分析,通常通过动态分析便能客户端程序的数据处理模块。通过动态分析查找例程的步骤如下:首先将断点放在调试器的ReadFile()上,然后开始执行固件更新程序。接收数据时程序停止。如果接收到的数据是压缩的扇区信息,那么需要仔细跟踪调试器中的函数调用,以找到压缩数据被解压缩的点并找到相关的代码块。通常代码包含重复的算术/逻辑运算,并且没有使用复杂的库调用或系统调用,因此分析过程不需要复杂逆向工程技能(静态分析)。如果接收到的数据是密文,在调用特定函数后找到了有意义的字符串,即与内存和扇区相关的字符串,如(SBL.mbn),将其视为客户端程序对响应数据进行解密。如有必要,可以同时进行静态分析,静态分析相对复杂,一个客户端程序通常包含几百或上千的函数方法,逆向客户端程序需要了解其基地址,通常该基地址由设备厂商制定且不会公开,没有正确设定基地址,逆向工程软件(IDApro等)可能会出现大量错误。这需要根据经验不断修改基地址,直到找出数据处理的代码模块。找到相关的例程,则将其提取并用C或Python重写。例如,使用IDApro中的Hex-ray,可以将二进制代码自动转换为C代码,完成例程的重构。步骤3、基于Sunday算法从原始数据中提取信息;基于固件更新协议获取的数据以十六进制形式存储,面对海量的原始数据(Ra本文档来自技高网...
【技术保护点】
1.一种基于固件更新协议的Android取证方法,其特征在于,包括以下步骤:/n步骤1、获取Android固件更新协议中转储指令;/n步骤2、逆向分析固件更新程序与设备的数据交互例程,发送步骤1获取的转储指令,从Android设备转储数据;/n步骤3、基于字符串匹配算法从转储数据中提取信息。/n
【技术特征摘要】
1.一种基于固件更新协议的Android取证方法,其特征在于,包括以下步骤:
步骤1、获取Android固件更新协议中转储指令;
步骤2、逆向分析固件更新程序与设备的数据交互例程,发送步骤1获取的转储指令,从Android设备转储数据;
步骤3、基于字符串匹配算法从转储数据中提取信息。
2.根据权利要求书1中所述的基于固件更新协议的Android取证方法,其特征在于,步骤1中,获取转储指令的具体步骤为:
步骤1-1、控制Android设备进入download模式,进行固件更新升级;
步骤1-2、监控固件更新程序的API调用,对Android设备进行抓包;
步骤1-3、根据转储指令格式生成测试用例,进行Fuzzing测试得到隐藏的转储指令。
3.根据权利要求书2中所述的基于固件更新协议的Android取证方法,其特征在于,步骤1-1中,Android设备进入download模式有三种方式:(1)设备关机状态下使用组合键进入;(2)通过adb指令“adbrebootfastboot”进入;(3)通过发送AT指令“AT+FUS?”进入。
4.根据权利要求书2中所述的基于固件更新协议的Android取证方法,其特征在于,步骤1-2中,API监控重点关注三个函数:CreateFile(),Read...
【专利技术属性】
技术研发人员:俞研,彭伟航,邓芳伟,苏铓,付安民,张晗,
申请(专利权)人:南京理工大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。