如何通过 grub2 安全地闯入任何 Linux 机器?

Clu*_*chy 54 permissions security boot

获得对您计算机的物理访问权限的人以任何方式通过这些步骤获得 root 权限的能力如何?

  1. 当 grub2 菜单打开时,按下 e 以编辑 Linux 启动选项
  2. 改变:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro   quiet splash" 
    
    Run Code Online (Sandbox Code Playgroud)

    到:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro init=/bin/bash"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在您拥有 root 访问权限,只需执行以下操作:

    mount -o remount,rw /
    passwd user
    mount -o remount,ro / 
    sync
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重启电脑,你就赢了。

我的问题是,如何能够通过 grub2 安全地闯入任何 Linux 机器?我不明白有关 Linux 的事实,谢谢您的回答。

Kaz*_*lfe 109

获得对您计算机的物理访问权限的人以任何方式获得 root [使用 Grub/Bash] 的能力如何安全?

因为如果 Linux 决定开始这样做,黑客只会利用其他安全漏洞。安全的第一条规则是,如果我可以物理访问您的系统,游戏就结束了。我赢了。

另外,想象一下你的 X 服务器坏了,你没有 GUI 了。你需要启动到恢复控制台来修复问题,但你不能,因为那是不安全的。在这种情况下,您将拥有一个完全损坏的系统,但是嘿,至少它是“安全的”!

但是卡兹,这怎么可能?我在我的 Grub 上设置了密码,这样你就不能将我的更改init为 Bash!

哦,你做到了,是吗?有趣,因为这看起来像你的相册。GRUB 根本没有任何固有的安全因素。它只是一个引导加载程序,而不是某些安全引导和身份验证链中的一个步骤。实际上,您设置的“密码”非常容易绕过。

那,什么系统管理员带启动驱动器以防万一?

但是怎么样?!你不知道我的密码(这完全不是P@ssw0rd顺便说一句)

是的,但这并不能阻止我打开您的计算机并拔出您的硬盘。从那里,只需几个简单的步骤即可将您的驱动器安装到我的计算机上,让我可以访问您的所有系统。这也有绕过 BIOS 密码的好处。那,或者我可以重置你的CMOS。两者任一。

所以……我怎么不让你访问我的数据?

简单的。让你的电脑远离我。如果我可以触摸它、使用键盘、插入我自己的闪存驱动器或将其拆开,我就可以获胜。

那么,我可以将我的计算机放在数据中心或其他地方吗?这些很安全,对吧?

是的,他们是。但是,你忘记了人类也是可以被黑客入侵的,如果有足够的时间和准备,我可能会进入那个数据中心并从你的计算机上窃取所有那些甜蜜的、甜蜜的数据。但我离题了。我们正在处理真正的解决方案。

好的,所以你叫我虚张声势。我不能把它放在数据中心。我可以只加密我的主文件夹吗?

你当然可以!是你的电脑!它会帮助阻止我吗?丝毫没有。我可以替换一些重要的东西,比如/usr/bin/firefox用我自己的恶意程序。下次您打开 Firefox 时,您所有的秘密数据都会被转移到某个秘密服务器上,而您甚至都不知道。或者,如果我经常访问您的机器,我可以将您的主文件夹设置为复制到/usr/share/nonsecrets/home/或任何类似(非加密)位置。

好的,全盘加密怎么样?

这……其实还不错。然而,它还不是完美的!我总是可以使用我可信赖的压缩空气罐进行冷启动攻击。或者,我可以将硬件键盘记录器插入您的计算机。一个显然比另一个容易,但方式并不重要。

绝大多数情况下,这是一个很好的停靠点。也许将它与 TPM(在下面讨论)配对,你就是金子。除非你激怒了一个三个字母的机构或一个非常积极的黑客,否则没有人会经历这个阶段所需的努力。

当然,我仍然可以通过向您提供 PPA 或类似内容来让您安装一些恶意软件/后门,但这涉及到用户信任的非常模糊的领域。

那么…… iPhone 怎么这么安全?即使有物理访问权限,您也无能为力。

嗯,是和不是。我的意思是,如果我有足够的动力,我可以读取闪存芯片并获得我需要的一切。但是,iPhone 是根本不同的,因为它们从启动过程的一开始就是一个完全锁定的平台。但是,这会导致您牺牲可用性和从灾难性故障中恢复的能力。GRUB(除非经过特别设计)并不是安全系统中的一个链。事实上,大多数 Linux 系统的安全链都是在引导后启动的,所以在 GRUB 完成它的工作之后。

iPhone手机additioanlly具有加密签名执法(下面讨论),这使得它非常困难的恶意软件偷偷到您的手机上。

但是 TPM/智能卡/[在此处插入加密技术] 呢?

