微信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标识发出信息 表示对话创建时间 对话发生的对象 消息内容

Android通讯信息提取

0x00. 获取通讯录数据

挂载系统分区并定位至/data/data/com.android.providers.contacts/databases/

使用ADB指令将database提取至本地:

adb pull /data/data/com.android.providers.contacts/databases/contacts2.db X:\

使用Sqlitebrowser打开contact2.db文件

主要通讯录文件在raw_contacts表和data表中

raw_contacts各列解释

列名 _id Account_id Display_name Last_time_contacted
解释 通过id关联其他等表中的联系人 标识该联系人所对应的通讯录登陆账户 对应联系人姓名 最后通话的时间

data各列解释

列名 _id hash_id data1~data15
解释 通过id关联其他等表中的联系人 该联系人信息的hash值 这几列为对应联系人的姓名、住址、固话等信息

0x01.获取通话记录

挂载系统分区并定位至/data/data/com.android.providers.contacts/databases/

使用ADB指令将对应的database提取至本地:

Adb pull /data/data/com.android.providers.contacts/databases/calllog.db X:\

使用Sqlitebrowser打开calllog.db文件

calllog.db各列解释

列名 number date duration geocode_location
解释 对应通讯记录的去电号码 通话记录发生的时间 通话记录持续时间 去电号码归属地理位置

0x02. 获取短信息数据

在安卓7.1中,mmssms.db文件位置再在/data/data/com.android.providers.telephony下,而是在/data/data/com.google.android.gms/database下。

挂载系统分区并定位至/data/data/com.google.android.gms/database/

使用ADB指令将对应的database提取至本地:

adb pull /data/data/data/data/com.google.android.gms/database/icing_mmssms.db X:\

使用Sqlitebrowser打开icing_mmssms.db文件,定位至表mmssms下

icing_mmssms.db各列解释

列名 Msg_type address date body
解释 消息类型,SMS为短信息,PDU为彩信 收到的消息的地址 收到消息的日期 消息内容

Android系统分区简介

0x00.挂载文件系统

首先将手机连接PC并开启USB调试,再使用PC端进入CMD,输入 ADB shell进入ADB界面。

输入df查看手机分区信息。

列名 filesystem 1k-blocks Used Available use% Mount on
解释 文件系统所在具体路径 文件系统空间显示方式,以1024字节为一个单位 已用空间 可用空间 已用空间百分百 挂载点

输入su启用superuser,使用命令挂载所查看分区:

Mount -o remount,rw /dev/block/mmcblk0p43 /system

0x01.System分区

System分区等价于PC端的C盘。System分区分区包含了Android除却内核kernel和ramdisk内存的其他部分,比如图形界面和所有priv-app等预装应用部分,清除这个分区意味着删除整个系统,刷机时的ROM便是刷入这个分区。

0x02.MISC分区

MISC正如其全称miscellaneous一样,但这并不代表这是一个不重要的分区,该分区挂载在/data目录下。MISC分区其中包含一些系统设置和系统功能,比如运营商区域识别ID(CID,Carrier or Region ID),USB配置和一些硬件的的设置,这些设置选项通常以布尔值表示其ON/OFF状态。

0x03.Recovery分区

Recovery分区即为恢复分区,通常来说负责手机的开机,在正常的分区损坏后,recovery分区中所包含的内核kernel和ramdisk来进行系统的自我恢复,可以理解为recovery分区保存了安卓系统的底层,进入recovery分区的系统可以对机器进行如擦除分区、挂载分区、adb slide等部分高级操作。

0x04.Boot分区

Boot分区包含内核kernel和内存ramdisk的分目录文件进行打包生成boot.img文件来进行烧录的。

Boot分区是必须分区,没有该分区手机将无法正常启动至Android系统。除非特殊情况才会使用recovery进行boot分区擦除,即format操作。

该分区一旦受损或被擦除,设备只能安装一个新的boot分区才能正常启动,通常是通过安装一个包含boot.img镜像的ROM包来实现boot分区的在安装

0x05.user data分区

User data分区挂载在/data分区下,也称为用户数据区,包含了大量用户数据:如通讯录、短信、设置等用户安装程序的数据。对该分区进行操作等价于对设备进行恢复出厂设置,或是在安装完第三方ROM后的第一次启动时的状态。通常在recovery系统中对该分区进行format操作清除该分区。

再取证中,挂载在/data目录下的userdata分区是最为重要的数据源,无论是第三方APP的用户数据还是系统自带APP的数据都保存在userdata分区下,这些数据会充分反映该机器的使用情景和使用者的详细特征,最为典型的便是即时通讯软件的聊天记录账户信息等和使用者产生最为直接现实映射的数据。

目录 解释
/data/app-installed apps 已经安装的程序
data/app-private-protected apps 受保护的程序
/data/backups-manufacturer backups(rare) 厂商备份
/data/dalvik-cache dalvik 模拟器数据数据
/data/data (application data)              应用程序数据
/data/local-apps 应用程序被安装前第一次被拷贝的位置
/data/misc -bluetooth and wifi information 蓝牙和wifi信息
data/propert-timezone.info 时区信息
/data/system-gesture.key.file 图案密码文件

/data/system-gesture.key.file作为屏幕九宫格锁定的记录信息具有极大的数据价值。在不影响手机其他数据的情况下解锁手机在取证过程是非常重要的条件,通过gesture.key文件可以反算出该设备的九格密码。

0x06.Cache分区

Cache分区用来存储系统经常访问的数据和APP的临时组件的内容,使用recovery擦除该分区不影响机器的使用但是会失去现有的数据,通常不会造成程序崩溃,这些被擦出的数据会在后续使用中再次生成。

0x07.SD Card分区

SD卡分区内包含内部存储空间和外部存储空间的映射,外部存储空间即通常所说的SD闪存卡,通常应用程序的数据均安装在内部SD卡中,包括用户的音乐、相片等数据均默认保存在内置SD卡中,而所有在外置SD卡中的数据均是由当前用户自我添加的。

擦除SD卡分区是安全的,前提是其中数据已经经过备份,擦除该分区意味着时区所有用户数据。