The Sleuth Kit数字取证工具发展史与技术演进

本文详细记录了The Sleuth Kit数字取证工具从3.0.0到4.8.0版本的技术发展历程,涵盖文件系统支持、数据库架构优化、Java API改进等核心技术内容,展现了这一开源取证工具的技术演进轨迹。

The Sleuth Kit发展史

版本发布记录

本文包含The Sleuth Kit®每个版本(从3.0.0版本开始)的变更描述。

新版本

使用Github页面确定每个版本的变更内容。

旧版本

4.8.0(2020年1月24日)

C/C++

  • 添加了Pool层以支持APFS。注意:API可能会更改
  • 在libtsk和部分命令行工具中添加了有限的APFS支持
  • 加密支持尚未完成
  • Blackbag Technologies提交了初始PR。Basis Technology进行了一些小的重构
  • 重构逻辑镜像工具并进行小修复
  • 来自Google模糊测试工作和Afarsec的Jonathan B的各种错误修复
  • 修复了循环属性列表导致的无限NTFS循环。由X报告
  • 修复了来自github用户uckelman-sf的文件系统错误

数据库

  • 更新数据库模式以支持池
  • 在黑板属性中添加JSON概念
  • 模式支持级联删除以启用数据源删除

Java

  • 添加了Pool类和相关基础设施
  • 添加了支持从数据库删除数据源的方法
  • 通过重构最近引入的时间线过滤类,移除了JavaFX依赖
  • 在黑板助手包中添加了附件支持

4.7.0(2019年10月14日)

详见NEWS.txt文件。

C/C++

  • 扩展了数据库模式以存储tsk_events和相关表
  • 创建文件和工件时自动添加基于时间的数据。由Autopsy时间线使用
  • 逻辑镜像工具可以将文件保存为单个文件而不是VHD(节省空间)
  • 移除了导致有符号/无符号打印问题的PRIuOFF和其他宏

Java

  • Travis和Debian包使用OpenJDK而不是OracleJDK
  • 新的黑板助手包(blackboardutils),使创建工件更容易
  • 扩展了黑板范围,包括新的postArtifact()方法,可将事件数据添加到数据库并向监听器广播事件
  • SleuthkitCase现在有一个用于数据库相关事件的EventBus
  • 新的TimelineManager和相关过滤类以支持新的事件表

4.6.7(2019年8月2日)

详见NEWS.txt文件。

C/C++代码

  • 首次发布新的逻辑镜像工具
  • 修复了空间不足情况下的VHD镜像写入器问题

Java

  • 扩展了通信管理器API
  • 改进了SleuthkitCase.addLocalFile()的性能

4.6.6(2019年4月26日)

详见NEWS.txt文件。

C/C++代码

  • 为E01文件在数据库中设置采集详情
  • 修复NTFS解压缩问题(来自Joe Sylve)
  • 修复缓存失败时的镜像读取问题(Joe Sylve)
  • 修复HFS+大型目录文件问题(Joe Sylve)
  • 修复srch_strings中的空闲内存问题(Derrick Karpo)

Java

  • 修复了本地文件可以使用相对路径的问题
  • 为Web数据添加了更多黑板工件和属性
  • 向CaseDbManager添加了启用表检查和修改的方法
  • 获取和设置采集详情的API
  • 添加了向数据库添加卷和文件系统的方法
  • 添加了为分配文件添加LayoutFile的方法
  • 更改了JNI句柄的处理以更好地支持多案例

4.6.5(2019年1月15日)

详见NEWS.txt文件。

C/C++代码

  • 修复HFS边界检查

Java代码

  • 定义了新的工件和属性
  • 修复了数据源的SleuthkitCase.getContentById()中的错误
  • 修复了LayoutFile.read()中可能允许读取文件末尾之后的错误

案例数据库模式

  • 在案例数据库中添加了哈希值和采集详情的新字段
  • 在案例数据库中存储"创建的架构版本"

4.6.4(2018年11月9日)

详见NEWS.txt文件。

Java代码

  • 增加数据库中的最大语句数以防止负载下的错误
  • 为SQLite重试设置最大超时

注意:没有C/C++命令行/库更改。仅支持Autopsy 4.9.1发布的更改。

4.6.3(2018年10月14日)

详见NEWS.txt文件。

C/C++代码

  • 修复了损坏索引和0哈希的Hashdb错误
  • 在ExtX代码中添加了测试数字幂的新代码

Java代码

  • 允许通用数据库访问的新类
  • 检查重复工件的新方法
  • 为常用内容添加了缓存

