windows信息收集

Windows 信息收集是网络安全领域中一个至关重要的前置环节,无论是对于防御方的安全运维、应急响应,还是对于授权测试方的渗透测试,都具有决定性的作用。

简单来说,信息收集就是"摸清家底"和"绘制地图"的过程,其核心目的不是盲目行动,而是为了后续的精准决策和高效操作。

为什么要进行 Windows 信息收集?

信息收集的根本目的是为了降低盲目性、提高成功率、规避风险。在对一个 Windows 环境(无论是单台主机还是整个企业内网)进行任何操作之前,全面了解其状况是至关重要的。

  • 识别攻击面: 找出系统中可能存在的漏洞和弱点,例如未修补的系统、配置错误的服务或弱口令账户。
  • 制定精准策略: 基于收集到的信息,可以制定最有效的行动方案,避免无效尝试和触发安全警报。
  • 评估风险等级: 判断系统的重要性、敏感数据的位置以及潜在安全事件的影响范围。

信息收集有什么用?

信息收集的用途广泛,主要可以归纳为以下几个层面:

  1. 系统层面:

    • 操作系统与补丁: 通过 systeminfo 等命令了解系统版本、架构和已安装的补丁,从而判断是否存在如"永恒之蓝"(MS17-010)等已知漏洞。
    • 进程与服务: 使用 tasklistwmic 等工具查看运行的进程和服务,识别潜在的后门、恶意程序或可利用的脆弱服务。
    • 已安装软件: 检查注册表或程序列表,发现可能存在漏洞的第三方应用(如旧版数据库、Web服务器等)。
  2. 网络层面:

    • 网络拓扑: 通过 ipconfig /allroute printnetstat -ano 等命令,可以绘制出内网的IP地址分布、网段划分、路由关系以及主机间的活跃连接,为横向移动指明方向。
    • 存活主机: 探测同一网段或其他可达网段中的其他主机,寻找下一个目标。
  3. 用户与权限层面:

    • 账户信息: 使用 net userwhoami /all 等命令,可以列出本地及域用户、用户所属的组(特别是管理员组),从而识别高价值账户。
    • 权限配置: 检查用户的特权(whoami /priv)和组策略,寻找权限提升或配置不当的机会。
  4. 敏感信息层面:

    • 凭据与配置: 查找系统中可能明文存储的密码、哈希值、SSH密钥、数据库连接字符串等,这些信息往往能直接用于权限提升或横向移动。
    • 共享资源: 使用 net share 命令查看本地或网络共享文件夹,可能发现包含敏感数据的未授权访问路径。

对应后续行动有什么用?

信息收集的成果直接决定了后续行动的效率和成败,是连接"发现"与"利用/处置"的桥梁。

在渗透测试或攻击模拟场景中:
  1. 权限提升 (Privilege Escalation):

    • 利用系统漏洞: 如果信息收集发现系统缺少关键补丁(如通过 systeminfo),攻击者可以直接使用对应的漏洞利用程序(Exploit)来获取更高权限(如 SYSTEM 权限)。
    • 利用配置错误: 如果发现某个以高权限运行的服务其文件路径可被普通用户修改,攻击者可以替换服务程序来实现提权。
  2. 横向移动 (Lateral Movement):

    • 凭证复用: 如果在A主机上收集到了某个用户的明文密码或哈希值,并且发现该用户在B主机上也有登录权限(通过 net user /domain 等发现),攻击者就可以使用"哈希传递"(Pass-the-Hash)等技术直接登录B主机。
    • 定位关键目标: 通过收集域信息(如 net group "Domain Admins" /domain),攻击者可以精准定位域控制器(DC)和域管理员,从而将攻击矛头直指内网核心。
在安全运维或应急响应场景中:
  1. 威胁定位与清除:

    • 发现异常进程: 通过 tasklistProcess Explorer 发现可疑进程,并根据其路径、网络连接等信息判断是否为恶意软件,进而将其终止并删除。
    • 分析入侵痕迹: 通过检查系统日志(eventvwr.msc)、计划任务(schtasks)和启动项(注册表),可以追溯攻击者的入侵时间、方式和持久化手段,为彻底清除威胁提供依据。
  2. 安全加固:

    • 修复漏洞: 根据收集的补丁信息,有计划地为系统打上缺失的安全更新。
    • 优化配置: 根据发现的弱口令、不必要的开放端口或服务,进行针对性的安全策略调整,关闭高风险服务,强化账户密码策略。

