口令明文风险需从存储、传输、内存、配置四层面同步排查:查WDigest注册表值是否启用明文缓存;检查SAM/NTDS.dit哈希强度及NTLMv1禁用情况;搜索应用配置中明文密码;抓包验证网络传输是否加密。

口令明文存储是高危安全隐患,一旦被攻击者获取系统访问权限,就能直接读取账号密码,绕过所有认证逻辑。真正有效的排查不是只看“有没有加密”,而是从存储方式、传输过程、内存驻留、配置状态四个层面同步验证。
查注册表是否启用WDigest明文缓存
Windows系统中,即使新版默认禁用,仍可通过注册表重新开启内存明文密码缓存。这是mimikatz最常利用的入口。
- 打开注册表编辑器(regedit),定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest - 检查是否存在 UseLogonCredential DWORD值
- 若该值存在且为 1,说明系统正将明文密码缓存在lsass.exe内存中,需立即设为0或删除该项
- 若不存在,属安全默认状态;但需注意:某些旧版域控策略或第三方软件可能静默写入该键
查本地SAM和NTDS.dit中的密码哈希是否被弱保护
本地用户密码哈希(SAM)或域控制器数据库(NTDS.dit)若未加盐、未使用现代哈希算法(如PBKDF2、Argon2),极易被离线爆破。
- 普通工作站可运行 pwdump 或 secretsdump.py(需管理员权限)导出本地哈希,观察是否含LM哈希(全大写、长度固定14字符)——有则代表启用了极不安全的旧式加密
- 域环境应确认域功能级别 ≥ Windows Server 2012 R2,并禁用NTLMv1;通过组策略检查:
计算机配置 → 策略 → Windows设置 → 安全设置 → 本地策略 → 安全选项 → 网络安全:LAN Manager 身份验证级别,应设为“发送NTLMv2响应” - 避免使用Syskey弱模式(如模式1);若曾启用,需评估是否残留可逆密钥材料
查应用程序是否自行明文保存口令
很多业务系统、中间件、数据库客户端工具会把口令硬编码在配置文件、日志或数据库字段中,这类问题不在系统层防护范围内,却最常被忽视。
- 搜索常见配置路径下的明文关键词:
password=、pwd=、passwd=、-p (命令行参数)、"password":"(JSON) - 重点目录包括:
C:\Program Files\*\config\、C:\Windows\System32\inetsrv\config\、%APPDATA%\*.xml、/etc/、/var/log/、/opt/*/conf/ - 对数据库执行:
SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%pass%' OR column_name LIKE '%pwd%';
再人工核查对应字段是否加密存储(如含$2b$、$argon2id$等前缀才算合规)
查网络传输中是否存在口令明文暴露
即使后端加密存储,若登录过程走HTTP、FTP、Telnet或未校验证书的HTTPS,口令仍会在网络中裸奔。
- 用 Wireshark 抓包,过滤 http.request.method == "POST" && http.host contains "login",查看请求体是否含明文password字段
- 检查Web应用响应头:
Strict-Transport-Security: max-age=31536000 是否存在;登录页URL是否强制https;表单action是否为http:// - 审查API接口文档与调用代码,确认所有认证接口使用Bearer Token或OAuth2,而非在URL参数或Body中传password
口令明文风险从来不是单一环节的问题,而是贯穿存储、内存、传输、配置的全链路漏洞。一次有效排查,必须覆盖这四个维度,缺一不可。不复杂,但容易忽略其中一环。

















