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 nameall arp -a这些命令可以获取精确的网络接口指标防火墙规则明细ARP缓存表特别注意防火墙规则中的允许条目它们往往指向内部关键系统。我曾通过一条放行445端口的规则找到了未打补丁的文件服务器。3.2 服务与进程深度检测任务管理器只能看到表象专业渗透测试人员会使用sc queryex typeservice stateall 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-ScheduledTask4.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-DBCVE 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/RunOnceLSA秘密需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在内存中发现管理员凭据最终接管域控制器这个案例展示了系统化信息收集如何为后续攻击提供关键切入点。每个看似无关的信息片段都可能成为突破口。