面对黑客攻击,京东数科WAF建设这样做!

随着互联网的高速发展,Web应用越来越为丰富,但Web服务器以其强大的计算能力、处理性能及蕴含的较高价值逐渐成为主要攻击目标。SQL注入、网页篡改、网页挂马等安全事件,频繁发生。因此WAF应运而生。

一、WAF是什么?

WAF全称为Web应用防火墙(WEB Application Firewall),虽然名字中有“防火墙”三个字,但Web应用防火墙和传统防火墙是完全不同的产品,和Web安全网关也有很大区别。

传统防火墙只是针对一些底层(网络层、传输层)的信息进行阻断,而Web应用防火墙则深入到应用层,主要提供 SQL注入、XSS跨站、代码执行、命令执行、文件上传等Web漏洞进行检测和防御阻断,这是Web应用安全防火墙和传统防火墙的本质区别。

Web应用防火墙与Web安全网关的差异在于,后者保护企业的上网行为免受侵害,而WEB应用防火墙是专门为保护基于Web应用程序而设计的。

二、WAF的使用场景

随着互联网与物联网技术的快速发展,网络威胁复杂多样。安全建设和黑客攻击一直就是一场道与魔的对抗博弈。

作为服务提供方,必须对黑客攻击者做到知己知彼,才能采取准确有效的安全对策来应对非法攻击。黑客常用的攻击方法可以说是变幻莫测,不过仔细分析后也会发现整个攻击的过程是有规律可循的,一般的黑客攻击过程大致如下:

在这里插入图片描述
如上图所示,黑客的攻击入侵过程主要包含两部分:一是突破用户安全防线,即恶意探测和边界突破两个环节;二是黑客成功进入用户网络后,通过持续的渗透、安装工具、横向移动等步骤,最终实现数据窃取或破坏等目的。

显然,黑客开启入侵的第一步即是“恶意探测”,通常也可理解为踩点扫描。黑客为了对攻击目标进行多方了解,最常用的途径就是利用扫描工具对目标用户网络进行端口及漏洞扫描,查看服务器的运行状态等基本信息,一旦发现安全漏洞就会利用其实施攻击,最终达到非法入侵的目的。

因此,要想降低安全事件发生的概率,我们必须从源头阻止黑客的攻击。通过防扫描的方式阻止黑客“恶意探测”,让用户在第一时间发现安全威胁并阻止黑客扫描行为,从而提升黑客攻击成本,为自身赢得宝贵的应对时间,大幅度降低黑客侵入企业内网的风险。

在这里插入图片描述
目前常见的WAF都具备攻击请求检测和拦截功能,主要处理逻辑是正常请求和攻击请求的区分。现主流的区分方式主要有规则匹配和机器学习。

(1)规则匹配。这种区分方法是使用时间最长、准确率最高最为可控的一种方式。目前比较成熟,适用与RCE远程命令执行类漏洞的攻击防护(如Fastjson RCE 远程代码执行漏洞),目前被大部分WAF所采用。不过由于这种方式是根据请求的特征来识别攻击,所以当新型攻击出现时,需要根据攻击payload进行防护规则更新,且随着规则集合的不断迭代,规则更新及时性带来安全挑战。

(2)机器学习。使用已知的攻击请求数据作为黑样本,使用正常业务请求作为白样本,利用机器学习算法计算出模型,常见的有SVM、KNN等。这种方式相比较于规则匹配,不用维护规则,但对于未知攻击同样无法识别。

三、京东数科WAF-数科盾

在这里插入图片描述
数科盾是京东数科安全团队自主研发的Web应用安全防火墙,适合业务场景的Web应用安全防火墙。使用分布式架构,多节点多活,故障自动切换,具备处理大流量、高并发的能力。能快速响应业务请求,支持规则自定义,贴合业务,适配多种复杂网络环境。

在这里插入图片描述

四、产品优势

1.旁路拦截

我们的WAF分为检测模块和请求转发模块,请求转发模块使用nginx改造,将请求转发给WAF检测模块,检测模块检测请求是否是攻击,如果是攻击请求,则由转发模块负责拦截该请求。将攻击检测作为微服务旁路运行,提升了系统的稳定性。

在这里插入图片描述

2.机器学习

(1)离线机器学习

在这里插入图片描述
所有的模型以及阈值我们是通过WEBIDS进行模型的计算以及阈值的计算和调试,在WebIDS中效果达到理想值才会上线WAF系统。

通过WebIDS系统收集的样本进行去重->建立数学模型->编写数学模型->设定异常阈值->测试新的请求->判断模型是否能够捕获攻击->将模型推送到waf。

