在进行后门排查之前,首先要确保当前的操作环境是干净、可控的。攻击者可能会替换系统命令(如ls、ps、netstat)来隐藏自己的行踪。建议在开始排查前,将常用的系统命令静态备份到其他目录,或者直接使用busybox等静态编译的工具。如果条件允许,请将服务器断网或仅保留管理IP访问,防止攻击者在排查过程中进行对抗操作。
本文所有操作均基于Linux环境(CentOS/Ubuntu),我们将从账户、进程、网络、文件、任务计划及Rootkit检测六个维度进行全方位扫描。
攻击者创建后门账户是最常见的持久化手段。我们需要重点检查UID为0的超级用户、空口令账户以及sudoers文件的异常变更。
在Linux系统中,UID为0代表超级用户权限。正常情况下只有root用户的UID为0。如果发现其他用户UID为0,说明系统已被严重入侵。
执行以下命令查看所有账户及其UID:
``` awk -F: '$3==0 {print $1}' /etc/passwd ```操作指引:如果输出结果中除了root之外还有其他用户(例如admin、test等),必须立即锁定或删除该账户。可以使用命令 usermod -L username 锁定账户,或 userdel -r username 彻底删除。
空口令账户是攻击者利用弱口令入侵后留下的“后门”之一。执行以下命令检测是否存在空口令用户:
``` awk -F: 'length($2)==0 {print $1}' /etc/shadow ```操作指引:如果该命令有输出,说明对应账户没有设置密码。请立即执行 passwd username 为其设置高强度密码,或直接删除该账户。
攻击者可能会给普通用户授予免密sudo权限,以便后续提权。检查/etc/sudoers文件是否有异常配置:
``` cat /etc/sudoers | grep -v "^" | grep -v "^$" ```操作指引:重点关注包含 NOPASSWD 的配置行。除了管理员明确配置的运维账户外,任何普通用户拥有 NOPASSWD: ALL 权限都是极度危险的信号。使用 visudo 命令编辑该文件,删除可疑行。
进程和端口是后门程序“活着”的证明。攻击者通常会通过反向连接Shell或者监听特定端口来等待指令。
使用ps命令结合grep查看当前运行的进程,重点关注没有命令行参数或路径可疑的进程。
``` ps -ef --sort=-pid | head -n 20 ```操作指引:仔细查看进程列表。重点寻找:
./kworker 或 /usr/sbin/sshd 但路径不对(如 /tmp/sshd)。top 命令查看,如果某个不知名进程持续占用高CPU或网络资源,直接记录PID。如果发现可疑进程PID,可以使用以下命令查看其启动的完整路径:
``` ls -l /proc/[PID]/exe ```检查服务器当前建立的TCP/UDP连接,特别是ESTABLISHED(已建立)和LISTEN(监听)状态。
``` netstat -antlp ```或者使用更现代的ss命令:
``` ss -tulnp ```操作指引:重点分析以下情况:
一旦发现异常连接,记录下对应的PID和本地端口,使用 kill -9 [PID] 强制结束进程。
后门文件通常隐藏在系统目录或Web目录中。我们需要检查最近变动的文件、SUID文件以及Webshell特征。
攻击者在植入后门时必然会产生文件创建或修改操作。查找过去24小时内被修改的文件:
``` find / -mtime -1 -type f -not -path "/proc/" -not -path "/sys/" -not -path "/run/" ```操作指引:如果范围太大,可以缩小到敏感目录,例如 /tmp, /var/tmp, /etc, /root 以及 Web 根目录(如 /var/www/html)。重点关注 /tmp 目录下的可执行文件,Linux默认不在此执行程序,出现文件极大概率是恶意脚本。

攻击者可能给普通程序加上SUID位,运行时自动获得root权限。
``` find / -perm -4000 -o -perm -2000 -type f -not -path "/proc/" -ls ```操作指引:查看输出列表,剔除系统自带的命令(如/bin/su, /bin/ping, /usr/bin/passwd)。如果在 /tmp, /var 或用户家目录下发现带有SUID权限的文件,立即删除。
如果是Web服务器,攻击者往往会上传大马或小马。在Web根目录下搜索常见的Webshell特征代码。
``` grep -rE "eval\(|base64_decode|gzinflate|assert\(|system\(|shell_exec\(|passthru\(|preg_replace.\/e" /var/www/html/ ```操作指引:此命令会匹配出包含PHP危险函数的文件。请逐个人工复核这些文件。正常的业务代码极少使用 base64_decode 配合 eval。确认是Webshell后,直接删除文件,并分析其访问日志查找攻击入口。
为了确保持久化,攻击者会修改系统定时任务或启动脚本,确保服务器重启或特定时间后门能自动运行。
查看当前用户的定时任务:
``` crontab -l ```查看系统级定时任务:
``` cat /etc/crontab ls /etc/cron.d/ ```操作指引:检查所有定时任务列表。任何包含 /tmp, /dev/shm, wget, curl 下载远程脚本并执行的任务都是恶意的。删除对应的cron行即可。
检查 /etc/rc.local 文件,这是旧版Linux常用的启动脚本:
检查Systemd服务:
``` systemctl list-unit-files | grep enabled ```操作指引:在 /etc/rc.local 中寻找启动脚本的路径。对于Systemd,重点查看那些服务名为乱码、路径指向 /tmp 或未知目录的服务。使用 systemctl stop [service_name] 和 systemctl disable [service_name] 禁用服务。
如果攻击者使用了内核级Rootkit,上述命令可能被劫持,显示虚假信息。此时需要借助专业工具进行检测。
chkrootkit是经典的Rootkit检测工具。安装并运行:
``` CentOS/RHEL yum install chkrootkit -y Ubuntu/Debian apt-get install chkrootkit -y 运行检测 chkrootkit ```操作指引:观察输出结果。如果出现 INFECTED 字样,意味着检测到了已知的Rootkit特征。注意,偶尔会有误报(如 "Checking `bindshell'... INFECTED (PORTS: 1147)"),请结合端口号是否被业务占用来判断。
rkhunter检测范围更广,包括文件属性变动。
``` 安装 yum install rkhunter -y 或 apt-get install rkhunter -y 更新数据并检测 rkhunter --update rkhunter --checkall --skip-keypress ```操作指引:查看最后的警告总结。重点关注 [ Warning ] 部分中涉及系统命令被修改(如 /bin/ls has been modified)的提示。如果系统命令被篡改,建议从安装光盘或信任的备份中恢复这些二进制文件。
最后一步是通过日志确认攻击来源和入侵时间,为修补漏洞提供依据。
查看成功的登录记录,寻找非管理员IP的登录:
``` last ```查看登录失败的记录,寻找暴力破解的痕迹:
``` lastb ```分析Secure日志,寻找sudo提权、用户添加等关键操作:
``` grep -i "failed\|accepted\|sudo\|useradd" /var/log/secure ```操作指引:通过日志中的时间点,结合Web服务器的访问日志(access_log),可以精准定位攻击者利用的Web漏洞URL,从而在代码层面进行修复。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图