Rootkit 感染
1. 初始系统状态检查与监控※
- 查看所有运行进程:
ps -efps aux --sort=-%cpu | head -20(按CPU使用率排序,显示前20个进程)ps auxw --sort=-%cpu | head -15(按CPU使用率排序,显示前15个进程)ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -20(显示PID、PPID、命令、CPU、内存,按CPU排序)ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head(显示PID、PPID、命令、内存、CPU,按CPU排序)ps -eo pid,cmd | grep -vE "(sshd|crond|mysqld|teamviewer)" | head -20(过滤掉常见合法进程)ps aux | grep defunct(查找僵尸进程)
- 查看网络连接:
netstat -tunp(查看所有TCP/UDP端口和进程)netstat -tunp | awk '{if($6=="ESTABLISHED") print $0}' | grep -v "127.0.0.1"(查看所有非本地的ESTABLISHED连接)netstat -tunp | grep -E "51.79.74.212|64.225.97.80|209.38.152.157|168.235.95.104|cc.systemctl.cc"(查找特定恶意IP的连接)netstat -tunp | grep -E "(xmrpool|monero|nanopool|minexmr|supportxmr)"(查找挖矿相关连接)netstat -tunp | grep ESTABLISHED |grep -v java |grep -v mysqld|grep -v sun | grep -v team|grep -v firefox(过滤掉常见合法连接)
- 查看系统资源使用:
df -h(查看磁盘空间)free -h(查看内存使用)uptime(查看系统运行时间、负载)iostat -x 3(查看磁盘I/O,每3秒更新)vmstat 1(查看虚拟内存统计,每1秒更新)top(实时监控系统资源)htop(更友好的实时监控工具,需安装)
- 查看系统信息:
ip add(查看IP地址)cat /etc/os-release(查看操作系统版本信息)cat /etc/centos-release(查看CentOS版本信息)hostnamectl(查看主机名和系统信息)uname -a(查看内核信息)sensors(查看硬件传感器信息,如CPU温度)
- 进程详细信息:
ls -la /proc/<PID>/exe(查看进程对应的可执行文件路径)cat /proc/<PID>/cmdline(查看进程的完整命令行)cat /proc/<PID>/environ(查看进程的环境变量)pstree | grep run(查看进程树)for pid in $(ls /proc | grep '^[0-9]'); do if [ -f "/proc/$pid/environ" ]; then if strings /proc/$pid/environ | grep -q "LD_PRELOAD"; then echo "PID $pid 可能使用了 LD_PRELOAD:"; strings /proc/$pid/environ | grep "LD_PRELOAD"; fi; fi; done(查找使用LD_PRELOAD的进程)ls /proc | grep '^[0-9]' | while read pid; do if [ -d /proc/$pid ]; then cpu=$(cat /proc/$pid/stat 2>/dev/null | awk '{print $14+$15}'); if [ "$cpu" -gt 1000 ]; then cmd=$(cat /proc/$pid/cmdline 2>/dev/null | tr -d '\0'); exe=$(readlink /proc/$pid/exe 2>/dev/null); echo "高CPU进程: PID=$pid, CPU=$cpu, CMD=$cmd, EXE=$exe"; fi; fi; done(查找高CPU使用率进程)
2. Rootkit 隐藏功能移除※
- 检测和清除
LD_PRELOAD劫持:- 检查文件内容:
cat /etc/ld.so.preload - 备份文件:
cp /etc/ld.so.preload /etc/ld.so.preload.bak - 移除文件不可变属性:
chattr -i /etc/ld.so.preload和chattr -a /etc/ld.so.preload(可能需要多次尝试,因为Rootkit可能设置了多个属性) - 清空文件内容:
echo "" > /etc/ld.so.preload - 删除Rootkit库文件:
rm -f /usr/local/lib/libprocesshider.so - 验证文件状态:
lsattr /etc/ld.so.preload
- 检查文件内容:
- 使用
unhide工具检测隐藏进程:- 安装工具:
yum install -y unhide - 运行检测:
unhide proc(检测隐藏进程),unhide sys(检测系统篡改) - 根据结果终止进程:
kill -9 <PID1> <PID2> ...(例如:kill -9 4753 4754 4755 ...)
- 安装工具:
3. 持久化机制清理 (定时任务 Cron)※
- 检查所有用户的 Crontab:
for user in $(cut -f1 -d: /etc/passwd); do echo "### $user ###"; crontab -l -u $user 2>/dev/null; donecrontab -l(查看当前用户的crontab,通常是root)crontab -u smart -l(查看smart用户的crontab)
- 检查系统级 Crontab 文件和目录:
cat /etc/crontabls -la /etc/cron.d/ls -la /etc/cron.hourly/ls -la /etc/cron.daily/ls -la /etc/cron.weekly/ls -la /etc/cron.monthly/
- 删除恶意定时任务文件和脚本:
- 编辑
root用户的 crontab:crontab -e -u root(删除恶意条目) - 编辑
/etc/crontab:vi /etc/crontab(删除ntpdatev1.sh相关的恶意条目) - 删除恶意脚本文件:
rm -f /usr/local/sbin/ntpdatev1.sh - 删除
/etc/cron.d/目录下的恶意文件:chattr -ia /etc/cron.d/app-bitwardenchattr -ia /etc/cron.d/ftp-tracker-miner-appschattr -ia /etc/cron.d/mddvnopvjrm -f /etc/cron.d/app-bitwardenrm -f /etc/cron.d/ftp-tracker-miner-appsrm -f /etc/cron.d/mddvnopvjrm -f /etc/cron.d/mddvnopvj~(临时文件)
- 删除
/etc/cron.hourly/目录下的恶意文件:chattr -ia /etc/cron.hourly/app-bitwardenchattr -ia /etc/cron.hourly/ftp-tracker-miner-appschattr -ia /etc/cron.hourly/mddvnopvjrm -f /etc/cron.hourly/app-bitwardenrm -f /etc/cron.hourly/ftp-tracker-miner-appsrm -f /etc/cron.hourly/mddvnopvj
- 删除
/etc/cron.daily/目录下的恶意文件:chattr -ia /etc/cron.daily/app-bitwarden /etc/cron.daily/ftp-tracker-miner-apps /etc/cron.daily/mddvnopvjrm -f /etc/cron.daily/app-bitwardenrm -f /etc/cron.daily/ftp-tracker-miner-appsrm -f /etc/cron.daily/mddvnopvj
- 删除
/etc/cron.weekly/目录下的恶意文件:chattr -ia /etc/cron.weekly/app-bitwarden /etc/cron.weekly/ftp-tracker-miner-apps /etc/cron.weekly/mddvnopvjrm -f /etc/cron.weekly/app-bitwardenrm -f /etc/cron.weekly/ftp-tracker-miner-appsrm -f /etc/cron.weekly/mddvnopvj
- 删除
/etc/cron.monthly/目录下的恶意文件:chattr -ia /etc/cron.monthly/app-bitwarden /etc/cron.monthly/ftp-tracker-miner-apps /etc/cron.monthly/mddvnopvjrm -f /etc/cron.monthly/app-bitwardenrm -f /etc/cron.monthly/ftp-tracker-miner-appsrm -f /etc/cron.monthly/mddvnopvj
- 停止
crond服务:service crond stop(在清理定时任务时停止,避免其再次启动恶意任务)
- 编辑
4. 持久化机制清理 (启动服务 SysVinit)※
- 检查
/etc/rc.local:- 查看内容:
cat /etc/rc.d/rc.local(或cat /etc/rc.local) - 手动编辑删除可疑启动项:
vi /etc/rc.local(删除setsid /home/smart/.tms3/apache-tomcat-7.0.63/bin/startup.sh这一行,如果确认其为恶意或非必要)
- 查看内容:
- 检查
/etc/init.d/目录和chkconfig列表:ls -la /etc/init.d/chkconfig --list
- 处理恶意或可疑启动服务:
frpc(反向代理后门):- 禁用服务:
chkconfig frpc off - 删除启动脚本:
rm -f /etc/init.d/frpc - 删除相关二进制文件和配置:
rm -f /usr/bin/frpcrm -f /usr/local/frp/frpc.tomlrm -f /usr/local/frp/frpcrm -rf /usr/local/frp/(如果确定该目录没有其他合法文件)
- 禁用服务:
mddvnopvj(挖矿/僵尸网络客户端):- 查看脚本内容:
cat /etc/init.d/mddvnopvj - 禁用服务:
chkconfig mddvnopvj off - 移除不可变属性:
chattr -ia /etc/init.d/mddvnopvj - 删除启动脚本:
rm -f /etc/init.d/mddvnopvj
- 查看脚本内容:
runsunloginclient(向日葵远程控制后门):- 查看脚本内容:
cat /etc/init.d/runsunloginclient - 禁用服务:
chkconfig runsunloginclient off - 删除启动脚本:
rm -f /etc/init.d/runsunloginclient - 删除安装目录:
rm -rf /usr/local/sunlogin/(请务必确认您自己没有合法使用向日葵)
- 查看脚本内容:
proftpd(可疑 FTP 服务):- 查看脚本内容:
cat /etc/init.d/proftpd - 禁用服务:
chkconfig proftpd off - 删除启动脚本:
rm -f /etc/init.d/proftpd - 删除安装目录:
rm -rf /usr/sbin/proftpd(或其安装路径)
- 查看脚本内容:
5. 恶意进程终止与文件删除※
- 终止恶意进程:
kill -9 <PID>(根据ps aux或top查到的恶意进程PID)pkill java(终止所有Java进程,如果确认它们是恶意的)pkill bash或pkill "-bash"(终止可疑的bash进程)fuser -k <PORT>/tcp(强制杀死占用特定端口的进程,例如fuser -k 40626/tcp)
- 删除恶意二进制文件:
- 移除不可变属性:
chattr -ia /bin/app-bitwardenchattr -ia /bin/ftp-tracker-miner-appschattr -ia /bin/oefmizm
- 删除文件:
rm -f /bin/app-bitwardenrm -f /bin/ftp-tracker-miner-appsrm -f /bin/oefmizm
- 移除不可变属性:
- 清理临时文件和缓存目录:
rm -rf /var/tmp/.cache/javarm -rf /var/tmp/.cache/rm -rf /var/tmp/rm -rf /opt/openvpn/etc/*(清理OpenVPN配置,如果OpenVPN被恶意利用)rm -rf /opt/tmsagent/tmsagent.jar(删除特定jar文件,如果确认是恶意或被篡改)
- 查找挖矿相关文件:
find / -name "*miner*" -o -name "*xmrig*" -o -name "*monero*" -o -name "*cpuminer*" -o -name "*kdevtmpfsi*" -o -name "*kdevtmpfsi.sh*" -o -name "*systemd-udevd*" -o -name "*[kworker/u8:2]*" 2>/dev/null(在整个文件系统查找)find /root -name "*miner*" ...(在/root目录查找)find /home -name "*miner*" ...(在/home目录查找)find /var -name "*miner*" ...(在/var目录查找)find /usr -name "*miner*" ...(在/usr目录查找)
6. 账户安全加固 (SSH)※
- 修改所有密码:
passwd root(修改root用户密码)passwd smart(修改smart用户密码)- 重要: 修改所有其他系统用户密码,以及所有服务(数据库、Web面板、FTP等)的密码。
- 检查 SSH 登录日志:
grep "Accepted password" /var/log/secure(查找异常登录,特别是来自127.0.0.1和内部网络的登录)
- SSH 配置强化:
- 编辑 SSH 配置文件:
vi /etc/ssh/sshd_config - 禁用密码登录: 将
PasswordAuthentication yes改为PasswordAuthentication no(前提是已配置好SSH密钥登录) - 重启 SSH 服务:
service sshd restart(应用更改)
- 编辑 SSH 配置文件:
- 检查 SSH 授权密钥:
- 检查
root用户:cat /root/.ssh/authorized_keys(删除任何不认识或不应该存在的公钥) - 检查
smart用户:cat /home/smart/.ssh/authorized_keys(删除任何不认识或不应该存在的公钥)
- 检查