内存注入,重启恢复
1、原理
在修改域控制器密码时,LSA首先会调用PasswordFileter来检查该密码是否符合复杂性要求,如果密码符合要求,LSA会调用PasswordChangeNotify在系统中同步密码
如果攻击者Hook了该功能,则可以获取用户修改密码时输入的密码明文
函数PasswordChangeNotify存在于rassfm.dll中,该dll可以理解为Remote Access Subauthentication Dll(远程访问子系统认证),只存在于Server系统中。可以利用dumpbin查看rassfm.dll导出函数来验证
#dumpbin可以借助VS开发人员命令提示,因为只有winserver上存在该文件,需要先将dll文件导出
dumpbin /exports c:\windows\system32\rassfm.dll
2、生成DLL文件
项目地址: https://github.com/clymb3r/Misc-Windows-Hacking
需在项目属性中设置为 ”在静态库中使用MFC“
作用:
为PasswordChangeNotify创建一个inline Hook,将初始函数重定向到PasswordChangeNotifyHook
在PasswordChangeNotifyHook中实现记录密码的操作,然后重新将控制权交给PasswordChangeNotify
3、利用反射注入加载DLL
项目地址: https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1
Set-ExecutionPolicy bypass
Import-Module .\Invoke-ReflectivePEInjection.ps1
Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass
4、效果
当在被注入的机器上(此处是域控)修改密码时,所有的密码修改操作都会被记录。不管是调用Ctrl+Alt +Delete 还是使用AD用户和计算机功能修改密码
5、规则
sysmon文件创建,父进程是lsass
sysmon远程线程注入,注入的目的进程是lsass,且注入的是无功能无模块的
注:此文章参考了很多的网络上的其他文章!!!