渗透测试中的冷却启动攻击和其他取证技术

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 这是一个星期四的晚上,快乐时光即将开始。你会尽快走出办公室。你整天都忙于准备一份报告,第二天早上还需继续,因此你将电脑锁屏。这足够安全,是吗?因为你使用了高强度密码,并全盘加密,Ophcrack或者可引导的linux发行版例如kali不起作用。你自认为安全了,其实你错了。为了得到重要材料,攻击者越来越无所不用其极,这包括使用取证领域的最新技术。

是一个星期四的晚上,快乐时光即将开始。你会尽快走出办公室。你整天都忙于准备一份报告,第二天早上还需继续,因此你将电脑锁屏。这足够安全,是吗?因为你使用了高强度密码,并全盘加密,Ophcrack或者可引导的linux发行版例如kali不起作用。你自认为安全了,其实你错了。为了得到重要材料,攻击者越来越无所不用其极,这包括使用取证领域的最新技术。


计算机中存在一个单独的区块:活动内存,任何一个攻击者都愿意把手伸到这个存储有敏感信息完全未加密的区块。系统为了方便调用,在内存中存储了多种有价值信息;全盘加密机制也必须在内存的某个地方存储密钥。同样,Wi-fi密钥也是如此存储的。Windows在内存中存有注册表键值,系统和SAM hive。许多剪贴板内容和应用程序密码也在存储于内存中。即问题在于,内存存储了系统在某时刻需要的大量有价值信息。攻击者要获得它,需要使用一些同样的取证技术。本文有助于向渗透测试工具包中增加这些技术。

image.png

设置环境

信息转储可以很容易的构建系统全貌。近年来,内存捕获价值已经得到取证专家的高度重视,但却并未获得渗透测试人员的足够重视。这有众多原因。取证调查人员使用专业软件捕获内存,同时记录进设备中。他们使用这些捕获信息,寻找恶意软件或隐藏进程。渗透测试人员将会对哈希值、文件、运行进程更感兴趣。如果已经拥有系统的访问权限,他们很大可能不再需要内存捕获来得到这些信息。


但是,在一些情境下,内存捕获对渗透测试人员作用极大。设想如下场景:在一个内部行动中,测试人员获得了接触机器的权限。客户满信心认为测试人员不可能利用这些机器获得对系统的访问。这些机器使用了全盘加密,拥有阻止从Ophcrack和下载hash的功能。运行中的机器全部处于锁定状态。客户不知道的是,测试人员拥有丰富的技术经验,能够抓取运行系统内存中的内容。需要强调的是有两种技术可以用于这样的情景:冷启动攻击和火线接口攻击。


冷启动攻击

2008年年初,普林斯顿大学电子前沿基金会和温瑞尔系统公司的研究人员联合发表了一篇题为《鲜为人知的秘密:对密钥的冷启动攻击》的文章,该文详解了从运行系统获取内存信息的一种新型攻击方式。该类攻击基于数据遗留。人们的普遍看法是机器一旦断电,内存中的数据就会立刻丢失;即按开电源开关,所有数据在刹那间消失。


然而,研究人员指出真相并非如此。事实上,数据从内存中丢失需要一定的时间。断开一台机器的电源一到两秒,大部分数据会完好无损。该效果可通过冷却内存延长。研究人员借助一种老式社交游戏,倒置一灌压缩空气,做了测试。冷却内存确实可以使数据保持很多秒,甚至好几分钟。这促使研究人员开发一系列工具,用来从即将关闭电源的机器内存中提取信息,然后再次启动系统。


使用这种方法捕获内存,存在小错误的几率会相对较高,这就是它被取证组织大量摒弃的原因。但是,渗透测试人员并不需要内存的法律上的取证镜像。如果密钥或SAM数据库完好无损,即使内存有2%的破坏也是可以接受的。即使有点难,这种方法对内部渗透测试人员来说,也是一个合适的攻击向量。


The Lest We Remember团队创造了大量用于攻击的工具,可以在普林斯顿网站https://citp.princeton.edu/research/memory/code/ 下载到。主要工具是一个USB/PXE镜像工具,可以下载到源码。研究团队制作了许多makefiles文件使编译更容易,他们也在源码中打包了优秀的文档。32位的提取器应该在32位虚拟机或32位物理机器上编译,64位的提取器同样需要在64位虚拟机或物理机器上编译。需要为目标机器使用合适的提取器,如果32位提取器在64位机器上使用,它将不能抓取全部的内存空间,因为32位提取器不能完全访问到64位的内存地址空间。


