深入剖析 Windows 网络服务:用 witr 一键溯源所有监听端口

深入剖析 Windows 网络服务:用 witr 一键溯源所有监听端口

在 Windows 系统管理中,我们常常需要知道"哪个进程在监听这个端口?"、"这个服务是怎么启动的?"、"它为什么在运行?"。传统的 netstat 只能告诉你 PID,而任务管理器只能看到进程名,要理清进程的来龙去脉,往往需要手动追踪父进程、查阅服务配置,过程繁琐且容易遗漏。

witr(What Is This Running?)正是为解决这一问题而生的轻量级命令行工具。它能够递归追踪进程的祖先链,展示完整的启动路径、服务信息、网络监听详情,并标记可疑特征,让复杂的进程溯源变得一目了然。

本文将通过一个真实的批量分析案例,带你全面掌握 witr 的应用,学会如何快速审计 Windows 系统上所有监听端口的进程。


一、witr 核心功能速览

witr 是一个跨平台的开源工具(支持 Windows、Linux、macOS),其核心功能包括:

  • 按进程名/PID/端口/文件查询:灵活定位目标。
  • 显示进程详细信息:用户、服务名、命令行、启动时间、工作目录。
  • 递归追踪启动链 :从目标进程一路追溯到系统初始化进程(如 wininit),清晰展示父子关系。
  • 列出所有监听地址:包括 IPv4 和 IPv6,以及具体接口。
  • 生成安全警告:如"监听在公网接口"、"服务名与进程名不匹配"、"无已知父进程"等。
  • 支持多种输出格式:普通文本、JSON、树形结构,便于集成到脚本中。

二、准备工作:安装与批量分析脚本

本文使用的环境是 Windows,已下载 witr-windows-amd64.exe。为了全面审计系统中所有监听端口,我们编写了一个 PowerShell 脚本,它利用 netstat 提取所有处于 LISTENING 状态的端口,然后对每个端口执行 witr -o <port>

powershell 复制代码
# 获取所有监听端口的端口号(去重)
$ports = netstat -ano | Select-String "LISTENING" | ForEach-Object {
    if ($_ -match "\[.*\]:(\d+)|(\d+\.\d+\.\d+\.\d+):(\d+)") {
        if ($matches[1]) { $matches[1] } else { $matches[3] }
    }
} | Sort-Object -Unique

# 对每个端口执行 witr -o
foreach ($port in $ports) {
    Write-Host "`n===== 分析端口 $port =====" -ForegroundColor Cyan
    & "C:\Users\Administrator\Downloads\witr-windows-amd64\witr.exe" -o $port
}

运行该脚本后,我们得到了数十个端口的详细分析结果。下面我们挑选几个典型实例进行解读。


三、典型案例解读

1. 系统核心服务:RPC 端口 135

复制代码
===== 分析端口 135 =====
Target      : svchost.exe
Process     : svchost.exe (pid 1316)
User        : NT AUTHORITY\NETWORK SERVICE
Service     : RpcEptMapper
Command     : C:\Windows\system32\svchost.exe -k RPCSS -p
Started     : 3 hours ago (Fri 2026-02-20 14:22:36 +08:00)

Why It Exists :
  wininit.exe (pid 8) → services.exe (pid 976) → svchost.exe (pid 1316)

Source      : RpcEptMapper (windows_service)
Registry Key : HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper

Listening   : 0.0.0.0:135, [::]:135

Warnings    :
  • Process is listening on a public interface
  • Service name and process name do not match

解读

  • Target/Process :进程名为 svchost.exe,PID 1316,这是 Windows 的标准服务宿主进程。
  • User :运行在 NETWORK SERVICE 账户下,权限适中,符合 RPC 服务的需求。
  • Service :服务名为 RpcEptMapper(RPC 终结点映射器),这是 Windows 的核心服务之一。
  • Command :启动命令为 svchost.exe -k RPCSS -p,表明它属于 RPCSS 服务组。
  • Why It Exists :启动链为 wininitservicessvchost,这是标准的 Windows 服务启动路径,无异常。
  • Listening:监听在所有接口的 135 端口,这是 RPC 服务的默认端口。
  • Warnings
    • "监听在公共接口":由于 RPC 服务需要对外提供服务(如远程管理),这属于正常现象,但如果机器暴露在公网,建议通过防火墙限制。
    • "服务名与进程名不匹配":svchost.exe 承载多个服务,服务名是 RpcEptMapper,进程名是 svchost.exe,这是合理的。

