路由表被恶意篡改常见于服务器遭入侵后植入后门或rootkit,需用ip route show table main等命令检查异常default via、伪造主机路由及隐藏策略路由,并结合journalctl、crontab和启动项溯源篡改行为,再通过ip route get和tcpdump验证实际流量路径,最后删除异常项并启用auditctl审计。

路由表被恶意篡改不是小概率事件,常见于服务器遭入侵后植入后门、rootkit 或恶意脚本偷偷添加静态路由(如将流量重定向至攻击者控制的网关),或删除默认路由导致断网。排查关键不在于“有没有改”,而在于“谁改的、什么时候改、改了什么、是否还在生效”。
确认当前路由表是否异常
先用权威命令获取实时视图:
-
ip route show table main —— 查主路由表(
route -n已废弃,且不显示策略路由) -
ip rule show —— 看是否有非默认策略规则(如
from 10.10.10.10 lookup attacker_table) - ip route show table all 2>/dev/null | grep -v "local\|broadcast" —— 扫描所有自定义路由表,避免遗漏隐藏表
重点比对三类高危项:是否存在指向陌生IP的 default via X.X.X.X;是否有非直连网段却标记为 dev lo 或 blackhole;是否出现明显伪造的主机路由(如 1.1.1.1 via 192.168.0.254 dev eth0,而 192.168.0.254 并非本网关)。
定位篡改来源和时间点
路由表本身不记录修改者,需结合系统痕迹反推:
- 查最近执行过
ip route add、route add、echo ... > /proc/sys/net/ipv4/conf/.../arp_ignore的进程:journalctl -u systemd --since "2 hours ago" | grep -i "route\|ip.*add\|sysctl.*arp" - 检查可疑定时任务:crontab -l && cat /etc/crontab /etc/cron.d/* 2>/dev/null | grep -v "^#" | grep -E "(ip|route|sysctl)"
- 扫描开机自启项中调用网络命令的脚本:grep -r "ip route\|route add\|sysctl.*net" /etc/rc.local /etc/init.d/ /etc/systemd/system/*.service 2>/dev/null
若发现某脚本反复添加相同路由,基本可判定为恶意持久化行为。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
验证路由是否被用于实际劫持
光看表项不够,要确认它是否真在影响流量:
- 对一个外网目标(如 8.8.8.8)执行:ip route get 8.8.8.8,看返回的
via和dev是否与你预期一致 - 抓包验证下一跳:tcpdump -i eth0 -n arp or ip host 8.8.8.8 -c 5,观察ARP请求是否发向异常网关,或ICMP包是否从错误接口发出
- 对比内核转发行为:cat /proc/sys/net/ipv4/ip_forward 若为 1,再查 iptables -t nat -vnL POSTROUTING,防止SNAT/DNAT配合路由做透明代理
例如:路由表显示 default via 10.0.0.200 dev eth1,但 ip route get 8.8.8.8 却返回 dev lo,说明该路由被更高级策略(如 local 表或 fwmark 规则)覆盖,需继续深挖。
恢复与加固建议
清除后必须阻断再生路径:
- 立即删除异常路由:ip route del default via 10.0.0.200 dev eth1(按实际值替换)
- 禁用可疑服务:systemctl stop suspicious-service && systemctl disable suspicious-service
- 限制非 root 用户调用网络配置命令:chmod 700 /sbin/ip /sbin/route(注意不影响系统服务)
- 启用路由表变更审计:auditctl -w /proc/sys/net/ipv4/conf/ -p wa -k net_route_change,后续可通过
ausearch -k net_route_change追踪
不复杂但容易忽略:很多攻击者不直接改路由,而是通过 sysctl 关闭反向路径过滤(rp_filter=0)+ 配合 iptables MARK + 策略路由实现隐蔽转发,这类组合需联动检查。










