0x01 windows身份认证过程
windows NT logon模块, winlogon.exe —->LSA auth api(lsasrv.dll)—》msv1.0.dll
详细的流程:
注意点: 如果是本地登陆是在本地的组件之间ntlsm安全包接收进行处理,如果是域网络中,那么会跑到域控制器进行验证,会用kerbos协议进行响应。如果是远程登陆那么组件也不一样
目标服务器的一个工具包会维护一个内存里面的明文密码。
0x02 从内存读取windows登陆密码(WCE)
- 具有管理员权限
- /usr/share/wce kali里面,复制到win7,
- 输入wce -lv
- wce -w 直接会显示内存里面的密码
- wce -i sid -s 用户名:hash 直接修改对应sid的密码
在win8之后,增加安全机制 ,wce需要绕过。
扩展:如何防止wce读取密码
HKEY-LOCAL-MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SecurityPackages
- kerberos
- msv1_0
- schannel
- wdigest 存储在内存
- tspkg 远程
- pku2u
删除wdigest值
fgdump
Gethash
gsecdump
SamInside
mimikatz更加强大
1. 使用mimikatz获取hash和明文密码:
输入::
就会进行命令提示,类似help,然后使用privilige::
可以查看debug下面的命令,然后通过privilige::debug
进行一个提权,
接下来使用
,这个模块主要是读取hash的,其中前面的可以用logonPasswords代替,
这个可以读取存储在sam里面的hash同时也可以直接从内存中读取明文密码。
2. 使得xp可以多用户同时存在
,使用ts::multirdp.
3. 使用event::drop可以丢弃安全日志,之后再操作系统进行的操作都不会被记录
event::clear
就会清除日志信息