游乐游手机版
首页/网络安全/文章详情

Linux系统全盘加密启动攻击分析

时间:2026-07-22 06:23
Evil Maid攻击:针对LUKS全盘加密Linux系统的initrd注入技术分析 目前市面上缺乏现成的工具能够直接发起此类攻击,因此研究人员自行开发了一款名为EvilAbigail的攻击工具。Evil maid攻击理论上可适用于任何操作系统,但本次研究的目标是采用LUKS全盘加密的Linux系统

Evil Maid攻击:针对LUKS全盘加密Linux系统的initrd注入技术分析

目前市面上缺乏现成的工具能够直接发起此类攻击,因此研究人员自行开发了一款名为EvilAbigail的攻击工具。Evil maid攻击理论上可适用于任何操作系统,但本次研究的目标是采用LUKS全盘加密的Linux系统。

当Linux系统启用全盘加密后,会保留一个未加密的小分区——该分区专门用于解密并引导加密磁盘。它通常挂载在/boot目录下,包含内核和初始RAM磁盘(initrd)。虽然直接攻击内核或bootloader也是可行的,但研究人员最终选择了针对initrd进行攻击。

initrd本质上是一个临时文件系统,在系统启动阶段由Linux内核调用,主要负责在真正的root文件系统挂载之前完成准备工作。它仅包含解密和挂载root文件系统所需的最小目录和可执行程序。当initrd完成使命后,它会执行pivot_root,卸载自身的临时根文件系统,并挂载真正的根文件系统。

通常情况下,initrd是通过gzip压缩的cpio镜像。本次测试使用的Debian系操作系统正是如此,但RedHat系(如Fedora、RHEL、CentOS)现已改用dracut,包含的是未压缩的cpio镜像。基于Debian的initrd采用ash shell脚本执行启动,而dracut则依赖systemd及其关联的配置方式。

为了实施攻击,研究人员选用了一种基于LD_PRELOAD的bootkit——当然,注入恶意内核或可执行文件也是可行的选择。使用LD_PRELOAD的主要目标,是对刚刚解密完成的root文件系统中的第一个可执行文件注入一个共享对象。该文件通常是/sbin/init,其PID一般为1。最简单的攻击方式是修改init脚本,导出这个环境变量,这样在执行pivot_root时环境变量已经设置完毕。由于文件系统切换时,还需在合适时机(解密之后)将共享对象复制到新系统中。只需在initrd的init脚本中插入两行代码,置于文件系统切换之前:

cp /hack.so /${rootmnt}/hack.so
export LD_PRELOAD=/hack.so

之所以能成功,是因为真正的root文件系统是在临时root文件系统下解密挂载的,该过程发生在pivot之前,而rootmnt变量正好填充了挂载点位置。不过,在此之前需要将目标文件系统重新挂载为读写模式(默认是只读的)。在此示例中,研究人员修改了init脚本中解析内核命令行的部分,使无论传入什么参数,root文件系统都会以读写方式挂载。另一种方法是在注入的命令中添加mount -o remount,rw /${rootmnt}

但基于dracut的initrd中不存在这样的注入点,因为init的可执行文件是二进制文件而非shell脚本。这带来了三个问题,只有全部解决才能成功注入到pid 1进程中。

三个关键问题及解决方案

第一个问题:如何将二进制文件复制到解密的root文件系统中。这反而是最容易解决的。可以在负责pivot文件系统的systemd服务文件中添加两个ExecPre指令——基本相当于前面脚本插入的方式。第一个命令以读写方式重新挂载root文件系统,第二个命令执行复制操作。

第二个问题:关于LD_PRELOAD的注入。由于无法直接通过shell脚本修改环境变量传递给进程(进程由内核直接调用),加载共享对象变得棘手。最简单的办法是:先将init二进制文件移动到别的位置,在原位置放置自己的shell脚本,最后执行原来的二进制文件。只需两行代码:第一行导出LD_PRELOAD,第二行执行原来的systemd二进制文件。注意,这样注入的是initrd中的pid 1进程,而非最终root文件系统的pid 1。

第三个问题:在调用switch-root命令之前,systemd会使用clearenv()函数清除所有环境变量。该函数属于标准库的一部分,因此可以重写它,让被注入的进程调用自定义的版本。自定义的clearenv()会先清除所有环境变量,然后将LD_PRELOAD变量重新注入到环境中。由于clearenv()仅在进程启动时被调用一次,此修改不会带来任何副作用。

解决这三个问题后,共享对象就会被复制到加密的root文件系统中,LD_PRELOAD也被成功注入到目标文件系统的pid 1进程中。接下来即可获取用于解密的用户密码。

对于Debian系的initrd,可执行文件会要求用户输入密码,然后解密并挂载root文件系统。研究人员可以将脚本注入到pipeline进程中,从而截获密码。

