【问题标题】:Persisting windows authentication permission tokens, that allow later impersonation持久化 Windows 身份验证权限令牌,允许以后进行模拟
【发布时间】:2014-04-10 13:48:35
【问题描述】:

想想像 IfThisThenThat (IFTTT.com) 这样的服务。在那里,我对服务(twitter、evernote、gmail、dropbox 等)进行身份验证,并授权 IFTTT 代表我行事(可能是通过存储某种令牌)。如果我不想再授权 IFTTT 冒充我,我可以随时撤销令牌。

如果我想对内部服务进行 Windows 身份验证,该怎么办?

我想用户会使用 Windows 身份验证访问网页 - 并批准创建某种令牌,我可以将其保存在数据库中。稍后,当我需要在该用户的上下文中运行某些东西(例如内部 Web 服务)时,我会获取令牌并运行某种模拟代码(至少在您知道密码时是微不足道的)。

什么技术/概念可以很好地做到这一点?

【问题讨论】:

  • 在我看来,如果可能的话,密码将毫无意义。在不记录帐户密码的情况下,我无法看到或想到任何应用程序或服务执行此操作的示例。
  • 同意@Ashigore,不存储凭据是不可能的。关于这个主题的有趣阅读:blog.gentilkiwi.com/securite/mimikatz/golden-ticket-kerberos

标签: active-directory windows-authentication impersonation


【解决方案1】:

嗯,Kerberos 用于登录 Windows 机器,它实际上做的事情与您已经描述的非常相似。当您登录时,您将获得一个票证授予票证,然后可以使用该票证使用同一帐户登录其他服务。但是,Kerberos 票证会在很短的时间内到期,如果您想避免再次登录,则必须在到期前签发新票证。您不能只将 Kerberos 票证存储在数据库中并在以后的会话中再次使用它。它是专门为防止此类用例而设计的,因此如果票证最终被泄露,它将毫无用处。一般情况下,超过 5 分钟的票证默认被拒绝。以下是 Kerberos 上 MSDN 文档的链接,以获取有关其工作原理的更多详细信息:

MSDN: Microsoft Kerberos (Windows)

说了这么多,Windows 确实已经允许系统服务模拟用户。如果您以 SYSTEM 或管理员成员身份运行,则可以致电 ZwCreateToken 为几乎任何帐户创建令牌。 This article 对如何使用它进行了深入的描述(在一堆其他的东西中,并提供了一个示例程序。)请注意,这是一篇相当长的文章,其中涉及许多有关 Windows 登录的细节,它也是有点老。据我所知,它的原则应该仍然是正确的,并且代码应该仍然可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2015-12-25
    • 1970-01-01
    • 2023-04-10
    • 2021-02-21
    相关资源
    最近更新 更多