Linux入侵应急响应思路
0x01 登录情况排查
w:用于显示目前登入系统的用户信息,以及正在执行的程序,便于查看当前系统的使用情况
last:用于显示用户最近登录信息,可能会留下入侵者的痕迹
uptime:查看当前时间、系统运行了多久时间、当前登录的用户有多少,以及前 1、5 和 15 分钟系统的平均负载,便于查看系统的运行状况和负载情况(判断是否挖矿等提供一定凭据)
0x02 查询进程情况
top:查看资源消耗情况,id表示系统cpu剩余,若该值很小,说明系统可能被用于挖矿等严重占用资源,此时可记录下该进程的PID
ps -aux --sort=-pcpu :可能top命令找到的仅是一个执行进程,可使用ps -aux–sort=-pcpu或ps -elf查询所有进程,从而找到所有相关进程(父进程、子进程等),也可以检查是否存在其它异常进程(资源异常暂用进程、命名异常进程、恶意外连等)。–sort=-pcpu会根据cpu占用情况从高到低排序,有利于定位到资源占用高的进程
0x03 网络连接排查
使用netstat -antlp|more或者netstat -ano|more
发现异常外连后,运行ls -l /proc/ $ PID/exe或file /proc/$ PID/exe($PID为对应的pid号)可找到启动文件
查看端口占用情况
命令:lsof -i:port,根据端口查看外连情况
0x04 历史命令排查
可通过history得到很多的证据,如下图所示,请记得把所有账号的.bash_history文件都查看,不要遗漏
0x05 用户信息排查
查看用户信息文件
cat /etc/passwd
字段按顺序解释:
用户名:密码:用户ID:组ID:用户说明:home目录
注意:无密码/nologin只允许本机登陆,远程不允许登陆
主要关注/bin/bash或/bin/sh的用户,注意是否存在异常账号(需要和客户沟通)
查看影子文件
cat /etc/shadow
字段按顺序解释:
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
检查特权用户
awk -F: ‘$3==0{print $1}’ /etc/passwd
检查以远程登录的账号
awk ‘/$1|$6/{print $1}’ /etc/shadow
排查ssh密钥文件
ls -al ~/.ssh
与客户确定是否存在异常的密钥文件
0x06 计划任务排查
crontab排查
crontab -l列出某个用户cron服务的详细内容,如下图所示,会泄露恶意文件的相关信息。
默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root);每个账号下都有属于自己的计划任务,因此需要排查所有用户的计划任务,切勿遗漏
排查文件列表
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
0x07 开机启动项排查
开机启动配置文件
需要查看/etc/rc.local是否存在恶意执行启动项
0x08 日志审计
0x09 注意事项
1.在做入侵排查前使用命令HISTFILE=/dev/null,将本次shell下执行的命令不写入.bash_history中避免干扰之前的历史命令,该命令仅针对当次shell有效,重开shell后需要重新执行该命令。
2.在确定找到恶意文件或被入侵的原因之前,切勿杀死恶意进程或重启系统,否则会破坏现场。
3.可能存在ps、netstat、ls等命令异常,可能是已被攻击者或病毒木马等替换,此时需要及时删除这些命令文件,使用正确的文件,以便于再次启动恶意文件。
检查方法:
可通过ls -lh /bin/ps来查看,如下图所示,这类命令文件大小通常在130k左右,若文件过大,便可能是已被攻击者或病毒木马等替换。
参考文章:https://mp.weixin.qq.com/s/uRplpbPu9KVHHf0KJ46t5g