首页/安全/安全加固速查/Windows 监听端口与进程映射核查
服务与端口收敛50 条

Windows 监听端口与进程映射核查

用 Get-NetTCPConnection 与 netstat -ano 交叉盘点监听端口,PID 映射到进程名,识别计划外监听。

安全加固速查安全更新于 2026-10-13

端口与进程映射

Windows 上盘点监听端口主要靠 Get-NetTCPConnection(PowerShell)或 netstat -ano,再用 OwningProcess / PID 映射到具体进程,判断每个对外监听的端口是否有明确业务归属。这是基线里的端口最小化动作:把对外监听清单整理成快照,之后任何计划外的监听都能靠差异比对快速定位。

基本信息

适用平台Windows 10 / Server 2016 及以上
常用命令Get-NetTCPConnection、netstat -ano、Get-Process
权限要求普通用户可看清单,获取进程路径需管理员
基线要求对外监听端口均有明确业务归属
输出可读LocalAddress、LocalPort、OwningProcess、State

典型使用场景

  • 上线前与变更后盘点服务器的对外监听端口
  • 排查可疑后门或挖矿程序留下的异常监听端口
  • 服务器迁移时制作端口与业务的对照表
  • 收敛暴露面,确认哪些服务绑定在 0.0.0.0
  • 把监听清单与 Windows 防火墙规则互相印证

清单与映射

清单与映射
Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object LocalPort | Format-Table -AutoSize   # 全部监听
netstat -ano | findstr LISTENING      # 传统方式,兼容较老系统
Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 445).OwningProcess | Select-Object Name,Path   # 端口到进程与路径
Get-NetTCPConnection -State Listen | Where-Object {$_.LocalAddress -notin '127.0.0.1','::1'} | Select-Object LocalAddress,LocalPort,OwningProcess   # 只看对外监听

输出逐列读法

列含义正常/异常
LocalAddress监听绑定的地址0.0.0.0 或 :: 为对外,127.0.0.1 与 ::1 仅本机
LocalPort监听端口号与基线清单不符即为异常
OwningProcess持有监听的进程 PID需再用 Get-Process 看进程名与路径
State连接状态Listen 为监听,Established 为已建立连接
进程路径可执行文件位置出现在临时目录或用户目录应高度警惕
把「对外监听清单」做成基线快照,之后每次盘点只对比差异,比每次从零判断快很多,也更容易发现被新增的后门端口。
出现指向临时目录、下载目录的监听进程,或系统进程的路径与官方位置不一致时,按可疑程序处理:先隔离网络,再取样取证。
监听清单要和防火墙规则一起看:端口绑定 0.0.0.0 且防火墙放行才算真正暴露;只要其中任一条件不满足,就不能按已收敛处理。

易错点

  • IPv6 监听显示为 :: 或 ::1,只过滤 127.0.0.1 会漏掉真正的对外端口,过滤规则要把 IPv6 地址算进去
  • svchost 承载多个系统服务,只看进程名无法判断归属,需要结合 Get-Service 与端口对照
  • 用 netstat -ano 却不把 PID 映射到进程,等于只看到一串端口号,必须继续查进程名与路径
  • 盘点后不留基线,下次仍然无法判断哪个监听是新增的,应保存快照并做差异对比

数据来源与参考

  • Microsoft Learn:Get-NetTCPConnection
  • CIS Windows Benchmark:端口条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