#arch-linux #forensics #compare #packages #read #source #installed

app archlinux-userland-fs-cmp

用于读取挂载的Arch Linux驱动器上所有已安装软件包并比较文件系统与可信源的工具

1 个不稳定版本

0.1.0 2024年1月31日

#1595命令行工具

GPL-3.0-or-later

50KB
895 代码行

archlinux-userland-fs-cmp

用于读取挂载的Arch Linux驱动器上所有已安装软件包并比较文件系统与可信源的取证工具。这利用了https://archive.archlinux.org,所有非这些软件包提供的文件都将被标记为调查对象。

asciicast

功能

  • 并非整个软件包都从存档中检索,一旦收到 .MTREE,下载就会终止。这目前依赖于https进行安全(这对于它的用途来说是可接受的),但为了增加安全性,可以指向一个预先计算/验证的ipfs文件夹。
  • 使用线程池对挂载的文件系统进行哈希处理。
  • 扫描需要 CAP_DAC_READ_SEARCH,这通常需要root权限,但在访问挂载的文件系统之前,所有不必要的内核能力(如 CAP_SYS_ADMINCAP_SETUIDCAP_DAC_OVERRIDE、...)都被移除,并且进程随后被阻止重新获取它们。
  • 挂载的文件系统被视为不可信,可能包含恶意更改,解析器是用内存安全的语言编写的,并且文件只被读取,但永远不会被执行。
  • 调查的实时介质可以是任何Linux,如Debian或NixOS。

使用方法

archlinux-userland-fs-cmp /mnt -x /home -o ~/report.txt

这期望Arch Linux安装已挂载在 /mnt 上,并且将排除 /mnt/home 从扫描中。

开发测试

对于开发,您可能会发现这个命令很有用

cargo watch -- cargo run --release -- / -x /home -x /dev -x /proc -x /sys -x /run -x /var/cache -x /var/tmp # -x /var/lib/archbuild -x /nix -x /var/lib/repro ...

为了扫描更小的系统并生成更短的输出,请尝试

podman run -it --rm -v "$PWD/target/x86_64-unknown-linux-musl/release/archlinux-userland-fs-cmp:/cmp:ro" archlinux /cmp / -x /sys -x /proc -x /dev -x /var/lib/pacman/local -x /etc/ca-certificates/extracted

为什么不使用paccheck?

pacman可以使用以下方式执行自己的完整性检查

paccheck --sha256sum --quiet

然而,Arch Linux维基百科上写道

注意:在怀疑有恶意更改的情况下,**不应**直接使用此功能!在这种情况下,建议采取安全预防措施,如使用实时介质和独立的哈希总和源。

archlinux-userland-fs-cmp相应地实现了这一点(当然,仍然建议使用实时介质)。

依赖关系

~15–30MB
~493K SLoC