原创:阮咸 330wang

0x01 案例说明

接到总部给分配的一个活,说是客户要不惜一切代价恢复一些聊天记录。案发时间是2014年xx月初,客户发现时间2014年xx月中旬。涉案手机有两部,涉案电脑有两台。经过与客户交流得知,目前能提供线索的只有一部手机。其它的设备由于各种原因被排除在外。

0x02 恢复可行性分析

1.这两台电脑上一台上安装了还原精灵,QQ聊天记录会在关机时被清除。所以电脑上的QQ聊天记录不好恢复。另外一台根本没有聊天的痕迹。2.由于电脑上的QQ聊天记录存放的数据库文件是加密的,以碎片的方式恢复聊天记录数据库几乎是不可能的。3.再看手机,如果手机系统版本比较高,不管应用是删除还是卸载,数据区都会清0。4.其中的一台手机,在案发时间内根本没有使用过,直接忽略掉。5.另一台是早期的手机,安卓版本是4.0,不存在清0的问题。所以有恢复的可能。6.安卓QQ的聊天记录存储也是加密的,只不过它是xor(异或)加密。只要得到手机的解密密钥和数据库结构,就可以做碎片恢复。7.安卓QQ的解密密钥一般是它的串号(存在其它特殊情况),数据库结构根据QQ版本的不同而不同。目前有关安卓QQ我们在实际测试过程中发现了至少24种不同的结构(包括最新发现的)。综上所述,这四个检材中有一个手机有可能能恢复出相关的数据。下面着重对这个手机进行恢复操作。

0x03 手机镜像

