什么是应急响应

应急响应,指的是在应对突发事件或危机情况时采取的及时有效措施,以控制和减轻事件带来的影响,保障安全。

在检测到网络安全事件(如黑客攻击、数据泄露、系统入侵等)后,组织采取的一系列预定义的行动和程序,以最小化损失和影响,恢复正常运营,并防止未来的安全威胁。

目录

  • 0x01:Windows入侵排查
  • 0x02:Linux入侵排查
  • 0x03:Windows日志分析
  • 0x04:Web日志分析
  • 0x05:MySQL日志分析

0x01:Windows入侵排查

1.1、查看服务器中是否存在可疑用户或者新增用户。

检查方法:Win+R -> 输入【lusrmgr.msc】命令,查看是否存在可疑账户,如果Administrators的管理员组当中存在可疑用户,提交或者删除。

1.2、是否存在隐藏账号。

①、打开注册表,查看管理员对应键值

1.3、通过日志查看管理员登录时间、用户名和IP是否异常。

①、Win+R 打开运行,输入“eventvwr.msc”,打开“事件查看器”。

②、直接按下 Win键 ,搜索“事件查看器”。(系统版本可能存在不同)

③、通过Windows常用事件ID筛选题目或者想要查询的日志类型和具体内容。(常见Windows事件ID详情0x03。)

1.4、查看异常的端口、进程和可疑IP及连接。

netstat -ano 查看目前的网络连接情况,找到可疑的ESTABLISHED以及PID

1.5、检查系统启动项、计划任务和服务

①、启动项

a、单击【开始】-> 【所有程序】-> 【启动】,默认情况下这里面是一个空目录,确认是否有非正常的程序或者脚本在该目录下存在。

b、【C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup】此路径同上

c、按住win+R 输入【shell:startup】,即可调出启动目录

d、按住 win+R 输入【msconfig】,查看是否存在命名异常的启动项。

e、按住 Win+R 输入【regedit】,打开注册表查看以下三个注册表项,验证开机启动项是否正常。

HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

f、按住 Win+R 输入【gpedit.msc】,打开组策略(win11无法用这个命令打开)检查是否有脚本自启动。

②、计划任务

a、打开【控制面板】-> 【Windows工具】->【任务计划】,查看木马后门的文件路径,对其进一步查杀。

b、【CMD】-> 输入【at】(win11已经弃用at命令,使用schtasks.exe命令,原理相同),检查计算机与网络上其他计算机之间的会话或者计划任务。

③、服务自启动

a、按住Win+R 输入 【services.msc】注意服务状态和启动类型,检查是否异常。


0x02:Linux入侵排查

2.1 账号安全

1.用户信息文件:/etc/passwd

用户名:密码:用户ID:组ID:用户说明:家目录

注意:无密码只允许本机登录,不能远程登录。

2.影子文件:/etc/shadow

用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之 后的宽限天数:账号失效时间:保留

2.2 入侵排查

1
2
3
4
5
6
①、通过history命令查看此账号执行过的系统命令,根据命令判断此账号进行了什么行为。
②、查看异常端口
netstat -antlp|more
查看PID所对应的进程文件路径
③、使用ps命名,分析进程:
ps -aux|grep pid

2.3 开机启动配置文件

1
2
/etc/rc.local
/etc/rc.d/rc[0-6].d

2.4 排查定时任务

1
2
3
4
1、crontab
crontab -l 列出某个用户cront服务的详细内容
crontab -r 删除每个用户cront任务
crontab -e 编辑当前的crontab文件
1
2
3
4
5
6
7
8
9
10
11
重点关注以下目录是否存在恶意脚本

/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/*

2.5 排查系统日志

日志默认存放位置:/var/log/

查看日志配置情况:cat /etc/rsyslog.conf

日志文件路径 说明
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换 用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系 统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要 使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文 件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登 录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询

2.6 日志分析小技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
awk 命令
grep 命令
sed 命令
find 命令
sort 命令
uniq 命令
top 命令
last 命令
xargs 命令
netstat 命令
more 命令
diff 命令

***// 以上Linux常用命令的所有语法及用法必须完全记住

0x03:Windows日志分析

上述0x01当中已经讲过Windows的日志所在路径和方法,这次不再过多赘述

对于不同的Windows日志分析,有着不同的事件ID,下面是一些常见的事件ID ,也是2024年省赛用到的一些事件ID。

事件ID 说明
4624 登录成功
4625 登录失败
4634 注销成功
4647 用户启动的注销
4672 使用管理员进行登录
4720 创建用户

此外还有很多事件ID,这里不再一一描述,遇到之后去百度搜索就可以。

可以利用eventlog事件来查看系统账号登录情况:

  1. 在“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”;

  2. 在事件查看器中,单击“安全”,查看安全日志;

  3. 在安全日志右侧操作中,点击“筛选当前日志”,输入事件ID进行筛选。

    4624 –登录成功

    4625 –登录失败

    4634 – 注销成功

    4647 – 用户启动的注销

    4672 – 使用超级用户(如管理员)进行登录

    我们输入事件ID:4625进行日志筛选,发现事件ID:4625,事件数175904,即用户登录失败了175904次,那么这台服务器管理员账号可能遭遇了暴力猜解。


0x04:Web日志分析

常见的中间件:Apache、Nginx、Tomcat、IIS、Weblogic

这是一条Apache的访问日志,这里可以清楚的看到访问者的IP地址,访问事件,请求方式GET/POST,访问时所用的操作系统和浏览器的内核版本,以及访问的哪个页面和回显是否正常等。

Linux下,可以配合Shell+Linux命令实现日志分析:

1
2
3
4
5
6
7
1、列出日志当中访问次数最多的IP:
cat log_file |awk '{print($1)}' |uniq -c |sor //详细可以去看一看awk,uniq,sort命令的详细用法
仅提供排查思路,命令的用法自己发挥
2、列出日志当中成功访问的记录:
cat log_file |grep 200
3、列出日志当中成功被hacker上传的后门记录:
cat log_file |grep 200 |grep POST

应急响应中身为蓝队人员要做好防护职责,最好的防护思路就是读懂红队人员的攻击思路和攻击手段,用反方向的思维去做好防护。 —仅个人理解,简单点就是“知攻善防”

所有中间件的日志都默认存放在不同的路径下,这里需要你个人积累。


0x05:MySQL日志分析

1
2
3
4
5
6
1、查看log配置信息:
show variables like '%general%';
2、开启日志:
SET GLOBAL general_log='On';
3、指定日志文件路径:
#SET GLOBAL general_log_file='/var/lib/mysql/mysql.log';

例如:当访问/Demo.php?id=1,此时得到这样的日志:

1
2
3
4
240501 10:01:20          14 Connect    root@localhost on
20 Init DB Demo
20 Query SELECT * FROM admin WHERE id=1
20 Quit

日志解读:

1
2
3
4
第一列:时间列,前面是日期,后面是小时和分钟,另外有些sql语句几乎是同时执行,所以就不会另外再记录时间。
第二列:ID,就是show processlist出来的第一列的线程ID。
第三列:Command,操作类型,比如:Connect就是连接数据库,Query就是查询数据库(增删改查都显示为查询)。
第四列:Argument,详细信息,比如root@localhost on就是连接数据库,以此类推,下面就是连接数据库之后做了什么操作。