【问题标题】:Plaintext password protection on crash dump [closed]崩溃转储上的明文密码保护[关闭]
【发布时间】:2014-10-15 06:19:31
【问题描述】:

我们需要使用 LogonUserNetUseAdd 等 API 指定纯文本密码。我们可以通过在内存中加密来保护密码,并在调用函数之前分配一个明文密码(在LogonUser的情况下输入lpszPassword参数,或者在NetUseAdd的情况下输入USE_INFO_2::ui2_username)。

我的问题是如何保护明文密码免受外部进程的影响,尤其是当该进程可能崩溃并产生内存转储时。

应该是这样的:

  1. 保护这个内存区域
  2. 调用需要明文的安全函数 密码
  3. 解除内存区域保护
  4. 清理内存区域

【问题讨论】:

    标签: c security winapi crash-dumps winlogon


    【解决方案1】:

    您需要保护内存转储本身。这就是为什么有些系统将它们完全禁用,有些系统将它们写入一个普通人无法读取的特殊位置,等等。

    【讨论】:

    • 可能无法保护内存转储,尤其是在客户端计算机上。有什么特别的地方,怎么让它不可读?我看到有关如何“攻击”的参考资料,但没有看到如何“保护”它的参考资料。
    • 您不担心恶意用户可以拦截 LogonUser() 并且您会将凭据直接传递给他们吗?我假设您是在谈论在不受信任的客户端计算机上运行您的软件?
    • 这就是我所关心的。如果不是正在运行的进程,但可能会以某种方式获取转储。就像 SSP(Kerberos 等)一样,它适用于密钥,为什么这些 API 不采用加密缓冲区,而不是普通密码?
    • 如果即使在受保护的环境中,启动了一些管理员级别的进程怎么办?该过程可能会拦截 - 必须有技术来避免它(如果不是完全)。
    • 我知道 Kerberos 是如何工作的,Windows 有 NTLM 等,但我不知道这如何适用于您的具体情况。从更高级别开始,稍微备份一下,然后发布一个新问题(请在此处链接),询问如何实现更高级别的安全身份验证目标,这可能是一个合理的想法。
    猜你喜欢
    • 2014-07-15
    • 2012-07-20
    • 2013-05-11
    • 2021-09-27
    • 2014-05-11
    • 2013-12-11
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多