Windows渗透测试:主机信息收集与权限提升实战
1. Windows主机信息收集在渗透测试中的核心价值
在OSCP认证考试和实际渗透测试中,Windows主机信息收集是权限提升的关键前置步骤。不同于上篇讨论的基础命令使用,下篇我们将深入解析如何通过系统信息、网络配置、用户权限、服务状态等维度构建完整的攻击面画像。
我参与过数十次企业内网渗透测试,发现90%的权限提升机会都隐藏在看似普通的主机信息中。比如某个被遗忘的第三方服务端口、过时的补丁版本或是配置错误的计划任务,这些都需要通过系统化的信息收集才能发现。
2. 系统级信息深度采集技术
2.1 操作系统与环境信息
获取完整的系统信息不应仅限于systeminfo命令。我习惯使用组合命令:
wmic os get caption,version,osarchitecture,serialnumber /value wmic qfe list full /format:list这组命令能获取更精确的系统版本和补丁信息。特别注意KB编号,与公开漏洞库对比可快速发现可利用漏洞。
实战经验:在域环境中,
systeminfo /s computername /u domain\user /p password可远程获取信息,但要注意可能触发日志记录。
2.2 用户与权限拓扑分析
常规的whoami /all只能显示当前会话权限。我推荐以下进阶方法:
net user %username% /domain net localgroup administrators wmic useraccount list full这些命令可以列出:
- 当前用户在域中的详细属性
- 本地管理员组成员
- 所有用户账户的SID和安全描述符
在最近一次红队行动中,我们通过分析net group "Domain Admins" /domain的输出,发现了一个配置错误的服务账户,最终实现了域渗透。
3. 网络与服务枚举技术
3.1 网络配置与连接分析
ipconfig /all是基础,但真正的价值在于:
netsh interface ipv4 show interfaces netsh advfirewall firewall show rule name=all arp -a这些命令可以获取:
- 精确的网络接口指标
- 防火墙规则明细
- ARP缓存表
特别注意防火墙规则中的允许条目,它们往往指向内部关键系统。我曾通过一条放行445端口的规则找到了未打补丁的文件服务器。
3.2 服务与进程深度检测
任务管理器只能看到表象,专业渗透测试人员会使用:
sc queryex type=service state=all wmic service get name,displayname,pathname,startmode tasklist /svc /fo list重点关注:
- 以SYSTEM权限运行的服务
- 可执行文件路径包含空格或引号的服务
- 第三方服务(如备份软件、监控工具)
在某个客户现场,我们发现某财务软件的更新服务配置了弱权限,通过DLL劫持实现了权限提升。
4. 自动化信息收集框架实践
4.1 使用PowerShell脚本整合收集
这是我常用的信息收集脚本框架:
function Get-SystemInfo { $os = Get-WmiObject Win32_OperatingSystem $bios = Get-WmiObject Win32_BIOS return @{ OSVersion = $os.Version InstallDate = $os.InstallDate BIOSSerial = $bios.SerialNumber } }该脚本可扩展收集:
- 已安装软件列表(
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*) - 共享文件夹(
Get-SmbShare) - 计划任务(
Get-ScheduledTask)
4.2 规避检测的隐蔽收集技术
在较新的Windows版本中,需要绕过AMSI和日志记录:
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)配合内存加载技术可以避免写入磁盘。在最近的测试中,我们使用CLR加载方式成功绕过了某EDR产品的检测。
5. 信息分析与漏洞映射
5.1 构建本地漏洞数据库
收集到的信息需要与以下漏洞库交叉比对:
- Windows Bulletins (MSRC)
- Exploit-DB
- CVE Details 我通常使用以下命令快速检查:
wmic qfe | findstr /C:"KBXXXXXXX"将结果与已知漏洞KB编号匹配。
5.2 权限提升路径决策树
根据收集结果,我的决策流程是:
- 检查补丁级别 → 寻找缺失的本地提权补丁
- 分析服务配置 → 寻找可写路径或弱权限服务
- 审查安装软件 → 寻找存在漏洞的第三方应用
- 检查计划任务 → 寻找可劫持的定时执行项
在最近一次测试中,通过分析schtasks /query /fo list /v输出,发现了一个以SYSTEM权限运行的批处理脚本,最终通过竞争条件实现了提权。
6. 高级信息收集技术
6.1 注册表深度挖掘
注册表包含大量系统配置信息:
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall特别注意:
- 自动启动项(Run/RunOnce)
- LSA秘密(需SYSTEM权限)
- 凭据管理器条目
6.2 内存取证技术
使用PowerShell可以提取有价值的内存信息:
Get-WmiObject Win32_Process | Select-Object Name,ProcessId,ParentProcessId,CommandLine这有助于发现:
- 隐藏进程
- 异常命令行参数
- 进程注入痕迹
7. 防御对抗与日志清理
7.1 识别监控措施
检查安全产品和服务:
sc query windefend net start | findstr /i "defender"以及日志配置:
wevtutil gl security7.2 隐蔽信息收集策略
推荐使用合法管理工具作为载体:
- 使用PsExec执行命令
- 通过WMI远程调用
- 借助计划任务定时执行
在某个高度监控的环境中,我们通过schtasks /create创建了一个伪装成系统维护的任务,成功避开了SIEM检测。
8. 实战案例:从信息收集到权限提升
在某次授权测试中,我们通过以下步骤实现了域管理员权限获取:
初始信息收集发现:
- 系统版本:Windows Server 2012 R2
- 缺失补丁:KB3197873
- 异常服务:BackupManager服务以SYSTEM运行
进一步分析发现:
sc qc BackupManager显示服务二进制路径为
"C:\Program Files (x86)\Backup\service.exe" -debug利用路径空格和-debug参数,通过DLL劫持获得SYSTEM权限shell
在内存中发现管理员凭据,最终接管域控制器
这个案例展示了系统化信息收集如何为后续攻击提供关键切入点。每个看似无关的信息片段都可能成为突破口。