如何通过grub2 secure闯入任何Linux机器?


52

获得对计算机的物理访问权的人以任何方式扎根这些步骤的能力如何安全?

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

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro   quiet splash" 
    

    至:

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

    mount -o remount,rw /
    passwd user
    mount -o remount,ro / 
    sync
    
  4. 重新启动计算机,您就赢了。

我的问题是,如何能够通过grub2 secure闯入任何Linux机器?我不了解有关Linux的事实,谢谢您的回答。


51
谁说需要物理访问?当某人具有物理访问权限时-ALL-下注为-OFF-。机器的所有者在旁边时应始终访问其机器。否则,有可能无法恢复而将其砌成砖。
Rinzwind

7
您可能会抱怨:但是将实时DVD / USB插入系统怎么样?还是取出磁盘,将其放入另一台计算机并dd进行磁盘处理?和“ Linux”?适用于也使用grub的其他系统...另一方面,窗户...窗户破裂时...您可能只能格式化系统:P
Rinzwind

10
要获得完全安全,您需要此解决方案
Anwar

5
哦,没有同志!@Clutchy发现了我们的秘密。我们现在都必须服用氰化物胶囊。
paulzag

3
@paulzag明白了,我将触发服务器机房的自毁机制。荣耀到RMS!
卡兹·沃尔夫

Answers:


108

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

因为如果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手机有密码签名执法(下面讨论),这使得它非常困难的恶意软件通过合法的途径偷渡到您的手机上。

但是TPM / SmartCards / [在这里插入加密技术]呢?

好吧,现在您要将物理安全性与方程式结合起来,它仍然变得更加复杂。但是,这并不是真正的解决方案,因为TPM相对较弱,并且所有加密都不在芯片上进行。如果您的TPM(在某种程度上)足够强大,可以在芯片本身上进行加密(某些花哨的硬盘驱动器具有类似的功能),则密钥将永远不会被泄露,并且像冷启动攻击之类的事情就不可能发生。但是,密钥(或原始数据)可能仍存在于系统总线中,这意味着它们可以被截获。

即使这样,我的硬件键盘记录程序仍然可以获取您的密码,并且可以通过前面提到的Firefox利用程序轻松地将一些恶意软件加载到您的计算机上。我所需要的只是让您离开家/计算机大约一个小时。

现在,如果您随身携带TPM /智能卡/任何东西,并且所有加密实际上都在芯片上完成(这意味着您的密钥根本不存储在RAM中),那么实际上我几乎不可能进入全部,除非您(用户)滑倒并忘记了一些东西。也就是说,除非我找到某种方式从系统总线读取(未加密的)密钥。

但是,如果我在所有程序上都执行某种形式的密码/数字签名强制措施以确保其合法性,该怎么办?

这表现在各种智能手机的公司,这是一个非常处理安全的好办法。现在,您已经取消了我将某些代码注入您的计算机以执行恶意操作的能力,这是一个加号。实际上,您已经禁用了我保留远程持久访问计算机的功能,这是一个巨大的优势。

但是,这仍然不是一个完美的方法!数字签名强制执行不会停止硬件按键记录程序。它还需要完全没有错误,这意味着我无法找到一种利用我自己的证书将其加载到您计算机证书存储中的漏洞利用程序。此外,这意味着系统上的每个可执行文件都需要签名。除非您想手动进行所有操作,否则将很难找到在所有内容上均具有数字签名的Apt软件包等。同样,这会阻止未签名的可执行文件的合法使用,即恢复。如果您破坏了重要的东西,而又没有(签名)可执行文件来解决该怎么办?好吧,您的系统就在那里。

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

因此,让您远离我的计算机是不可能的吗?

实际上,是的,很抱歉。如果我有身体接触并有足够的动力,那么有可能进入系统。没有例外。

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

TL; DR:请不要让您不信任的人靠近计算机。通常就足够了。


或者只是加密您的主分区。
user13161 '16

5
@ user13161这仍然允许恶意实体/bin/bash用自己的邪恶脚本替换类似内容,该恶意脚本将使用未加密的主文件夹来处理不良事件。
卡兹·沃尔夫

