外联端口简易查询

排查外联木马

一、netstat -ano | findstr 完整用法(排查网络连接)

这个命令核心用于查找可疑的网络连接,定位木马的外联IP/端口,以及对应的进程PID。

1. 基础补全与常用场景

1
2
3
4
5
6
7
8
9
10
11
# 1. 查找所有ESTABLISHED(已建立)的连接(重点排查外联)
netstat -ano | findstr "ESTABLISHED"

# 2. 按端口号查找(比如排查木马常用的8080、4444等可疑端口)
netstat -ano | findstr "4444"

# 3. 按IP地址查找(比如怀疑木马外联到192.168.1.100)
netstat -ano | findstr "192.168.1.100"

# 4. 按PID查找(已知可疑PID,查它的网络连接)
netstat -ano | findstr "1234" # 1234为可疑进程PID

2. 命令参数解释

  • netstat:查看网络连接、路由表等网络相关信息;
  • -a:显示所有连接和监听端口;
  • -n:以数字形式显示IP和端口(不解析域名,速度更快);
  • -o:显示每个连接对应的进程PID(关键!关联进程);
  • findstr:Windows下的字符串查找命令,类似Linux的grep。

二、getprocess 完整用法(排查进程)

PowerShell 中 Get-Process(也常简写为 gpsps)这个 cmdlet 的用法,它是 PowerShell 里用于查看和管理系统进程的核心命令,我会从基础到进阶帮你讲清楚。

1. 查看所有进程

1
2
3
4
5
6
# 查看系统中所有正在运行的进程(最基础用法)
Get-Process

# 简写形式(效果完全相同)
gps
ps

执行后会返回所有进程的关键信息,包括:

  • Handles:进程打开的句柄数
  • NPM(K):非分页内存大小(KB)
  • PM(K):分页内存大小(KB)
  • WS(K):工作集大小(KB)
  • CPU(s):进程占用的 CPU 时间
  • Id:进程 ID(PID)
  • ProcessName:进程名称

2. 按进程名筛选

1
2
3
4
5
6
7
8
# 查看所有名为 "notepad"(记事本)的进程
Get-Process -name notepad

# 支持通配符(*),查看所有以 "chrome" 开头的进程(比如 Chrome 浏览器)
Get-Process -name chrome*

# 同时查看多个进程(用逗号分隔)
Get-Process -name notepad, chrome, explorer

3. 按进程 PID 筛选

1
2
3
4
5
# 查看 PID 为 1234 的进程(替换为实际 PID)
Get-Process -id 1234

# 同时查看多个 PID 的进程
Get-Process -id 1234, 5678, 9012

注意:如果指定的 PID 不存在,会抛出 “找不到进程” 的错误,可加 -ErrorAction SilentlyContinue 忽略错误。

4. 只获取指定属性

默认输出的信息较多,可通过 Select-Object(简写 select)筛选需要的属性:

1
2
3
4
5
# 只查看进程名、PID、CPU 占用率
Get-Process chrome | Select-Object ProcessName, id, CPU

# 查看进程的所有可用属性(方便自定义筛选)
Get-Process notepad | Get-Member

5. 排序进程(按内存/CPU 占用)

Sort-Object(简写 sort)对进程按资源占用排序,方便找到耗资源的进程:

1
2
3
4
5
# 按内存(WS)降序排列,只显示前 10 个进程
Get-Process | Sort-Object WS -Descending | Select-Object -First 10

# 按 CPU 占用降序排列
Get-Process | Sort-Object CPU -Descending | Select-Object ProcessName, Id, CPU

6. 结合 Where-Object 筛选(更灵活)

Where-Object(简写 ?)设置更复杂的筛选条件,比如内存占用超过 100MB 的进程:

1
2
3
4
5
# 筛选内存(WS)大于 100MB(102400 KB)的进程
Get-Process | Where-Object { $_.WS -gt 102400 } | Select-Object ProcessName, Id, WS

# 筛选进程名包含 "java" 且 CPU 占用大于 0 的进程
Get-Process | Where-Object { $_.ProcessName -match "java" -and $_.CPU -gt 0 }

7. 终止进程(结合 Stop-Process)

Get-Process 常和 Stop-Process 配合终止进程(需注意权限):

1
2
3
4
5
# 终止所有名为 "notepad" 的进程(谨慎使用)
Get-Process -Name notepad | Stop-Process

# 终止指定 PID 的进程,加 -Confirm 会弹出确认提示
Get-Process -Id 1234 | Stop-Process -Confirm

三、查看远程计算机进程

如果需要查看远程计算机的进程,需满足:

  1. 本地和远程计算机开启 WinRM 服务;
  2. 有远程计算机的管理员权限。
1
2
# 查看远程计算机(IP 或主机名)的进程
Get-Process -ComputerName "192.168.1.100" -Credential (Get-Credential)

总结

  1. netstat -ano | findstr 核心补全逻辑:后面接端口/IP/PID/连接状态(如ESTABLISHED),用于定位可疑网络连接;
  2. Get-Process 是 PowerShell 查看进程的核心命令,支持简写 gps/ps,基础用法是直接执行(查所有进程)、按 -Name/-Id 筛选;
  3. 进阶用法可结合 Select-Object(选属性)、Sort-Object(排序)、Where-Object(复杂筛选),实现精准定位目标进程;
  4. 可配合 Stop-Process 终止进程,也可通过 -ComputerName 查看远程进程(需满足权限和服务条件)。
  5. 排查木马时,先通过netstat找外联PID,再通过getprocess定位PID对应的程序,是核心思路。

外联端口简易查询
https://blog.zhaosn.top/pen/netstat/
作者
Zhao SN
发布于
2026年1月15日
更新于
2026年1月15日
许可协议