Makefile编译的结果是一个命名为scraper.bin的文件,其实是一个可以拷贝到USB设备的可引导启动的镜像工具。该USB同时需要用于存储内存镜像,建议使用大存储量的USB设备;因为当前主流系统使用4G到8G的内存,所以建议使用至少16GB容量的USB设备。以root用户权限,使用dd工具把scraper文件拷贝到USB设备,命令中sdb是硬盘驱动器的挂载点:

sudo dd if=scraper.bin of=/dev/sdb

这个时候,为目标系统准备好USB设备。理想情况下,渗透测试人员准备好一个32位的8G和一个64位的16G可以在内部环境使用的USB设备,同时备好一罐压缩空气。目标机器必须是一个运行中,且锁定的系统,有无用户登录无关紧要。同时,目标必须被全盘加密,否则启动Kali或Ophcrack,只需少量工作,就可以获得出色效果。

一旦合适的目标被定位后,渗透测试人员(从客户处获得了适当的授权)应该打开机箱,露出内存。同时,他们需要插入USB设备。一切准备就绪后,渗透测试人员可以倒置灌装压缩空气并喷射覆盖,以冷却内存。由于这会导致在芯片上成霜,小心使用软管浇内存,不要碰到主板其他部分。图1显示了已经被冷冻用于攻击的笔记本内存。

image.png

图1 为冷启动攻击冷却内存

内存冷却足够后,渗透测试人员需要尽可能快地切断并恢复供电。在桌面计算机上,这相对简单,按reset电源键就可实现。但是大部分的笔记本并没有reset按键,进行这样快速的重置电源操作本质上很困难。最好的办法是快速替换电池,并按电源键。上述两种机器环境,越是快速恢复供电,内存镜像就越完好。


当渗透测试人员从USB启动机器,scraper工具会自动复制内存镜像至USB设备。图2的屏幕截图显示了scraper工具在工作。

image.png

图2 Scraper工具

根据内存大小和USB端口速率,捕获过程需要一会儿,对大容量内存则需要数小时。Scraper程序完全复制内存后,它将立即重新启动系统。渗透测试人员只需移除USB设备并插回编译scraper的机器。在源码中有一个叫做USBdump的工具,它只是简单地使用如下命令:

sudo ./usbdump /dev/sdb > memdump.img

把USB设备上的每个字节拷贝至渗透测试人员的机器。再次,根据内存捕获镜像的大小,这可能需要数小时。最终结果是内存镜像的完全拷贝文件,包含目标机器的一个字节一个字节的捕获镜像,同时有望使错误最少。


火线接口攻击

电气和电子工程师协会的1394接口,是初始设计用于取代SCSI的一个高速通信接口,更因为苹果公司以火线命名实现而知名。火线的主要部分是它的高速数据传输速率,这也是它大量应用于音视频传输的原因。火线接口高速率的一个主要特征是,它可以完全绕过CPU,通过直接内存访问DMA的方式访问内存。这对从相机下载数小时连续镜头的视频编辑者来说是一个好消息,对于渗透测试人员同样如此。


火线接口的直接内存访问使具有目标机器物理接触能力的渗透测试人员,可以通过重写包含访问控制功能的内存部分,绕过操作系统的密码保护机制。DMA同样可以让渗透测试人员下载小于4GB内存镜像。即使火线接口仅能访问少于4GB的内存且能使用反病毒软件保护DMA,这类型的访问还是揭示了IEEE1394标准中重大的安全缺陷。由于火线接口的热插拔功能,即使目标机器在锁定情况下,攻击同样能够进行。此外,虽然大部分操作系统试图对知名火线接口设备如iPods进行DMA授权限制,但是欺骗设备很容易。


由于攻击主要针对火线接口,对同一总线下的任何设备同样有效;这些包括ExpressCard,PC Card和所有苹果新产品都可以使用的雷电端口。

Carsten Maartmann-Moe已经开发了一个叫做Inception的工具,可以轻松利用火线接口。该工具可在http://www.breaknenter.org/projects/inception/ 找到。Inception必须从一个Linux桌面运行。这种情况下,Linux系统不能是一个虚拟机,因为虚拟机不能实现火线接口传输(出于安全原因)。另外,渗透测试人员需要Python3和Freddie Witherden的1394包。最后,攻击和目标机器都需要具备一个火线接口,EC,雷电或者PC card接口。


Inception安装准备就绪后,渗透测试人员仅需通过一个火线接口电缆,简单的连接攻击和目标机器,并在root权限模式下运行命令

incept

Incept将会访问内存中负责访问控制的部分并“修补”它们,使我们可以无密码访问机器。当然,目标机器内存含有丰富的信息,渗透测试人员可以使用