那么接下来是常用的windows信息收集的命令

1. 查看系统版本号:ver

2.查看系统架构信息

有两个命令{

wmic os get osarchitecture(cmd和powershell通用)

echo %PROCESSOR_ARCHITECTURE%

}

3.服务信息枚举

3.1.1获取系统中所有服务的详细配置信息

sc query state=all

获取系统中所有服务的详细配置信息,包括服务名(SERVICE_NAME)、显示名(DISPLAY_NAME)、类型(TYPE)、当前状态(STATE)以及退出代码(WIN32_EXIT_CODE)等。

3.1.2获取服务的简要列表:wmic service list brief(powershell和cmd通用)

3.1.3获取服务名称及其执行文件路径(powershell)命令

4进程信息枚举

4.1.1

命令:tasklist(powershell和cmd通用)

用途:快速查看当前系统里跑了哪些程序,以及它们占用了多少内存。
后续行动意义:
发现杀毒软件:通过进程名(如 360tray.exe, avp.exe 等),攻击者可以判断目标机器安装了什么杀毒软件,从而决定是否需要绕过或关闭它。
寻找高权限程序:查看是否有数据库、ERP 等业务软件正在运行。

4.1.2查看进程与服务的对应关系:tasklist /svc(powershell和cmd通用)

4.1.3. 使用 WMIC 获取更详细的进程信息

4.1.4高级进程信息枚举(查看进程所有者)(powershell)命令

ps

4.1.5用途:精准识别进程权限

Get-WmiObject -Query "Select * from Win32_Process" | where {_.Name -notlike "..." } \| Select Name, Handle, @{Label="Owner";Expression={_.GetOwner().User}} | ft

后续行动意义:

提权判断:如果你看到一个进程(比如 sqlservr.exe 或 tomcat.exe)的运行用户是 SYSTEM 或 Administrator,那么攻击这个进程(例如通过 DLL 注入)就能直接获得系统最高权限。

横向移动线索:如果看到某个进程是特定域用户(如 DOMAIN\Bob)运行的,这可能意味着 Bob 刚刚登录过,或者这个服务是用 Bob 的账号配置的,这为后续的密码抓取或票据传递提供了线索。

5.1驱动信息枚举

cmd和powershell通用

driverquery

用途:列出系统中安装的所有驱动程序,包括驱动名称、显示名称、驱动类型(如内核驱动、文件系统驱动)、链接日期和路径。
后续行动的意义(非常重要):
内核提权(Kernel Exploitation):驱动程序运行在操作系统的最高特权级别(Ring 0)。如果系统中安装了存在漏洞的第三方驱动程序(例如旧版本的显卡驱动、杀毒软件驱动、或者某些硬件的老旧驱动),攻击者可以利用这些驱动漏洞编写 exploit,直接攻破内核,实现从普通用户到 SYSTEM 权限的跨越。
识别安全软件:通过驱动名,往往能识别出安装了哪些底层的安全防护软件(如卡巴斯基、火绒等),因为杀软通常会加载内核驱动来监控系统的行为。

1. 获取磁盘概览信息

cmd和powershell命令通用

wmic logicaldisk get caption,description,providername

1.1获取目录结构树

用途:以图形化的树状结构展示文件夹层级

2.获取系统已经安装的补丁信息

方法一很慢(至少需要2秒)systeminfo

核心命令:systeminfo

这是 Windows 下最经典的信息收集命令。

  • 命令systeminfo
  • 作用 :它会生成一份极其详细的系统报告,包含:
    • 主机名:电脑的名字。
    • OS 信息:系统版本(如 Windows 11 Pro)、安装时间、启动时间。
    • 硬件配置:处理器(CPU)型号、内存总量、网卡信息。
    • 补丁信息:列出了已安装的更新(Hotfix)。
  • 用途:通常用于快速评估一台电脑的整体性能和环境。

进阶用法:配合 findstr 筛选(图 4-15)

因为 systeminfo 输出的内容太多,有时我们只需要看关键信息。

  • 命令systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
  • 作用
    • |(管道符):把前一个命令的结果传给后一个命令。
    • findstr:查找字符串。
    • 这个组合命令的意思是:只显示"OS 名称"和"OS 版本"这两行。

