sekurlsa.dll逆向分析challenge(可能发现windows系统账号存储机制的小秘密)
声明:
本文作者是CasperKid,本文发表经过他本人授权!
昨天有朋友发了个法国佬写的神器叫 mimikatz (附件在3楼)让我们看下
神器下载地址:
http://blog.gentilkiwi.com/mimikatz
还有一篇用这个神器直接从 lsass.exe 里获取windows处于active状态账号明文密码的文章
http://pentestmonkey.net/blog/mimika...rds-from-lsass
自己尝试了下用 win2008 r2 x64 来测试

最后测试成功 wdigest 就是我的明文密码
我还测过密码复杂度在14位以上
包含数字 大小写字母 特殊字符的密码
一样能抓出明文密码来
以前用 wce.exe 或 lslsass.exe 通常是只能从内存里顶多抓出active账号的 lm hash 和 ntlm hash
但用了这个神器抓出明文密码后
由此我们可以反推断 在 lsass.exe 里并不是只存有 lm hash 和 ntlm hash 而已
应该还存在有你的明文密码经过某种加密算法 (注意: 是加密算法 而不是hash算法 加密算法是可逆的 hash算法是不可逆的)
这样这个加密算法是可逆的 能被解密出明文
所以进程注入 lsass.exe 时 所调用的 sekurlsa.dll 应该包含了对应的解密算法
逆向功底比较好的童鞋可以尝试去逆向分析一下
然后这个神器的功能肯定不仅仅如此 在我看来它更像一个轻量级调试器
可以提升进程权限 注入进程 读取进程内存等等
下面展示一个 读取扫雷游戏的内存的例子

我们还可以通过pause命令来挂起该进程 这个时候游戏的时间就静止了

总之这个神器相当华丽 还有更多能力有待各黑阔们挖掘 =..=~
(在文章最后 附加作者的回答)
在上篇文章中 我们看到了通过用 mimikatz 对 lsass.exe 进行进程注入
再调用 sekurlsa.dll 去获取 wdigest
也写了下自己对加密解密这个问题的想法
现在在把这个给大家点明确一些~

在用这个神器获取密码的时候 命令分别如下
privilege::debug
inject::process lsass.exe sekurlsa.dll
@getLogonPasswords
可以推理出整个流程
先将进程提升到 debug 权限
然后将 sekurlsa.dll 注入到 lsass.exe 进程里
调用 sekurlsa.dll 里的 getLogonPasswords 这个函数获取出密码
结合上文我提到的废话
--------------------------------------------------------------------------------------
以前我们一般用 wce.exe 或 lslsass.exe通常是只能从内存里顶多抓active账号的 lm hash 和 ntlm hash
但用了这个神器抓出明文密码后
由此我们可以反推断 在 lsass.exe 里并不是只存有 lm hash 和 ntlm hash 而已
lsass.exe 里很可能是存在两个敏感信息
1. 明文密码经过加密算法的密文 (这个加密算法是可逆的 能被解密出明文)
2. 明文密码经过hash算法做数字摘要认证的hash
(注意: 是加密算法 而不是hash算法 加密算法是可逆的 hash算法是不可逆的)
所以进程注入 lsass.exe 时 所调用的 sekurlsa.dll 应该包含了对应的解密算法
--------------------------------------------------------------------------------------

逆向功底比较好的童鞋可以尝试去逆向分析一下
直接去逆向分析下 sekurlsa.dll 的 getLogonPasswords 函数做了些什么
是直接从某处就取出了 wdigest
还是从某处先取出了 某些信息
然后有解密操作的过程
说不定能发现微软的一些小秘密哟 =..=~
比如 它的这个加密算法
---------------------------------------------- 作者回答 ----------------------------------------------
在作者blog里发现作者其实已经回答过这个问题了

没有明文存储 而是放在内存里 并且是可逆的 这样也就验证了我推测的第一种情况
1. 明文密码经过加密算法的密文 (这个加密算法是可逆的 能被解密出明文)
