Linux病毒排查思路和详细处理流程

目录

1. 排查思路

1.1 top查看

1.2 定位恶意程序

1.3 后门检查

1.4 处理恢复

2. 工具准备

2.1 chkrootkit

2.1.1 安装方式

2.1.2 基本使用方法

2.1.2.1 执行完整扫描

2.1.2.2 保存扫描结果到文件

2.1.2.3 静默模式(仅显示警告)

2.1.2.4 排除误报目录(如容器目录)

2.2 rkhunter

2.3 ClamAV 

2.4 lynis

2.5 busybox

3. 信息收集

3.1 chkrootkit检测当前环境

3.2 进程检查

3.3 开机启动项检查

3.4 定时任务检查

3.5 隐藏进程检查

3.6 异常网络连接检查

3.7 账户检查

3.8 敏感目录检查

3.9 历史命令检查

3.10 文件完整性检查

3.11 系统日志检查

3.12 动态库检查

3.13 SSH异常秘钥检查

4. 总结流程


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 设备开发与资源受限环境。之所以需要这个工具是因为系统原生的命令可能已经被攻击者替换。

官网下载(推荐)

  • 地址:https://busybox.net/downloads/

  • 提供最新源码(如 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/,检查是否有新增的陌生程序(如minerdkdevtmpfsi等挖矿程序);
    • 用户目录/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 相关文件)

    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. 总结流程

    • 系统层面:用lynisrkhunter扫描整体漏洞,检查补丁更新;
    • 权限层面:排查特权用户、sudo 配置、异常登录;
    • 网络层面:检查开放端口、防火墙规则、异常连接;
    • 文件层面:查找危险权限文件、恶意程序、异常定时任务;
    • 应用层面:检查 Web 服务、数据库的版本和配置漏洞;
    • 日志层面:分析登录日志和系统日志,追溯入侵痕迹。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值