学习自:Linux应急响应

Linux应急响应姿势浅谈

0x01 Web服务

一般如果网络边界做好控制,通常对外开放的仅是Web服务,那么需要先找到Webshell,可以通过如下途径:

1:检查最近创建的php、jsp文件和上传目录

例如要查找24小时内被修改的JSP文件:

>find ./ -mtime 0 -name "*.jsp"

2.使用webshell查杀工具

windows下D盾等,linux下河马

3.与测试环境目录做对比

diff -r {生成dir}{测试dir}

4.创建Audit审计规则

vim /etc/audit/audit.rules

-a exclude,always -F msgtype=CONFIG_CHANGE
-a exit,always -F arch=b64 -F uid=48 -S execve - k webshell

查看登录信息

检查SSH后门

ssh -V

查看ssh配置文件和/usr/sbin/sshd的时间
stat /usr/sbin/sshd

srings /usr/sbin/sshd  是否有邮箱信息   #/usr/sbin存放一些非必须的系统命令

通过strace监控sshd进程读写文件的操作

一般的sshd后门都会将账户密码记录到文件,可以通过strace进程跟踪到ssh登录密码文件。

ps aux | prep sshd | grep -v grep
root 65530 0.0 0.1 48428 1260 ? Ss 13:43 0:00 /usr/sbin/sshd

其他

扫描特征

通常日志中会伴随一些其他攻击特征

egrep '(select|script|acunetix|sqlmap)' /var/log/httpd/access_log

访问频次
重点关注POST请求

grep 'POST' /var/log/httpd/access_log | awk '{print $1}' | sort | uniq -c | sort -nr

egrep就是grep -E用于显示文件中的符合条件的字符

//grep默认搜索区分大小写,因而有时候搜索'Get'没有,但其实日志中全是大写的。所以可以加上-i不区分大小写更好查找。

定时任务

在应急响应中,最重要的一个点是定时任务。例如Redis未授权通过持久化配置写入Crontab中。

定时任务相关的知识点:
一般常用的定时任务crontab -l是用户级别的 保存在/var/spool/cron{user}
每个用户都可以通过crontab -e编辑自己的定时任务列表

而/etc/crontab是系统级别的定时任务,只有Root账户可以修改。
另外在应急的时候需要留意的点还有/etc/cron.hourly,/etc/cron.daily /etc/cron.weekly
/etc/cron.monthly等周期性执行脚本的目录

例如:我想每天执行一个脚本,只需要放到/etc/cron.daily下,并且赋予权限执行即可。