数据库模式

  • 添加了检查员表
  • 标签现在与检查员关联
  • 更改了逻辑文件的parent_path以与FS文件保持一致

4.6.2(2018年8月8日)

详见NEWS.txt文件。

C/C++代码

  • 各种编译器警告修复
  • 在镜像写入器中添加了小延迟,以免使其他线程饥饿

Java

  • 添加了更多锁定以确保在其他线程使用时不会关闭句柄
  • 添加了API以支持更多按数据源查询
  • 在检测对象是否有子项时添加了基于内存的缓存

4.6.1(2018年5月8日)

详见NEWS.txt文件。

  • 来自Google模糊测试的大量边界检查修复。感谢Google。
  • 来自uckelman-sf和其他人的清理和修复
  • PostgreSQL、libvhdi和libvmdk支持Linux/OS X
  • 修复了istat中NTFS GUID的显示 - Eric Zimmerman的报告。
  • NTFS istat显示所有FILE_NAME属性的详细信息,而不仅仅是第一个。Eric Zimmerman的报告。
  • 报告可以是URL
  • 报告是内容
  • 添加了通信图形视图的API
  • JNI库提取到包含用户名的名称以避免冲突
  • 数据库版本从升级到8.0,因为报告现在是内容

4.6.0(2018年2月21日)

详见NEWS.txt文件。

  • 新的通信相关Java类和数据库表。
  • Autopsy Linux构建的Java构建更新
  • 黑板工件现在是Java中的内容对象,也是数据库中tsk_objects表的一部分。
  • 增加了缓存大小。
  • 来自Google模糊测试的大量边界检查修复。感谢Google。
  • 来自uckelman-sf的HFS修复。

4.5.0(2017年10月15日)

详见NEWS.txt文件。

新功能

  • 支持LZVN压缩的HFS文件(来自Joel Uckelman)
  • 使用E01的扇区大小(有助于4k扇区大小)
  • 数据库模式的更具体版本号
  • 数据库中的新本地目录类型,以与虚拟目录区分
  • 数据库中的所有黑板工件现在都是"内容"。附件现在可以是其父消息的子项。
  • 在tsk_files表中添加了扩展名作为列。

错误修复

  • 更快的HFS硬链接解析
  • 来自Google模糊测试工作的大量修复。

4.4.2(2017年8月7日)

详见NEWS.txt文件。

  • 用于NTFS USN日志的usnjls工具(来自noxdafox)
  • 在数据库的MIME类型列中添加了索引
  • 如果存在本地SQLite3则使用它(来自uckelman-sf)
  • 黑板工件有一个shortDescription方法
  • 修复了最高HFS+ inum查找(来自uckelman-sf)
  • 修复ISO9660崩溃
  • 各种性能修复和添加的线程安全检查

4.4.1(2017年5月30日)

详见NEWS.txt文件。

  • 使用新的IMAGE_WRITER结构读取本地驱动器时可以创建稀疏VHD文件。目前由Autopsy使用。
  • 大量清理和修复。包括内存泄漏、Unicode清理、缺少的NTFS文件(在极少数情况下)、非常长的文件夹结构和数据库插入

4.4.0(2017年1月18日)

详见NEWS.txt文件。

  • 在Windows中编译现在使用Visual Studio 2015
  • tsk_loaddb现在为空闲空间添加新文件,JNI相应升级。
  • Java API更新

4.3.1(2016年10月25日)

详见NEWS.txt文件。

  • NTFS适用于4k扇区
  • 在Java中添加了支持以编码形式(XORed)存储本地文件
  • 在数据模型中添加了Java Account对象
  • 向黑板工件添加了审查状态的概念
  • 升级了PostgreSQL版本
  • 各种小错误修复

4.3.0(2016年7月19日)

详见NEWS.txt文件。

  • PostgreSQL支持(仅Windows)
  • 新的Release_NoLibs Visual Studio目标
  • 通过libvmdk和libvhdi支持虚拟机格式(仅Windows)
  • 模式更新(数据源表、MIME类型、属性存储类型)
  • tsk_img_open可以接受外部创建的TSK_IMG_INFO
  • 各种小错误修复

4.2.0(2015年9月16日)

详见NEWS.txt文件。

  • 添加了ExFAT支持
  • 新的数据库模式
  • 新的Sqlite哈希数据库
  • 各种错误修复
  • NTFS更关注序列,仅当匹配时才加载元数据。
  • 添加了辅助哈希数据库索引

