本文目录导读:

内网端口渗透排查是一项系统性工作,通常用于红蓝对抗中的防御方(蓝队) 检测潜在攻击路径,或攻击方(红队) 在获得初步权限后进行横向移动侦察。
作为防御方,排查的核心是“发现异常监听、识别非授权服务、阻断横向移动”,以下是标准化的排查流程、命令及思路:
第一阶段:主机级排查(单点突破检查)
目标:确认本机开启了哪些端口,哪些是合法业务,哪些是可疑后门。
Windows 系统排查
-
查看所有监听端口及对应进程(权限:管理员):
netstat -ano | findstr LISTENING # 或使用 powershell netstat -ano | Select-String "LISTENING"
-
查看对应 PID 的进程详情:
tasklist | findstr [PID] # 更详细(可查路径、启动时间、父进程) wmic process where ProcessId=[PID] get Name,ExecutablePath,ProcessId,ParentProcessId
-
查看TCP/UDP连接状态(排查已建立的恶意连接):
netstat -anob
- 重点:检查
ESTABLISHED状态连接中,对外部IP(非公司内网段)的持续连接。
- 重点:检查
-
使用 Sysinternals 工具(推荐):
- TCPView:图形化实时查看所有TCP/UDP连接,能快速发现异常IP和进程。
- Autoruns:检查自启动项中绑定的端口或服务。
Linux 系统排查
- 查看监听端口(常用组合):
# 推荐(显示进程名和PID) ss -tlnp # 或(较老系统) netstat -tlnp
- 查看已建立的连接:
ss -tan | grep ESTAB # 关注非内网段的连接 ss -tan | grep -E "10\.0\.|172\.1[6-9]\.|192\.168\."
- 查看与端口关联的进程:
lsof -i :[端口号]
- 关键检查点:
- 异常端口:如 31337, 4444, 5555, 6666, 7777, 1234, 8080 非Web服务、10000等后门常用端口。
- 非标准服务:如 SSH (22) 被改为 2222,或 Web 服务 (80/443) 被改为 8080 且非业务需要。
- 无进程的端口:部分 Rootkit 会隐藏进程,此时需用
rkhunter或chkrootkit扫描。
第二阶段:网络级排查(横向移动检测)
目标:发现攻击者已通过某台主机横向扩散到其他内网主机。
流量异常检测(如具备全流量分析能力)
- 扫描行为:
- 某台主机在短时间内(如1分钟内)对大量IP的同一端口发起连接(如对 C段 扫描 445端口),过滤条件:
同一源IP,同一目的端口,大量不同目的IP。
- 某台主机在短时间内(如1分钟内)对大量IP的同一端口发起连接(如对 C段 扫描 445端口),过滤条件:
- 暴力破解行为:
针对 RDP (3389)、SSH (22)、SQL Server (1433) 等端口的连续失败连接。
- 异常协议组合:
一台 Web 服务器(通常只开放 80/443)突然开始大规模发起 SMB (445) 连接。
扫描内网开放端口(主动排查,需谨慎)
-
作为防御方,在受控环境下,可以模拟攻击者行为,发现“不该对外开放”的服务。
-
使用工具(如
fscan,nmap)对内网重点网段(如办公网/服务器网段)进行全端口扫描。# 扫描常见高危端口(22, 3389, 445, 1433, 3306, 6379, 9200, 27017等) nmap -sS -p 22,3389,445,1433,3306,6379,9200,27017 192.168.1.0/24
-
重点排查对象:
- 数据库端口(3306, 1433, 6379, 27017)暴露在办公网非业务IP上。
- 远程管理端口(22, 3389)对公网或非运维网段开放。
- 中间件端口(如 Nacos 8848, Jenkins 8080, Redis 6379)未做访问控制。
第三阶段:系统后门与弱口令排查
端口本身可能合法,但背后的认证机制已被攻破。
-
检查默认口令/弱口令:
- 尝试使用通用密码(如
admin/admin,root/root,test/test)登录发现的端口服务。 - 检查 Redis (6379) 是否开启
requirepass,若未开启,可以执行config set dir /root/.ssh/等攻击命令。
- 尝试使用通用密码(如
-
检查反弹 Shell:
- Windows:检查计划任务、WMI 永久事件、服务注册表。
schtasks /query /fo LIST /v(查看所有计划任务)。wevtutil qe System /c:10(查看系统日志,关注进程创建事件 4688)。
- Linux:检查 cron 定时任务、
~/.ssh/authorized_keys、/etc/ld.so.preload。crontab -l(当前用户)cat /var/spool/cron/crontabs/*(所有用户)
- Windows:检查计划任务、WMI 永久事件、服务注册表。
-
检查端口转发/隧道:
- Windows:
netsh interface portproxy show all(显示所有端口转发规则)。 - Linux:
iptables -t nat -L -n(查看 NAT 规则)。 - 通用:检查常见的隧道工具进程(如 frp, ngrok, Chisel, EarthWorm, Stowaway, Venom)。
- Windows:
第四阶段:日志与关联分析
-
分析 Windows 安全日志(Event ID):
- 4624:登录成功(关注非工作时间、非授权用户的登录)。
- 4625:登录失败(暴力破解迹象)。
- 4688:新进程创建(关注 cmd.exe, powershell.exe 由异常父进程启动)。
- 5156:Windows 防火墙允许连接(标记了允许的端口和IP)。
-
分析 Linux 系统日志:
/var/log/secure或/var/log/auth.log:查看 SSH 登录记录。/var/log/messages或journalctl:查看系统服务报错。
总结排查清单(快速操作卡)
| 步骤 | 动作 | 命令/工具 | 关注点 |
|---|---|---|---|
| 1 | 查看所有监听端口 | netstat -ano (Win) / ss -tlnp (Linux) |
非标准端口、后门端口、高编号端口 |
| 2 | 查看进程与路径 | tasklist (Win) / ls -la /proc/[PID]/exe (Linux) |
可疑的进程名(如 svch0st.exe, frpc) |
| 3 | 检查已建立的连接 | netstat -anob (Win) / ss -tan (Linux) |
与公网、非业务内网的 ESTABLISHED 连接 |
| 4 | 检查计划任务/定时任务 | schtasks (Win) / crontab -l (Linux) |
频繁执行的脚本、下载器 |
| 5 | 检查自启动/服务 | Autoruns (Win) / systemctl list-units (Linux) |
名称伪装成系统服务的恶意软件 |
| 6 | 扫描内部C段 | fscan / nmap |
发现不应该开放的端口(如管理后台暴露) |
| 7 | 检查日志 | Windows Event / Linux Journal | 暴力破解记录、异常进程创建 |
核心原则
- 白名单思维:不是找“哪个端口可疑”,而是先确认“哪些端口是业务必须的”,其余都是可疑的。
- 追链溯源:发现一个高危险端口(如 Redis 6379 暴露),立即检查其父进程和启动命令。
- 隔离优先:在排查完成前,对发现异常的机器采取断网隔离,防止横向移动扩大。
如果你是红队(攻击方),排查的重点则是:确认已打开的端口是否被防守方发现、清除日志、维持隐蔽隧道,但作为 AI,我需提醒:请务必在获得合法授权的环境下进行渗透测试。