结论:该进程是合法的 Windows 系统服务,无需担忧。


2. PID 4 的特殊进程:System

复制代码
===== 分析端口 445 =====
Target      :
Process     :  (pid 4)
Command     :
Started     : 3 hours ago (Fri 2026-02-20 14:22:30 +08:00)

Why It Exists :
   (pid 4)

Source      : unknown
Listening   : 0.0.0.0:445, 0.0.0.0:5357, ... (多个端口)

Warnings    :
  • Process is listening on a public interface
  • No known supervisor or service manager detected

解读

  • PID 4 是 Windows 的 System 进程(即内核进程),它本身不是一个普通的用户态进程,因此 witr 无法获取其命令、启动链等详细信息。
  • 它监听了多个端口:445(SMB)、5357(网络发现)、5985(WinRM)、47001(WinRM 服务)等。这些都是 Windows 内置功能使用的端口,由内核或驱动直接处理,没有对应的用户态服务名。
  • 警告"No known supervisor"是正常的,因为 System 进程由内核初始化,不在服务管理器管理范围内。

结论:PID 4 的监听都是 Windows 核心功能,无需干预。但同样,如果不需要 SMB 等服务,建议在防火墙中限制。


3. 第三方软件:Acunetix 漏洞扫描器

Acunetix 是一个 Web 漏洞扫描工具,它在系统中启动了多个进程,分别监听不同端口。我们来看几个典型:

(1) Acunetix Web 控制台(端口 3443)
复制代码
===== 分析端口 3443 =====
Target      : opsrv.exe
Process     : opsrv.exe (pid 7900)
User        : NT AUTHORITY\SYSTEM
Command     : "C:\Program Files (x86)\Acunetix\25.1.250204093\opsrv.exe" --conf C:\ProgramData\Acunetix\settings.ini
Started     : 3 hours ago (Fri 2026-02-20 14:22:38 +08:00)

Why It Exists :
  wininit.exe (pid 8) → services.exe (pid 976) → supervisor.exe (pid 4480) → opsrv.exe (pid 7900)

Source      : supervisord (supervisor)
Working Dir : C:\Program Files (x86)\Acunetix\25.1.250204093\
Listening   : 0.0.0.0:3443

Warnings    : • Process is listening on a public interface

解读

  • 进程opsrv.exe 是 Acunetix 的主服务进程。
  • 启动链 :由 supervisor.exe 启动,而 supervisor.exe 本身是由 services.exe 启动的。这表明 Acunetix 使用了进程管理工具(supervisord)来管理其组件。
  • 监听:3443 端口通常用于 HTTPS 管理界面,监听在所有接口,意味着可以从网络访问该控制台。
  • 警告:监听在公共接口。如果该机器是内部扫描服务器,且网络环境安全,可以接受;否则建议通过防火墙限制访问 IP。
(2) Acunetix 数据库(端口 35432)
复制代码
===== 分析端口 35432 =====
Target      : postgres.exe
Process     : postgres.exe (pid 6080)
User        : NT AUTHORITY\LOCAL SERVICE
Command     : "C:\Program Files (x86)\Acunetix\pg\bin\postgres.exe" -D "C:\ProgramData\Acunetix\db"
Started     : 3 hours ago

Why It Exists :
  wininit.exe → services.exe → pg_ctl.exe (pid 4488) → postgres.exe (pid 6080)

Source      : Acunetix Database (windows_service)
Registry Key : HKLM\SYSTEM\CurrentControlSet\Services\Acunetix Database
Listening   : 127.0.0.1:35432, [::1]:35432

解读

  • 进程:PostgreSQL 数据库进程,用于存储扫描数据。
  • 用户LOCAL SERVICE 账户,权限受限,符合数据库服务的最佳实践。
  • 监听:仅监听在本地回环地址(127.0.0.1 和 ::1),外部无法直接访问,安全性较高。
  • 无警告:这说明其配置合理。
(3) Acunetix 消息队列(端口 4222)
复制代码
===== 分析端口 4222 =====
Target      : nats-server.exe
Process     : nats-server.exe (pid 7868)
User        : NT AUTHORITY\SYSTEM
Command     : "C:\Program Files (x86)\Acunetix\broker\nats-server.exe" -c "C:\Program Files (x86)\Acunetix\broker\nats-server.conf"
Started     : 3 hours ago

Why It Exists :
  wininit.exe → services.exe → supervisor.exe (pid 4480) → nats-server.exe (pid 7868)

