前两天有个新闻,南京某法院网上拍卖,一台二手的苹果手机最后竞价达到了27万元。
天真的我一直想不明白这背后的逻辑,有朋友指点是可能里面含有重要的数据。
但是又看到新闻说,法院澄清了只拍卖手机本身,里面的数据会被清除,纳尼,这台手机上面是有钻石吗?
直到我看到了一份FMS 2017的资料,有家公司介绍了他们从已经擦除的eMMC芯片上恢复短信的技术… 终于认识到自己是图样图森破了。
这家公司叫Rusolut,根据他们的说法:他们的实验里是故意把eMMC做了erase的,之所以选择短信作为恢复对象,因为这个最常用的数据。
而实际情况是,eMMC里的主控芯片并不会把Flash上的Block都erase掉,即使你做了设备擦除命令。(注:原文如此,我不确认eMMC主控在接收到上层的wipe命令以后会如何对Flash进行操作。)
下面这张图画很清楚的,说明了删改手机上资料时主控对Flash端的操作方式,这个有点FTL知识的都理解(不知道FTL的去我们网站ssdfans.com看)。
基本上用户删除的数据,有很大可能依然在Flash上。
他们进攻的对象是安卓手机,从易到难有下面这些方法:
- 连数据线从手机上读;
- 直接从eMMC芯片上读;
- 直接从eMMC里的Flash上读;
要从eMMC芯片里读数据,把芯片吹下来,清洗,然后放进专门的设备,如下图
两种直接从NAND芯片里读取数据的转接器
Flash通过转接器连接到数据读取的设备 (这个盒子里应该有个类似eMMC/SSD主控的东西,可以直接发NAND Flash支持的读写命令)
具体恢复短信的步骤如下:
- GAIN ACCESS TO NAND MEMORY OF eMMC CHIP — 建立对Flash的访问(Bypass eMMC主控,根据Flash的datasheet直接对Flash发命令)
- EXTRACT PHYSICAL IMAGE OF NAND CHIP — 读取Flash上的RAW Data
- DECODE PHYSICAL IMAGE TO READABLE FORM — ECC Decode + Descrambling (反扰码)
- CHECK IF THERE ARE STILL BLOCKS WITH “REMNANTS” IN THE
- DUMP (WE EXPECT TO SEE 0x00 IN THE WHOLE DUMP) — 看看有没有啥东西,如果全是 0x00,那接下来就没啥可做的了
- SCAN DUMP USING SQLITE CARVING ALGORITHM TO FIND DELETED SMS — 用特殊的算法寻找短信 (短信应该有固定的格式,必须0xDX作为开头,0xSMS作为类型符,0xEND作为结尾这种)
- ANALYSE RESULTS (WE EXPECT TO FIND NOTHING! USER’S DATA) – 分析结果
下图是ECC decode前后的对比,我觉得我的视力有问题:
这块我有个问题,bypass eMMC主控直接读取Flash,不知道主控的ECC code rate和算法,是怎么decode的?
还是说eMMC主控的ECC code rate是固定的, 算法也就那么两三种? (请高人指点)
下图是Descrambling以后的数据
是从被Erase过的eMMC芯片回复出来的短信 (挺想知道这是谁家的eMMC芯片)
从10台相同型号的智能手机里恢复出来的短信 (没有擦除eMMC芯片)
A, C , D , E ,F,H,J这几台手机,直接访问NAND Flash比从eMMC芯片上读取能够恢复更多的短信, 其中H手机从Flash里多恢复了400%的短信;
其他几台手机直接访问NAND Flash比从eMMC芯片上读取恢复出来的短信要少,这是因为发生了uncorrectable error需要调整电压retry (这个是主控才能做的事情);
只有锤子,才是数据安全的保护神。
有兴趣的读者可以看看原文的PDF:SMS recovery from NAND memory of erased eMMC chip By Sasha Sheremetov – CTO of Rusolut