Password Filter DLL在渗透测试中的应用
字数 1380 2025-08-29 08:32:09
Password Filter DLL在渗透测试中的应用
0x00 概述
Password Filter DLL是Windows系统提供的一种机制,用于增强密码策略的复杂性要求。本文详细介绍了Password Filter DLL的工作原理、开发方法、安装配置以及在渗透测试中的多种应用场景。
0x01 Password Filter DLL简介
基本概念
Password Filter DLL通过以下方式增强密码安全性:
- 自定义密码复杂度要求
- 在密码更改时进行验证
- 系统管理员可配置使用
系统策略位置
gpedit.msc -> 本地计算机策略 -> 计算机配置 -> Windows设置 -> 安全设置 -> 帐户策略 -> 密码策略 -> 密码必须符合复杂性要求
默认配置:
- 域控制器:启用
- 独立服务器:禁用
0x02 Password Filter DLL开发
必需函数
Password Filter DLL必须实现以下三个导出函数:
-
InitializeChangeNotify
BOOLEAN InitializeChangeNotify(void); -
PasswordChangeNotify
NTSTATUS PasswordChangeNotify( In PUNICODE_STRING UserName, In ULONG RelativeId, In PUNICODE_STRING NewPassword); -
PasswordFilter
BOOLEAN PasswordFilter( In PUNICODE_STRING AccountName, In PUNICODE_STRING FullName, In PUNICODE_STRING Password, In BOOLEAN SetOperation);
关键特性
- 所有函数都能获取明文密码
PasswordFilter返回TRUE表示密码符合要求,FALSE则拒绝密码修改- 需要显式声明为导出函数
参考POC
GitHub示例项目:3gstudent/PasswordFilter
功能:
- 通过
PasswordChangeNotify和PasswordFilter记录明文密码 - 日志保存在
c:\logFile1和c:\logFile2 - 使用
%wZ输出PUNICODE_STRING类型
0x03 Password Filter DLL安装
安装步骤
-
注册表修改
- 路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa - 键值:
Notification Packages - 添加DLL名称(不含.dll后缀)
命令行操作示例:
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Notification Packages" REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Notification Packages" /t REG_MULTI_SZ /d "scecli\0rassfm\0Win32Project3" /f - 路径:
-
文件放置
- 将DLL复制到
%windir%\system32\
- 将DLL复制到
-
组策略配置
- 确保"密码必须符合复杂性要求"已启用
-
系统重启
- 必须重启系统才能生效
0x04 渗透测试应用场景
1. 记录明文密码
域环境应用:
- 针对域控服务器
- 优势:域控默认启用密码复杂性要求
- 不足:需要重启域控服务器
扩展功能:
- 将密码发送到远程服务器
- 参考代码:malicious.link示例
2. 后门功能
- 修改DLL为Meterpreter加载器
- 任何用户修改密码时触发
- 获取高权限shell
0x05 非Windows Server系统应用
特殊考虑
-
检查组策略配置
secedit /export /cfg gp.inf /quiet- 查看
gp.inf中的PasswordComplexity项 - 1=启用,0=禁用
- 查看
-
启用密码复杂性要求
- 修改
gp.inf中PasswordComplexity=1 - 导入配置:
secedit /configure /db gp.sdb /cfg gp.inf /quiet - 立即生效:
gpupdate/force
- 修改
0x06 防御与检测
检测方法
- 检查
%windir%\system32\下的可疑DLL - 检查注册表键值:
下的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LsaNotification Packages - 检查
lsass.exe进程加载的DLL
0x07 总结
Password Filter DLL作为系统合法功能,在获得管理员权限后可被用于:
- 记录所有用户密码更改(包括未登录用户)
- 作为持久化后门
- 在域环境和非Server系统中均可应用
防御关键在于监控相关注册表项和系统目录下的DLL文件。