Windows内网信息收集实战:从系统命令到自动化工具链
2026/7/29 3:55:37 网站建设 项目流程

1. 项目概述:为什么内网信息收集是攻防的基石

在网络安全领域,尤其是渗透测试和红队评估中,内网信息收集是一个无法绕开的起点。你可以把它想象成一场战役前的侦察行动。当攻击者通过某种方式(比如一个钓鱼邮件、一个暴露在公网的脆弱服务)成功进入内网的一台主机后,他面对的是一个庞大而未知的内部网络。这台主机,通常被称为“跳板机”或“立足点”,就像深入敌后的侦察兵。如果侦察兵不摸清地形、兵力部署和重要目标,后续的所有进攻都将是盲目的,效率极低且容易被发现。

“内网信息收集:Windows系统”这个标题,精准地指向了这个侦察阶段的核心任务:以一台已被控制的Windows主机为起点,系统地、隐蔽地收集整个内网环境中的所有有价值信息。这不仅仅是获取几个IP地址那么简单,而是要对网络结构、用户身份、计算机资产、共享资源、信任关系、安全策略乃至业务系统进行全方位的“测绘”。这些信息是后续横向移动、权限提升、数据窃取乃至最终控制整个内网域环境的关键“地图”。

对于安全从业者而言,无论是进行授权的渗透测试以评估企业防御能力,还是作为蓝队成员了解攻击者的视角以加固防御,深入掌握Windows内网信息收集的技术、工具和思路都至关重要。这能让你理解攻击链的初始环节,从而在日志中识别异常行为,在策略上封堵信息泄露的途径。接下来,我将以一个实战者的角度,拆解在Windows内网中,我们具体要收集什么、用什么工具收集、以及如何高效、隐蔽地完成这项任务。

2. 信息收集的核心目标与分类

在开始敲命令之前,我们必须明确目标:到底要收集什么?杂乱无章地运行工具只会产生噪音。我将内网信息收集的目标分为几个层次,从基础到深入,像剥洋葱一样层层递进。

2.1 基础系统与网络信息

这是最直接的一层,目的是了解你当前所在的“侦察兵”自身状况及其直接可见的周边环境。

  • 当前主机信息:包括操作系统版本、补丁情况、主机名、当前登录用户及权限级别(是否是本地管理员?)、系统架构(x64/x86)、安装的软件列表、进程列表、服务列表、计划任务、网络共享等。这些信息能帮助你判断这台机器的价值(是否重要?权限是否够高?),并寻找本地提权的可能。
  • 网络配置信息:包括IP地址、子网掩码、默认网关、DNS服务器、ARP缓存表、路由表、活跃的网络连接(ESTABLISHED状态的连接尤其重要,可能指向内网其他服务器)。这帮你勾勒出当前主机所在的网段拓扑。
  • 用户与组信息:本地用户账户、本地组成员关系。特别是要关注哪些用户属于“Administrators”组。

2.2 内网资产与拓扑发现

这一层开始向外探索,目标是绘制内网“地图”。

  • 存活主机发现:在同一网段或跨网段中,有哪些IP地址是活跃的?这是所有后续动作的基础。我们常使用ICMP Ping扫描、ARP扫描(同网段效率极高)、TCP/UDP端口扫描等技术。
  • 端口与服务探测:发现存活主机后,需要探测它们开放了哪些端口,运行着什么服务。例如,445端口(SMB文件共享)、135端口(RPC)、139端口(NetBIOS)、389/636端口(LDAP)、3389端口(RDP)等,都是Windows内网中的关键服务端口。
  • 操作系统与设备指纹识别:通过TTL、TCP/IP协议栈差异、特定服务的banner信息,判断目标主机是Windows、Linux还是网络设备,以及大致的版本。

2.3 域环境信息深度挖掘

