我为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例程中)开发的。
答案 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提供程序中如下:
所以基本上,如果用户需要验证AD&amp;稍后在子auth模块中执行密码验证。