好吧,现在您将物理安全性与等式结合起来,它变得更加复杂。但是,这并不是真正的解决方案,因为 TPM 相对较弱,并且所有加密都不是在芯片上进行的。如果您的 TPM(不知何故)足够强大,它在芯片本身上进行加密(一些非常花哨的硬盘驱动器有这样的东西),那么密钥将永远不会被泄露,并且像冷启动攻击这样的事情是不可能的。但是,密钥(或原始数据)可能仍然存在于系统总线中,这意味着它们可以被拦截。

即便如此,我的硬件键盘记录器仍然可以获取您的密码,并且我可以轻松地将一些恶意软件加载到您的计算机上,就像我之前提到的 Firefox 漏洞一样。我所需要的只是让你离开你的房子/电脑大约一个小时。

现在,如果你带着你的 TPM/智能卡/任何东西,并且所有的加密实际上都是在芯片上完成的(意味着你的密钥根本没有存储在 RAM 中),那么我几乎不可能进入。当然,这假设没有任何已知的安全漏洞我可以利用,并且您遵循良好的安全实践。

但是,如果我对我的所有程序实施某种形式的加密/数字签名以确保它们是合法的,该怎么办?

正如各种智能手机公司所证明的那样,这是处理安全问题的一种非常好的方式。你现在使我无法向你的机器注入一些代码来做邪恶的事情。实际上,您已经禁用了我保持远程永久访问您机器的能力。

然而,这仍然不是一个完美的方法!一方面,数字签名实施不会停止硬件键盘记录器。它还需要完全没有错误,这意味着我无法找到允许我将自己的证书加载到您机器的证书存储中的漏洞。此外,这意味着您系统上的每个可执行文件都需要签名。除非您想手动完成所有这些操作,否则很难找到对所有内容都有数字签名的 Apt 包等。同样,这会阻止未签名的可执行文件的合法使用,即恢复。如果你破坏了一些重要的东西,而你没有(签名的)可执行文件来修复它怎么办?

无论哪种方式,在 Linux 上执行此操作努力基本上都已被放弃并且不再适用于新内核,因此您需要创建自己的内核。

所以,让你离开我的电脑是不可能的?

实际上,是的,抱歉。如果我有身体接触和足够的动力,总是有可能进入一个系统。没有例外。

然而,实际上,大多数邪恶的人不会仅仅为了一些猫的照片而尝试走这么远。通常,仅全盘加密(或者甚至只是运行 Linux!)就足以阻止大多数脚本小子获得两秒钟的成名。

TL;DR:只是不要让您不信任的人靠近您的计算机并使用 LUKS。这通常就足够了。

  • @user13161 这仍然允许恶意实体用他们自己的邪恶脚本替换诸如`/bin/bash`之类的东西,这将使用未加密的主文件夹做坏事。 (5认同)
  • iPhone(我认为 6 起)不仅具有完整的“磁盘”加密,而且还与密码/生物识别登录相关联。因此,如果您愿意让您的计算机在没有干预的情况下拒绝启动,您也可以将其磁盘加密绑定到硬件令牌/密码/TPM 模块。这只是相当多的工作。 (2认同)
  • 我总是将 /boot 分区安装到 USB 密钥上,并随身携带该密钥,并配置全盘加密。如果我在关机时擦除 RAM,我的安全性如何? (2认同)

Rin*_*ind 17

如果您想将其绑定,请使用密码。从链接:

GRUB 2 密码保护注意事项

Grub 2 可以在以下方面建立密码要求:

  • 所有菜单项
  • 特定菜单项
  • 对于特定用户:例如,用户“Jane”可以访问 Ubuntu,但不能访问 Windows 恢复模式,该模式只能由超级用户“John”访问。
  • 管理员必须通过编辑 GRUB 2 系统文件手动启用密码保护。

  • 用户和密码应在/etc/grub.d/00_headerGRUB 2 脚本文件或其他 GRUB 2 脚本文件中标识。

  • 除非需要对所有菜单条目进行普遍保护,否则必须确定特定条目:

    • 手动编辑 Grub 2/etc/grub.d/脚本,例如10_linux30_os-prober
    • 通过编辑用户创建的自定义配置文件手动进行。

    • 上述任何一种方法都使 GRUB 2 能够在执行 update-grub 时自动将密码要求添加到配置文件 (grub.cfg) 中。

    • 通过编辑手动/boot/grub/grub.cfgupdate-grub运行时将删除对此文件的编辑,并且密码保护将丢失。

  • 如果启用了任何形式的 GRUB 2 密码保护,则需要超级用户的名称和密码才能访问 GRUB 2 命令行和菜单编辑模式。

  • 用户名和/或密码不必与 Ubuntu 登录名/密码相同。
  • 除非使用 GRUB 2 的密码加密功能,否则密码将以纯文本形式存储在可读文件中。有关使用此功能的指导,请参阅密码加密部分。

默认情况下(!)在这种情况下可用性胜过安全性。如果您不信任周围的人,请始终随身携带机器。需要更高安全性的人倾向于加密他们的整个系统,从而强制需要密码。