如果内网采用了Active Directory(AD)域环境,那么信息收集的“宝藏”就真正打开了。域是Windows内网管理的核心,控制了域就几乎等于控制了整个网络。

  • 域基础信息:确认当前主机是否已加入域。如果已加入,获取域名、域控制器(DC)的主机名和IP地址、域的功能级别等。
  • 域内用户与组枚举:获取域内所有用户账户、计算机账户、组(尤其是特权组如Domain Admins、Enterprise Admins)的列表。了解用户的全名、描述、上次登录时间、是否启用、密码策略等。
  • 域内关系与信任分析:查找域内的组策略对象(GPO)、组织单位(OU)结构,了解计算机和用户的分布与管理策略。探查域与域之间是否存在信任关系。
  • 共享资源与敏感数据定位:枚举域内或工作组的网络共享(SMB共享),寻找可能包含敏感文件(如配置文件、数据库备份、代码仓库)的共享文件夹。使用关键词搜索文件内容。

2.4 凭据与令牌信息获取

这是信息收集的“皇冠”,目的是获取能够用于身份验证的“钥匙”。

  • 内存中的凭据:利用工具从Lsass进程内存中提取登录过的用户明文密码、哈希(NTLM Hash)或Kerberos票据。
  • 存储的凭据:查找浏览器保存的密码、Wi-Fi密码、RDP连接凭据、PuTTY会话密码、各类管理工具和客户端配置文件中的密码。
  • Windows凭据管理器:查看当前用户或系统存储的Windows凭据。
  • Kerberos票据:在域环境中,获取当前用户的TGT(票据授予票据)或服务票据,可用于票据传递攻击。

注意:凭据提取行为在防护严格的网络中极易触发告警(如Windows Defender Credential Guard、ATP对Lsass的防护)。在实际渗透测试中,需根据规则和目的谨慎使用,并优先考虑不接触Lsass的替代方法。

3. 手动命令与内置工具实战

在实战中,尤其是在环境受限(无法上传或运行外部工具)的情况下,熟练使用Windows系统自带的命令和工具是必备技能。它们低调、有效,是“无文件攻击”或“Living off the Land”战术的体现。

3.1 系统与用户信息收集

打开命令提示符(cmd)或PowerShell,一系列命令可以让你快速了解立足点。

查看系统信息:

systeminfo

这个命令会输出一长串信息,重点关注“OS 名称”、“OS 版本”(判断Win10/WinServer 2016等)、“系统类型”(64位/32位)、“补丁程序”列表。补丁列表可以帮助你快速寻找缺失的漏洞补丁,评估提权可能性。

查看当前用户和权限:

whoami whoami /priv net user net localgroup administrators

whoami简单直接。whoami /priv列出当前用户的所有特权,例如SeDebugPrivilege(调试权限)对后续进程注入、凭据提取至关重要。net usernet localgroup administrators用于查看本地用户和管理员组。

查看网络配置:

ipconfig /all arp -a route print netstat -ano

ipconfig /all获取完整的IP、网关、DNS信息。arp -a查看ARP缓存,它能揭示近期与本机通信过的内网IP和MAC地址,是发现同网段主机的“被动”方法。route print看路由表,判断是否存在多网卡或复杂路由。netstat -ano查看所有网络连接和监听端口,-a显示所有,-n以数字形式显示地址和端口,-o显示关联的进程ID。结合任务管理器,可以找出可疑的外连或内连。

3.2 内网主机与端口发现(无外部工具)

在没有Nmap、Masscan等专业扫描器时,我们可以用系统命令进行基础的探测。

同网段存活主机发现(ARP):由于ARP协议工作在链路层,同网段内使用ARP探测速度快且相对隐蔽。

# 一种简单的循环Ping,但可能触发ICMP日志 for /l %i in (1,1,254) do @ping -n 1 -w 50 192.168.1.%i | findstr "TTL=" # 更推荐:使用arp命令先Ping一个广播地址或已知IP更新缓存,再查看arp缓存 ping 192.168.1.255 -n 1 >nul arp -a | findstr “动态”

第二种方法更巧妙:先ping一个广播地址(或一个已知存在的主机),这会促使本机发送ARP请求,更新ARP缓存表。然后查看ARP缓存中“动态”类型的条目,这些就是当前活跃的同网段主机。这种方法没有主动发送大量探测包,更隐蔽。

端口连接测试(Telnet或PowerShell):Windows默认可能未安装Telnet客户端,但PowerShell是更强大的选择。