接到手机以后,手机处于关机状态,由于这个手机型号是联想A789。通过查询它的参数(http://detail.zol.com.cn/328/327598/param.shtml),知道它的CPU品牌是联发科MTK,所以第一步,用flash_tool来回读它的镜像。从网上下载这个手机专用的刷机工具,发现这是旧版本(V3.0版本)的flash_tool,打开回读工具后,正常回读,但是每读取一点就断,还得重新读取。不知是工具的原因还是手机的原因。由于时间紧迫,所以想试试ROOT的方法,手机开机后发现手机已经有ROOT了!和客户交流,客户说这个手机已经在几个地方做过了,ROOT是其他人做的。当时心就凉了一半,因为不知道手机的ROOT方式,如果用第三方软件ROOT的话,会往手机上推送大量的apk软件,这些apk软件肯定会放到data分区上,造成原始数据覆盖。先不管这些了,既然有了ROOT,先做镜像来吧。手工镜像过程省略,可以参考http://www.intohard.com/article-219-1.html来镜像手机,如果有手机恢复/取证软件的话可以直接用手机镜像工具做镜像。

0x04镜像分析

取完镜像后,用winhex加载镜像,并解释为磁盘模式,结果发现这个手机的采用MBR磁盘格式,如下图所示

图1联想A789镜像依次展开各个分区,分区1有可能是引导分区,分区2是system系统分区,分区3是cache分区,分区4是data用户数据分区,分区5是内置SD卡分区。一般system分区包含app、bin、sbin等目录,其中app目录中存储系统apk应用,bin、sbin目录存储系统要用到的一些命令。cache分区一般存放的文件比较少。data分区一般包含data、system等目录,其中data目录用来存储各种应用的数据,比方说微信聊天的数据库就存放在/data/data/com.tencent.mm目录下。如果data分区中有media目录,一般这个目录是SD卡所在的目录。也就是说SD卡数据和应用的用户数据共同占用data分区。这个目录下的子目录一般包括Android、DCIM、Music等目录。当然在老式机器中,SD卡会单独占用一个分区。区分的原理就是查看子目录的位置。如果DCIM目录位于/data/media/0目录下,说明SD卡上的数据和用户数据共用data区。如果DCIM直接位于根目录下,说明SD卡数据单独占用一个分区。

图2第二个分区,根据结构看是系统分区

图3cache分区,有我们镜像时上传的busybox

图4data分区,保存用户数据(QQ,微信,短信,联系人等)的分区

图5内置SD卡分区因为QQ的聊天数据库存放于/data目录下,所以下面对data分区进行分析,如下图:

图6/data/data目录下没有发现QQ的痕迹找到这个分区下的data目录,并对其现存的子目录进行排序,发现下面没有QQ的记录痕迹。

图7内置SD卡tencent目录下有QQ的痕迹

再看一下SD卡的tencent目录,发现有MobileQQ目录,这说明一个很重要的问题,就是QQ被卸载了!!对于被卸载的安卓QQ能恢复聊天记录吗?QQ的聊天记录存在于数据库中,如果数据库因为卸载QQ被删除后,它会存在于文件系统的空闲空间中。只要空闲空间没有被系统自动清0,还是有希望找到相关的聊天记录的。由于安卓从4.2版本才开始清0操作,但是现在的版本是4.0,所以恢复的机率还是很大的。我们采用QQ数据库单元结构精确区分技术,加上QQ及时解密技术,制作了QQ碎片恢复脚本,详细解析位于下一节。

0x05 QQ数据库解密算法

QQ数据库对某个表中的text和blob字段进行异或加密,密钥是一般是imei。下面是数据库字段加密/解密的关键算法,请注意代码加黑部分:    public static byte[]cryptBytes(byte[] bytes) {        if (bytes == null) {            return bytes;        }        if (!isPassInit) {            genCodeKey();        }        try {            int length =bytes.length;            byte[] bytesDec =new byte[length];            for (int i = 0; i< length; i++) {                bytesDec[i] =(byte) (bytes[i] ^ codeKey[i % codeKeyLen]);            }            return bytesDec;        } catch (Throwable e){            return bytes;        }    }注意:1.bytes是取到的Text或blob字段的加密内容,codeKey是解密密钥。         2.对于name字段,有算法的变体,对于其它旧聊天表(表名结尾不挂_New的聊天表),也有算法的变体。           3.虽然有算法的变体,但是基本算法xor是不变的。

0x06恢复data分区的QQ痕迹

前面我们说过,只要聊天数据没有被清0,就有恢复的可能,但是安卓QQ存放时是异或加密的,所以得到加密密钥是必须的。一般情况下加密密钥是手机的串号,在这里要怎么确定串号呢?如果加密密钥不是手机的串号,它还有另外一种模式,这种模式比较少见。这里我们以加密密钥是串号为例给大家进行说明。如果加密密钥不是串号,则我们解密出来的字符串就是乱码,通过解密结果,我们再重新查找相关的解密密钥。一个通用的方法,在手机拨号界面输入“*#06#”就能得到手机的串号。另外可以全分区搜索“imei”这个字符串,也可以确定手机的串号。

图8字符串搜索“imei”

图9搜索串号的结果

图10搜索到的串号:868****17086251下面确定安卓QQ的结构,之前我们也说过安卓QQ有多种结构,通过一一对比数据库的单元结构,我们确定了一种符合条件的QQ结构。或者在data分区搜索数据表的结构“_Newmr_”字符串,我们也可以找到相关的数据库结构。当然搜索其它的字符串也可以得到相关的数据库结构,只要满足相关的QQ数据库结构就行。其它方法留作大家思考。

图11QQ聊天记录数据库的结构

整理下就是:CREATE TABLE mr_friend_64FE***********1C26ADDBA9BAE70C6_New (_id INTEGER PRIMARY KEY AUTOINCREMENT,extInt INTEGER,extLong INTEGER,extStr TEXT,extraflag INTEGER,frienduin TEXT,isValid INTEGER,sread INTEGER,issend INTEGER,istroop INTEGER,longMsgCount INTEGER,longMsgId INTEGER,longMsgIndex INTEGER,msgData BLOB,msgId INTEGER,msgUid INTEGER,msgseq INTEGER,msgtype INTEGER,selfuin TEXT,sendFailCode INTEGER,senderuin TEXT,shmsgseq INTEGER,time INTEGER,uniseq INTEGER,versionCode INTEGER,vipBubbleID INTEGER,UNIQUE(time,senderuin,msgData,istroop,shmsgseq) ON CONFLICT IGNORE)}其中关键的字段是frienduin(好友的QQ号/群号),msgData(发送内容),selfuin(自己的QQ号),senderuin(发送者的QQ号),time(时间戳)。   关键字段中除了time为int类型不加密存储外,其它的都是text或blob类型的,这些类型安卓QQ都是加密存储的。  因为客户只要10位QQ的聊天记录,这大大的减少生成关键搜索数据的精确性。根据这个建表语句,生成了存储这条项目的关键搜索数据,通过对这个数据进行16进制搜索确定了几百条记录。如下图所示:

