域内信息收集技术:从基础命令到高级工具实战 1. 域内信息收集概述在渗透测试或红队评估中域内信息收集是最关键的初始阶段。就像外科医生需要先通过CT扫描了解患者体内结构一样渗透测试人员也需要先摸清目标域环境的完整拓扑。我常把这个过程比作拼图游戏——每收集到一条信息就是获得一块拼图碎片当碎片足够多时整个域架构的完整图像就会浮现。典型的域内信息收集包括但不限于用户账户枚举常规账户、服务账户、特权账户主机发现域控、成员服务器、工作站组策略和权限配置信任关系域内信任、林间信任共享资源和敏感数据定位重要提示所有信息收集操作必须获得合法授权未经授权的扫描可能违反相关法律法规。本文所述技术仅限用于授权的安全评估。2. 基础信息收集技术2.1 基础命令工具链Windows内置的命令行工具是信息收集的第一把钥匙。这些原生工具不会触发安全告警是隐蔽侦察的理想选择# 查询域基本信息 net view /domain nltest /domain_trusts # 枚举域用户和组 net user /domain net group Domain Admins /domain # 获取主机信息 systeminfo | findstr /B /C:OS Name /C:OS Version我习惯将这些命令输出重定向到文本文件然后用Python脚本进行结构化解析。例如用正则表达式提取net user输出中的最后登录时间可以识别长期未使用的休眠账户——这些往往是安全防护最薄弱的环节。2.2 WMI深度信息采集Windows Management Instrumentation (WMI) 是更强大的信息源。通过wmic命令可以获取硬件配置、安装的软件、进程列表等详细信息# 获取所有安装的软件 wmic product get name,version # 查询补丁安装情况 wmic qfe list brief # 获取网络配置 wmic nicconfig get ipaddress,macaddress在实际操作中我发现WMI查询有时会因权限问题失败。这时可以尝试改用PowerShell的Get-WmiObject cmdlet它提供更灵活的错误处理机制。3. 高级信息收集工具3.1 PowerView实战技巧PowerView是PowerShell Empire项目中的信息收集模块现已成为域渗透的标准工具。它的优势在于能通过LDAP协议直接与域控通信获取最权威的域信息# 获取所有域用户详细信息 Get-DomainUser -Properties samaccountname,lastlogon,memberof # 查找具有SPN的服务账户 Get-DomainUser -SPN | select samaccountname,serviceprincipalname # 定位域管理员登录过的机器 Get-DomainComputer -Properties dnshostname,lastlogon | Where-Object {$_.lastlogon -gt (Get-Date).AddDays(-30)}我在多个项目中验证过通过Get-DomainGPOUser可以找出组策略中配置的本地管理员账户——这些账户往往在不同机器重复使用是横向移动的理想跳板。3.2 Cobalt Strike的集成利用Cobalt Strike的psloggeson.exe和netview.exe是专为隐蔽侦察设计的工具。与原生命令相比它们有以下优势无磁盘操作直接在内存中执行不留下日志痕迹结果聚合自动整理多台主机的扫描结果时间戳混淆可以设置随机延迟避免检测典型的使用流程# 内存加载psloggeson execute-assembly /path/to/psloggeson.exe -t 60 -d corp.local # 导出结果到CSV netview.exe --csv output.csv在最近的测试中我发现结合Cobalt Strike的targeted扫描模式可以显著降低告警率。该模式会先通过LDAP获取活跃主机列表然后只扫描这些目标避免大范围爆破扫描。4. 数据关联与分析4.1 构建域关系图谱原始数据需要经过处理才能转化为可操作情报。我通常使用Python的networkx库构建关系图谱import networkx as nx G nx.Graph() # 添加用户节点 G.add_node(user1, typeuser, departmentFinance) # 添加主机节点 G.add_node(workstation12, typecomputer, osWindows 10) # 添加关系边 G.add_edge(user1, workstation12, relationlogs_in)通过中心性分析可以识别关键节点如被多个管理员登录的服务器这些是高价值目标。下图展示了一个简化的域关系模型节点类型关键属性攻击价值域管理员组成员关系★★★★★服务账户SPN配置★★★★☆文件服务器共享权限★★★☆☆4.2 时间线分析技巧将不同来源的数据按时间排序往往能发现意外关联。例如某用户账户在凌晨3点登录该时段有异常进程创建记录同一IP曾出现在其他异常事件中我开发了一个简单的Python脚本来自动化这个过程from datetime import datetime def parse_time(raw): return datetime.strptime(raw, %Y-%m-%d %H:%M:%S) events.sort(keylambda x: parse_time(x[timestamp]))5. 隐蔽性与对抗措施5.1 日志规避实践现代EDR系统会监控敏感命令的执行。以下是几种规避技巧命令混淆将net user拆分为ne^t us^er使用环境变量%COMSPEC% /c whoami延迟执行在PowerShell中添加Start-Sleep -Seconds $(Get-Random -Minimum 1 -Maximum 10)实测发现将扫描流量分散在多个合法管理会话中如混合使用RDP、WinRM、SMB可以大幅降低检测概率。5.2 清理痕迹方法操作完成后必须清理痕迹包括删除创建的临时文件清除PowerShell历史Remove-Item (Get-PSReadlineOption).HistorySavePath恢复修改的注册表项我建议使用Sysinternals的CleanAfter脚本它能自动追踪并回滚所有变更。6. 防御视角的检测策略作为蓝队成员可以从以下方面检测信息收集行为命令监控短时间内连续执行net系列命令非常用账户突然使用WMI查询网络流量特征异常的LDAP查询模式如大量((objectCategoryperson))查询SMB枚举请求IPC$连接尝试内存检测非托管PowerShell进程加载AMS1未知程序集在内存中执行以下是典型的Sigma检测规则片段detection: selection: CommandLine|contains: - net group Domain Admins - net localgroup administrators condition: selection and not filter在真实环境中建议将这类规则与用户行为基线UEBA结合减少误报。