Active Directory自定义身份验证

时间:2016-12-20 14:47:05

标签: windows authentication active-directory windows-server-2008-r2 custom-authentication

我为Windows-7登录创建了一个子身份验证包。它成功地用于本地帐户登录。 然后,我尝试在Windows Server 2008 r2中为活动目录实现相同的子身份验证包。我将我的DLL放在Windows\System32\文件夹中,修改了Kerberos的注册表值this Microsoft文档解释了子身份验证DLL。

我设置的值是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos值:Auth0设置为C:\Windows\System32\SubAuth.dll(我在这儿吗?)。

但是在进行身份验证时,我注意到我的子身份验证包没有被调用,因为在针对AD验证客户端计算机上的用户时,我不会被问到第二个因素。

我是否在设置中遗漏了某些内容,或者我必须在我的子身份验证包中更改某些内容。

如果我在这里遗漏了任何信息,请告诉我。

PS:子身份验证包是根据Microsoft的凭据提供程序文档(在Msv1_0SubAuthenticationFilter例程中)开发的。

2 个答案:

答案 0 :(得分:0)

看起来这是设计 - 来自kerberos \ ssv1_0 subauth包的Msv1_0SubAuthenticationFilter例程将不会被调用用于缓存域交互式登录。

对于交互式登录,сall链将类似于:

LsaApLogonUserEx2->MsvSamValidate->MsvpSamValidate->MsvpPasswordValidate
LsaApLogonUserEx2->MsvSamValidate->MsvpSamValidate->Msv1_0SubAuthenticationRoutine

但是对于缓存的交互式登录,сall链看起来像:

LsaApLogonUserEx2->MsvpPasswordValidate 
<and there is no call to Msv1_0SubAuthenticationRoutine here>

答案 1 :(得分:0)

要实现我所提出的问题,我需要在微软的身份验证包中进行攻击。

这就是我的所作所为。

与活动目录进行通信&amp;进行身份验证w.r.t. AD,我必须在凭证提供者之前完成。

所以我的解决方案的控制流程在Credential提供程序中如下:

  1. 检查用户是否已连接到网络。
  2. 如果是,则与AD服务器通信,该服务器是预定义的&amp;根据AD条目验证用户。
  3. 如果用户已经过验证,则仅在凭据提供者中询问第二个因素&amp;然后成功验证,将用户传递给sub-auth模块&amp;在副认证中绕过第二个因素。
  4. 如果用户未连接到网络,请使用sub-auth模块进行验证。
  5. 所以基本上,如果用户需要验证AD&amp;稍后在子auth模块中执行密码验证。