渗透攻击红队
一个专注于红队攻击的公众号
大家好,这里是 渗透攻击红队 的第 40 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更
Hook PasswordChangeNotify 的作用是当用户修改密码后在系统中进行同步。
攻击者可以利用该功能获取用户修改密码时输入的密码明文。
在修改密码时,用户输入新密码后,LSA 会调用 PasswordFileter 来检查该密码是否符合复杂性要求,如果密码符合要求,LSA 会调用 PasswordChangeNotify,在系统中同步密码。
Hook PasswordChangeNotify
实验操作
Hook dll
下载连接:https://github.com/clymb3r/Misc-Windows-Hacking
使用 VS 2019的开发环境,MFC设置为在静态库中使用MFC编译工程,生成 HookPasswordChange.dll。
下载脚本:
https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1
首先需要 Invoke-ReflectivePEInjection.ps1 脚本将 HookPasswordChange.dll 注入内存,在目标系统中启动管理员权限的 Powershell:
Set-ExecutionPolicy bypass
Import-Module .Invoke-ReflectivePEInjection.ps1
Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass
这个时候没有报错就说明成功了,最后我们手动改一次域控的密码:Admin123456
更改成功后,我们在 C:WindowsTemp 可以找到文件:passwords.txt
此时可以看到域控的密码为:Admin123456
如果想要更改 passwords.txt 存放路径的话,那么更改 HookPasswordChange.cpp 代码的 132 行 为你想要生成的路径即可:
我修改为 windows.log 误以为让管理员知道是 log 文件,随后再次执行:
这样就能在 windows.log 文件中查看到域控更改的密码!
防御措施
使用 Hook PasswordChangeNotify 方法不需要重启系统、不会在系统磁盘中留下 DLL 文件、不需要修改注册表。
如果 PasswordChangeNotify 被攻击者利用,网络管理员是很难检测到的。
防御措施就是:对 Powershell 进行严格的监视。
参考文章:
https://www.cnblogs.com/xiaoxiaosen/p/13537305.html
https://github.com/clymb3r/PowerShell
https://github.com/clymb3r/Misc-Windows-Hacking
本文始发于微信公众号(潇湘信安):域权限维持 | Hook PasswordChangeNotify 攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论