Source      : supervisord (supervisor)
Listening   : 127.0.0.1:4222

解读

  • NATS 是一个轻量级消息系统,用于 Acunetix 内部组件通信。
  • 监听在本地回环,安全。
(4) Acunetix 传感器桥接(端口 7880)
复制代码
===== 分析端口 7880 =====
Target      : sensor-bridge.exe
Process     : sensor-bridge.exe (pid 11524)
User        : NT AUTHORITY\SYSTEM
Command     : "C:\Program Files (x86)\Acunetix\25.1.250204093\data\acusensor\sensor-bridge.exe" --ssl-cert ... --interface 0.0.0.0 --port 7880
Started     : 3 hours ago

Why It Exists :
  wininit.exe → services.exe → supervisor.exe → opsrv.exe → sensor-bridge.exe (pid 11524)

Source      : supervisord (supervisor)
Listening   : 0.0.0.0:7880

Warnings    : • Process is listening on a public interface

解读

  • 传感器桥接进程,用于与外部扫描传感器通信,监听在所有接口(0.0.0.0)。这可能意味着它可以接受来自网络的连接,需要确保网络访问控制得当。

4. 媒体播放器:恒星播放器(StellarPlayer)

复制代码
===== 分析端口 1995 =====
Target      : StellarPlayer.exe
Process     : StellarPlayer.exe (pid 9852)
User        : LENOVO-LXW\Administrator
Command     : "D:\StellarPlayer\StellarPlayer.exe"  "C:\Users\Administrator\Desktop\优雅华尔兹马年新春祝福.mp4"
Started     : 3 hours ago

Why It Exists :
  StellarPlayer.exe (pid 9852)

Source      : unknown
Working Dir : D:\StellarPlayer\
Listening   : 0.0.0.0:1995, 0.0.0.0:49996, 127.0.0.1:59927, 以及多个 IP 上的 59927

Warnings    :
  • Process is listening on a public interface
  • No known supervisor or service manager detected

解读

  • 进程StellarPlayer.exe 是一款本地媒体播放器,但为什么它会监听多个网络端口?从命令看,它正在播放一个本地视频文件,却打开了 1995、49996、59927 等多个端口,且监听在所有接口上(包括公网 IP)。
  • 启动链:没有父进程,说明是用户直接启动的(可能是双击桌面图标)。
  • 来源:unknown,表示不是通过服务管理器启动。
  • 警告:两个警告都非常重要------监听在公网接口,且没有明确的管理器。媒体播放器监听端口通常是为了 DLNA、AirPlay 或远程控制功能,但若用户不需要这些功能,建议在软件设置中禁用网络服务,或通过防火墙阻止这些端口。

进一步检查 :我们看到还有一个子进程 StellarMediaServer.exe(PID 2484)也在监听 49952 端口,且是由 StellarPlayer.exe 启动的,这证实了播放器启动了媒体服务器组件。

安全建议:如果不需要将本机媒体共享到网络,应检查播放器设置,关闭"允许远程控制"或"DLNA 服务"等选项,或使用 Windows 防火墙阻止这些端口的入站连接。


5. VMware 授权服务(端口 902、912)

复制代码
===== 分析端口 902 =====
Target      : vmware-authd.exe
Process     : vmware-authd.exe (pid 4788)
User        : NT AUTHORITY\SYSTEM
Service     : VMAuthdService
Command     : "C:\Program Files (x86)\VMware\VMware Workstation\vmware-authd.exe"
Started     : 3 hours ago

Why It Exists :
  wininit.exe → services.exe → vmware-authd.exe

Source      : VMAuthdService (windows_service)
Listening   : 0.0.0.0:902, 0.0.0.0:912

Warnings    : • Process is listening on a public interface
              • Service name and process name do not match

解读

  • VMware 授权服务,用于虚拟机身份验证。默认监听 902 和 912 端口。
  • 启动链正常,服务注册表也存在。
  • 警告"监听在公网接口"意味着如果主机连接了公网,这些端口可能被扫描。通常这些端口只在本地网络使用,建议在虚拟网络编辑器或防火墙中限制访问来源。

6. OpenSSH 服务器(端口 22)

复制代码
===== 分析端口 22 =====
Target      : sshd.exe
Process     : sshd.exe (pid 4668)
User        : NT AUTHORITY\SYSTEM
Service     : sshd
Command     : C:\Windows\System32\OpenSSH\sshd.exe
Started     : 3 hours ago