方法2使用 PowerShell 来专门筛选出补丁信息

推荐:更快更精准

Get-HotFix

基础命令

基础命令:hostname

作用:直接显示当前计算机的名字(例如图中显示的 hehexsecurity)。

用途:在网络连接或远程控制时,用来确认当前操作的是哪台机器。

重点:获取应用程序信息

方法一:通过注册表查询(PowerShell)

Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

但是可以看到非常多

方法二,通过文件夹查询(文件系统)

Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)'

方法三:通过 WMI 对象查询

这是利用 Windows 管理规范(WMI)来获取信息,专门针对通过正规安装包(MSI)安装的软件。

Get-WmiObject -Class Win32_Product

Get-CimInstance -ClassName Win32_Product

方法四:利用攻击工具查软件、专门查 .NET 版本、专门查 PowerShell 版本。

6.获取计划任务信息

这个一下出来巨量信息,不推荐

schtasks /query /fo LIST /v

方法二:筛选非微软任务

这个也很多

schtasks /query /fo LIST /v | findstr /v "Microsoft"方法三:使用 PowerShell

Get-ScheduledTask | Where-Object {$_.TaskPath -notlike "\Microsoft*"} | Select-Object TaskName, State, Author

查看电脑开机时会自动运行哪些程序

对于系统管理员来说,这是为了优化开机速度;但对于安全人员(或黑客)来说,这是寻找"后门"的最佳位置------因为恶意软件通常会把自己藏在这里,确保电脑一重启它就能自动运行。

wmic startup get caption,command,location

查看"当前用户"的启动文件夹

dir "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

查询注册表中的启动项

这是最经典的"藏身之处"。很多软件(包括病毒)会修改注册表来实现自启动。

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

查看环境变量

set

Get-ChildItem Env: | ft Key,Value

7网络信息枚举

ipconfig /all

8.查看端口信息

netstat -ano

参数详解

-a:显示所有连接和监听端口。

通俗点说:不仅看"正在通信"的连接,还要看"开着门等别人来连"的端口。

-n:以数字形式显示地址和端口号。

通俗点说:不把 IP 地址翻译成域名(比如不把 192.168.1.1 翻译成 router.local),这样速度更快,也更直观。

-o:显示与每个连接关联的进程 ID(PID)。

通俗点说:告诉你"是哪个程序(比如 Chrome、QQ、或者某个病毒)在占用这个端口"。

9(获取路由表信息)的主要目的,是搞清楚这台电脑在网络中的"导航地图"和"交通流向"。

方法一:使用 route print 命令(图 4-33)

这是最经典、最通用的方法,在 CMD 或 PowerShell 中都可以使用。

输出解读

网络目标 / 网络掩码:定义了这条路由规则适用于哪些 IP 地址范围。例如,0.0.0.0 和 0.0.0.0 的组合,就是"默认路由",意思是"所有其他地址都走这条路"。

网关:数据包要发往的"下一跳"地址。对于默认路由,这通常就是你的路由器 IP(比如 192.168.0.1)。

接口:数据包从哪个网卡发出。比如,你的电脑有多个网卡(Wi-Fi、以太网、VPN),系统会根据路由表决定用哪个网卡。

跃点数:可以理解为"优先级"或"成本"。数字越小,优先级越高。系统会优先选择跃点数低的路由。

方法二:使用 PowerShell 的 Get-NetRoute 命令

Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix, NextHop, RouteMetric, ifIndex

10.用户信息枚举(非常重要)

实战意义
判断账户是否活跃:通过"上次登录"时间,可以判断这个账户是否经常使用。如果一个账户很久没登录,可能已经废弃,攻击价值较低。
判断密码策略:通过"密码过期"、"密码可更改"等信息,可以判断这个账户的密码策略,从而制定爆破策略。
发现特殊权限:通过"允许的工作站"、"登录脚本"等信息,可以判断这个账户是否有特殊权限,比如只能从特定工作站登录,或者有特殊的登录脚本。

1. 核心命令:net user

命令:net user
作用:列出当前系统中所有的用户账户。

  1. 进阶命令:net user 用户名

3.更深度的用户信息枚举

"如何发现那些不想被你发现的用户"。

  1. 使用 PowerShell 获取详细用户状态

Get-LocalUser | ft Name, Enabled, LastLogon

  1. 通过注册表查找"隐藏"用户

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"

