无人参与安装文件为何危险?
TOPIC SOURCE
红队备忘录 - Windows凭证获取
在企业级部署中,使用无人参与(Unattended)安装可以把成千上万台机器的交付时间压缩到几分钟,却也悄悄埋下了安全隐患。所谓无人参与,就是把系统配置、管理员账号甚至网络凭证写进一份 XML 或 INF 文件,系统在首次引导时自动读取并完成部署。看似便利,却让“明文密码”在磁盘上流连忘返。
隐藏的凭证陷阱
这些安装文件往往位于系统根目录或 WindowsPanther、system32sysprep 等子文件夹。因为部署脚本需要在无交互的环境下运行,管理员往往直接把密码写成明文或 Base64 编码,随后忘记清理。2023 年一次行业调研显示,约 42% 的企业在部署后未对这些文件进行加密或删除,导致凭证长期暴露。
攻击者的利用路径
- 恶意内部人员或被入侵的普通用户利用
findstr /si "password" *.xml快速定位包含凭证的文件。 - 利用公开的 Metasploit 模块
post/windows/gather/enum_unattend自动解析 XML,提取出本地管理员账号。 - 一旦获取管理员凭证,攻击者即可在同一网络内部横向移动,甚至通过
PsExec或 WMI 执行持久化。
防御的关键措施
从根本上讲,必须把“密码即代码”这条原则抛弃。最佳实践包括:
- 在生成无人参与文件时使用加密的凭证存储方式,配合
microsoft.NET的安全库进行解密。 - 部署完成后立即执行脚本删除或重命名所有
*.xml、*.inf,并在文件系统审计日志中记录。 - 开启文件完整性监控(如 Windows Defender Application Control),当未授权的修改出现时触发告警。
“无人参与的便利,绝不能以牺牲密码的机密性为代价。” —— 某资深安全架构师
如果把部署脚本当成一次性的“临时文件”,而不是长期存放的凭证库,那么系统的攻击面就会大幅收窄。真正的自动化,应该是“自动清理”。

参与讨论
建议用AES加密xml里密码
这文件默认放哪儿?
别说全是危,很多场景没事
我之前部署时忘删,差点被攻
脚本里密码明文,真是笑话
看到这篇,感觉安全团队都在睡觉
还行,不过要自行加固
安全大牛说得对,点个赞
大家来聊聊怎么自动清理吧
这事儿看得我心里发毛
生成的unattend文件里,密码真的只能明文保存吗?
我公司去年把所有xml删了,结果升级后脚本报错,真是苦恼
如果用PowerShell加密后再写入,部署会不会慢很多?
我之前也踩过这个坑,忘记清理后被同事抓包,教训深刻,建议部署完立马跑脚本删文件,别再留后门 😂
这玩意真的省事,赞
原来还能用findstr直接搜密码,有点吓人
@ 星空蓝 简直了,想想都后背发凉