# 使用Telnet(如果可用) telnet 192.168.1.10 445 # 使用PowerShell Test-NetConnection (Windows 8/2012及以上) Test-NetConnection 192.168.1.10 -Port 445

如果端口开放,Telnet会显示一个空白窗口或连接成功;PowerShell命令则会明确返回TcpTestSucceeded : True。你可以写一个简单的PowerShell或批处理脚本来循环测试一批主机的关键端口。

3.3 域环境信息枚举

如果systeminfo中的“域”字段显示了你所在的域名,或者net config workstation命令输出中有“工作站域”信息,那么恭喜,你进入了一个更有趣的环境。

发现域控制器和域名:

nltest /dsgetdc:域名 # 或者 net group "Domain Controllers" /domain

如果不知道完整域名,可以尝试set命令查看环境变量USERDOMAINLOGONSERVER,后者通常指向为你提供登录服务的域控制器。

枚举域用户和计算机:

net user /domain net group /domain net group "Domain Admins" /domain net group "Enterprise Admins" /domain net localgroup /domain

net user /domain会列出域内所有用户账户,信息量巨大。net group /domain列出所有域组。重点查看Domain Admins(域管理员)和Enterprise Admins(企业管理员,权限更高)的成员,这些是你的终极目标。

查询域内计算机列表:

net group "Domain Computers" /domain

或者使用更强大的dsquery命令(需要安装RSAT工具或直接在域控制器上):

dsquery computer

查找共享资源:

net view /domain:域名 # 查看某台主机的共享,例如域控 net view \\DC01 /all

实操心得:在真实的渗透测试中,直接使用net命令进行大量枚举(如net user /domain)可能会在域控的安全日志(事件ID 4661、4662)中留下大量“目录服务访问”审计记录,容易被蓝队发现。因此,在需要隐蔽的行动中,我会优先使用基于LDAP查询的、更低调的工具,或者控制查询的频率和范围。

4. 专业工具链的自动化收集

当手动命令无法满足效率需求,或者我们需要更全面、更结构化的信息时,就需要借助专业的工具。这些工具通常需要上传到目标机器执行。

4.1 综合信息收集工具

这类工具是“瑞士军刀”,一键运行就能获取大量信息。

PowerSploit 的 PowerView:这不是一个独立的exe,而是一系列PowerShell脚本。它通过.NET与AD交互,功能极其强大且灵活。

# 导入模块后,可以执行诸如 Get-NetDomain # 获取域信息 Get-NetUser # 获取域用户 Get-NetComputer # 获取域计算机 Get-NetShare # 枚举共享 Find-LocalAdminAccess # 寻找当前用户具有本地管理员权限的机器

PowerView的优势在于它是纯PowerShell,可以绕过一些应用白名单策略,并且能进行非常复杂的查询和过滤。缺点是需要在内存中加载脚本,可能被AMSI(反恶意软件扫描接口)拦截。

BloodHound 的采集器 SharpHound / Ingestor:BloodHound是域渗透的“核武器”,而SharpHound是它的数据采集器。它不直接用于攻击,而是通过LDAP查询、本地API调用、会话枚举等方式,收集域内用户、组、计算机、权限、会话等所有关系数据,生成一个JSON文件。然后你可以在自己的攻击机上用BloodHound图形界面导入这个JSON,它会自动分析出通往域管理员的最短路径(例如:哪些用户对哪些机器有本地管理员权限、哪些用户是敏感组的成员等)。

SharpHound.exe -c All

运行后,它会生成一个压缩包。这个工具非常高效,但采集行为本身(大量的LDAP查询和网络会话枚举)在开启详细审计的域中会非常明显。

Empire / Covenant 等C2框架的信息收集模块:如果你已经通过C2(命令与控制)框架建立了会话,那么框架内部通常集成了完善的信息收集模块。例如,在Empire中,你可以使用shell whoami执行系统命令,也可以使用专门的模块如powershell/situational_awareness/network/portscan进行端口扫描,powershell/situational_awareness/host/winenum进行主机枚举。这些模块的输出会直接回传到C2服务器,便于集中管理。

4.2 网络扫描与资产发现工具

Nmap:虽然是Linux下的神器,但在Windows上同样有编译好的版本。它功能全面,从主机发现、端口扫描到服务版本探测、操作系统识别、甚至漏洞脚本扫描。

