(附讲稿全文和PPT)百度讲师:以struts2 为例,教(4)

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

例如常见的SQL注入漏洞,好一点的情况是最外层有waf做拦截,但是waf存在各种各样的绕过&误伤等等,况且很多公司根本没有没有部署WAF。同时扫描器针对这种漏洞扫描起来也比较困难,需要考虑多种注入方式。那么如何有效的对SQL注入进行识别,做到:如果存在注入攻击便及时报警呢?hook 数据库拿到查询日志并进行分析是一个很有效的方案。为了简化,这里直接取数据库的查询日志log做分析(实际场景采用DB Proxy类技术会有更好的性能和稳定性)

由于每次的请求(包括攻击请求)已经转化为对应的数据库查询操作,故已经无需考虑编码解码、引号闭合等问题,只需要关注是否存在异常的查询。例如:如果存在 union all select null,null 这样的查询操作,便为明显的数据库注入测试行为,并且关键的是,这种行为已经完成了引号闭合等动作,是一次成功查询。

那么现在要做的,就是格式化查询,最终匹配出恶意查询行为并报警。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

在演示例子中,我们实现了对查询进行语法解析并且替换字符串的功能。

图上第一行为原始查询,第二行是经过解析和字符串替换后的查询,可以清楚的看到,

第一次查询为正常的业务请求

第二次查询被解析成了select xx from xx where name =’s’ union all select null,null --。这是一个明显的注入测试操作并且匹配了union all select null,null的规则

第三次 实际上仍然是黑客在做注入测试,只不过没有成功闭合引号,一大串查询测试仅是被当做成了一个长字符串。

通过这种方法,仅需要预定义几种注入攻击特征,便能很高效的对SQL这种攻击进行监控识别。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

PHP引擎的hook以及redis的hook也是类似原理,从最根本层面发现入侵行为,排除其他干扰因素。

篇幅的关系,这里不详细介绍。

我们再来看看基于流量的监控。其实这一块很早大家就在做,传统的IPS、IDS就是做的这块,也有很多人搭建开源的snort等系统。但是实际效果来看,这些硬件、软件系统都没有发挥太大的价值,究其原因,有可能一个是规则方面的问题,数量大而又老旧;一个是理念方面的问题,只着眼于一个方向的特征识别(请求或返回)。

(附讲稿全文和PPT)百度讲师:以struts2 为例,教你打造一款互联网思维的安全防御 | 硬创公开课

其实基于流量方面的监控(这里指外部流量,非IDC内部),能做的事情非常的多,但是还是那个问题,覆盖的太多 or 太宽泛,都会导致报警指数级增加,真正有用信息被淹没。另一方面,外界的各种扫描是无时无刻的,这些信息触发的报警实际上是无价值的。

如果只关注有效入侵&攻击成功的高危漏洞,整体量级就会小很多,而且这些才是我们真正需要处理的。