GRUB允许您使用LUKS加密的启动分区,在这种情况下,无法绕过启动密码。参见wiki.archlinux.org/index.php/Dm-crypt/…
v7d8dpo4

@ v7d8dpo4:加密/boot实际上是无用的imo。它会添加启动密码,但是您/实际上仍然需要解密才能做任何有用的事情,因此,您只是增加了一些额外的开销,几乎没有收益。另外,如果 /boot受保护,我可以使用自己的Grub磁盘绕过加密启动。或者我可以像平常一样读取驱动器。
卡兹·沃尔夫

2
iPhone(我认为6以后)不仅具有完整的“磁盘”加密,而且还与密码/生物识别登录链接。因此,如果您愿意让计算机在没有干预的情况下拒绝启动,那么您也可以将其磁盘加密与硬件令牌/密码/ TPM模块绑定在一起。这只是很多工作。
pjc50

17

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

GRUB 2密码保护说明

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

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

  • 用户和密码应在/etc/grub.d/00_header或另一个GRUB 2脚本文件中标识。

  • 除非需要对所有菜单项进行通用保护,否则必须标识特定的项:

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

    • 无论使用哪种方法,只要执行update-grub,GRUB 2都可以自动将密码要求添加到配置文件(grub.cfg)中。

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

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

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

在这种情况下,默认情况下(!)可用性高于安全性。如果您不信任周围的人,请始终将机器与您同在。需要更高安全性的人往往会加密整个系统,从而强制要求密码。


坦白讲,物理访问可以轻松绕过那些密码。他们保护系统免受菜鸟的侵害,但不能保护具有某些基本技能(使用Google可能已经足够)和物理访问权限的攻击者。
字节指挥官

3

您的故意骇客从此开始:

  1. 当grub2菜单打开时,按'e'编辑Linux启动选项

但是您可以e按此处讨论的那样对选项进行密码保护:如何将GRUB密码保护添加到OS加载过程中,而不是在编辑启动选项时

您可以按照链接中所述采取额外的步骤来加密grub密码。实际上,在家中使用Linux / Ubuntu的人大约占总人口的3%(疯狂猜测),对于系统管理员来说,保护他们免受e生产系统功能的影响是一个好主意。我想如果在工作中使用Ubuntu,那么30%至40%的人也会在家中使用它,也许其中有10%将学习如何e在其家庭系统上进行操作。

由于您的问题,他们才了解更多。但是,通过上面的链接,系统管理员在任务列表中还有另一项任务可以保护生产环境。


1
坦白讲,物理访问可以轻松绕过那些密码。他们保护系统免受菜鸟的侵害,但不能保护具有某些基本技能(使用Google可能已经足够)和物理访问权限的攻击者。
字节指挥官

@ByteCommander都是关于物理访问的。可以使用管理员密码设置BIOS,以便永远无法从USB或DVD引导。有人可以打开机箱,将主板上的两个插针短接,并将密码重置为空白(无需密码即可更改BIOS引导顺序)。
WinEunuuchs2Unix

0

为了使grub安全,您需要保护对其的访问。只需使用硬盘密码即可完成此操作,我在这里谈论的是磁盘安全性,它存储在磁盘本身的固件中。无法读取或写入磁盘。因此,没有密码不仅无法访问grub,您的数据也是如此。

由于密码存储在磁盘本身上,因此将密码移至另一个系统将对黑客没有帮助。

周围有一些软件可以删除某些制造商的磁盘上的密码,但也可以有效擦除磁盘。因此,您的数据仍然安全。


最新评论,但我想指出,这有时可以用简单的方法来克服。可能会有一些(记录在案的)制造商命令来清除HDD密码而不触发格式。同样,我也许可以“借用”硬盘驱动器盘片并将它们放入我自己的控制器中-密码(通常)存储在控制器的NVRAM中,而不是盘片本身中。
卡兹·沃尔夫

@Kaz,您的发言绝对正确,但是必须强调“偶尔”可以用简单的方式打败“偶尔”一词。与您所说的相反,随着硬盘技术的不断发展,几乎所有制造商现在都将其固件和密码存储在磁盘上,因此更换控制器卡将无济于事。周围有可以解锁驱动器而不清除数据的软件,但是它仅适用于旧驱动器。
Scooby-2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.