【问题标题】:Implementing custom windows authentication package实现自定义 Windows 身份验证包
【发布时间】:2011-04-24 15:54:53
【问题描述】:

我正在为 Windows 7 的 MSV1_0 构建一个自定义身份验证子包。我使用了 Windows SDK 中的 msvsubauth 示例,我有 2 个关于我面临的一些问题的问题:

  1. 当我试图确保调用例程并将注册表中的 Auth0 属性设置为我的包并在创建文件的 Msv1_0SubAuthenticationRoutine 末尾添加一个简单的代码时:

    //
    // Cleanup up before returning.
    //
    
    
    Cleanup:
    hTestFile = CreateFile(
                  TEXT("C:\\lsa\\lsa.txt"), 
                  GENERIC_READ|GENERIC_WRITE, 0, 
                  NULL, CREATE_ALWAYS, 
                  FILE_ATTRIBUTE_NORMAL, NULL);
    
    
    if(hTestFile != INVALID_HANDLE_VALUE) {
          CloseHandle(hTestFile);
    }
    
    
    return Status;
    
    
    }  // Msv1_0SubAuthenticationRoutine
    

    显然,该程序包被调用,因为当我输入密码时,我从 Windows 收到一条错误消息“参数不正确”,这是一个好兆头。但为什么我会收到这个错误?当从单独的 .exe 文件执行完全相同的代码时,它会完美运行并创建测试文本文件。我已经检查了权限并为“每个人”设置了“完全控制”。有任何想法吗? SDK 并没有具体提到 LSA 为 auth 包中的代码创建了什么样的隔离。

  2. 第二个问题是测试 AP。目前,每次更改我都会重建库,将其复制到测试 VM,然后复制到 System32 文件夹并重新启动它。有没有更简单的方法来做到这一点?

提前致谢!

【问题讨论】:

  • 这还没有解决吗?我正在做一个类似的项目,我想知道如何进行自定义身份验证。我赞成你的问题。
  • 是的,当时我已经解决了这个问题。请就您的具体问题提出问题,我会尽力为您提供帮助。看看 cyglsa - LSA 身份验证包,它是 cygwin 的一部分。很有帮助。
  • 这是我关于 serverfault 的帖子:serverfault.com/questions/254192/…。我找到了一些东西,但也许你在了解这个时遇到了这个。

标签: c++ windows winapi local-security-authority


【解决方案1】:

在 Winlogon 和 LSASS 中进行调试是最耗时的调试。

为了简化调试,您可以编写一个代理 AP 来导出相同的功能。加载时,您 proxy_ap 会

  1. 将真实 AP 从已知位置复制到临时位置并且。
  2. Lo​​adLibrary 该 DLL、GetProcAddress 的所有内容,并将它收到的所有调用转发到新加载的 DLL。
  3. 注意复制原始 AP 的目录的变化
  4. 发生更改时(如果您的 AP 发生更改)FreeLibrary 并转到第 2 步

但是您需要牢牢把握您的开发目标上发生的事情,因为在处理来自多个线程的请求时处理 dll 切换可能会成为比您要解决的问题更糟糕的噩梦。

LogonUI.exe 每次都会启动一个新实例,但 LSASS.exe 是长期存在的。

+查看 CVSNT 源代码 (http://cvsnt.sourcearchive.com/)。他们有一个相当不错的 AP 来实现 su。使用 psexec -s(来自 Microsoft/SysInternals pstools suite)在本地系统帐户中运行示例

【讨论】:

    【解决方案2】:

    也许您的问题是每个人都只包括经过身份验证的用户?这只是一个猜测。

    我建议您使用 Process Monitor 来监控 Access Denied 消息或您的路径。它非常适合调试各种权限/路径问题。

    如果您在“解锁工作站”或“更改密码”屏幕上遇到问题,并且它不会阻止您登录,这应该很容易做到 - 设置它运行,重现问题,重新登录并嘿presto。

    否则,您可能不得不诉诸一些技巧,例如仅针对某些用户帐户执行该代码路径,在第 N 次尝试时等等。

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多