4.1.3(2014年1月25日)

详见NEWS.txt文件。

  • 修复了可能使UFS/ExtX在inode_lookup中崩溃的错误。
  • ISO9660代码中的更多边界检查
  • 镜像层边界检查
  • 更新SQLITE-JDBC版本
  • 更改了java加载本地库的方式
  • YAFFS2备用区域的配置文件
  • 镜像层中返回名称的新方法
  • Yaffs2清理。
  • 转义SQLite数据库中的所有字符串
  • SQlite代码使用NTTFS序列号来匹配父ID

4.1.2(2013年9月25日)

详见NEWS.txt文件。

  • fiwalk现在在linux上编译!抱歉。

4.1.1(2013年9月24日)

详见NEWS.txt文件。

  • 时间线中的FILE_NAME时间
  • Cellebrite磁盘镜像自动检测
  • 64位Windows目标
  • 修复了Sqlite代码不使用NTFS序列的错误
  • Jar文件包含本地库

4.1.0(2013年6月17日)

详见NEWS.txt文件。

核心新功能

  • 添加了YAFFS2支持(来自viaForensics的补丁)。
  • 添加了Ext4支持(来自kfairbanks的补丁)

框架

  • 添加了Linux和MAC支持。
  • 添加了L01支持。
  • 添加了按名称、路径和扩展名查找文件的API。
  • 移除了已弃用的TskFile::getAttributes方法。
  • 为AutoBuild工具支持移动了代码。

Java绑定

  • 添加了DerivedFile数据模型支持
  • 向Content添加了公共方法,以在对象被gc’d之前添加关闭其tsk句柄的能力
  • 向ReadContentInputStream添加了更快的skip()和随机搜索支持
  • 通过将常用方法上推到AbstractFile来重构数据模型
  • 修复了小内存泄漏
  • 改进了java绑定数据模型的回归测试框架

4.0.2(2013年2月4日)

核心新功能

  • 现在包含了fiwalk。

核心错误修复

  • 修复了fcat以在NTFS文件上工作(仍然不支持ADS)。
  • 修复了tsk_loaddb / SQLite中的HFS+支持 - 未添加根目录。
  • NTFS代码在列出目录内容时现在查看所有MFT条目。它过去只查看未分配的条目以获取孤立文件。这修复了目录b树中缺少分配文件的镜像。
  • 在搜索所有文件的MFT条目时,NTFS代码使用序列号。
  • 更改了Libewf检测代码以更可靠地支持v2 API(ID:3596212)。
  • 如果$SDS是块大小的倍数,NTFS $SII代码在极少数情况下可能崩溃。

框架

  • 向TskImgDB添加了新的API,返回镜像的基本名称。
  • 对框架进行了许多性能改进。
  • 在框架中移除了在管道配置文件中指定模块扩展的要求。
  • 添加了黑板工件以表示操作系统和网络服务用户帐户。

Java绑定

  • 更多查询文件的方法
  • 添加到数据库时获取当前目录的方法。
  • 稍微修改了类结构
  • 为子项/父项添加了更多延迟加载。
  • 来自C++的更好异常抛出

4.0.1(2012年11月13日)

包含小新功能和错误修复。

新功能

  • 显示更多DOS分区类型。
  • 添加了fcat工具,接受文件名并导出内容(相当于一起使用ifind和icat)。
  • 改进了FAT代码的性能(映射和dir_add)
  • 改进了NTFS代码的性能(映射)
  • 向block_walk添加了AONLY标志
  • 更新了blkls和blkcalc以使用AONLY标志 - 快得多。

错误修复

  • 修复了mactime问题,它可能选择不遵循夏令时的错误时区。
  • 修复了框架中备用数据流的文件大小。
  • 合并了来自ADF Solutions的内存泄漏修复和原始设备修复。

4.0.0(2012年10月2日)

这是4.0的第一个非beta版本,添加了框架和许多其他错误修复和功能。有关自3.2.3以来的完整新功能列表,请参阅下面的beta版本历史记录。此版本中自beta以来的新内容包括:

  • 更好的FAT孤立文件搜索和循环检测。
  • TskAuto中更好的错误报告
  • 来自ATC-NY的更新HFS+代码
  • 新的mactime -y参数以使用ISO8601格式
  • 框架有新的EXIF模块和小更新。
  • tsk_analyzeimg可以使用scalplel进行雕刻。

4.0.0(beta 1:2012年5月30日)

