Live OS:安全文件删除

信息安全 linux 文件系统 删除
2021-08-31 10:13:53

对于文件系统保存在 RAM 中的 Live OS(即 Tails),删除文件的方式有什么不同吗?

考虑的具体情况:

  • 正在运行的 Live OS 中的文件“1.jpg”和“2.jpg”
  • 文件 1 以正常方式删除,文件 2 使用“shred”命令删除
  • 有人在之后立即获得完整的 RAM 访问权限(root 权限甚至物理 RAM 转储)
  • 可以恢复这些文件内容中的任何一个吗?

我想知道是否需要使用“安全擦除”方法,如果是,最好的方法是什么。

我知道在断电时重新启动/RAM 覆盖/RAM 数据丢失将起作用,但唯一考虑的情况是在操作系统仍在运行时在删除后立即访问。

3个回答

shred在内存中的文件上运行是没有意义的。文件中的数据也可能存在于应用程序内存、高速缓存等中。属于进程的内存在进程死亡时未擦除:Linux 与大多数内核一样,在将内存授予进程之前擦除内存,而不是发布时,因为这样更快。

当然,不能保证文件可以恢复。但也不能保证它不能。如果您的攻击者模型是攻击者可以看到您的 RAM 内容,那么您需要处理很多事情。至少,您需要在进程释放 RAM 页面后立即擦除它们。您可以将Grsecurity补丁应用到 Linux 内核,至少PAX_MEMORY_SANITIZE可以选择. 您需要注意哪些进程正在运行并可能存储机密信息。请记住,内核也存储机密信息,例如 RNG 状态和磁盘加密密钥。TRESOR补丁 Linux 内核在正常操作期间保护磁盘加密密钥,但这不是一个完美的防御措施,我不知道 RNG 状态的类似补丁。

您试图减轻的危险是文件系统日志,即shred对具有日志的文件系统(例如 ext3、ext4、reiserfs)无效。

假设您没有使用任何 unionfs 进行持久性(显然您可以在 Tails 中做到这一点,尽管我从未尝试过),所有内容都存储在tmpfs.

上的linux 文档tmpfs没有详细说明是否执行日志。但是,tmpfs基于 中ramfs使用的相同文件系统initramfs,并且该文件系统没有日志。因此,(或多或少)假设它tmpfs也没有期刊是安全的。

在没有日志的文件系统shred上将执行文件的覆盖,从而难以使用分析工具进行恢复(几乎不可能从 RAM 转储中恢复)。由于一切都发生在内存页面中,并且tmpfs简单地指向内存页面的inode,因此使用shred要好得多,因为它将能够写入这些内存页面。


警告

以上内容在TailsKnoppix上肯定以这种方式工作它可能会在几乎所有 LiveCD 上的 Linux 发行版上以类似的方式工作,包括Kali Linux ,但有一个警告

这适用于文件!内存还将包含应用程序内存,请参阅Gilles对应用程序内存的回答。说真的,看看那个答案,它打开了一个重要的点。

此外,基于 Ubuntu Linux 的发行版(可能包括也可能不包括 Kali Linux*,因为它的前身 Backtrack 基于 Ubuntu)将在它启动的机器上挂载它找到的任何交换,这可能会留下更糟糕的攻击向量!设备本身的持久数据!

Kali Linux 的另一个警告是,它附带metasploit并引导postgres数据库以与metasploit. Postgres 有它自己的日志(它是基于文件而不是基于文件系统),您可能也希望对其进行粉碎(即粉碎 postgres 文件,而不仅仅是通过删除数据psql)。


* Kali 不是基于 Ubuntu,它是基于 Debian,但我不确定它是否从它被称为 Backtrack 并基于 Ubuntu 时就删除了所有配置脚本

使用“shred”,它将涉及的 inode 清零,因此 RAM 中不再有实际数据。这可以防止冷启动攻击以及在线 DMA 攻击。