nmap -sn 192.168.1.0/24 # 主机发现扫描 nmap -sS -sV -O 192.168.1.10 # SYN扫描,服务版本探测,操作系统识别 nmap -p 445,3389,135,139 --script smb-os-discovery,smb-enum-shares 192.168.1.0/24 # 针对SMB的脚本扫描

在内网使用Nmap需要注意扫描速度,过快的全端口扫描可能触发IPS/IDS告警。

Masscan:号称“世界上最快的端口扫描器”,采用异步传输,速度极快,适合在拥有高带宽权限时快速扫描大网段。

masscan 10.0.0.0/8 -p445 --rate=10000

但它的准确性有时不如Nmap,且攻击特征明显,通常用于初步的广撒网式探测。

Advanced IP Scanner / Angry IP Scanner:这类是带有图形界面的轻量级扫描工具,易于使用,能快速发现网络中的设备,并尝试识别设备类型和主机名。在需要快速进行可视化侦察时很有用。

4.3 凭据提取工具

这是最敏感的一类工具,务必在授权测试中谨慎使用。

Mimikatz:凭据提取的“王者”。最著名的功能是从Lsass进程内存中提取明文密码、NTLM哈希、Kerberos票据。

privilege::debug # 尝试提升到Debug权限 sekurlsa::logonpasswords full # 提取内存中的凭据

在Windows 10/2012 R2之后,由于LSASS保护机制,直接运行sekurlsa::logonpasswords可能失败或无法提取明文。需要配合其他技术绕过,如使用Mimidrv驱动、利用SspiCli.dll等。

Procdump + 本地解析:一种更隐蔽的方式。先用微软官方的调试工具Procdump将Lsass进程的内存转储到磁盘。

procdump.exe -accepteula -ma lsass.exe lsass.dmp

然后将dump文件下载到你的攻击机,在本地用Mimikatz读取。

mimikatz # sekurlsa::minidump lsass.dmp mimikatz # sekurlsa::logonpasswords

这种方式避免了在目标机器上直接加载Mimikatz,可能绕过一些内存扫描。

LaZagne / Windows Credential Editor (WCE):这些工具专注于提取系统中存储的各种凭据,如浏览器密码、Wi-Fi密码、RDP凭据、VNC密码等。LaZagne是跨平台的,模块化设计,可以针对特定应用进行提取。

重要警告:凭据提取行为是安全防护的重点监控对象。现代EDR(终端检测与响应)产品对进程注入、对Lsass的访问、调用特定API(如LsaEnumerateLogonSessions)有高度敏感的检测规则。在对抗性强的环境中,需要采用更高级的绕过技术,或者优先寻找其他途径(如窃取令牌、滥用Kerberos协议缺陷)而非直接提取密码哈希。

5. 隐蔽与规避技巧实录

在真实的攻防对抗中,粗暴的信息收集会迅速暴露你的行踪。蓝队的安全运营中心(SOC)盯着各种日志和告警。因此,隐蔽性和规避能力至关重要。

5.1 降低扫描与枚举的噪音

  • 慢速扫描:避免使用Nmap的-T5(疯狂模式)或Masscan的极高发包速率。使用-T2(礼貌模式)或-T1(猥琐模式),并添加随机延迟--scan-delay--max-rate限制速率。
  • 分散扫描源:如果控制了多台跳板机,可以将扫描任务分散到不同主机、不同时间段进行,避免单一IP产生大量可疑流量。
  • 使用合法协议和端口:将扫描流量伪装成正常的业务流量。例如,使用基于DNS协议的信息渗出工具(如DNS隧道)进行数据传输,或者将扫描命令嵌入到正常的HTTP/HTTPS请求中。
  • 利用信任关系:如果域内存在管理通道(如WinRM、PSRemoting),可以优先在这些通道内执行命令,其产生的日志可能不同于普通的网络扫描日志。

