当前位置:首页>Linux>Linux应急响应排查框架(下)

Linux应急响应排查框架(下)

  • 2026-10-11 05:37:08
Linux应急响应排查框架(下)
,

阅读须知

本公众号文章皆为网上公开的漏洞,仅供日常学习使用,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把剁椒Muyou鱼头“设为星标”,否则可能就看不到了啦!

2026/07/30 星期四

//01 前言

接上篇。上篇我们讲了账号安全、历史命令、异常端口和进程的排查方法,还没看过的朋友建议先翻一下历史文章。

本篇继续深入,覆盖开机启动项、定时任务、异常文件、系统日志四个核心排查方向。

//02 开机启动项:攻击者的"长期饭票"

很多木马和后门会把自己注册为开机自启动,确保服务器重启后依然存活。所以排查开机启动项,是确认"持久化后门"的关键步骤。

6.1 先看运行级别

runlevel    查看当前运行级别

6.2 排查自启动配置文件

重点关注以下位置:

/etc/rc.local        经典自启动脚本/etc/rc.d/rc[0~6].d  各运行级别的启动脚本链接/etc/rc[0~6].d       同上(部分发行版路径不同)

进入目录后,注意区分S(Start)和K(Kill),攻击者可能会伪装成正常的服务名,比如S99nginx但实际执行的是恶意脚本。

6.3 排查系统服务(自启动)

# CentOS 6chkconfig --list# CentOS 7systemctl list-unit-files --type=service | grep enabled

6.4 深入检查

ls -l /etc/init.d/    查看所有启动脚本,重点检查近期修改的文件md5sum /bin/ls        对关键命令做完整性校验

如果 /etc/init.d/ 下多了你不认识的服务脚本,别犹豫,查到底。

//03 定时任务:藏在计划里的恶意代码

定时任务是攻击者最喜欢的持久化手段之一。通过crontab或anacron,恶意脚本可以定时执行反弹Shell、数据外传、挖矿等操作。

7.1 基础操作

crontab -l    列出当前用户的定时任务crontab -e    编辑定时任务crontab -r    删除所有定时任务(谨慎操作!)

默认的 crontab 文件保存在/var/spool/cron/用户名。

7.2 排查重点目录(逐一看!)

/var/spool/cron/*      每个用户的 crontab/etc/crontab           系统级crontab/etc/cron.d/*          系统级cron配置目录/etc/cron.daily/*      每日执行/etc/cron.hourly/*     每小时执行/etc/cron.monthly/*    每月执行/etc/cron.weekly/      每周执行/etc/anacrontab        anacron配置/var/spool/anacron/*   anacron任务池

排查要点:

  • 看脚本内容,是否有 curl、wget下载恶意文件
  • 是否有 /dev/tcp反弹Shell
  • 是否有不明base64编码的命令
  • 执行频率是否异常(比如每分钟执行一次)

//04 异常文件:查Webshell和木马

8.1 先扫敏感目录

ls -al /tmpls -al /var/tmpls -al /dev/shm

这三个目录所有用户可读可写,是攻击者藏文件的重灾区。特别注意以..命名的隐藏文件夹。

8.2 根据时间范围搜索

如果已经发现了Webshell或木马文件,可以根据其创建时间来查找同一时间段内的其他可疑文件:

查找 /opt 下一天内访问过的文件find /opt -iname ”*” -atime 1 -type f查找最近 24 小时内修改过的 PHP 文件find /var/www -name ”*.php” -mtime -1

8.3 查看文件详细属性

stat 可疑文件路径    查看创建时间、修改时间、访问时间

如果一个图片文件最近被修改过,或者一个 PHP 的修改时间比网站部署时间还晚,那就要留个心眼了。

//05 系统日志:还原入侵全过程的"时间机器"

日志分析是应急响应中最重要、也最考验功底的一环。日志不会说谎,就看你会不会读。

9.1 日志在哪?

日志默认存放在/var/log/,核心文件包括:

日志文件

说明

/var/log/secure(或auth.log)

认证授权日志,SSH登录、su、sudo都在这里

/var/log/cron

定时任务执行日志 

/var/log/message

系统重要信息日志,出问题优先看它

/var/log/btmp

登录失败记录(二进制,用 lastb 查看)

/var/log/wtmp

登录/注销/重启记录(二进制,用 last查看)

/var/log/lastlog

每个用户最后一次登录记录(用lastlog查看)

9.2 实战日志分析命令

1. 定位SSH爆破

# 统计爆破 root 的 IPgrep ”Failed password for root” /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more# 统计所有爆破 IPgrep ”Failed password” /var/log/secure | grep -E -o ”(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)” | uniq -c# 看攻击者用了哪些用户名爆破grep ”Failed password” /var/log/secure | perl -e 'while($_=<>){ /for(.*?) from/; print ”$1\n”;}' | uniq -c | sort -nr

2. 查看登录成功的记录

# 统计成功登录的 IPgrep ”Accepted ” /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more# 查看登录成功的日期、用户名、IPgrep ”Accepted ” /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

3. 查看用户增删和提权操作

grep ”useradd” /var/log/secure# 新增用户grep ”userdel” /var/log/secure# 删除用户grep ”sudo” /var/log/secure# sudo 提权操作

日志里的su切换记录长这样:

Jul 10 00:38:13 localhost su: session opened for user good by root(uid=0)

sudo授权执行:

Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

//06 完整排查清单:一表打尽

如果你需要一份可以对着逐一打勾的排查清单,看这里:

系统基本信息

uname -a && cat /etc/redhat-release  # 内核版本和系统版本stat /lost+found/                    # 系统安装时间rpm -qa                              # 所有已安装的RPM包rpm -Va                              # 校验所有RPM包完整性iptables-save > /tmp/iptables.bak    # 备份防火墙规则ps aux && ls /proc                   # 进程检查(注意隐藏进程)lsmod                                # 内核模块检查

网络信息

ip a                    # 网卡信息cat /etc/resolv.conf    # DNS配置route -n                # 路由表arp -a                  # ARP表netstat -pantule        # 网络连接cat /etc/hosts          # hosts文件

关键命令完整性校验

以下命令如果被替换(比如ps被替换成不显示恶意进程的版本),排查就全白做了:

md5sum /bin/lsmd5sum /bin/psmd5sum /usr/sbin/lsofmd5sum /bin/netstatmd5sum /usr/sbin/ssmd5sum /usr/bin/pstreemd5sum /usr/sbin/sshdmd5sum /usr/bin/ssh

自启动&定时任务

systemctl list-unit-files --type=service | grep enabledls -l /etc/init.d/cat /etc/rc.localcat /var/spool/cron/*

用户登录痕迹

cat /home/*/.ssh/authorized_keys  # 检查SSH免密登录公钥last           # 登录/注销记录lastb          # 登录失败记录who            # 当前登录用户

//07 结尾

应急响应的核心不是工具,而是思路。

永远记住这个顺序:问清现象 → 反推路径 → 逐项验证 → 溯源根因。不要上来就"拔网线",也不要盲目敲命令。每一行日志、每一个异常进程、每一条历史命令,都可能是还原攻击链的关键拼图。

更重要的是,事前加固远胜事后救火。把历史命令格式优化做好、把关键文件MD5提前存好、把日志集中收集起来,这些"无聊"的工作,才是应急响应时你最大的底气。

END 


作者 | 剁椒Muyou鱼头

I like you,but just like you.

我喜欢你,仅仅如此,喜欢而已~

点赞在看不迷路哦!

最新文章

随机文章