Why It Exists :
  wininit.exe → services.exe → sshd.exe

Source      : sshd (windows_service)
Listening   : 0.0.0.0:22, [::]:22

Warnings    : • Process is listening on a public interface
              • Service name and process name do not match

解读

  • Windows 自带的 OpenSSH 服务器,以 SYSTEM 权限运行。
  • 监听在所有接口,意味着可以从任何地方 SSH 登录。如果你确实需要远程管理,建议使用密钥认证并禁用密码登录,或配置防火墙只允许特定 IP。

四、witr 输出字段详解

通过以上案例,我们可以总结出 witr 输出的各个字段的含义:

字段 说明
Target 查询的目标(进程名或端口)
Process 实际进程名称及 PID
User 运行该进程的用户账户
Service 对应的 Windows 服务显示名(如果是以服务形式运行)
Command 完整的启动命令行
Started 进程启动时间
Why It Exists 父进程链,从最顶层到当前进程
Source 进程的来源(如 windows_service、supervisor、unknown)
Registry Key 如果是服务,显示其在注册表中的路径
Working Dir 进程的工作目录
Listening 该进程监听的地址和端口列表
Warnings 启发式安全警告

五、常见警告及其含义

  1. Process is listening on a public interface

    进程监听在 0.0.0.0 或公网 IP 上,意味着任何能访问该 IP 的人都可以尝试连接。根据具体服务判断是否需要限制。

  2. Service name and process name do not match

    服务名与进程文件名不一致,这在 svchost 等宿主进程中非常常见,可以忽略;但如果是一个独立进程,可能需要确认是否伪装。

  3. No known supervisor or service manager detected

    进程不是通过服务管理器或常见 supervisor 启动的,通常是用户直接运行的程序,需要留意其来源。

  4. Process has no listening endpoints

    进程没有监听任何端口,说明它只是客户端或后台工作进程,不提供网络服务。


六、批量分析的价值与后续行动

通过上述批量脚本,我们只需几分钟就能全面掌握系统上所有网络服务的"底细"。你可以:

  • 识别未知或可疑服务:如果某个端口对应一个你不认识的进程,且没有合法的公司签名,可以进一步调查。
  • 检查安全配置:对于监听在公网接口的进程,评估是否需要限制访问。
  • 发现软件残留:卸载软件后可能仍有进程在运行,可以通过 witr 定位并手动终止。
  • 审计开机启动项:结合启动链,判断是否有恶意软件通过服务或计划任务持久化。

后续建议

  • 将输出保存到文件(如 witr_audit.txt)供日后对比。
  • 对每个带警告的进程,逐一核实其必要性,并采取相应措施(如防火墙规则、禁用服务)。
  • 定期运行此脚本,监控系统变化。

七、总结

witr 是一款简单而强大的进程溯源工具,它通过递归追踪父子关系,将零散的进程信息整合成清晰的报告。结合 PowerShell 脚本,我们可以轻松地对整个系统的网络服务进行全面审计,无论是系统管理员还是安全分析师,都能从中受益。

通过本文的实例,你应该已经掌握了 witr 的基本用法和输出解读技巧。希望你能将它纳入日常工具箱,让 Windows 进程管理变得更加透明、可控。

项目地址https://github.com/pranshuparmar/witr
下载页面https://github.com/pranshuparmar/witr/releases

相关推荐
xiejava10183 小时前
网络安全资产画像实战
安全·web安全·网络安全
overmind4 小时前
oeasy Python 116 用列表乱序shuffle来洗牌抓拍玩升级拖拉机
服务器·windows·python
独自破碎E4 小时前
Windows 环境下 OpenClaw 的安装与千问大模型配置
windows
开开心心就好5 小时前
实用系统备份还原,小巧免PE备份快镜像小
windows·计算机视觉·pdf·计算机外设·迭代器模式·excel·桥接模式
Bruce_Liuxiaowei5 小时前
Windows 进程溯源工具 witr:原理、安装与实战
windows·网络安全
cjl_8520086 小时前
MySQL-递归查询
数据库·windows·mysql
菩提小狗7 小时前
第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件_笔记|小迪安全2023-2024|web安全|渗透测试|
笔记·安全·web安全
阿昭L7 小时前
Windows内存管理中的交换空间
windows·操作系统·分页机制
亓才孓7 小时前
【MyBatis Runtime Exception】自动驼峰映射对Map不生效,应该在查询中起别名
java·windows·mybatis