incept –d

命令转储小于4GB的内存镜像。


内存转储分析

转储内存镜像是一会事,分析数据则是一个更难的阻碍。幸运地是,一系列专注于此目的的工具可以获得。在思路上,很少工具是设计用于渗透测试的。许多是取证分析工具用于寻找运行的进程,恶意软件和隐藏的数据。内存取证仍然是一个相对崭新的领域,尤其是64位环境下的分析。许多出色的工具仍然局限于法律取证使用。这就是说,大量可执行的任务可以向客户揭示风险。


Lest We Remember团队也创建了一个分析工具,用于捕获内存镜像。他们论文的主题是密钥可以从内存中恢复;他们的工具命名为AESKeyFind,用于在捕获的内存镜像中搜索AES密钥次序表并恢复密钥。该工具可从下载Scraper程序的同一站点下载。最后,该工具携带一个易于编译的makefile文件。该工具编译后,可以用命令

./aeskeyfind –v memoryimage.raw

运行,在内存镜像文件中执行搜索AES密钥并在显示屏上打印它们。AESKeyFind将搜索128位和256位的密钥,即使镜像不完全或存在错误,该工具也可能恢复密钥。例如,图3显示了从一个包含大量错误的镜像文件中恢复AES密钥。

image.png

图3 在破损内存镜像中找打AES密钥

这些AES密钥序列可以被大量不同的应用使用。它们可能是用于全盘加密,VPN,无线网络的主要密钥。如果它们被恢复,接下来的步骤就是破译。

另一个有用的工具是Volatility,一个开源的内存取证分析框架。Volatility拥有众多模块可以让渗透测试人员抽取运行进程中有用信息和目标机器设置。如果内存镜像完好,渗透测试人员甚至能够抽取出Windows的hashes。

首先是识别出内存镜像的架构,这样Volatility才知道到哪个位置找,该项工作由imageinfo模块完成。图4显示了imageinfo模块被调用,且内存配置文件结果被Volatility识别。

image.png

图4 Imageinfo模块识别出镜像架构

使用这些信息,渗透测试人员可以用额外的模块识别出SAM和来自注册表的系统hives文件。由于在机器使用时,windows在活动内存中存储注册表信息;Volatility的hivelist模块可以用于识别内存中的每个注册表位置。图5显示了hivelist模块正在被imageinfo模块识别出的配置文件调用。

image.png

图5 hivelist模块显示SAM和System Hives地址

在32位系统中,Volatility有一个hashdump模块,当给出SAM和System hives地址时,能够自动抽取密码hash。遗憾的是,这个模块当前在64位系统中不能工作,所以限制了它的用途。就是说,Volatility是开源的,没有理由不能实现64位模块。另外,一旦SAM和System hives地址确定,一个技术性可能是从镜像文件中抽取它们并使用其他工具抽取密码hashes。


小结

微软公司的安全响应中心有10个不变的安全法则。第3号法则是,如果一个坏家伙不受限制地访问你的机器,这已经不是你的机器了。许多客户认为,全盘加密和强密码弥补了攻击者对机器的任何物理直接访问。他们没有考虑到活动内存的危险。活动内存中存储了足够多的信息,渗透测试人员可以从其中获得重要信息或对内部网络的访问权。这从来没有被认为是问题,因为对外部攻击者来说不存在事实方式获得内存镜像。但是,特定环境下冷却启动和火线接口攻击,不但使获得内存访问,而且使获得密钥的突破访问成为可能。


引用

  1. Dieterle,D.(2011).Memory Forensics:How to Pull Passwords from Memory Dump. Cyber Arms – Computer Security.Retrieved 2013-11-18.
  2. Halderman,J.Alex;Schoen,Seth;Heninger,Nadia;Clarkson,William;Paul,William;Calandrino,Joseph A;Feldman,Ariel J.;Appelbaum,Jacob et al.(2008-02-21).Lest We Remember: Cold Boot Attacks on Encryption Keys. Princeton University. Retrieved 2013-11-18.
  3. Maartmann-Moe(Last update 2013).Inception.

Available at http://www.breaknenter.org/projects/inception/ . Accessed 2013-11-18.

相关文章
|
9天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
26 4
|
28天前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
2月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
127 32
|
28天前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
1月前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
47 4
|
1月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
2月前
|
安全 Linux Shell
Kali渗透测试:使用Metasploit对Web应用的攻击
Kali渗透测试:使用Metasploit对Web应用的攻击
138 4
|
1月前
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
|
1月前
|
安全 大数据 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
|
1月前
|
SQL 安全 网络协议
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS