端口与进程映射
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 且防火墙放行才算真正暴露;只要其中任一条件不满足,就不能按已收敛处理。