5.2 绕过日志与审计

  • 清除事件日志:在获取足够权限后,可以使用wevtutil命令清除Windows事件日志,但这是一个非常明显的入侵指标,不到万不得已不应使用。
    wevtutil cl System wevtutil cl Security wevtutil cl Application
  • 使用无文件技术:尽可能在内存中执行操作,不向磁盘写入文件。使用PowerShell的IEX (New-Object Net.WebClient).DownloadString()方式从远程加载脚本到内存执行,或者使用C2框架的纯内存模块。
  • 混淆命令与流量:对执行的命令进行编码(如Base64)、混淆,避免在命令行日志中出现敏感关键词。使用加密的C2通道。

5.3 针对AV/EDR的绕过

  • 工具免杀:对常用的信息收集工具(如Mimikatz、PowerView的ps1脚本)进行代码混淆、加壳、修改特征码,或者自己用C#/Go/Python重写核心功能,编译成白名单程序签名的样子。
  • Living off the Land:最大化利用系统自带组件。除了前面提到的netdsquery,还有wmicscreg等。PowerShell本身就是一个极其强大的“合法”工具,通过加载仅存在于内存中的脚本片段(如AMSI绕过脚本)来执行恶意功能。
  • 进程注入与父进程欺骗:将恶意代码注入到explorer.exesvchost.exe等可信进程的内存空间中执行,并伪造其父进程为services.exe等系统进程,以绕过基于进程链的检测。
  • 直接系统调用(Syscall):高级攻击者会直接调用操作系统底层函数(如NtReadVirtualMemory),而不是通过高级API(如ReadProcessMemory),因为许多EDR通过Hook这些高级API来监控行为,而直接系统调用可以绕过这些Hook。

6. 信息整理与后续攻击路径规划

收集到海量信息后,如何整理并转化为攻击路线图是关键。杂乱的数据没有价值。

1. 建立资产清单:创建一个表格或数据库,记录所有发现的IP、主机名、开放端口、操作系统、发现的用户(特别是高权限用户)、共享资源、凭据片段等。推荐使用OneNote、CherryTree或专门的渗透测试管理平台(如Dradis, Serpico)。

2. 绘制网络拓扑图:根据路由信息、ARP表、扫描结果,尝试绘制内网的网络拓扑。识别出核心网段(如服务器区、管理区)、隔离区(DMZ)、办公网段等。这有助于理解数据流向和信任边界。

3. 标识高价值目标:

  • 权限目标:域控制器、备份服务器、安全管理系统(如SIEM、防病毒控制台)、数据库服务器。
  • 数据目标:文件服务器、代码仓库(Git/SVN)、邮件服务器、 confluence/Wiki知识库。
  • 用户目标:域管理员、企业管理员、IT运维人员、高管账户。

4. 规划横向移动路径:结合BloodHound的分析结果或手动分析,规划从当前立足点到高价值目标的路径。例如:

  • 当前用户 -> 对某台服务器有本地管理员权限(通过Find-LocalAdminAccess发现)-> 在该服务器上获取新凭据 -> 新凭据是某个域组的成员 -> 该组对域控制器有某些权限...
  • 或者:发现一个弱口令(或通用口令)的域用户 -> 该用户在多台机器上有RDP登录权限 -> 通过RDP登录其中一台,再次进行信息收集...

5. 制定凭证利用策略:

  • 明文密码:可以直接用于远程登录(如RDP, WinRM)、运行runas命令、访问共享等。
  • NTLM哈希:可用于哈希传递攻击(Pass-the-Hash, PtH),在不需要明文密码的情况下,向支持NTLM认证的服务(如SMB, RPC)进行身份验证。工具如Mimikatz的sekurlsa::pth或Impacket套件中的psexec.pysmbexec.py
  • Kerberos票据:可用于票据传递攻击(Pass-the-Ticket, PtT)或黄金票据/白银票据攻击,直接获取对特定服务的访问权限。

信息收集绝非一次性任务,而是一个贯穿整个内网渗透测试周期的持续性活动。每当你获得新的立足点、新的权限,都需要重新进行一次局部或全局的信息收集,更新你的“地图”,因为新的位置可能让你看到之前看不到的网络区域和资产。这个过程是循环往复、不断迭代的,直到你达成最终的攻击目标。真正的挑战不仅在于收集,更在于如何在海量信息中快速找到那条通往胜利的、最隐蔽的路径。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询