在众多的计算机安全威胁之中,冷起动内存映像攻击(Cold Boot Attack)应该是不被大家所了解的。有些读者在看到这个标题时,可能不太相信还可以在冷起动过程中,从计算机内存中得到相关的机密数据,例如某些密码等。
因为在大家的印象中,普通计算机使用的内存,由于其掉电易失的工作机制,在关闭计算机电源后,内存中的信息就会被消除。那怎么还能从中得到机密信息呢?
可是,一些安全专家发现当计算机电源关闭后,内存(RAM)中的信息不会立即自动擦除,而是还能够保持许多秒。这样就可以利用内存的这个“新漏洞”,在计算机运行、休眠或挂起时,直接关机,然后通过冷启动来获取内存中的信息映像,从而得到在内存运行时保存在其中的密码信息。
如此一来,在冷启动内存映像攻击的威胁下,内存中的信息再也不会像以前所说的那样安全,而是变得非常危险。如果攻击者可以直接接触计算机,那么,使用这种攻击方法,就可以破解所有的及文件加密技术。
这是因为在当前的几大上,例如windows、甚至都将其加密键保存至RAM中。如果一个攻击者掌握了这种冷启动攻击,当你离开计算机屏幕时,只是锁定了屏幕,或者只是暂将笔记本置于挂起状态,那么,只要攻击者可以单独在这些计算机面前几分钟,他就有足够多的时间按下计算机的电源重新启动它,然后收集RAM中的内容,最终分析并得到其中的加密键。
一、冷启动内存映像攻击的具体方法
当攻击者接触计算机之后,他们需要使用下列方法来实施一次冷启动内存映像攻击:
1、首先要做的就是将内存中的信息做一个完全的映像。
这个工作,有点像用ghost将操作系统分区做映像一样,但是由于内存本身工作机制的原因,在为内存中信息做完整映像拷贝时,虽然更多的细心操作。例如,如果你以系统安装盘的方式启动到一个安全的救援模式,这样虽然也可以获得内存中的一些信息,但是这种安全模式仍然会清除内存中原来的许多信息,也就不可能得到真正重要的信息了。
要将内存中的信息做一个完全的映像,可以通过如下两种方法来完成:
(1)使用USB磁盘驱动器或U盘来启动,然后自动执行安装在USB启动器上的内存映像拷贝工具,就可以将内存中的信息完全转储至USB磁盘中。
然后,攻击者可以将此USB连接至其它的计算机,再用相关的工具将USB磁盘上的RAM文件转储至一个文件中。
(2)第二种方法就是通过PXE网络远程启动方式来执行内存映像拷贝工具。由于内存映像拷贝工具体积非常小,通过PXE网络远程执行完全能够在几十秒内将内存中的信息,完全转储至PXE服务器中。
但是,这种方式虽然不需要攻击者直接接触计算机,但是,所攻击的计算机网络必需支持PXE启动,以及已经配置好PXE服务器。从这两个条件来看,通过这种方式进行内存信息远程转储,比第一种方式还要难以实现。除非所攻击的网络已经具备这种条件。
2、当内存中的信息已经完全转储至一个映像文件中,接下来要做的就简单许多,只需要使用内存映像信息搜索工具,就可以从已经有的内存映像文件中找到想要的信息。当前的内存映像信息搜索工具还不是很多,大多也只能做一些简单的搜索工具,主要都是针对密码等信息。例如一个名为 bios_memimage的工具包中就包含两个这样的工具,aeskeyfind工具用来搜索 AES密码, rsakeyfind工具用来搜索RSA密码。
二、冷启动内存映像攻击工具下载和创建
要完成内存映像文件的分析任务需要特定的工具,在此之前生成内存信息的映像拷贝同样需要专用的工具。
现在内存信息映像工具很少,而且只能在相关发行版本下运行。如果你想试试本文所描述的攻击方法是否可以正常完成,那么,你就需要先去citp.princeton.edu/memory
/code下载最新版的bios_memimage原码压缩包。但是,如果你是通过EFI方式引导系统来获取内存映像的,那么就需要下载efi_netboot源码压缩包。然后,你就可以解压缩并应用这些源码压缩包。在本文中,雪源梅香使用的是 bios_memimage源码包。
在使用它们之前,可以查看bios_memimage源码包中的相关文档,来了解如何建立和应用这些源码。
要特别注意的是,这个工具支持所有32位或64位硬件环境。但是,32位版本技术的工具不能用于64位的环境,因为它不能查询所有64位环境的内存空间。因此,你需要根据你的硬件环境,下载正确的版本。
在创建内存映像工具时,例如在32位硬件环境下,可以先解压缩下载回来的bios_memimage源码压缩包,打开一个字符终端,进入bios_memimage目录,然后输入 make命令进行编译,编译完成后,通过make install安装即可 。如果要在64-bit环境下使用它,进入bios_memimage目录后,用make -f Makefile.64命令进行编译。
如果在编译的过程中,出现无法定义的 __stack_chk_fail错误参考信息,这是由于 .GCC's新的堆栈保护所致。可以通过编辑bios_memimage目录下的pxe/Makefile文件,将下面所示这行:
CFLAGS= -ffreestanding - -Wall -I../include -march=i386
修改为:
CFLAGS= -ffreestanding -Os -Wall -I../include -march=i386 -fno-stack-protector
就可以完成编译。
2本文导航>>
- 1.
- 2.冷启动内存映像攻击工具下载和创建
- 3.
- 4.
- 5.
- 6.