目录
1. 排查思路
1.1 top查看
top定位异常高资源占用进程,记录对应的进程ID,即PID。
1.2 定位恶意程序
ps –ef | grep PID #查看恶意进程信息
ll /proc/pid/exe #根据pid查看进程可执行程序,定位可疑程序
netstat –anp | grep PID #通过进程pid查看此进程网络状态
若存在建立远程连接的IP,可通过威胁情报中心进行搜索IP,确认此IP是否为恶意地址。
1.3 后门检查
启动项
定时任务
用户检查
系统日志
1.4 处理恢复
2. 工具准备
2.1 chkrootkit
2.1.1 安装方式
# 安装编译依赖
sudo yum install -y gcc gcc-c++ make glibc-static
# 下载源码
cd /usr/local/src/
wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
# 解压并编译
tar zxvf chkrootkit.tar.gz
cd chkrootkit-*
make sense
# 部署到系统目录
sudo cp -r chkrootkit-* /usr/local/chkrootkit
# 运行扫描
/usr/local/chkrootkit/chkrootkit
2.1.2 基本使用方法
2.1.2.1 执行完整扫描
sudo chkrootkit #扫描所有已知 rootkit,结果输出到终端
2.1.2.2 保存扫描结果到文件
sudo chkrootkit | tee /var/log/chkrootkit_scan_$(date +%F).log
2.1.2.3 静默模式(仅显示警告)
sudo chkrootkit -q
2.1.2.4 排除误报目录(如容器目录)
sudo chkrootkit -r / -x /var/lib/docker -x /var/lib/lxc
2.2 rkhunter
# Ubuntu/Debian
sudo apt update
sudo apt install rkhunter
sudo rkhunter --checkall --enable all --disable none
# CentOS/RHEL
sudo yum install epel-release
sudo yum install rkhunter
sudo rkhunter --checkall
2.3 ClamAV
# CentOS/RHEL
sudo yum install epel-release
sudo yum install clamav
sudo freshclam # 更新病毒库
sudo clamscan -r / # 全盘扫描
2.4 lynis
系统审计工具,可检测已知漏洞
# 安装(Debian/Ubuntu)
sudo apt install lynis
# 安装(CentOS/RHEL)
sudo yum install lynis
# 执行系统审计(重点关注"Warnings"和"Suggestions")
sudo lynis audit system
2.5 busybox
BusyBox 是一款集成了多种常用 Unix/Linux 命令的轻量级工具,被广泛用于嵌入式系统、Android 设备开发与资源受限环境。之所以需要这个工具是因为系统原生的命令可能已经被攻击者替换。
官网下载(推荐)
-
提供最新源码(如
busybox-1.37.0.tar.bz2)和预编译二进制文件(如busybox-x86_64)28。 -
预编译安装步骤:
wget https://busybox.net/downloads/binaries/1.28.1/busybox-x86_64
sudo cp busybox-x86_64 /usr/local/bin/busybox
sudo chmod +x /usr/local/bin/busybox
3. 信息收集
3.1 chkrootkit检测当前环境
sudo chkrootkit | tee /var/log/chkrootkit_scan_$(date +%F).log
如果检测命令异常,后续操作,均以busybox+命令替代,例如
busybox ps -ef | grep PID
3.2 进程检查
# 查找高CPU占用进程
ps aux | sort -k3,3 -nr | head -n 10
# 查找隐藏文件(如以 `..` 开头)
find /tmp -name "..*" -print
# 查找SUID权限文件(可能被劫持)
find / -perm -4000 -user root -ls
# 查找大文件(可能为挖矿脚本)
find / -size +10000k -print
3.3 开机启动项检查
# CentOS 7+/Ubuntu 16.04+
systemctl list-unit-files --type=service
# CentOS 6及以下
chkconfig --list
# 检查 /etc/rc.local
cat /etc/rc.d/rc.local
3.4 定时任务检查
crontab -l # 当前用户的定时任务
ls -la /etc/cron* # 系统级定时任务(如cron.d、cron.hourly)
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/cron/*
/var/spool/anacron/*
3.5 隐藏进程检查
# 使用 `sysdig` 或 `ltrace` 检测隐藏进程(需安装)
sysdig -c topprocs_cpu
3.6 异常网络连接检查
用 netstat -tulnp 或 ss -tulnp 查看所有 TCP/UDP 连接及对应进程,关注:陌生 IP: 端口(如连接36.xxx.xxx.xxx:8888等非业务端口);状态为ESTABLISHED(已建立)的未知进程连接;异常监听端口(如非预期进程监听80、443、22等端口)。
netstat -antp | grep ESTABLISHED # 查看已建立的连接
ss -antp # 更高效的替代工具
lsof -i :<PORT> # 查看占用指定端口的进程
- 对可疑 IP,用 whois(yum -y install whois) 可疑IP 查看归属地(如位于高风险地区需警惕);
- 用 tcpdump -i eth0 host 可疑IP 抓包分析通信内容(可能包含恶意指令或数据回传)。
3.7 账户检查
# 查看所有用户
cat /etc/passwd(关注是否有陌生用户,尤其是UID=0的超级用户);
# 查看用户密码哈希
cat /etc/shadow(若发现陌生用户的密码字段非*或!,说明其可登录);
# 检查 sudo 权限
cat /etc/sudoers 及 /etc/sudoers.d/ 下的文件,是否有陌生用户被授予sudo权限。
# 列出UID=0的超级用户(除root外不应有其他用户)
grep ":0:" /etc/passwd
# 检查是否有用户使用空密码(密码字段为*或!表示不可登录)
grep -E '^[^:]+::' /etc/shadow
# 查看最近登录的用户(检测陌生IP登录)
last | head -20
# 查看所有用户的登录状态(包括未登录用户)
lastlog
# 检查是否有隐藏用户(用户名含特殊字符,如空格)
cat /etc/passwd | awk -F: '$3<1000 {print $1,$3}' # 系统用户通常UID<1000
# 统计失败登录的 IP
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr;
3.8 敏感目录检查
- 临时目录:
/tmp、/var/tmp、/dev/shm(权限较松,常被恶意程序利用),用ls -la /tmp查看是否有陌生可执行文件(权限含x); - 系统目录:
/bin/、/sbin/、/usr/bin/、/usr/sbin/,检查是否有新增的陌生程序(如minerd、kdevtmpfsi等挖矿程序); - 用户目录:
/home/用户名/下的隐藏文件(如.bashrc、.profile、.ssh/)是否被篡改(可能植入恶意命令,如登录时自动启动病毒);
3.9 历史命令检查
# cat ~/.bash_history
3.10 文件完整性检查
- 对比系统文件哈希值与原始备份(若有),或用系统工具检查:
- RPM 系(CentOS/RHEL):
rpm -V 包名(如rpm -V coreutils检查/bin/ls等文件是否被篡改); - Debian 系(Ubuntu):
dpkg -V 包名(如dpkg -V openssh-server检查 SSH 相关文件)
- RPM 系(CentOS/RHEL):
3.11 系统日志检查
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志
/var/log/btmp 记录错误登录日志。 要使用lastb命令查看
/var/log/lastlog 记录系统所有用户最后一次登录时间的日志。使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。 要使用last命令查看
/var/log/utmp 记录当前已经登录的用户信息。
/var/log/secure 记录验证和授权方面的信息,比如SSH登录,su切换用户,sudo授权
# 查看SSH登录失败记录(暴力破解尝试)
grep "Failed password" /var/log/auth.log # Debian/Ubuntu
grep "Failed password" /var/log/secure # CentOS/RHEL
# 统计攻击IP(按失败次数排序)
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# 查看系统错误日志(可能包含漏洞利用痕迹)
grep -i "error\|warning" /var/log/syslog # Debian/Ubuntu
grep -i "error\|warning" /var/log/messages # CentOS/RHEL
3.12 动态库检查
排查动态库劫持情况
# echo $LD_PRELOAD
# cat /etc/ld.so.preload
3.13 SSH异常秘钥检查
# 进入目录下查看是否有异常公钥
cd /root/.ssh
4. 总结流程
- 系统层面:用
lynis、rkhunter扫描整体漏洞,检查补丁更新; - 权限层面:排查特权用户、sudo 配置、异常登录;
- 网络层面:检查开放端口、防火墙规则、异常连接;
- 文件层面:查找危险权限文件、恶意程序、异常定时任务;
- 应用层面:检查 Web 服务、数据库的版本和配置漏洞;
- 日志层面:分析登录日志和系统日志,追溯入侵痕迹。
1222

被折叠的 条评论
为什么被折叠?