(2)线上机器学习
在这里插入图片描述
数学模型包括:
在这里插入图片描述

3.超时控制

在Nginx将请求转发给WAF检测的时候,会对WAF检测进行计时,如果请求检测超过规定时间,Nginx将跳过检测,直接将请求转发给业务Server,避免业务出现高延迟;

4.高并发

我们的WAF使用分布式架构,处理能力是多节点的总和。在实际环境测试中,16核32GB内存的服务中可以达到10WTPS;

5.低延迟

我们的WAF在处理请求时使用并行处理,处理上大大降低延迟,实际测试中平均延迟在1ms以内。

五、基于语义分析检测SQL注入

在SQL注入数学模型下进行攻击检测,会发现依然有一定误报和漏报。在不断尝试下我们通过词法、语法分析的方法对SQL注入攻击行为进行更为精细的检测,主要流程包括:递归解码、模板组成、词法分析、语法分析、HMM打分和SVM分类。

1.递归解码

Urlencode、json、 phpserialize、 base64 等格式的解码,每解出来一个都会进入下面的流程,以及json以及kv结构的解析,例如id=1、{“id”:“1”} 中提取value 1 每提取一个都进入下面流程;

2.模板组成

注入模板如下:
在这里插入图片描述
通过上一层解析出来的纯净payload,将value=1和value=1//AND//1915=1915模板进行组装形成。

在这里插入图片描述

3.词法分析

将上一层组成的SQL注入模板进行分析,获得词法树。
select* from t where v = “1”
在这里插入图片描述
select * from t where v = ‘1’
在这里插入图片描述
select * from t where v = 1
在这里插入图片描述
select * from t where v =“1//AND//1915=1915”
(ps:下图为啥有方块?老板要求的,咱也不敢说,咱也不敢问)
在这里插入图片描述
select * from t where v = ‘1//AND//1915=1915’
在这里插入图片描述
select * from t where v = 1//AND//1915=1915
在这里插入图片描述

4.语法分析

在这里插入图片描述
上一层的SQL模板首先我们确定都是满足SQL语法bnf99标准,其中Str1 和 Str2 会作为一个token=88就是str的进行SQL解析且不会命中SQL注入。
在这里插入图片描述
第一、二行词法都会将字符串解析为88但第三行词法分析后的结果为:token=125 146 61 146 125 68 125,语法解析器认为 int或者str类型=用户变量是合理合法的,但是如果int=int,str=str虽然也是合法的但是不合理,对于这种合法不合理的请求有可能是通过闭合构造注入语句。

5.绕过的一些语法问题

在这里插入图片描述
所有的空格、//、/test/、–、--,之类的字符都会处理成为token 146 来处理所以符合了语法合法性要求则可以进行下一步处理。

6.HMM打分和SVM分类

这需要WEBIDS提供大量的注入样本,多维度来计算到底什么样的语法树是可能为注入,需要大量的维度和样本来说明再次说明实现思路不做详细演示了,通过HMM计算近似样本的值在阈值内的会使用SVM对进行分类,实际运算中HMM运行效率比较高用来快速排除不是注入可能性高的数据(降低延迟),可能性的再利用SVM的正负样本进行分类。

以上举例因篇幅有限不能将所有实例进行演示,只是将常见场景做功能性说明。

六、数科盾后续功能规划

后续WAF产品的完善将从两个层面进行:
(1)WAF产品自身功能的完善,包括CC攻击检测及防御能力,与VMS扫描平台、HIDS主机入侵检测平台、蜜罐、堡垒机、防火墙等安全产品进行联动;

(2)业务安全功能,与业务安全及风控团队进行对接,感知并解决一些特定场景的安全风险问题,对业务安全风险问题进行阻断。

七、WAF引擎公测计划

WAF是数科基础安全产品的重要组成部分,也是业务纵深防御的第一道安全防线,安全的本质是对抗博弈的过程,为了验证数科WAF的安全防护能力,后续数科安全将联合国内顶级SRC举办WAF引擎众测公测活动,验证SQL注入、RCE命令执行等核心功能的安全防护能力,对每个成功绕过WAF引擎的Payload黑样本进行奖励,以攻促防。【END】

本文作者:京东数科 刘明浩
文章来源:“京东数科技术说”微信公众号
原文链接: https://mp.weixin.qq.com/s/1-d3QVwCwjqtGWEmQxgj-Q.
更多技术干货欢迎关注“京东数科技术说”微信公众号,我们只凭技术说话!

猜你喜欢

转载自blog.csdn.net/JDDTechTalk/article/details/108637968