如何确定光盘 (DVD) 何时被刻录/刻录?

woe*_*ndl 14 security dvd burning forensics compact-disc

有没有一种方法/工具可以高度确定地确定光盘写入/刻录的日期和时间?这是关于数据取证的,应该是一个可靠的证据。我已经尝试过 IsoBuster,但它没有显示该曲目的编写日期/时间。

Den*_*nis 19

大多数光学数据光盘使用ISO 9660文件系统标准CD-ROM 的卷和文件结构进行信息交换通用磁盘格式规范或两者(称为UDF 桥接器))。

要找出哪个,您可以执行

mount
Run Code Online (Sandbox Code Playgroud)

在 Linux 上安装光盘后,以识别光驱的设备文件。

示例输出:

/dev/sr0 /media/dennis/CDROM iso9660 ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2 0 0
Run Code Online (Sandbox Code Playgroud)

在这里,设备文件是/dev/sr0. 命令

disktype /dev/sr0
Run Code Online (Sandbox Code Playgroud)

将显示可用的文件系统。如果两者都存在,分析 ISO 9660 应该更容易。

ISO 9660

该标准将字段卷创建日期和时间指定为卷创建时刻的数字表示,以以下格式写入主卷描述符的第 814 到 830 字节:

YYYYMMDDHHMMSSCCO
Run Code Online (Sandbox Code Playgroud)

其中CC是厘秒,O是 GMT 以 15 分钟为间隔的偏移量,存储为 8 位整数(二进制补码表示)。

ISO 9660 不使用光盘的前 32 KiB(32,768 字节),上面的描述符紧跟在未使用的块之后,因此我们对第 33,582 个字节和后面的 16 个字节感兴趣。

任何可以转储/读取光盘上的原始数据的工具都可以分析此信息。在 Linux 上,您可以使用dd转储图像的相关部分,并使用 hexdump 正确查看最后一个字节:

dd if=/dev/sr0 bs=1 skip=33581 count=17 | hexdump -C
Run Code Online (Sandbox Code Playgroud)

对于我的 Ubuntu 12.04 x64 LiveCD,这给出:

00000000  32 30 31 32 30 38 32 33  31 37 31 33 34 37 30 30  |2012082317134700|
00000010  00                                                |.|
Run Code Online (Sandbox Code Playgroud)

因此该图像创建于20128 月 23 日,格林威治标准时间 17:13:47.00

UDF

该标准将归档的RecordingDateandTime指定为主卷创建时刻的二进制表示,以下列格式写入主卷描述符的第 376 至 387 字节:

TT tT YY YY MM DD HH MM SS CC BB AA
Run Code Online (Sandbox Code Playgroud)

这里,每一对都是一个八位组(字节),即XX由两个十六进制数组成。

  • TT tT小端16 位整数,表示时间戳的类型和时区。

    12 个最低有效位 ( TTT) 保存时区,编码为以分钟为单位的 UTC 偏移量作为有符号整数(二进制补码表示)。

    四个最高有效位 ( t) 保存类型(总是1,表示本地时间)。

  • YY YY是编码为有符号小端16 位整数(二进制补码表示)的年份。

  • MM, DD, HH MM, SS, CC,BBAA是无符号的 8 位整数,表示创建的月、日、小时、分钟、秒、厘秒、数百微秒和微秒。

同样,UDF 不使用光盘的前 32 KiB。此外,以下 32 KiB 字节是为旧式 ISO 9660 文件系统保留的(如果存在,可能会占用更多空间)。

在“纯”UDF 光盘上,命令

dd if=/dev/sr0 bs=1 skip=65912 count=12 | hexdump -C
Run Code Online (Sandbox Code Playgroud)

将显示编码的时间戳。

出于测试目的,我使用 K3b 创建了一个 UDF 图像。dd命令的输出如下

00000000  4c 1f dd 07 03 01 0f 0b  11 00 00 00              |L...........|
0000000c
Run Code Online (Sandbox Code Playgroud)

分析:

  • 0xF4C(十六进制)大于 0x800,因此为负值。从 0xF4C 休息 0x1000 给出 -180 十进制。这意味着时区是 UTC - 3。

  • 0x07DD 是十进制的 2013(创建年份)。

  • 其余的八位字节可以按其十六进制表示进行逐字解释(0x0F、0x0B 和 0x11 是十进制的 15、11 和 17)。

    这意味着该图像创建于20133 月 1 日 15:11:17.000000 UTC - 3

注意事项

  • 篡改这个日期很简单。所需要做的就是在创建图像之前更改计算机的日期。

  • 如果映像是在实际刻录到光盘之前创建的,则之前的时间会被记录下来。因此,该字段只是所有者自己创建的光盘的潜在证据。