有没有办法在 CPU 的寄存器上执行数据采集?

信息安全 取证 合法的
2021-08-12 08:27:48

在数字取证中,作为最佳实践,调查人员应从最不稳定的来源收集数据,直到最不稳定的来源。通常,在谈论实时/动态采集时,大多数教科书都以 RAM 作为最不稳定的数据源,即使 CPU 寄存器更不稳定。但是,我似乎找不到描述从可疑设备的 CPU 获取数据的来源。因为运行任何程序都会改变至少一个寄存器(EIP/RIP)。所以我的问题是,忽略寄存器中的数据是因为它们没有调查价值吗?还是因为不可能?

而且-取决于上述问题的答案-有没有办法做到这一点?

2个回答

即使没有程序运行,操作系统本身也会运行。你无法改变它——无论是技术上还是法医上。

此外,现代四核 CPU 可以有数百个 CPU 寄存器,其中大部分是不可见的这是一种优化:当您将值从 CPU 寄存器写入缓存时,可能需要一段时间。通过使用不可见的寄存器将值保存一段时间,CPU 可以继续。但是一旦值被写入,寄存器就可以被清除。即使没有程序正在运行,您也可以有效地处理改变状态的不可见寄存器 - 祝你好运!

这也让我们遇到了下一个问题:CPU 缓存会永久且相当独立地自我更新。如果这将在程序控制之下,那将是没有效率的。

现在可以转储一个程序典型的现代操作系统可以将完整的程序状态(包括寄存器)保存到磁盘文件中。在 Linux 上,这称为核心文件,在 Windows 上称为用户模式转储无论如何都需要这种容量,因为多任务操作系统可能需要暂停和恢复正在运行的进程(例如,当另一个进程计划运行时)。显然,要恢复进程,需要恢复寄存器。缓存通常只是被清除,因为它无论如何都不应该影响程序的正确性,因此也不会最终出现在转储文件中。

可接受的方法是将逻辑探针连接到 CPU 和/或电路中的其他位置。

通过这种安排,您可以跟踪进出 CPU 的指令和数据移动,并能够相应地推断寄存器状态。

但是一旦你将一个新的运行程序引入系统,你就违反了关于合法可用的法医证据的第一条规则。你已经改变了系统。任何体面的辩护律师都可以弹劾这些证据。