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

内存转储分析

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

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

./aeskeyfind –v memoryimage.raw

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



 

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

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

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

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



 

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

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



 

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

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

小结

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

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

开源发家史:Linux在为谁代言?

开源发家史:Linux在为谁代言?

开源,也被称为开放源代码(Open Source) 开源(Open Source) 开源运动起源于20实际60年...[详细]

作为码农,我们为什么要写作

作为码农,我们为什么要写作

在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除...[详细]

键盘敲击识别技术真的靠谱吗?

键盘敲击识别技术真的靠谱吗?

所有人都知道密码是靠不住的。于是现在有一个有意思的行为生物识别是你是如何打字的,...[详细]

干货!企业安全产品采购指南

干货!企业安全产品采购指南

作为一个安全行业的客户,怎么知道什么样的技术、产品和服务将会满足自身的需求?本文...[详细]

作为程序员,你必须了解这些关于计算机的知

作为程序员,你必须了解这些关于计算机的知识

存储-块设备,文件系统,集群文件系统,分布式文件系统,光纤SCSI,iSCSI,RAID等。 ...[详细]

返回首页 返回顶部