图12精确命中的聊天记录只不过这些聊天记录都是加密存储的,我们也可以看到,这些搜索到的数据都位于空闲空间内(FreeSpace),这也验证了QQ是被卸载的。但幸运的是,数据库中的内容没有被清除。剩下的就是把这些记录恢复成明文字样。比方说拿出其中的一条聊天记录分析一下,如下图:

图13待恢复的QQ聊天记录

第一个字节0x65表示整个记录的大小字节数0x6A表示这个记录的RowID0x1B表示单元结构记录头大小字节数剩下的0x1A个字节记录了每个字段的类型及大小字节数然后是开始字段的数据记录,这个数据记录所占的字节数和上面的0x1A个字节记录的内容是一一对应的同时也和建表语句中的字段名称是一一对应的。第一个有内容的是0x21所记录的10个字节,它的字段名称为frienduin,它的值为:0x0A060E********060406,把这个值用imei进行解密操作,得到的QQ号为:206****736第二个有内容的是0x2A对应的15个字节,它的字段名称为msgData,它的值为:0xDE8499******D48C97D587AFD7A69E,解密后,得到的内容并转换成utf-8编码为:没X你忙X(最后一个字是乱码打不出来)。第三个有内容的是0x06对应的8个字节,它的字段名称为msgUid第四个有内容的是0x04对应的4个字节,它的字段名称为msgseq第五个有内容的是0x02对应的2个字节,它的字段名称为msgtype第六个有内容的是0x21所记录的10个字节,它的字段名称为selfuin,它的值为0x0A0E08********000208,把这个值用imei进行解密,得到QQ号为:280****158第七个有内容的是0x21所记录的10个字节,它的字段名称为senderuin,它的值为:0x0A060E********060406,把这个值用imei进行解密操作,得到的QQ号为:206****736第八个有内容的是0x02对应的两个字节,它的字段不重要忽略第九个有内容的是0x04对应的4个字节,它的字段名为:time,它的值为0x53B8F54F,转换成时间戳为:1404630351,换成时间值为:2014-07-06_15:05:51+8(解析方法参考0x09的其它资源)。这样我们得到了我们需要的内容:QQ号206****736在2014-07-06_15:05:51+8向QQ号280****158发送消息:没X你忙X这是对一条记录的分析过程,通过脚本编程的方式得到剩余的聊天记录。
WinHex使用教程
用WinHex进行取证调查
用WinHex修复损坏的复合文档文件头
【照片或特殊文件丢失】试试用 winhex 脚本进行数据恢复
【超详细教程】FTK 和 Winhex 协同工作
【黑客文本编辑工具】UltraEdit、WinHex、PEditor

安卓加密软件_【winhex/Xways实战应用】安卓QQ卸载后的手工恢复实战相关推荐

  1. 安卓加密软件_知识科普-私密相册和加密相册区别

    随着智能手机普及,人们都喜欢用手机记录下生活和工作.其中不乏生活隐私和工作商业秘密,因此就带来了各种保护手机相册视频文件的电脑加密软件和手机加密APP,下面主要科普下手机加密APP. 了解加密APP之 ...

  2. 安卓加密软件_软件 | 加密压缩文件暴力快速查看,安卓手机适用

    朋友们常常下载文件后需要解压缩,然而解压缩通常要密码,运气好密码就是压缩文件的名字,或者都能在下载的时候能在下载网址中找到,运气不好,就麻烦了,很想要的资源文件就因为没有密码就那么无法查看了. 当然一 ...

  3. 安卓加密软件_(安卓)微信聊天加密软件

    发现一个很有趣的软件,这个软件可以给微信发出的文字消息加密,转码成不明意义的字符.发出来的消息必须在微信中长按,点击翻译,才会显示出真正的意思.应用场景嘛,比如说你想表白某人的话,可以尝试着多用这个发 ...

  4. 大黄蜂视频加密软件_大黄蜂

    大黄蜂视频加密软件 The small person found an enormous wasp in her bedroom today. I don't like wasps much, I e ...

  5. 一机一码加密软件_加密软件还有哪些功能?

    加密软件是办公中常用的一种软件,大家对文件加密也有一定的熟知度,文件除了针对电脑文件防外泄,在日常生活中,我们对文件加密使用的频率较高,所以相对也比较了解,那么加密软件还有哪些功能呢? 一.权限管理 ...

  6. 安卓系统管理软件_好评10w+的安卓手机软件!价值168的会员版本!

    使用安卓手机的朋友还是挺多的,在安卓手机的使用过程中无时无刻都在产生着垃圾文件,像一些图片.视频.音频都会缓存在手机中,所以使用时间一长,手机就会越来越卡. 今天给大家安利的软件叫"ES文件 ...

  7. 安卓系统管理软件_手把手教你安卓手机怎么录屏,这份屏幕录制指南赶紧收下...

    记得前两年安卓手机大部分还不支持系统录屏功能的时候,小编有多羡慕使用苹果手机的人.但是近年来安卓系统的功能也在不断发展完善,大部分的安卓手机都可以直接使用系统录制功能来进行屏幕视频的录制,并且市面上也 ...

  8. 电脑文件夹加密软件_上海靠谱电脑资料加密软件解决方案

    上海靠谱电脑资料加密软件解决方案 m1C0x1j2v 上海靠谱电脑资料加密软件解决方案 的化通常涉及耗时的过程,例如二进制翻译.过后,向该保护区的电磁驱动器发出灭火指令,打开七氟丙烷气瓶,向灭火区进行 ...

  9. 安卓系统管理软件_有了它我卸载了很多软件!

    点击蓝字关注我 大家好,欢迎来到KUMI分享公众号.又到了一个四季分明的季节,走在路上既可以看到穿短裙的小妹,也能看到棉袄大叔.在这气候冷热变化的季节里,也是流行感冒发病较高的时期,工作学习再忙平时还 ...

最新文章

  1. 正则表达式限定长度_自己写一个通用的邮箱正则表达式
  2. boot.ini文件解密
  3. android text字体居中显示,Android Canvas的drawText()和文字居中方案
  4. [转]Supporting OData Query Options in ASP.NET Web API 2
  5. KeyMob移动广告聚合平台助力开发者,提供广告聚合服务
  6. 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
  7. hadoop2.4.1源码编译步骤 hive0.13.1编译
  8. 点击部分刷新html ajax,一文全解web前端精简知识点
  9. document-scanner:一个基于OpenCV的文档扫描器
  10. python安装目录结构_1.5 python安装目录介绍《Python基础开发入门到精通》
  11. oracle 052 题库变了,oracle ocp题库变化,052新加的考试题收集整理-30
  12. 量子加密神话破灭?破解论文出现
  13. 数据恢复哪家强?四大数据恢复类软件评测
  14. 计算机网络题库与答案西电,西电计算机网络期末试题.doc
  15. 一个小的UGM的Demo
  16. Illustrator国画效果
  17. 【MATLAB航空航天工具箱】学习笔记--时间系统
  18. 使用BookMarkHub插件实现在不同浏览器之间进行书签同步
  19. 各大网站瀑布流简析与建议
  20. PTA(每日一题)7-75 某校几人

热门文章

  1. python清空字典保留变量方法,python关于字典的常用方法
  2. 微信公众号消息列表首次大改版!自媒体“均贫富”前夜?
  3. HaProxy 1.5 说明文档翻译
  4. 如何保证路缘石滑模机作业质量的几个原则
  5. python 淘宝滑块验证_pyppeteer硬钢掉淘宝登入的滑块验证
  6. 银行人必备6大金融工具,供应链、PE/VC、IPO上市数据、债券数据、企业评级、同业分析...
  7. 短URL服务的设计以及实现
  8. MYSQLWorkbench看数据库ER图
  9. alipay本地jar安装
  10. 面试笔试中算法设计问题的回答技巧总结