Home > Technology > Windows密码验证之MsvpPasswordValidate

Windows密码验证之MsvpPasswordValidate

Title: Windows密码验证之MsvpPasswordValidate
Author: Colin.Xu@gmail.com
Date: 2011/02/24

在codeproject.com闲逛,看到捷克人fhrdina写的一篇有趣的文章。
http://www.codeproject.com/KB/security/Bootkit.aspx

在windows用户登陆界面输入密码后,Local Security Authentication Server(lsass.exe)会做用户密码的校验,模块msv1_0.dll中的msv1_0!MsvpPasswordValidate会做密码的hash比较。所以最简单有效的办法是,只要brute force该函数比较成功,则登陆时就会以为密码校验成功。

这个方法在06年就被人发现了,http://www.rootkit.com/blog.php?newsid=549. fhrdian做了一个可启动的iso,通过在load msv1_0.dll时hook上去,然后patch了它的IAT,把用于hash值比较的函数RtlCompareMemory指向了自己定义的函数,从而使得密码校验永远能够成功。

看完文章后我试了一下win7,发现该方法仍然有效。

来看一下函数原型:
msv1_0!MsvpPasswordValidate (unsigned char, _NETLOGON_LOGON_INFO_CLASS, void *, struct _USER_INTERNAL1_INFORMATION *, unsigned long *, struct _USER_SESSION_KEY *, struct _CLEAR_BLOCK *)

关键部分:

77c798a4 ff153012c777    call    dword ptr [msv1_0!_imp__RtlCompareMemory (77c71230)]
77c798aa 83f810          cmp     eax,10h
77c798ad 7511            jne     msv1_0!MsvpPasswordValidate+0×94 (77c798c0)

;这里,发现hash正确的话,就直接返回了,eax=1,表示校验成功。
;如果不正确,跳到msv1_0!MsvpPasswordValidate+0×94去做其他事情。


77c798af b001            mov     al,1

77c798b1 8b4dfc          mov     ecx,dword ptr [ebp-4]
77c798b4 5f              pop     edi
77c798b5 5e              pop     esi
77c798b6 5b              pop     ebx
77c798b7 e80182ffff      call    msv1_0!__security_check_cookie (77c71abd)
77c798bc c9              leave
77c798bd c21c00          ret     1Ch

我试着patch了一下msv1_0.dll,然后替换上去,输入任何密码都能进系统了。不过不清楚这样做了之后,user security token以及EFS加密后的数据是否能够访问。如果用户密码的校验最后都在这里完成的话,似乎也太弱了一些。

Categories: Technology
  1. April 11, 2012 at 22:10 | #1

    Great discovery,stupid MS

  1. January 5, 2012 at 18:15 | #1

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.