lsof -i -P -n 是最可靠的第一步,它绕过被篡改的 netstat 或 ss,从 /proc 底层读取真实网络状态,加 -P 避免端口名解析误导,加 -n 防止 DNS 反查触发木马隧道或卡顿。

怎么用 lsof -i 快速揪出后门外连的异常连接
直接上结论:lsof -i -P -n 是最可靠的第一步,它绕过被篡改的 netstat 或 ss,从 /proc 底层读取真实网络状态。很多 rootkit 会 hook 系统调用隐藏连接,但只要没动 /proc/PID/fd/,lsof 就能照见真身。
执行时必须加 -P(禁用端口名解析)和 -n(禁用 DNS 反查),否则卡在域名解析上,还可能触发木马的 DNS 隧道行为。
- 不加
-P:看到:http而不是:80,排查时还得查/etc/services,而该文件可能已被注入伪造条目 - 不加
-n:木马若监听在非标端口(如:31337)并伪装成 DNS 查询,lsof可能主动发起反向解析,暴露你正在排查 - 如果系统已中毒,
lsof二进制本身也可能被替换——建议先校验:md5sum /usr/bin/lsof对比干净镜像或用静态编译版
怎么过滤出高危外连连接,而不是满屏无用信息
lsof -i -P -n 默认输出所有连接,包括本地回环、已关闭的 TIME_WAIT,真正要盯的是「对外建立的、非业务目标 IP 的 ESTABLISHED 连接」。
常用过滤组合:
- 只看已建立的 TCP 外连:
lsof -i tcp -sTCP:ESTABLISHED -P -n | grep -v '127.0.0.1\|::1' - 排除常见可信网段(如公司出口 IP 段、云厂商元数据服务):
lsof -i -P -n | awk '$9 !~ /10\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[0-1]\.|192\.168\.|169\.254\./ && $9 ~ /:/ {print}' - 快速定位非常用端口(如
:4257、:8443、:65535):lsof -i -P -n | awk '$9 ~ /:[0-9]{4,5}$/ && $9 !~ /:80$|:443$|:22$/ {print}'
注意:$9 是 NAME 列,包含 IP:PORT 信息;正则里 :[0-9]{4,5}$ 能抓到四位或五位端口号,但漏掉 :8080 这类带路径的(如 1.2.3.4:8080->),实际中建议先人工扫一眼输出再写精确过滤。
确认某个可疑 PID 是否真是木马,光看端口不够
找到可疑 PID 后,不能只 kill 完事。很多内存马进程 ps -aux 看不到名字,或者名字是 kthreadd 这类系统名,但实际路径藏在 /proc/PID/exe 里。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
关键三步验证:
- 查可执行路径:
ls -la /proc/PID/exe—— 若显示(deleted),基本就是落地后删源的木马;若路径在/tmp、/dev/shm、/var/tmp,几乎 100% 是恶意程序 - 看启动参数:
cat /proc/PID/cmdline | tr '\0' '\n'—— 如果出现base64、curl -sL、wget -qO-、/dev/tcp/等,不用犹豫,就是载荷 - 检查文件描述符:
lsof -p PID—— 若打开大量pipe、anon_inode或反复重用同一 socket,可能是 C2 通信循环
特别提醒:有些 rootkit 会让 /proc/PID/exe 指向 /bin/bash,但 readlink /proc/PID/exe 返回空或乱码,这时得结合 strace -p PID 看系统调用流,不过 strace 本身可能被拦截,慎用。
为什么有时候 lsof -i 找不到连接,但流量确实存在
这通常不是 lsof 的问题,而是连接根本没走 socket 层——比如用了 raw socket、AF_PACKET 直通网卡(DDoS 木马常用),或通过内核模块伪造包(高级 rootkit)。这类情况 lsof 天然不可见。
此时需转向其他信号:
- 查混杂模式:
ip link | grep PROMISC—— 正常服务器网卡不该处于此模式 - 查 ARP 异常:
arp -a看是否有重复 IP 或陌生 MAC 绑定 - 抓包比对:
tcpdump -i any -nn port not 22 and not 80 and not 443 -c 20,重点看非业务端口的 SYN 包来源
真正的难点在于:当 lsof 显示一切正常,但 netflow 或防火墙日志持续上报外连,说明攻击者已下沉到内核层。这时候别硬刚,优先断网、保存内存镜像、离线分析更稳妥。