3. 根据 SID 反查用户名-从上文可以看出来用户sid,然后拼接上去

通过"旁门左道"来发现用户,也就是不直接查系统账户列表,而是通过查看"用户留下的痕迹"来反推有哪些人

1. 方法一:查看 C:\Users 目录(图 4-41)

原理

Windows 系统默认会给每个在电脑上登录过的用户,在 C:\Users(或者老系统的 C:\Documents and Settings)目录下创建一个以用户名命名的文件夹,用来存桌面、文档等数据。

命令
  • CMD 方式dir C:\Users
  • PowerShell 方式Get-ChildItem C:\Users -Force | select Name
实战意义

这招非常"稳"。有些黑客会创建隐藏账户,让 net user 查不出来,但系统为了让他能存文件,必须得建文件夹。

  • 如果你看到 AdministratorPublic,这是正常的。
  • 如果你看到 TestBackupSQL_User 这种奇怪的文件夹名,那里面大概率藏着一个对应的用户账户。

方法二:查看本地用户组

原理

用户不是孤立存在的,通常会被分到不同的"组"里(比如管理员组、远程桌面组、来宾组)。通过查看组里的成员,能发现被遗漏的账户。

命令

列出所有组:

CMD:net localgroup

PowerShell:Get-LocalGroup

查看特定组的成员(这是关键):

命令:net localgroup "组名"

例如:net localgroup Administrators(查看谁是管理员)

实战意义

找大佬(管理员):执行 net localgroup Administrators,能看到谁拥有最高权限。如果看到除了 Administrator 之外还有别的用户(比如 dev_admin),那这个用户就是你的重点攻击目标。

找入口(远程桌面用户):执行 net localgroup "Remote Desktop Users",能看到谁有权远程登录这台电脑。这些人通常是活的管理员或员工。

核心目的就是为了"找到最高权限的账户,并发现其弱点"。

先用 net localgroup 看看有哪些组。

再用 net localgroup <组名> 看看组里有哪些人(特别是管理员组)。

最后用 net user <用户名> 看看具体某个人的详细情况(比如密码多久没改了)。

你总结得非常到位,这其实就是一套标准的**"权限侦查逻辑"**。

之所以要按这个顺序操作,核心目的就是为了**"找到最高权限的账户,并发现其弱点"**。

我们可以把这个过程比作"潜入一栋大楼":

  1. 第一步:net localgroup(看有哪些部门)

    • 目的摸清架构
    • 解释 :你刚进大楼,不知道谁说了算。这一步是为了找到哪个组是"核心管理层"(比如 Administrators)或者哪个组有"大门钥匙"(比如 Remote Desktop Users)。
  2. 第二步:net localgroup <组名>(查部门里有哪些人)

    • 目的锁定高价值目标
    • 解释:知道了"核心管理层"在哪,这一步就是站在门口看看到底谁在里面办公。
    • 关键点 :如果管理员组里除了默认的 Administrator,还有像 johnsarah 这种普通名字,那他们通常比管理员账户更容易攻破,是绝佳的突破口。
  3. 第三步:net user <用户名>(查某个人的底细)

    • 目的寻找弱点(攻击面)
    • 解释 :锁定了目标(比如 john),现在要查他的档案。
    • 关键点
      • 看**"密码最后设置时间"**:如果显示是"2018年",说明这人好几年没改密码,很可能用的是弱口令(如 123456john123)。
      • 看**"账户是否启用"**:别费劲去爆破一个被禁用的账户。
      • 看**"所属组"**:再次确认他的权限级别。

总结一句话:

这一套连招下来,就是为了从茫茫多的账户中,精准定位到**"那个权限最大、且最容易攻破的账户"**。

这一页主要讲的是如何查看系统的"动态状态"和"安全规则"。简单来说,前几页是在查户口,这一页是在看监控和安保手册。

你需要掌握的两个核心命令如下:

query user (或简写 quser)

  • 目的:查看当前谁在线。
  • 实战用途
    • 判断"活人":看有没有管理员正坐在电脑前操作。如果有人在线且空闲时间短,你搞破坏容易被发现。
    • 寻找机会:看有没有闲置的会话可以接管。
    • 踢人下线 :配合 logoff <ID> 命令,可以把当前在线的用户踢掉,让自己顶上去(慎用,动静很大)。

