# Linux主机应急排查速查清单(蓝队DFIR,可直接复制执行) ## 前置原则(必看) 1. **先取证再操作**:不要随意重启、不要覆盖日志;先导出日志、进程、网络快照。 2. **禁止直接删除可疑文件**:先备份+计算SHA256哈希,留存IOC。 3. **排查顺序:登录日志 → 进程网络 → 持久化后门 → 恶意文件 → 账号后门 → 清理溯源**。 4. 区分发行版:RHEL/CentOS用`/var/log/secure`;Debian/Ubuntu用`/var/log/auth.log`。 --- ## 一、第一步:系统基础信息(锁定入侵时间) ```bash # 系统运行时间、重启记录 uptime last last reboot lastlog # 查看当前时间(防止篡改系统时间) date timedatectl # 查看历史命令(攻击者会清空.bash_history) cat ~/.bash_history cat /root/.bash_history ``` 重点:突然异常重启、陌生登录时间、命令记录被清空。 --- ## 二、第二步:登录与审计日志(溯源入侵入口,最高优先级) ### 1)核心日志文件 | 系统 | 认证日志 | 系统日志 | |---|---|---| | CentOS/RHEL | `/var/log/secure` | `/var/log/messages` | | Ubuntu/Debian | `/var/log/auth.log` | `/var/log/syslog` | ### 2)高频检索命令(直接复制) ```bash # 查看所有成功登录(重点看IP、账号) grep "Accepted password" /var/log/secure grep "session opened" /var/log/auth.log # 暴力破解:大量登录失败 grep "Failed password" /var/log/secure # 查看sudo提权行为 grep "sudo" /var/log/secure # 导出全部日志做取证(保存到外置目录) cp -r /var/log /tmp/log_backup journalctl --since="24小时前" > system_log.txt ``` ### 3)登录行为排查 ```bash # 查看所有登录记录 last -f /var/log/wtmp # 查看登录失败记录 faillog # 查看当前在线用户 w who ``` --- ## 三、第三步:异常进程+网络连接(发现木马、反弹Shell) ### 1)进程排查(找隐藏进程、木马) ```bash # 完整进程列表(显示命令行,最关键) ps auxf # 查看进程树 pstree -p # 查看进程对应的可执行文件路径(PID替换为实际值) ls -l /proc/[PID]/exe readlink /proc/[PID]/exe # 查找无文件进程、可疑脚本 ps aux | grep -E "bash|python|nc|curl|wget|base64|/tmp" ``` 可疑特征:进程路径在`/tmp、/var/tmp、/dev/shm`;命令行带Base64、反弹Shell、网络下载脚本。 ### 2)网络连接(外联C2、后门端口) ```bash # 推荐新版命令(优先使用ss) ss -antulnp # 传统netstat netstat -antulnp # 只看已建立的外联TCP连接 ss -ant | grep ESTABLISHED # 查找监听端口、陌生端口 lsof -i ``` 重点:陌生公网IP外联、非常规端口监听、PID对应程序在临时目录。 ### 3)查杀隐藏进程(rootkit) ```bash # 检查被隐藏的进程 ps -ef | awk '{print $2}' | sort -n | uniq > pid.txt ls /proc | grep -E '^[0-9]+$' | sort -n > proc.txt diff pid.txt proc.txt ``` --- ## 四、第四步:持久化后门排查(Linux最核心排查项,按顺序检查) ### 1)Cron定时任务(最常用持久化) ```bash # 查看所有用户的定时任务 crontab -l crontab -u root -l # 系统级定时任务(高危) ls -l /etc/cron.* /etc/crontab # 批量检索恶意命令(wget/curl/nc/bash/python/tmp) grep -rE "wget|curl|nc|bash|python|/tmp|base64" /etc/cron* 2>/dev/null ``` ### 2)Systemd服务(现代服务器主流后门) ```bash # 查看开机自启服务 systemctl list-unit-files --type=service | grep enabled # 查看所有运行中的服务 systemctl list-units --type=service --state=running # 查看服务配置文件(找出恶意service) systemctl cat 服务名 # 查找非系统自带的service文件 find /etc/systemd/system -name "*.service" -mtime -7 ``` ### 3)Shell初始化脚本(登录即执行后门) ```bash # 全局配置(所有用户生效) cat /etc/profile cat /etc/bashrc cat /etc/profile.d/*.sh # 用户级配置(root与普通用户) cat ~/.bashrc cat ~/.bash_profile cat ~/.profile cat ~/.zshrc ``` 攻击者常在末尾追加`curl | bash`远程执行脚本。 ### 4)SSH后门(留后门账号、免密登录) ```bash # 检查SSH公钥(重点!免密后门) cat ~/.ssh/authorized_keys ls -l ~/.ssh/ # 检查SSH配置文件 grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config # 检查SSH后门账号 grep ssh /etc/passwd ``` ### 5)高级持久化(rootkit级) 1. **LD_PRELOAD 动态库劫持** ```bash echo $LD_PRELOAD ls /etc/ld.so.preload ``` 2. **内核模块后门** ```bash lsmod find /lib/modules -name "*.ko" -mtime -7 ``` 3. **Udev规则、PAM认证后门、rc.local** ```bash cat /etc/rc.local ls /etc/udev/rules.d/ ls /etc/pam.d/ ``` --- ## 五、第五步:恶意文件排查(木马、webshell、挖矿程序) ### 1)高危目录(攻击者最爱存放恶意文件) `/tmp、/var/tmp、/dev/shm、/root、/home/*、/usr/local/bin` ```bash # 查看临时目录所有文件(含隐藏文件,如.. 隐藏文件夹) ls -la /tmp /var/tmp /dev/shm # 查找近7天新建的可执行文件 find /tmp -type f -executable -mtime -7 find / -type f -name "*.sh" -o -name "*.py" -mtime -7 2>/dev/null # 查找SUID提权后门(高危) find / -perm -u+s -type f 2>/dev/null ``` ### 2)WebShell排查(Web服务器) ```bash # 查找一句话木马关键词 grep -rE "eval|assert|base64_decode|system|exec" /var/www 2>/dev/null find /var/www -name "*.php" -mtime -3 ``` ### 3)文件取证(计算哈希) ```bash sha256sum 恶意文件 > ioc_hash.txt stat 恶意文件 # 记录创建/修改时间 ``` --- ## 六、第六步:账号与权限后门排查 ```bash # 列出所有系统用户 cat /etc/passwd # 列出所有特权账号(UID=0,除root外均为后门) awk -F: '$3==0 {print}' /etc/passwd # 查看sudo权限配置 cat /etc/sudoers ls /etc/sudoers.d/ # 检查空密码账号 awk -F: '$2=="" {print $1}' /etc/shadow ``` --- ## 七、第七步:日志清理痕迹排查 攻击者常用:`> /var/log/secure`、`rm -rf /var/log/*`、清空history ```bash # 检查日志文件是否被清空(大小为0) find /var/log -size 0 -type f # 检查命令历史是否被清空 ls -la ~/.bash_history ``` --- ## 八、应急处置流程(标准化执行步骤) 1. **隔离主机**:断开外网,仅保留内网取证;不要直接关机。 2. **证据保全**:导出日志、进程快照、网络连接、恶意文件哈希。 3. **溯源入口**:从auth.log登录记录定位攻击IP、入侵时间。 4. **清除持久化**:删除恶意cron、systemd服务、rc脚本、SSH公钥。 5. **清理恶意程序**:删除木马、挖矿程序、webshell;卸载恶意内核模块。 6. **账号加固**:重置所有账号密码,删除UID=0后门账号,关闭不必要SSH免密。 7. **全网狩猎**:把IOC(IP、域名、文件哈希)推送至SIEM,扫描全网主机。 8. **恢复业务**:确认威胁彻底清除后再恢复服务。 --- ## 九、一键批量取证脚本(复制直接运行,导出全部证据) ```bash #!/bin/bash mkdir -p /tmp/evidence # 日志 cp -r /var/log /tmp/evidence/logs journalctl > /tmp/evidence/system_journal.txt # 进程网络 ps auxf > /tmp/evidence/process.txt ss -antulnp > /tmp/evidence/network.txt # 持久化项 crontab -l > /tmp/evidence/cron.txt systemctl list-unit-files --type=service > /tmp/evidence/systemd.txt cat /etc/profile /etc/bashrc ~/.bashrc > /tmp/evidence/shell_rc.txt # 账号信息 cat /etc/passwd /etc/shadow > /tmp/evidence/account.txt # 导出IOC find /tmp /var/tmp /dev/shm -type f -executable > /tmp/evidence/suspicious_files.txt ``` --- ## 十、常见应急误区 1. ❌ 发现入侵直接重启:丢失进程、网络连接等动态证据。 2. ❌ 只查杀文件,不清理cron、systemd等持久化:重启后门再次复活。 3. ❌ 忽略LD_PRELOAD、内核模块、PAM这类高级后门。 4. ❌ 不校验UID=0账号,容易漏掉隐藏root后门。