手机数据提取简介

0x00.SIM卡数据提取

如今,我们对SIM卡取证的方法通常用的方法有两种。第一种方法是利用专门的读卡设备对SIM卡的数据进行提取。在这种方法中,只要读卡器只要符合ETSI(欧洲电信标准协会)TS31.101和TS51.011两种标准指令集就可以对SIM卡中的数据进行提取。此外另一种方法就是通过指令对SIM种数据进行直接提取。

一般情况来说Android手机的SIM卡使用记录一般保存在data分区的data\com.android.providers.telephony\databases\telephony.db文件中,该文件类型为SQLite数据库。数据库中的表“sim_info”会记录使用过的SIM卡的ICCID、手机号码等信息。


0x01.AT指令集

AT指令集是从TE(终端设备,Terminal Equipment)或者DTE(数据终端设备,Data Terminal Equipment)向TA (终端适配器,Terminal Adapter)或者DCTE (数据电路终端设备,Data Circuit Terminal Equipment)发送的。

AT指令集最早是由”贺氏“微系统公司开发,初衷是用来操作调制解调器的,随后专门开发了一套手机专用的AT指令集。在这套专门为手机开发的版本中,开发者可以通过指令获取手机的产品型号、手机生产商、手机操作系统版本、IMEI、IMS、电话簿、电话记录短消息记录等信息数据。

Nokia、Ericsson、Motorala和HP这些被AT指令集覆盖的移动设备生产厂商共同为GSM 研发了一套AT指令,该套专门定制的AT指令集被用来控制手机的GSM模块。其中就包括对SMS(short message service,短信息服务)的控制。后来的GPRS模块,3G模块、4G模块均采用AT命令集来进行控制。

功能 AT指令 详细说明
厂商认证 AT+CGMI 获得厂商的标识
模式认证 AT+CGMM 查询支持评断
修订认证 AT+CGMR 查询软件版本
生产序号 AT+CGSN 查询IMEI序列号
TE设置 AT+CSCS 选择支持网络
查询IMSI AT+CIMI 查询国际移动电话支持认证
卡的认证 AT+CCID 查询SIM卡的序列号
功能列表 AT+GCAP 查询可供使用的功能列表
重复操作 A/ 重复最后一次操作

更多AT指令集请参阅:https://blog.csdn.net/u012686462/article/details/53199382


0x02.JTAG提取技术

JTAG主要用于高级器件的芯片(如高通高端芯片)内部测试,该类芯片均支持JTAG协议。标准协议下的JTAG接口有:TCK、 TDI、TDO、TMS,分别为时钟、数据的输入和输出线、模式选择。 针对高通芯片的测试接口且可以在主板上焊线并且通过JTAG指令,就可以直接控制CPU 强制读取 nandflash/eMMC。

绝大多数CDMA定制机器只具有充电接口而不具有数据传输接口,这些定制的机器大多采用高通的低端CPU。针对这类机器,可以通过使用JTAG技术探查主板,同时依据具体CPU型号采用专门方法进行数据提取,从而获得手机中数据的镜像。

JTAG取证技术的原理是将安卓手机背后的 JTAG触点连接到专门设备,相关人员使用手机向CPU发送指令,再通过JTAG命指令反向控制 CPU,将 FLASH所有数据发给 CPU,我们再从CPU把 FLASH芯片的数据取走。

JATG取证的优点是不论手机是否root,是否可以安装第三方recovery,USB调试模式是否打开,操作系统版本是多少都不重要,使用该方法都可以直接提取到FLASH芯片数据镜像。

微信6.6.6 EnMicroMsg.db提取

0x00.ADB 提取MicroMsg文件夹

挂载系统分区并定位至/data/data/com.tencent.mm/MicroMsg

使用ADB指令将MicroMsg以沙盒方式提取至本地:

adb pull /data/data/com.tencent.mm/MicroMsg  X:\

0x01.获取EnMicroMsg.db密码

在MicroMsg文件夹下找到EnMicroMsg.db数据库文件,该文件是加密文件,无法直接打开。

经过逆向分析得出,该数据库密码是一字符串的md5值,具体算法如下:

密码=md5(IMEI+uin),其中uin与登陆的微信账号对应。

在MicroMsg文件夹下找到system_config_prefs.xml,其中name=default_uin的整数值便是uin值。

在手机拨号盘中输入*#06#获取手机对应IMEI码,由此可得:

IMEI=354XXX77972179

Uin= -154XXX3212

密码计算公式为该字符串的32位md5码的前7位。

md5(354XXX77972179-154XXX3212,32)= 4ffcbXXXXX71a722XXXXXeb0a3fa

计算完毕后使用由SQLCipher 2.1版本编译运行查看器(经尝试,只有2.1版本的源码编译后可以实现嵌套加密功能,低于2.1版本无此功能,高于2.1版本不向下兼容)尝试解密数据库。


0x02.EnMicroMsg下常用表解释

0x001.Rcontact

列名 username Alias Conremark Nickname
解释 对应的联系人微信账户实际ID 对应联系人的微信账户显示ID 用户对联系人的备注 对应联系人的昵称

0x002.Chatroom

列名 chatroomname Memberlist Displayname Roomowner Selfdisplayname
解释 对应聊天群ID 聊天群成员微信实际ID 聊天群成员显示昵称 聊天群房主实际ID 该用户在所在聊天群中的自我备注

0x003.message

列名 issend Creattime Talker Content
解释 布尔值为0表示收到消息,布尔值为1标识发出信息 表示对话创建时间 对话发生的对象 消息内容