【问题标题】:Security in Azure WebApp InstanceAzure WebApp 实例中的安全性
【发布时间】:2016-01-21 23:11:58
【问题描述】:

我的网络应用程序有一个带有私钥和签名 xml 的证书。签名时,私钥在内存中(受 LSA 保护,因为 .Net 使用 NCrypt)。

问题: 我的理解是 azure web-app 实例是运行 IIS 的单个 VM,并且这些 VM 可能与其他 VM 一起在 hyper-V 主机上运行。鉴于此,VM-Host 是否有可能访问 VM-Guest 的内存并读取私钥 - 从而危及签名证书?

【问题讨论】:

  • information security 上问这个问题可能会得到更好的答案@ 那里有优秀的安全专家,他们对这些东西的了解程度令人恐惧!
  • 哦,酷。我不知道这个小组。谢谢迈克尔。

标签: windows security azure cryptography hyper-v


【解决方案1】:

您正在运行一个您无法物理控制的服务器,您无法从那些控制的人那里获得安全保障。

从正在运行的 VM 中检索私钥是一件相当简单的事情。首先,您将在标准 hyper-v 中进行内存转储(我们不知道 MS 在 Azure 中使用什么)

livekd -hvl
livekd -hv <VMName> -p -o C:\Memory.dmp

这将列出所有虚拟机,第二个命令将转储其中一个的内存。 (取自Taking a dump of a VM running on Hyper-V

其次,您需要找到并提取私钥,甚至还有一个 python 脚本可以为您完成这项工作。阅读它here

简而言之,您可以通过扫描 ASN.1 表示中的标头和版本常量来找到 RSA 私钥 (PKCS #8) 和 SSL 证书 (x509)。 Volatility 的 dumpcerts 插件使用这种扫描方法从物理内存或虚拟内存中查找、提取和解析这些密钥和证书

(阅读脚本背后的理论here

还要考虑到微软编写了整个堆栈,他们很可能拥有 VM 的调试版本,他们完全知道证书的存储方式(因为他们编写了代码)他们不需要像那些文章那样进行逆向工程确实,他们可以与编写它的工程师交谈。

【讨论】:

  • 谢谢迈克尔。我会在 Info-Sec 组上询问更多信息。但这暂时回答了我的问题。我将此标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2019-04-10
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多