这篇文章,写给每一个「护网黑奴」,为初次护网的小伙伴普及一下护网工作内容,提供一些简单的分析思路。
护网分析研判思路
- 1、护网组织架构和责任划分
- 1.1、安全监控
- 1.2、分析研判
- 1.3、应急处置
- 2、分析研判
- 2.1、判断告警真实性
- 2.2、判断影响范围
- 2.3、判断是否与HW相关
- 3、告警流量分析
- 3.1、信息泄露
- 3.2、SQL注入
- 3.3、文件上传
- 3.4、XSS(跨站脚本)
- 3.5、代码执行
1、护网组织架构和责任划分
护网防守队伍整体会分为「监控」、「研判」、「处置」三个部分,不同客户的叫法可能不一样,但职责是相同的。
分组灵活性非常高,有些单位买的人少,不分组,一专多能,就是啥都干;有些单位买的人多,分成十几个组,什么指挥部、后勤部、机动组、应急组、加固组等等,本质上都是监控研判处置这三类细分出来的。
面试护网的时候,会按照初中高级分类,这个不能全信。面试初级,干高级的活,很常见,不要怕干不了,反正出事了挨骂的是项目经理。
1.1、安全监控
第一次护网基本都是做安全监控,通常叫「监控组」,去到以后给你几个流量监测设备的登录账号,就坐着看设备上有没有告警。
- 有告警了就简单分析下是不是「误报」,不是误报就把ip报给处置组「封禁」。
- 拿不准的就给研判组「分析」。不分析直接让封IP也行,毕竟有没有分析过,只有你自己知道。
- 监控的原则是 “宁可错杀一千,也不放过一个” 。封错了大不了用户反馈业务被拦了,处置组给解封就行;但如果打进来了,平台有告警但你没上报,那就是你的问题了。
往年成绩好的单位给护网的优先级通常比较高,比如我在某银行的一次护网,要求零失分,但给我们每个人停掉任何系统一小时的权限;但有的单位就比较重视业务,核心业务被打了也不会轻易下线。
1.2、分析研判
通常叫「分析组」或者「研判组」,判断告警是不是「误报」、是不是「攻击队」打的。
具体操作方式我会在下面的分析研判部分详细讲解。
1.3、应急处置
通常会分成「应急组」和「处置组」。
处置组就是「封IP的」,去到以后给你个防火墙的登录账号,里面有提前建好的HW封IP的策略,有人让你封IP了,就往策略组里加IP。客户通常会提前准备一个白名单,封之前搜一下白名单,别封错了。
应急组就要有一点点技术了,一般会要求有几次护网经验。被打的时候上机排查,没事的时候就坐着。应急处置参考:
- 护网告警处置SOP
- Windows应急响应排查思路
- Linux应急响应排查思路
2、分析研判
正常情况下,这是HW中级工程师的活,初级只做监控,但很多时候监控组也是要研判的。
为什么这么说?因为我就是那个负责分析研判的监控组!
当然,我也不是最惨的,听说今年有个客户,防守队就买了一个人,被人家拿了好几个服务器在内网疯狂扫。客户生气把项目经理喊过去,经理过去人傻了,单听过一专多能,也没见过千手观音啊。
2.1、判断告警真实性
HW发现攻击,主要依赖安全设备的告警,监控组会初步筛掉误报,只有真实攻击才需要处置或应急。但我们前面也说了,监控组为了客(gui)户(bi)安(ze)全(ren),会尽可能的将所有告警都上报,所以判断告警真实性的任务就落到了研判组这里。
(有些客户只分监控、处置、应急,没有单独的研判组,这种情况就得监控组来研判了)
根据「请求」和「返回」的内容来判断,分析请求体里面有没有对应payload,返回的状态码是200还是404,响应的内容跟攻击的内容是否有关联性。
- 比如一个status2漏洞,请求里有payload,说明是真实攻击;但响应状态码404,说明攻击失败了,封IP就行。
- 比如一个SQL注入,请求里有完整的SQL语句,说明是真实攻击;响应状态码200、响应SQL语句对应的执行结果,说明攻击成功了,要走应急处置了。
只要确定是「真实」的攻击,就直接「封禁IP」。
为什么?因为他都打你了。直接在源头解决问题,万一他下次就攻击成功了呢。
2.2、判断影响范围
影响评估可以粗暴的分为两种:直接「获取权限」的漏洞和其他漏洞。
护网淘汰的依据不是你挨了多少打,而是你的最高权限有没有被拿到,当服务器权限被三个攻击队拿到时,参与单位会被直接「淘汰」,这也是用户最关注的地方。
webshell、RCE、SQL注入这种能直接获取权限的,肯定严肃处理,重点关注受害地址为攻击源IP的流量告警,判断有没有反连的情况,被拿了权限以后及时发现的话,会加分。
XSS、文件读取这种不能直接获取权限的,关注度就没这么高了,该封的就封,主打一个快速处置。
2.3、判断是否与HW相关
「攻击队」的IP会在墙上单独开一条策略组,临时封,HW结束后统一解封。
但非攻击队要放到平时的策略组里,永久封。所以我们必须区分攻击是不是「攻击队」的。
下面简单介绍几个判断攻击队的方法:
1)国外IP
攻击队为了隐匿自己的攻击痕迹,往往会使用国外的IP,防止被溯源。
2)新IP
攻击队只有在活动期间,拿到授权以后才能渗透。
因此,活动期间才出现的新IP,大概率是攻击队。
3)恶意攻击类型
勒索、挖矿、蠕虫、僵尸网络等破坏性的攻击行为,是活动期间明令禁止的,这类攻击可以排除攻击队的嫌疑。
相反,CS远控、异常域名请求、框架和组件漏洞利用的这种获取权限攻击行为,则要重点关注。
4)攻击时间
晚上的防守力量远低于白天,攻击队通常会在后半夜重点攻击。
5)地址段
同一地址段,短期内对单位中多个资源发起攻击,基本可以确定是红队。
6)第三方情报
厂商每天都会根据威胁情报提供疑似的攻击队IP,比如奇谋信的白泽,HW期间可以跟厂商要来IP表,在墙上统一封禁;有天眼的话可以把IP导入攻击源,分析攻击路径,检查哪些主机被打了,要不要处置。
3、告警流量分析
监控、研判组可以根据以下思路分析告警流量,确认是不是误报。
3.1、信息泄露
访问路径中有特殊文件或路径,并且不是业务触发的,可以判定为真实攻击。比如:
- 访问备份文件
.zip
- 访问默认文件
- 访问特殊类型的文件
(客户授权后)访问该路径,如果返回结果包含对应的敏感信息,就判定为攻击成功。
3.2、SQL注入
请求参数、请求头或请求体里有完整SQL的,可以判定是真实攻击(前端拼接SQL再传到后端执行等类似业务除外)。
多次请求,SQL不完整只有关键字的,可能是测试攻击。
- GET请求中包含SQL语句(联合查询注入)
- 请求头中包含SQL语句:
- POST请求体中包含SQL语句:
有时会改变SQL关键字的大小写或编码,用来绕过,可以用流量监测工具自带的工具解码。
- 大小写绕过:
- 编码绕过:
(客户授权后)可以复现payload,如果响应了SQL执行结果,就判定为攻击成功。
3.3、文件上传
请求体包含代码内容,可以判定为攻击成功。比如:
响应体有 success
等上传成功的字样,或者有该文件的访问记录,就判定为webshell上传成功。
3.4、XSS(跨站脚本)
请求参数或请求体包含完整的JavaScript代码,可以判定为真实攻击。比如:
将响应体的数据复制到本地文件中执行,如果弹窗,就判定攻击成功。
多次请求,不包含完整JavaScript代码,但携带不同关键字的,可能是测试攻击。 Ctrl+F
搜常见标签:
3.5、代码执行
请求参数、请求头、请求体中包含完整代码,可以判定为真实攻击。比如:
- 请求体中包含PHP代码
- Dedecms V5.7后台任意代码执行
- Fastjson反序列化漏洞攻击
- ThinkPHP 5.0.x—5.1 远程代码执行
如果响应中包含代码的执行结果,就判定为攻击成功。