电脑显示lsass.exe系统错误 当试图更新密码时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电脑显示lsass.exe系统错误 当试图更新密码时相关的知识,希望对你有一定的参考价值。

电脑提示lsass.exe系统错误,具体原因如下:

  其一、虚拟内存不足。
  常见的提示有:“lsass.exe系统错误:系统资源不够,无法完成API”。出现这种情况,一般是由于虚拟内存不足导致,这时我们可以利用启动光盘,比如winPE等,进入我的电脑>>属性>>高级>>性能选项卡,设置虚拟内存为系统盘之外的磁盘空间比较大的分区>>确定>>重启电脑即可正常进入系统。设置虚拟内存时,一般都建议将虚拟内存设置为物理内存容量的1.5~2倍(分别为虚拟内存的最小值和最大值)。
  其二、不小心误操作。
  常见于试图更改密码,提供的密码不正确,或者位于”C:WindowsSystem32Config“目录下的sam文件(无扩展名)损坏。这个时候只要依利用启动光盘,把"C:Windowsrepair"目录下的sam文件替换到上述路径即可。
  其三、病毒原因,相关依赖文件丢失。
  常见的提示有:“lsass.exe无法找到入口:无法定位程序输入点asn1ztcharstring_free于动态链接库msasn1.dll上”、“lsass.exe无法找到组件:没有找到dnsapi.dll”,至于是哪个dll丢失,则视情况而定。

lsass.exe是系统进程,用于本地安全认证服务器,它为winlogon服务的用户验证生成一个进程。如果身份验证成功,Lsass将生成用户的访问令牌,用于启动初始外壳程序。该用户启动的其他进程将继承这一令牌。它的进程信息如下:
  进程文件:lsass 或者 lsass.exe
  进程名称:Local Security Authority Service、本地安全权限服务
  出品者:Microsoft Corp.
  属于:Microsoft Windows Operating System
  系统进程:是
  后台程序:是
  使用网络:否
  硬件相关:否
  常见错误:未知N/A
  内存使用:未知N/A
  安全等级 (0-5): 0
  间谍软件:否
  广告软件:否
  Virus: 否
  木马:否
  注意:lsass.exe文件一般位于C:WindowsSystem32目录。如果在其它地方出现lsass.exe,那么,它可能是一个病毒、木马或恶意程序!常见的病毒名有W32.Sasser.E.Worm (Lsasss.exe)、W32.Nimos.Worm等。
  
参考技术A 您好 我的电脑提示内存不足后系统很多文字看不到 然后我强制关机重启 开机后看到鼠标然后提示
lsass.exe 错误 提示 :当试图更新新密码时,本返回状态表示所提供的当前密码不正确。不知道能不能在不重装系统的情况下解决呢?谢谢了本回答被提问者和网友采纳
参考技术B 系统问题重装

CVE-2017-0004相关lsass拒绝服务漏洞杂谈

昨天微软更新的补丁对lsass服务中的一处拒绝服务漏洞进行了修补,由于是远程拒绝服务漏洞遂决定看看(毕竟这种类型的这十几年也没出几个)。补丁解压之后可以发现这次更新修改了大量的dll(可以用expand.exe,原因么,用了就知道哈哈),lsass.exe本身没有修改

可能是运气好吧,我当时直接选了lsasrv这个dll,事实证明运气不错。

 

可以看到这个dll是本地密码相关的动态链接库。

通过binbiff对比可以发现确实有不少修改的地方。

因此昨天都在看这个dll的补丁对比,当时找到一些可疑的函数,其中一个函数为NegGetExpectedBufferLength,该函数是用于返回buffer长度的,补丁对比图如下。

详细的代码对比(左侧为最新的dll),可以看到红框中增加了对v8这个变量的长度校验,当获取的长度大于FFFF时,直接返回一个负值,如下所示:

 

如果此时返回的结果为90312,则会运行到后面的LsapAllocateLsaHeap。

在LsapAllocateLsaHeap中会通过之前获取的长度分配一个内存,如果前面没有检测的话,这个地方会因为超长size分配一段超大内存,导致失败,从而分配一个空指针,该空指针会被放到esi+44的地址中,从而后面导致空指针引用?这是昨天对这个地方的函数的想法,但是由于不知道怎么触发运行到这个函数(想要构造的话只能反复看该处的汇编代码,这可是个费时间的活儿),因此就暂停了分析。

 

幸运的是今天Nicolas Economou发布的一篇blog,该blog中对这次lsass服务的问题进行了精彩的阐述,并给出了相关的poc

https://www.coresecurity.com/blog/unpatched-lsass-remote-denial-service-ms16-137

该漏洞实际出现在lsasv模块的NegGetExpectedBufferLength函数中,该函数没有对发送的smb中的一个长度域做限制,当漏洞存在时,该size会作为内存分配函数LsapAllocateLsaHeap分配内存时的 size,攻击者可以将该size设置为一个大size,从而导致该处分配失败,失败后会生成一个空指针

 

该空指针会在NegpBuildMechListFromCreds中被引用,从而导致lssas进程重启。

 

运行poc之后如下,lsass崩溃。

发送的exp数据包如下,其中的f6308301即为导致漏洞触发的长度域。

可以看到漏洞触发后崩溃的地址,如kb之后发现,最后的地址即在上面NegpBuildMechListFromCreds中的RtlEnterCriticalSection之后。

直接在NegGetExpectedBufferLength下断,单步到Neg_der_read_length前如下,此时的长度变量为0。

函数运行之后可以看到此时获取的长度为f6308201,即为wireshark抓包获取的长度

最后LsapAllocateLsaHeap分配一个巨大的内存失败,返回一个空指针,并保存到esi+44的位置,该空指针会在后面被引用从而导致崩溃。

从Nicolas Economou发布的blog中可以知道实际上这个漏洞在去年的时候就补过,不过当时微软补的地方是针对NegpBuildMechListFromCreds中的空指针进行修改,而且当时补的时候对该空指针的结构也没有完全补对,直到昨天的更新中才将其中的根源NegGetExpectedBufferLength中的长度进行了限制。

时间有限,实际上我这个地方对该空指针后续的操作没有详细的调试,可能有误差,有时间后续的调试再补上吧!

 

参考

https://www.coresecurity.com/blog/unpatched-lsass-remote-denial-service-ms16-137

 

转载请注明出处

以上是关于电脑显示lsass.exe系统错误 当试图更新密码时的主要内容,如果未能解决你的问题,请参考以下文章

lsass.exe程序错误 找不到对象名求解决方法

高悬赏:安装xp sp3时,重启后出现lsass.exe-系统错误,再重启后正常

刚重装的系统,各只有一个lsass.exe和smss.exe,用户名都是SYSTEM,但电脑还是经常卡机死机,求助大虾们!

服务器(windows server 2008R2) lsass.exe进程占用超高内存

新的LSASS.EXE病毒

电脑开机弹出应用程序错误