此版本添加了新的分析框架、C++类、Java绑定和其他使构建端到端取证系统更容易的东西。

  • 具有第一组基本模块的框架(哈希计算、哈希查找、熵计算、RegRipper、ZIP文件提取、通过名称签名提取等) - 仅Windows
  • 多线程支持
  • C++包装类
  • JNI绑定和数据模型类
  • 所有未设置的时间显示为0而不是1970。
  • 支持libewf v2
  • 只需要指定拆分或E01中的第一个文件。
  • 哈希工具中的EnCase哈希集支持。
  • loaddb数据库的新表模式,支持更多数据类型(雕刻、本地文件等)。

3.2.3(2011年10月7日)

此版本有一些小错误修复和功能。新功能包括:

  • 只需要指定一组文件中的第一个E01文件
  • 向tsk_recover添加了-d选项
  • 即使扩展分区失败也加载DOS分区

错误修复包括:

  • 清理损坏的孤立FAT名称
  • RAW CD支持

3.2.2(2011年6月10日)

此版本有一些小错误修复。新功能包括:

  • 支持RAW CD

错误修复包括:

  • ISO9660目录处理
  • FAT删除文件检测
  • FAT删除名称清理

3.2.1(2011年2月27日)

此版本有一些小错误修复。新功能包括:

  • 如果没有卷系统,SQLite DB包含一个虚拟条目。
  • 在Unix上构建时,构建目录可以与源目录不同。

错误修复包括:

  • fls参数
  • 某些Linux系统上pthreads的编译错误
  • 不同的FAT目录条目检查
  • mingw编译错误
  • mactime CSV输出用引号包围文件名

3.2.0(2010年10月28日)

此版本有新功能和错误修复。感谢Anthony Lawrence对新功能的帮助。新功能包括:

  • 新的tsk_recover工具,从镜像提取文件到本地目录。
  • 新的tsk_loaddb工具,将文件系统元数据转储到SQLite数据库。
  • 新的tsk_getimes工具,收集所有文件系统上的MAC时间数据(相当于在一系列卷上运行fls -m)
  • 新的tsk_comparedir工具,比较目录和镜像以检测rootkit。
  • 新的C++ TskAuto类,使创建分析所有文件的自动化工具更容易。
  • 名称清理从库移到工具。
  • img_cat -e和-s标志。
  • 更改了默认NTFS $Data属性的命名方式。
  • fsstat中的HFS+区分大小写标志。

错误修复包括:

  • FAT性能
  • 损坏NTFS文件的崩溃修复
  • 在具有多个相同类型属性的碎片文件上添加属性运行。

3.1.3(2010年7月2日)

此版本有一些错误修复:

  • FAT性能

3.1.2(2010年5月23日)

此版本有一些错误修复:

  • FAT性能
  • 读取错误
  • ifind不停止
  • mmls -B显示错误

3.1.1(2010年3月31日)

此版本有一些错误修复:

  • ISO9660修复
  • sorter修复

3.1.0(2010年1月13日)

这个期待已久的版本添加了新功能并有许多错误修复。新功能包括:

  • HFS+支持
  • 支持不是每个512字节的扇区(向每个命令行工具添加’-b’)
  • NTFS SID数据现在可用
  • mactime与Windows可执行文件一起分发
  • 更好的GPT分区和DOS安全分区检测
  • 更多AFFLIB格式和更好的加密文件支持
  • Sigfind可以处理非原始文件
  • 更好的间接块支持(添加了在3.0.0中丢失的功能)
  • 许多错误修复。

3.0.1(2009年2月2日)

此版本包含几个错误修复。没有新功能。

3.0.0(2008年10月19日)

此主要版本包含许多新库和工具功能。

  • 孤立文件(已删除文件,具有元数据结构,但没有可以从根目录访问的父目录)现在显示在$OrphanFiles目录中。
  • FAT文件系统MBR和文件分配表现在可以作为根目录中的文件访问。
  • 当使用’fls’(和相应的库API)时,每个目录中显示更多已删除文件。这过去需要为每个目录运行’ifind -p’,现在自动完成。
  • 新的mmcat工具输出单个卷的内容。
  • 新的mmls标志仅列出特定卷。
  • 如果主MBR损坏,使用备份FAT MBR。
  • d工具(dls、dcat等)现在命名为blk(blkls、blkcat等)
  • sorter中新的’-b’选项指定最小文件大小。
  • 添加了用于交叉编译的mingw支持
  • 不需要回调设计的新库API和文档
  • 小错误修复。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计