net accounts

  • 目的:查看密码策略和账户锁定策略。
  • 实战用途
    • 评估爆破风险:这是最重要的!看**"锁定阈值"**。如果是"无"或"Never",说明你可以无限次尝试猜密码,不用担心把号锁死;如果是"5次无效登录",那你猜密码就得小心翼翼。
    • 判断密码复杂度:看**"最小密码长度"**。如果要求8位以上,暴力破解就很难了;如果没要求,可能就是一两位或者弱口令。
    • 看密码时效:看**"密码最长使用期限"**。如果很久没改(比如90天),管理员可能因为懒得记而设置了简单的规律密码。

11.查看防火墙状态

命令:netsh advfirewall show allprofiles
目的:看路通不通。
实战意义:
查看防火墙是否开启。如果防火墙全关,你后面开端口、传工具都很方便。
查看不同网络环境(域网络、专用网络、公用网络)下的策略。通常"公用网络"管得最严。
查看日志位置(图中显示的 LogFilePath),有时候为了不留痕迹,攻击者会去清除这些日志。

列出防火墙阻止的端口

New-Object -ComObject HNetCfg.FwPolicy2; f.rules \| where {_.action -eq "0"} | select name, applicationname, localports

目的:找被堵住的门。

实战意义:

你想知道哪些端口是不通的。比如你想反弹一个 4444 端口,结果发现防火墙有一条规则明确禁止了 4444,那你得赶紧换个端口(比如 80 或 443)。

了解哪些程序被限制了联网,方便你做"白名单"绕过(比如利用允许联网的程序来带你的恶意流量)。

查看 Windows Defender 状态

这是查杀软的状态。
命令:Get-MpComputerStatus
目的:看有没有"狗"在咬人。
实战意义:
AntivirusEnabled:杀毒软件开没开?如果是 False,那简直是天堂,你传什么文件都没人管。
RealTimeProtectionEnabled:实时监控开没开?如果开了,你上传一个 .exe 后门可能瞬间就会被删掉。
AMServiceEnabled:反恶意软件服务开没开?

通过查看进程,判断这台机器上装了哪家杀软。

一键排查命令

tasklist | findstr /i "360tray 360sd ZhuDongFangYu QQPCRTP avcenter wsctrl usysdiag SafeDogGuardCenter D_Safe_Manage avp Mcshield FrameworkService egui ekrn ccSvcHst TMBMSRV RavMonD"

总结:进去后按照优先级优先执行的命令/程序

总结:优先级金字塔

最高级: 查杀软(保命,防止工具被杀)。

次高级: 查权限(whoami)和 查系统(systeminfo),决定下一步是提权还是横向。

普通级: 查网络、查用户、查软件(为了收集信息和长期控制)。

口诀: 先看来没来保安(杀软),再看自己多大官(权限),最后看屋里有什么宝(信息)。

相关推荐
水饺编程2 小时前
第5章,[标签 Win32] :设备的尺寸(三)
c语言·c++·windows·visual studio
code bean2 小时前
Windows 管道命令实战:从端口查看到进程定位
windows
杨云龙UP3 小时前
Windows Server 2012 环境下 Oracle 11.2 使用 expdp 实现自动备份、异地复制与定期清理_20260504
服务器·数据库·windows·mysql·docker·oracle·容器
能喵烧香3 小时前
跨越系统的开源尝试:KDE Windows版本全解析
linux·windows·开源
aaaffaewrerewrwer3 小时前
2048Merge:在线畅玩的经典2048数字合并游戏,无需下载即点即玩
安全·游戏·个人开发
AI玫瑰助手3 小时前
Python入门:Windows/macOS/Linux系统安装Python教程
windows·python·macos
智算菩萨3 小时前
OpenAI Codex 国内使用完全指南:Windows/macOS/Linux 三平台详细安装配置教程(现在最新的有gpt-5.3-codex和gpt-5.4)
linux·windows·gpt·macos·ai·ai编程·codex
m0_738120723 小时前
网路安全编程——熟悉并使用Scapy简单实现捕捉主流邮箱协议(SMTP、POP3和IMAP) 的身份凭证
网络·python·网络协议·tcp/ip·安全·网络安全
Aision_3 小时前
为什么 CTI 场景需要知识图谱?
人工智能·python·安全·web安全·langchain·prompt·知识图谱