加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

专家阐述:冷启动内存映像攻击方法与对策

发布时间:2021-09-09 17:12:15 所属栏目:安全 来源:互联网
导读:在众多的计算机安全威胁之中,冷起动内存映像攻击(Cold Boot Attack)应该是不被大家所了解的。有些读者在看到这个标题时,可能不太相信还可以在冷起动过程中,从计算机内存中得到相关的机密数据,例如某些密码等。 因为在大家的印象中,普通计算机使用的内存
  在众多的计算机安全威胁之中,冷起动内存映像攻击(Cold Boot Attack)应该是不被大家所了解的。有些读者在看到这个标题时,可能不太相信还可以在冷起动过程中,从计算机内存中得到相关的机密数据,例如某些密码等。
 
  因为在大家的印象中,普通计算机使用的内存,由于其掉电易失的工作机制,在关闭计算机电源后,内存中的信息就会被消除。那怎么还能从中得到机密信息呢?
 
  可是,一些安全专家发现当计算机电源关闭后,内存(RAM)中的信息不会立即自动擦除,而是还能够保持许多秒。这样就可以利用内存的这个“新漏洞”,在计算机运行、休眠或挂起时,直接关机,然后通过冷启动来获取内存中的信息映像,从而得到在内存运行时保存在其中的密码信息。
 
  如此一来,在冷启动内存映像攻击的威胁下,内存中的信息再也不会像以前所说的那样安全,而是变得非常危险。如果攻击者可以直接接触计算机,那么,使用这种攻击方法,就可以破解所有的磁盘及文件加密技术。
 
  这是因为在当前的几大操作系统上,例如windows、mac甚至linux都将其加密键保存至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密码。
 
  二、冷启动内存映像攻击工具下载和创建
 
  要完成内存映像文件的分析任务需要特定的工具,在此之前生成内存信息的映像拷贝同样需要专用的工具。
 
  现在内存信息映像工具很少,而且只能在linux相关发行版本下运行。如果你想试试本文所描述的攻击方法是否可以正常完成,那么,你就需要先去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 -Os -Wall -I../include -march=i386
 
  修改为:
 
  CFLAGS= -ffreestanding -Os -Wall -I../include -march=i386 -fno-stack-protector
 
  就可以完成编译。
 
  三、基于USB磁盘启动的冷启动内存映像攻击
 
  在冷启动内存映像攻击中,使用USB和PXE工具是不相同的。使用USB工具,需要一个USB存储设备,必需有足够的空间可以保存想要转储至USB存储设备上的RAM映像文件。
 
  另外,要想USB磁盘在引导后可以自动执行内存映像工具,就必需将bios_memimage工具包中的一个名为scraper.bin的引导映像文件,写入USB磁盘的目录下。
 
  这可以通过下列方式来完成:
 
  将USB磁盘连接至使用Linux系统的PC上,了解其在系统下的显示方式,例如在我的计算机上为/dev/sdb,然后在一个终端下,用dd工具来写入上述这个引导映像:
 
  sudo dd if=scraper.bin of=/dev/sdb
 
  要注意的是完成引导映像文件的写入需要root权限。
 
  当上述命令执行完成后,一个可以引导的、能够自动执行内存映像工具的USB磁盘就准备好了。
 
  那么,按下来要做的,就是使用这个USB磁盘内存映像工具,去需要的计算机上获取想要的内存映像:
 
  连接USB内存映像工具磁盘至正在运行的PC,按机箱上的重启按钮重新启动PC,然后,进入BIOS设置系统从USB磁盘引导。一旦从USB磁盘引导成功,在USB磁盘中的内存映像工具就会立即启动,并自动从内存中转储内容至USB磁盘中。 当其完成,它就会自动关闭计算机或重新启动计算。
 
  此时,就可以将USB磁盘从该计算机上取下,然后拿至另一台计算机上查看。另外,还可以使用此USB磁盘目录下的usbdump转储工具,将制作好的内存映像文件从USB磁盘转储至本地驱动器。例如要将拷贝下来的内存映像转储为一个名为memimage.img的文件,用root权限进入一个终端,进入USB磁盘所在目录,输入下例命令就可完成这个工作:
 
  sudo ./usbdump /dev/sdb > memimage.img
 
  四、基于PXE方式的冷启动内存映像攻击
 
  至于通过PXE方式获取目标计算机的内存信息映像,在已经配置好PXE服务器前提下,还要求目标计算机的网卡支持PXE方式远程启动。
 
  另外,还必需在PXE服务器上运行TFTP服务,并将下载回来的PXE内存映像压缩包中PXE目录下的二进制文件,复制到PXE服务器的TFTP目录,并修改其中的pxelinux配置,使它指向该文件。
 
  然后,需要一个人去关闭目标计算机的电源,并以最快的速度在控制计算机通过PXE方式远程启动目标计算机。当目标计算机获取一个DHCP地址并从网络启动时,就会显示一个状态消息。
 
  此时,由于PXE方式不同于USB磁盘方式,内存映像工具不会自动执行,就需要在pxedump目录下执行如下的命令:
 
  ./pxedump 目录主机的IP地址 > memimage.img
 
  从上面可以看出,使用基于PXE方式去进行内存映像攻击是很难一个人去实现,也就不太可能被攻击者经常使用了。因此,最需要我们关注的是基于USB磁盘方式的内存映像攻击。
 
  五、分析内存映像文件
 
  一旦从目标系统上得到了内存映像文件,就需要从中找到重要的信息,例如已经保存在内存中的密码。在本文的前部分,雪源梅香提到的bios_memimage包中,已经包含了2个用来扫描内存映像文件的工具:aeskeyfind和rsakeyfind,下面说说如何安装和使用它们。
 
  这两个工具的安装非常简单,进入一个终端,解压后运行make命令进行编译,再用make install进行安装。
 
  同样,这两个工具的使用也非常简单,在该文件所在目录下的 README文件中已经有详细的使用说明。如果只需要进行基本的搜索,只需要执行 aeskeyfind或rsakeyfind的二进制文件,并在其后指定内存映像文件所在目录,如果找到匹配的密码就会显示出来。
 
  不过,目前还没有其它工具可以利用内存映像文件中的其它信息,但是,还是可以使用strings和grep命令去搜索内存映像中的各种字符串,如:
 
  strings memimage.img | grep password
 
  六、应对之策
 
  当攻击者可以直接接触目标计算机时,使用冷启动方式的内存映像攻击是非常有效的,尤其是针对笔记本电脑时。
 
  但是,这种攻击方式仍然有许多限制的。首先,被攻击的目标计算机在攻击前必需是运行的,或处于休眠或挂起状态。另外,一些计算机使用ECC内存,它们在断电后会清除内存中的信息的速度非常快,根本没有机会执行相对来说非常短暂的内存映像工作。
 
  因此,要防范冷启动方式的内存映像攻击,在重要的服务器上使用ECC内存,从物理上防止人们接触到计算机,禁用计算机网卡的PXE远程启动功能,就可以达到非常好的效果。
 
  但是,这些防范方法很难杜绝来自企业内部的攻击。例如一个拥有接触目标计算机权限的员工,就很容易使用USB内存映像工具,从锁定了屏幕的服务器的内存中获取重要的信息,然后将USB磁盘带出企业。这就说明在使用防范内存映像攻击方法的同时,还必需使用其它的安全防范策略,才有可能将这种安全威胁减小至最小的水平。
 
  不过,内存映像工具并不只是可以用于进行攻击,它还可以作为一种积极的工具,帮助我们对受到攻击的计算机进行取证。或者当你不记得屏幕保护程序的锁定密码,以及忘记休眠后的系统登录密码时,也可以使用内存映像工具来得到正确的密码。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读