至于systemd,它通过Unix domain sockets使用更复杂的进程间通信。研究人员选择攻击文件系统的挂载过程,而不是直接攻击该进程。这里再次利用库函数——它在动态加载库中,从systemd里调用,因此可以hook这个函数。解密硬盘的函数名为crypt_activate_by_passphrase,它将密码作为char数组传入。通过hook该函数,就能获取密码。需要包裹原函数,使用dlsym打开真正的函数并调用它,但在调用之前先将密码保存下来。

为了“保存”密码,研究人员简单地将密码追加到之后要复制到root文件系统的共享对象末尾。之所以选择这种方法,是因为已经确认该文件存在且会被复制过去,同时能减少接触磁盘文件的数量。获取密码时,只需读取自己文件末尾(通过LD_PRELOAD变量定位),然后将其设置为反弹shell中PASSWORD环境变量的值。这样,以meterpreter为例,通过getenv PASSWORD命令就能拿到用于解密磁盘的密码。由于所有目标主机都默认安装了Python,因此使用了Python meterpreter反弹shell。

防护解决方案

应对此类攻击有不少方法,但需要明确一点:如果攻击者能够物理接触计算机,并且有足够时间重刷BIOS/UEFI,那么基本上无法完全防御。

第一种方法:将bootloader、内核和initrd存放在外置U盘上,从U盘启动以替代/boot分区。这对用户来说较为麻烦——离开笔记本时需记得拔掉U盘,如果未卸载还需安全卸载/boot分区。更新时也需插上U盘才能更新initrd或内核。

第二种方案:彻底关闭从外置媒体启动系统的功能。这样能阻止自动化攻击,但在某些情况下(例如包含shell的Debian initrd),仍然可以从initrd手动挂载和修改initrd。这可以通过自动键盘式设备完成,从而绕过无法从外置媒体启动的限制。

另外,还可以开启BIOS启动密码——没有密码的人无法启动计算机。

不过,如果攻击者有足够时间将硬盘拆下,用他们自己的笔记本启动硬盘,后两种方案便不再有效。

最后,最安全的方案是将SecureBoot扩展到initrd。SecureBoot可以验证bootloader和内核,如果能够验证经过签名的initrd,要在不留下痕迹的情况下修改/boot分区将非常困难。但如果攻击者能够刷写BIOS/UEFI关闭SecureBoot,这套方案也就失效了。

总结一句:防止这类攻击最有效的方法,就是确保你的设备始终处于可控范围内。PoC攻击能在2分钟内攻陷所有目标主机,而在现实世界中,攻击者可以制作针对特定目标的payload,几秒内即可完成攻击。

来源:https://www.jb51.net/hack/414385.html
上一篇企业数据防泄密与电脑文件加密软件排名 下一篇量子计算机如何轻松破解加密算法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析
网络安全 · 2026-07-25

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行

MS07-002 Excel畸形调色板记录拒绝服务漏洞PoC
网络安全 · 2026-07-25

MS07-002 Excel畸形调色板记录拒绝服务漏洞PoC

MS07-002漏洞详解:Excel调色板记录(Palette Record)堆溢出引发拒绝服务(POC) 首先给出几个核心结论:该漏洞的根本原因是Excel在解析Palette Record(调色板记录)时存在边界检查缺陷,导致堆溢出。然而,其利用条件极为苛刻,远非一个可靠稳定的漏洞——攻击者能够

企业网络安全建设完整方案与最佳实践指南
网络安全 · 2026-07-25

企业网络安全建设完整方案与最佳实践指南

网络安全已从IT部门职责上升为企业生存与国家安全的底线,数据泄密多源于U盘等日常操作。提升全员安全意识是首要防线,等保定级流程包括确定对象、初步定级、专家评审、主管部门核准及备案审核,形成可落地的防护标准。

Adobe Acrobat Reader临时文件创建漏洞
网络安全 · 2026-07-25

Adobe Acrobat Reader临时文件创建漏洞

Acrobat Reader 作为经典 PDF 阅读器,长期占据办公与日常使用的主流地位。然而,即便是成熟产品也可能出现安全疏漏——本次受影响的是 8 1 2 版本。 具体而言,漏洞存在于 acroread 脚本处理 installCertificate 选项时,对临时文件的不安全处理方式。拥有本地

微软Windows DCE-RPC服务控制管理器中的ChangeServiceConfig2A函数内存破坏漏洞
网络安全 · 2026-07-25

微软Windows DCE-RPC服务控制管理器中的ChangeServiceConfig2A函数内存破坏漏洞

MS Windows DCE-RPC svcctl ChangeServiceConfig2A() 0day 内存破坏漏洞 PoC 分析与利用 本文提供了一份针对 MS Windows DCE-RPC 服务控制管理器(svcctl)中 ChangeServiceConfig2A() 函数的内存破坏