三星Gallery3d应用取证分析:挖掘删除痕迹与数据库解析
研究背景
Mike与Cheeky4n6Monkey对三星Gallery3d应用进行了深入分析,重点关注应用删除痕迹的提取。研究始于2021年11月初Michael Lacombe在Physical and RAW Mobile Forensics Google Group上的帖子,涉及用户声称特定图片被接收后立即删除的情况。
应用概述
三星Gallery3d是三星设备的预装应用,根据Google Play记录,最后更新于2019年版本5.4.11.0。测试设备显示版本信息:
- android:versionCode=“1020000021”
- android:versionName=“10.2.00.21”
应用位于用户数据分区:/data/com.sec.android.gallery3d,发送到垃圾桶的文件位于:/media/0/Android/data/com.sec.android.gallery3d
数据库分析
local.db数据库结构
数据库位于:/data/com.sec.android.gallery3d/cache/databases/local.db
album表
存储相册信息,关键字段:
_bucketID:通过Java hashcode算法生成的相册路径哈希值_abspath:相册路径default_cover_path:相册封面图片路径album_count:相册中文件数量
log表
记录应用操作日志,关键字段:
_timestamp:操作时间戳(本地时间,格式YYYY-MM-DD HH:MM:SS)_log:包含操作类型和base64编码文件路径的专有格式字符串
观察到的日志操作类型:
MOUNTED:垃圾桶中当前文件数量MOVE_TO_TRASH_SINGLE:单个文件移动到垃圾桶MOVE_TO_TRASH_MULTIPLE:多个文件移动到垃圾桶EMPTY_SINGLE:清空垃圾桶(单个文件)EMPTY_MULTIPLE:清空垃圾桶(多个文件)EMPTY_EXPIRED:文件在垃圾桶中自动删除
trash表
存储当前在垃圾桶中的文件信息,关键字段:
__absPath:删除文件的当前路径和文件名__Title:删除文件的当前文件名__originPath:原始路径和文件名__originTitle:原始文件名__deleteTime:删除时间(UNIX毫秒时间,UTC)__restoreExtra:JSON格式的元数据,包含拍摄时间、经纬度等信息
数据解析技术
Base64编码路径解码
log表中的_log字段包含base64编码的路径字符串,解码过程:
- 移除最后7个字符
- 从字符串开头移除3-6个字符,直到长度为4的倍数
- 进行base64解码
- 移除特殊填充字符(如Black Star、Black Circle)
使用的工具
-
数据分析:
- DB Browser for SQLite:查看/导出SQLite数据库
- Cyberchef:base64解码字符串
- Epochconverter:确认时间戳类型
- Android Studio
-
APK逆向:
- dex2jar:将APK的classes.dex转换为Java .jar
- JD-GUI:查看.jar文件源代码
- JADX:直接从APK文件查看源代码
Python解析脚本
开发了多个Python 3脚本用于自动化解析:
log表解析脚本
samsung_gallery3d_log_parser_v10.pysamsung_gallery3d_log_parser_v11.py
trash表解析脚本
samsung_gallery3d_trash_parser_v10.py
其他工具脚本
java-hashcode.py:计算album表中_bucketID值的脚本
研究发现
通过分析发现:
- 用户习惯截屏或下载图片后立即删除并清空垃圾桶
- 浏览器历史记录也被频繁删除
- 恢复的截图名称显示用户在特定时间使用了浏览器
- 这些时间与调查中的时间不匹配,但揭示了其他需要调查的时间段
总结
这项研究深入了解了Android应用逆向工程、哈希算法和编码技术。通过分析现有工具可能未解析的应用数据库,可以发现新信息、感兴趣的文件夹、日志文件等。研究还展示了协作研究如何带来更高的产出和新工具的开发。
所有脚本已在GitHub仓库中提供,可用于解析三星Gallery3d应用(v10.2.00.21)的log表和trash表,这些表可能存储从三星Gallery3d应用内执行的图片删除相关信息,如时间戳和原始文件路径。