入侵溯源分析查找攻击来源教程指南
前言:为什么要做入侵溯源分析?
当服务器被入侵后,第一反应往往是杀毒或重装系统。
但如果不弄清楚攻击者是从哪里进来的、用了什么方式、留下了什么后门,下次很可能还会被同样的手段攻破。入侵溯源分析查找攻击来源 的核心目的,就是还原攻击路径,清除隐患,避免二次入侵。
本文适合没有任何溯源经验的用户,你只需要一台被怀疑被入侵的 Linux 服务器,以及 SSH 登录权限。
跟着下面的步骤,一步一步操作就能找到攻击痕迹。
---
第一步:准备工作——你需要什么?
在动手之前,先确认你具备以下条件:
- SSH 登录权限:能用 root 或 sudo 账户登录服务器。
- 基础命令行操作能力:会敲命令、能看懂输出。
- 备份环境:建议先做快照或完整备份,防止操作过程中意外破坏现场。
- 工具准备:Linux 系统自带
last、ps、netstat、lsof等命令;如果缺失,可以通过包管理器安装(比如 CentOS 用yum install net-tools lsof,Ubuntu 用apt install net-tools lsof)。
特别提醒:绝对不要直接删除可疑文件或结束可疑进程,要先用 cp 备份后再操作,保留证据。
---
第二步:从登录日志入手——看看谁来过
攻击者常用的入口就是 SSH 暴力破解或使用泄露的密码。
先检查登录记录:
last -F | head -50
last 命令会读取 /var/log/wtmp 文件,显示所有用户的登录历史。
重点关注:
- 异常 IP:不是你自己的 IP,也不是公司出口 IP。
- 异常时间:你在睡觉或休息时登录的 IP。
- 异常用户名:比如
root直接登录,或者出现你从未建过的用户。
如果系统使用 auth.log(Debian/Ubuntu)或 secure(CentOS/Red Hat),也可以直接查看失败的登录尝试:
# Ubuntu/Debian
sudo cat /var/log/auth.log | grep -i "failed password" | tail -50
# CentOS/Red Hat
sudo cat /var/log/secure | grep -i "failed password" | tail -50
大量来自同一 IP 的“Failed password”记录,基本可以判定攻击者在暴力破解。
---
第三步:查进程和开机启动——找后门程序
攻击者成功登录后,常会上传后门程序或修改系统启动项。
运行以下命令检查当前运行的异常进程:
ps aux --sort=-%mem | head -30
重点看以下特征:
- CPU 或内存占用奇高:可能是挖矿程序或 DDoS 攻击脚本。
- 进程名奇怪:比如
./xxx或名字随机的二进制文件。 - 父进程异常:比如
/sbin/init这类正常进程,但被替换成了恶意程序。
接着查看开机自启动项:
# 检查 systemd 服务
systemctl list-units --type=service --state=running | grep -v "@"
# 检查 /etc/rc.local
cat /etc/rc.local
# 检查 crontab
crontab -l
# 也检查其他用户的 crontab(需要 root)
for user in $(awk -F: '{print $1}' /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done
如果发现陌生的定时任务(比如每分钟执行一个脚本),那基本就是后门。
---
第四步:文件系统与网络连接——找到攻击来源的实体痕迹
1. 检查最近修改的文件
攻击者的工具、脚本、日志文件通常会在 /tmp、/dev/shm 或隐藏目录下。
用以下命令查找最近 7 天内被修改的可疑文件:
find / -type f -mtime -7 -not -path "/sys/*" -not -path "/proc/*" -not -path "/var/log/*" | xargs ls -la 2>/dev/null | head -30
重点关注名称是 . 开头的隐藏文件、可执行权限的文件、以及 /tmp 下的不明脚本。
2. 查看网络连接
攻击者的命令与控制服务器(C2)会与你的服务器建立连接:
# 查看所有 TCP 连接和监听端口
netstat -antp | grep -E "(LISTEN|ESTABLISHED)"
# 或者使用 ss 命令(更现代)
ss -antp | grep -E "(LISTEN|ESTABLISHED)"
可疑特征:
- 监听在非标准端口(如 4444、5555、10000 等)的进程。
- 连接到国外或未知 IP 的 ESTABLISHED 连接。
- 连接数异常的进程(比如单进程连接了几十个远程地址)。
使用 lsof 进一步查看哪个进程在连接:
sudo lsof -i -P -n | grep ESTABLISHED
一旦找到可疑进程的 PID,就可以 ps -p 查看详情,然后备份后处理。
---
第五步:高频问题与避坑说明
Q1:日志被攻击者清空了怎么办?
查一下 lastb 命令(记录失败登录),或者检查系统中是否有其他日志残留(如 /var/log/messages、/var/log/btmp)。
如果日志全空,说明攻击者具备一定的清理能力,此时重点排查 crontab、启动项和可疑文件。
Q2:进程和文件看起来都正常,但服务器依然异常?
可能是 rootkit(内核级后门)。
用 lsmod 查看加载的内核模块,或者用 rkhunter(Rootkit Hunter)扫描:
sudo apt install rkhunter # 安装
sudo rkhunter --check # 扫描
Q3:找到了可疑 IP,如何追溯?
可以用 whois 命令查询 IP 归属:
whois 192.168.x.x
但不要完全依赖 whois,很多攻击 IP 是僵尸网络节点或 VPN 出口,真正的攻击者可能藏匿在后面。
避坑清单
- 不要立即关机:很多证据存在于内存中(如
/proc),关机后丢失。 - 不要直接在服务器上分析:将可疑文件复制到隔离环境分析,避免触发告警或二次感染。
- 优先保留现场:如果时间紧张,先截图、保存命令输出到文本文件,再慢慢分析。
---
总结:验证攻击源头是否被定位
完成以上步骤后,你至少应该能回答这几个问题:
- 攻击者通过哪个 IP 登录?
- 使用哪个用户(root 还是普通用户)?
- 留下了哪些文件/进程/定时任务?
- 后门程序是否与外部建立连接?
如果这些信息都明确,说明你的 入侵溯源分析查找攻击来源 已经有了成果。
下面可以清理后门、修补漏洞(如改密码、关端口、升级软件),并重新评估服务器的安全状态。
最后一点建议:把这次溯源的过程和发现记录下来,形成文档,下次就能更快响应。
如果你按照本文步骤执行,应该能顺利定位到攻击来源。
遇到报错或异常,优先回看高频问题部分,或者用搜索引擎查命令的具体用法。