Linux 应急响应全套排查命令手册、日志分析、Webshell、恶意文件取证实战
文章简介
服务器遭遇入侵、挖矿、Webshell、暴力破解后,绝大多数运维只会简单查看进程和日志,缺少标准化取证命令。本文整理grep、awk、find、stat、file、strings六大核心工具,按文本日志检索、文件检索、文件属性审计、二进制样本分析四大模块拆分,附带大量可直接复制的实战命令,覆盖账号溯源、Webshell 查杀、SUID 后门、挖矿木马取证场景,新手网安、运维工程师可直接落地用于应急响应与 CTF 取证。
0x00 前言
Linux 入侵应急响应核心原则:只读优先、先取证再清理、以时间线为核心排查线索
- 排查全程尽量不修改、删除、移动可疑文件,避免破坏证据;
- 所有操作记录命令、执行时间、输出结果,留存日志用于溯源;
- 优先排查高风险目录:
/var/www、/tmp、/var/tmp、/dev/shm、/home、/etc/cron*; - 不依赖文件名判断文件真实类型,使用
file、strings校验二进制样本。
本文分为四大模块:文本搜索与日志处理、文件检索 find、文件属性元数据审计、二进制文件取证,最后汇总账号、Webshell、后门、定时任务完整排查脚本。
0x01 文本搜索与处理(日志分析核心工具 grep + awk)
1.1 grep 日志检索神器(入侵溯源必备)
grep 用于在日志、网站代码、配置文件中匹配恶意关键词,支持递归、正则、上下文查看,是定位 Webshell、暴力破解、恶意下载命令的核心工具。
核心参数对照表
表格
| 参数 | 作用 | 应急响应场景 |
|---|---|---|
| -a | 二进制文件强制按文本解析 | 读取 wtmp、木马二进制、乱码日志 |
| -r / -R | 递归遍历目录 | 全站扫描 Webshell 后门代码 |
| -n | 输出匹配行号 | 精准定位恶意代码位置 |
| -i | 忽略大小写 | 匹配混淆写法EvAl、BASE64_DECODE |
| -v | 反向过滤,排除正常内容 | 过滤 127.0.0.1 本地访问、健康检查日志 |
| -E | 扩展正则,多关键词匹配 | 同时检索 eval、system、exec 等危险函数 |
| -C N | 显示匹配行前后 N 行 | 还原攻击完整上下文 |
| --include | 限定文件后缀 | 仅检索 php/jsp 脚本,减少无效输出 |
| --exclude-dir | 排除目录 | 跳过 vendor、node_modules 第三方依赖 |
实战高频命令
bash
运行
# 1. 全站递归查杀PHP Webshell高危函数(生产最常用) grep -RniE "eval|assert|system|exec|shell_exec|passthru|base64_decode|gzinflate" \ /var/www/html --include="*.php" --exclude-dir="vendor" --exclude-dir="node_modules" # 2. 查找SSH暴力破解失败记录(Ubuntu/Debian) grep -a "Failed password" /var/log/auth.log # 3. 查看root登录记录,附带前后3行上下文 grep -a -C 3 "root" /var/log/auth.log # 4. Nginx访问日志排除本机访问,查看外部异常请求 grep -v "127.0.0.1" /var/log/nginx/access.log # 5. CTF/取证:全局搜索flag关键字 grep -Rni "flag{" /etc 2>/dev/null grep -Rni "flag{" ~ 2>/dev/null1.2 awk 日志统计、字段提取工具
awk 适合处理结构化文本(passwd、访问日志、登录日志),快速提取 IP、用户名、请求路径并统计频次。
常用实战案例
bash
运行
# 1. 统计访问量Top10恶意IP(Nginx日志) awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10 # 2. 统计SSH爆破来源IP,按失败次数排序 grep -a "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head # 3. 筛选拥有bash登录权限的可疑用户 awk -F: '$7 ~ /bash/ {print $1, $3, $6, $7}' /etc/passwd # 4. 提取HTTP请求方法与URL awk -F\" '{print $2}' /var/log/nginx/access.log | awk '{print $1, $2}' | head # 5. 统计异常HTTP状态码分布(404/500/403) awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr1.3 日志快速浏览:head /tail/less
处理超大日志文件,禁止直接 vim 打开导致卡顿:
bash
运行
head -n 20 /var/log/nginx/access.log # 查看前20行 tail -n 100 /var/log/nginx/access.log # 查看最后100行 tail -f /var/log/auth.log # 实时监控SSH登录日志 less /var/log/secure # 分页查看,/关键词快速检索,q退出0x02 文件查找 find(定位恶意文件、后门、挖矿程序)
find 支持按修改时间、权限、大小、文件名、属主全盘检索,是排查新增木马、SUID 提权后门、777 危险文件的核心命令。
核心条件参数
表格
| 参数 | 说明 | 排查场景 |
|---|---|---|
| -mtime -1 | 24 小时内修改文件 | 入侵当天新增恶意脚本 |
| -mmin -60 | 60 分钟内修改文件 | 实时突发入侵快速定位 |
| -newermt "2026-06-01 00:00:00" | 指定时间后修改 | 精准锁定攻击时间线文件 |
| -perm -4000 | 查找 SUID 提权文件 | 黑客常用本地提权后门 |
| -perm 0777 | 全局可写高危文件 | 攻击者上传、篡改文件点位 |
| -size +20M | 大于 20MB 大文件 | 挖矿程序、打包窃取数据 |
| -exec ls -l {} ; | 检索结果执行命令 | 批量查看可疑文件详情 |
全套实战检索命令
bash
运行
# 1. Web目录24小时内修改的PHP文件(入侵优先排查) find /var/www -type f -name "*.php" -mtime 0 -ls # 2. 近60分钟所有修改文件,快速定位新增后门 find /var/www -type f -mmin -60 -ls # 3. 精确时间检索指定日期后篡改的网站文件 find /var/www -type f -newermt "2026-06-01 00:00:00" -ls # 4. 查找全局777权限可写文件 find /var/www -type f -perm 0777 -ls # 5. 全盘查找SUID高危提权文件(重点排查非系统程序) find / -type f -perm -4000 -ls 2>/dev/null # 6. 查找大于20MB异常大文件(挖矿、数据打包) find / -type f -size +20M -ls 2>/dev/null # 7. 查找网站隐藏后门文件(.开头隐藏脚本) find /var/www -name ".*" -ls # 8. 批量检索php/jsp/asp/sh脚本后门 find /var/www -type f \( -name "*.php" -o -name "*.jsp" -o -name "*.sh" \) -ls高频排查目录清单
plaintext
Web站点:/var/www、/usr/share/nginx/html 临时目录:/tmp、/var/tmp、/dev/shm 用户目录:/home、/root 定时任务:/etc/cron*、/var/spool/cron 系统服务:/etc/systemd/system 日志目录:/var/log0x03 文件属性与元数据审计(ls /stat/file)
3.1 ls 快速目录巡检
重点查看隐藏文件、修改时间、权限、属主,最新修改文件优先排查:
bash
运行
ls -alth /var/www/html # 按修改时间倒序,显示隐藏文件、可读大小 ls -alth /tmp /var/tmp # 临时目录木马高频存放点 ls -ali /var/www/upload # -i查看inode,排查硬链接后门参数说明:
-a:展示隐藏文件;-l:长格式权限;-t:按修改时间排序;-h:人性化大小;-i:inode 编号。
3.2 stat 查看文件时间戳(取证关键)
Linux 三个核心时间,用于判断文件篡改行为:
mtime(Modify):文件内容修改时间(最核心,判断是否新增木马)ctime(Change):文件权限、属主变更时间(攻击者修改权限会更新)atime(Access):文件访问时间(参考价值较低)
bash
运行
# 查看可疑Webshell完整元数据 stat /var/www/html/shell.php # 批量查看2小时内修改文件的时间信息 find /var/www -type f -mmin -120 -exec stat {} \;注意:攻击者可使用
touch -t伪造 mtime,但 ctime 无法完全篡改,可作为取证依据。
3.3 file 判断文件真实类型(识破图片伪装木马)
攻击者常将 ELF 可执行程序、Shell 脚本伪装成 jpg/png 图片,file不依赖后缀,读取文件头部特征判断真实类型:
bash
运行
# 判断上传图片是否为伪装木马 file /var/www/upload/avatar.jpg # 批量检测上传目录所有文件真实类型 find /var/www/upload -type f -exec file {} \;高危输出识别:
ELF 64-bit executable:Linux 可执行木马、挖矿程序script text executable:恶意 Shell/Python 脚本data:加密混淆后门、压缩恶意载荷
0x04 文件深度内容审计(strings、哈希校验、diff、xxd)
4.1 strings 提取二进制可读字符串(木马逆向初筛)
从挖矿程序、后门 ELF 中提取 URL、矿池地址、命令、IP,快速定位 C2 通信地址:
bash
运行
# 提取木马中所有网络链接 strings /tmp/malware.bin | grep -Ei "http|https|ftp" # 检索挖矿、wget/curl下载后门关键字 strings /tmp/malware.bin | grep -Ei "curl|wget|xmrig|pool|/tmp|bash" # 查看前50行可读字符串 strings /tmp/malware.bin | head -n 504.2 md5sum /sha256sum 文件完整性校验(Rootkit 排查)
对比系统命令哈希,判断ps、ls、top是否被 Rootkit 恶意替换:
bash
运行
# 生成系统关键命令哈希 sha256sum /bin/ps /bin/ls /usr/bin/top /usr/bin/netstat 2>/dev/null提示:需与干净同版本系统哈希对比,单一哈希无法判定异常;怀疑 Rootkit 时建议离线取证校验。
4.3 diff 文件差异对比
对比备份文件快速发现新增后门账号、篡改配置:
bash
运行
# 对比当前passwd与备份,定位新增恶意账号 diff -u /etc/passwd /etc/passwd.bak # 递归对比网站源码与备份,找出新增Webshell diff -ur /var/www/html /backup/html4.4 xxd /sed 十六进制与分段查看
bash
运行
# 查看文件前64字节十六进制,识别文件头特征 xxd -l 64 /tmp/suspicious_file # 查看日志100~150行内容 sed -n '100,150p' /var/log/nginx/access.log # 显示脚本隐藏特殊混淆字符 cat -A /var/www/html/backdoor.php0x05 分场景应急响应成套排查命令
5.1 账号与 SSH 登录溯源
bash
运行
# 筛选可远程登录用户 awk -F: '$7 ~ /(bash|sh)$/ {print $1, $3, $6, $7}' /etc/passwd # 查看近20条登录记录 last -a | head -n 20 # 查看暴力破解记录 lastb -a | head -n 20 2>/dev/null # Ubuntu SSH认证日志检索 grep -aEi "Accepted|Failed|Invalid user|session opened" /var/log/auth.log # CentOS SSH安全日志检索 grep -aEi "Accepted|Failed|Invalid user" /var/log/secure5.2 Webshell 一站式查杀
bash
运行
# 1. 24小时内新增网站脚本 find /var/www -type f -mmin -1440 -ls 2>/dev/null # 2. 高危函数递归检索 grep -RniE "eval|assert|system|exec|popen|base64_decode" /var/www --include="*.php" 2>/dev/null # 3. 检索上传目录脚本文件 find /var/www/upload -type f \( -name "*.php" -o -name "*.phtml" -o -name "*.jsp" \) -ls # 4. 识别后缀伪装的可执行程序 find /var/www -type f -exec file {} \; 2>/dev/null | grep -Ei "executable|ELF"5.3 SUID/SGID、全局可写后门排查
bash
运行
# SUID提权文件 find / -type f -perm -4000 -ls 2>/dev/null # SGID权限文件 find / -type f -perm -2000 -ls 2>/dev/null # 全局可写文件目录 find / -perm -0002 -ls 2>/dev/null5.4 定时任务持久化后门排查
bash
运行
# 当前用户定时任务 crontab -l # 系统级定时文件 cat /etc/crontab ls /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/ /etc/anacrontab # 所有用户定时任务存储目录 ls -alh /var/spool/cron/5.5 可疑二进制样本初筛流程
bash
运行
file /tmp/suspicious.bin sha256sum /tmp/suspicious.bin strings /tmp/suspicious.bin | head -n 100 strings /tmp/suspicious.bin | grep -Ei "http|curl|xmrig|pool|/tmp"0x06 新手应急排查避坑建议
- 优先时间线排查:最近修改文件、最新登录记录、新增定时任务入侵概率最高;
- 固定高风险目录:先查
/tmp、网站上传目录,再全盘检索,减少无效输出; - 缩小检索范围:grep 配合
--include、find 限定后缀,避免几万行日志刷屏; - 不要信任文件名:图片后缀、日志后缀都可能是木马,必须用
file校验真实类型; - 取证优先,清理后置:可疑文件先记录路径、哈希、时间,备份样本再删除;
- Rootkit 环境校验:系统命令可能被篡改,重要哈希校验建议使用救援 U 盘离线操作。
