端口通信检测(Windows 本机)
用途
对 Windows 本机执行 TCP/UDP 端口层面的通信检测,覆盖两类需求:
- 端口连通性探测 — 判断本机到某个
目标IP:端口的通信是否可达,
并区分「开放 / 关闭 / 被防火墙过滤」三种状态(这是 telnet 式测试无法给出的结论)。 - 活动连接与通信对端 — 列出当前所有 TCP/UDP 连接、对端地址、连接状态、
占用端口的进程 PID 与名称,并自动标记可疑外联。
本 skill 的输出是判定依据,不是简单罗列。每次执行后必须给出结论性判断,
而不是把原始表格丢给用户。
决策流程
按用户意图选择脚本。二者可组合使用。
场景 A:判断端口通不通 / 为什么连不上
使用 scripts/port_probe.py。
python scripts/port_probe.py --target 10.0.0.5:1433 --target 10.0.0.5:445 --timeout 3
python scripts/port_probe.py --file targets.txt --proto both # 批量,TCP+UDP
python scripts/port_probe.py -t 127.0.0.1:53 -p udp # UDP 探测
python scripts/port_probe.py -t db.internal:1521 --json # 仅取 JSON
关键参数:
- --proto:tcp(默认)/ udp / both
- --timeout:单次超时,默认 3 秒;跨网段或高延迟链路调到 5–8 秒
- --workers:并发数,默认 16;扫多个端口时可提到 32–64
状态语义(判定时必须区分):
| 状态 | 含义 | 运维结论 |
|---|---|---|
open |
TCP 握手成功 / UDP 收到响应 | 服务可达 |
closed |
收到 RST 或 ICMP 端口不可达 | 主机在线但该端口无服务 |
filtered |
连接超时、无任何响应 | 最可能是防火墙丢包,需查安全策略 |
open\|filtered |
UDP 无响应 | UDP 无握手,无法区分开放与被过滤,需换手段验证 |
closed 与 filtered 的区分是排查关键:前者是服务没起,后者是链路/防火墙问题。
必须明确告诉用户属于哪一种,否则排查方向会跑偏。
UDP 探测的固有限制:UDP 无握手,只有在收到 ICMP 端口不可达时才能判定
closed;超时只能是 open|filtered。若需确证 UDP 服务,应结合
conn_inspect.py 看该端口是否有 UDP 端点监听,或抓包验证。
场景 B:查看活动连接、对端、端口占用
使用 scripts/conn_inspect.py。
python scripts/conn_inspect.py # 全部连接
python scripts/conn_inspect.py --state Established # 只看已建立连接
python scripts/conn_inspect.py --remote 203.0.113.5 # 追某对端IP
python scripts/conn_inspect.py --port 1433 # 某端口相关连接
python scripts/conn_inspect.py --suspect # 只看被标记的
端口 → 进程:用户问「某端口被谁占用」时,用 --port 过滤,
输出中的 PID 与 进程 列即为答案。
--suspect 的解读纪律:该开关标记的是「值得看一眼」,不等于恶意。
常见误报包括企业安全客户端、远程管理工具、网盘、开发工具。
输出中若出现以下进程名,通常属正常业务,应在结论里主动说明:
LdFileGate、endpointService、nac_agent、360*、SangforFor*、
MobaXterm*、MoTTYnew、aDrive、chrome、wechatappex。
判定恶意需要多因素聚合:可疑端口 + 陌生进程 + 外联非机构内网 IP +
(可能)非签名文件。单一因素不足以定性,不要制造告警恐慌。
执行方式
脚本用受管 Python 运行,避免依赖系统环境:
C:/Users/Administrator/.workbuddy/binaries/python/versions/3.13.12/python.exe \
<skill目录>/scripts/port_probe.py --target 1.2.3.4:443
两个脚本都会在 stdout 末尾输出 === JSON === 段落,便于解析成结构化结论。
采集原始数据用 JSON,面向用户呈现用表格。
输出要求
每次检测完成后,先给结论,再给明细:
- 结论:一句话回答用户的问题(通/不通、谁占用、有无异常)。
- 判定依据:关键状态及其含义,特别是
closedvsfiltered的区别。 - 明细表:整理后的端口或连接列表。
- 建议动作:下一步排查方向(查防火墙策略、确认服务是否启动、核对进程签名等)。
需要落成巡检记录时,按 references/report_template.md 的格式产出 Markdown 报告。
边界
- 仅检测本机视角的出向/本地连接,不具备远程主机上的监听列表(那需要 SSH,另用远程手段)。
- 探测目标需为合法授权范围;不做批量大网段扫描用途。
- 脚本为只读采集,不修改任何系统配置、不启停服务。