应急响应思路流程

一、基本思路流程

  1. 收集信息:收集客户信息和中毒主机信息,包括样本
  2. 判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS 等等
  3. 抑制范围:隔离使受害⾯不继续扩⼤
  4. 深入分析:日志分析、进程分析、启动项分析、样本分析方便后期溯源
  5. 清理处置:杀掉进程,删除文件,打补丁,删除异常系统服务,清除后门账号防止事件扩大,处理完毕后恢复生产
  6. 产出报告:整理并输出完整的安全事件报告

二、Linux入侵排查思路(我自己的顺序)

1.排查正在登陆系统账号安全。

who 查看当前登录用户(tty本地登陆 pts远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载
last 显示用户最近登录信息
lastlog 查看到每个系统用户最近一次登陆系统的时间
lastb 用于列出登入系统失败的用户相关信息 这里也可以用于分析是否有暴力破解

异常解决方案:

pkill -kill -t pts/1    #强制用户下线
usermod -L test ##  锁定帐号test
usermod -U test ##  解锁帐号test

2.利用 /etc/passwd 和 /etc/shadow文件排查非法账户。

/etc/passwd:储存了所有的用户信息,可以在这里排查是否有非法的用户被创建。

  root:x:0:0:root:/root:/bin/bash.      这里要注意这个0,代表了“root”。

排查的时候利用如下命令排查是否有非法root用户:

awk -F':' '$3==0{print $1}' /etc/passwd

/etc/shadow:存储了所有用户的信息和密码。可以利用如下命令来查看可以远程登录系统的账户信息:

awk '/\$1|\$6/{print $1}' /etc/shadow

3.排查用户登陆情况。

grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'

4.排查历史命令。

首先可以执行 : find / -name .base_hittory
1. 查看.bash_history文件
2. 打开 /home 各帐号目录下的 .bash_history,查看普通帐号的历史命令
3. history命令

5.排查计划任务。

这里是系统级别的计划任务日志

find /etc/cron* -type f


/etc/cron.d/sysstat
/etc/cron.d/0hourly
/etc/cron.daily/man-db.cron
/etc/cron.daily/logrotate
/etc/cron.deny
/etc/cron.hourly/0anacron
/etc/crontab

第一个目录:/var/log/cron这个目录用来记录任务计划的运行日志

cat cron|awk -F':' '{print $4}'|grep "CMD"|sort |uniq -c|sort -nr

第二个目录:/var/spool/cron/这个目录记录了用户级别的计划任务(一般看这个)

6.查看是否有非法文件被上传或正常文件被非法修改

(1)

find / -name *.php -mtime -30
查看30天内修改的文件
atime    访问时间(不可信)
mtime    修改时间(不可信)
ctime    变化时间(可信)

注:stat命令用于查看文件的时间信息 

(2)校验文件的md5值

首先第一步提前校验文件的md5值并保存起来
find /etc/cron* -type f -exec md5sum {} \; >hithut.v1

然后试着随便修改一个文件的内容
......

再次校验md5值并保存起来
find /etc/cron* -type f -exec md5sum {} \; >hithut.v2

最后比较两个md5值是否相同
diff hithut.v1 hithut.v2

7.排查是否有系统命令替换(别名)

怎么替换的这里不讲解了,这里说一下如何检验是否替换了。

rpm -Vf /usr/bin/*
rpm -Vf /usr/sbin/*

具体的含义如下

rpm -V 弹出的每列消息含意如下:
S file Size 大小不一致
MMode 模式不一致 (包括许可和文件类型)
5 MD5 sum 校验和不一致
DDevice 主从设备号不匹配
L readLink(2) 路径不匹配
UUser 属主不一致
GGroup 所属组不一致
T mTime 修改时间不一致

异常解决方案:

通过下载busybox来执行被修改的命令

8.查看网络连接情况 

(1)方法一

netstat -antup
or
ss -antup

-a 或--all:显示所有连线中的 Socket;

-n 或--numeric:直接使用 ip 地址,而不通过域名服务器;

-p 或--programs:显示正在使用 Socket 的程序识别码和程序名称;

-t 或--tcp:显示 TCP 传输协议的连线状况;

-u 或--udp:显示 UDP 传输协议的连线状况;

第一列:协议类型

第二列:接收消息队列

第三列:发送消息队列

第四列:本地 ip 和端口

第五列:远程 ip 和端口

第六列:网络连接状态(LISTEN不重要,重要的是排查ESTABLISHED)

第七列:进程 pid 和进程名称

可以通过第六列筛选已经建立链接的进程。TCP 连接状态详解:
1、LISTEN #本地服务侦听状态
2、ESTABLISHED #已经建立链接双方正在通讯状态。
3、CLOSE_WAIT #对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成
CLOSE_WAIT 此时我方要调用 close()来使得连接正确关闭。
4、TIME_WAIT #我方主动调用 close()断开连接,收到对方确认后状态变为
TIME_WAIT。 5、SYN_SENT #半连接状态,原理同 SYN Flood 攻击,攻击者发送 SYN 后服务器端口
进入 SYN_SENT 状态等待用户返回 SYN+ACK。

(2)方法二

lsof -i

紧接着可以通过-p指定PID查看更细节的部分。

lsof -p pid

异常解决方案:

iptables -A OUTPUT -d IP -j DROP    #封禁IP
 iptables -F OUTPUT    #恢复

9.进程排查

ps axjf #可用于查看进程树
pstree -p #这个我比较喜欢用。没有的话需要自己安装

异常解决方案:

排查出来以后kill -9 PID 就好了。(防止再生哦,可以用pgrep来看看杀干净了没)    #当然一般情况下先STOP,处理完其他的再-9

10.开机启动项排查

(1)/etc/init.d目录下

(2)/etc/rc*目录

(3)/usr/lib/systemd/system目录下

异常解决方案:

删除对应的文件

补充:

(1)在遇到删除文件无法删除的情况下,需要排查一下该文件或目录的文件属性chattr

可以通过

chattr +i hihub

来给hihub文件添加一个i属性。属性说明如下:

a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。

可以通过

lsattr hithub

来查看文件属性,当需要查看目录的属性时,要加一个-a参数。

遇到i参数无法删除文件异常解决方案:

chattr -i hithub

(2)巧用 systemd-journald 服务分析系统日志

待补充。。。

三、Web应用

(1)首先找到日志文件的存储位置,因为不同中间件他的日志文件存放路径不同,例如IIS、apache、nginx、宝塔、javaweb等中间件的日志文件分类和位置都不同,可以通过查看配置文件来寻找日志文件的存放位置,当然也可以直接百度。

(2)当然了自己要有一个日志分析的工具,360星图是一个自动化的软件,不过我没用过因为我是M1电脑,这里我还是用我自己的VS CODE,找了两个插件,一是Filter Lines、二是Log File Highlighter,顾名思义。插件的用法自行百度,帮助我们来过滤一些数据并高亮显示。

(3)这里的分析日志我不是很熟练,目前只会根据给的发生异常的时间进行过滤,查找到异常的请求(ip),然后去过滤ip查看ta更多的操作。这里异常的请求分辨就要求对一些漏洞的掌握了。

四、数据库

 这里还是采用分析日志的方法,当然了不同的数据库日志存放位置不同,而且有的日志默认为关闭状态。

 这里以Mysql数据库为实验。

 首先是查看日志存储文件和一些设置:

show VARIABLES LIKE "%general%"

我们设置为开

set GLOBAL general_log='On'

然后去查看分析日志文件即可。

 

posted @ 2022-11-29 19:00  hithub  阅读(328)  评论(0编辑  收藏  举报