之前看了法国人写的一个软件,mimikatz
可以直接获取windows下的明文密码,简直是丧心病狂
作者已经开源,大家可以去谷歌一下
用SVN下载了源码,是vs2010的工程
然后按照下面命令开始看代码:
privilege::debug
inject::process lsass.exe sekurlsa.dll
@getLogonPasswords
最后跟到sekurlsa.dll里面的getLogonPasswords()函数
下面是我画的流程图
无语了,发现不能上传VISO文档
只能截图发上来了,见谅
它的大概原理就是根据特征字节在模块中搜索,搜索到存放登陆过的用户信息的地方l_LogSessList,然后遍历l_LogSessList 得到 指定LUID的密码密文。接着用一个未公开的函数LsaUnprotectMemory(同样是爆搜出来地址的)解密。
接下里自己试着写demo。中间的蛋疼简直无法用语言描述。Lsass.exe这个进程,你注入进去,代码有错误的话,它死了,后果就是自动六十秒之后关机。
期间偶然发现的,XP之后的系统做远程注入的时候不能简单地用CreateRemoteThread。我把那个网页保存下来了,以后可能用得着。
反正到了最后我写的代码还是靠概率运行成功。我觉得应该是里面几个函数调用时,mimikatz里要用到驱动里面的一个判断,我懒得配置DDK,就直接无视了。结果就总是出错。
唉,反正原理大概清楚了,就先放这儿吧。顺便膜拜一下别人写的代码,写的真好~