一、相关背景目前,市场上的WAF产品通常采用“发现并拦截”的策略来防御针对业务系统的Web攻击。该策略虽然能够及时阻断攻击,但形式过于简单,无法有效把握攻击者进一步的攻击意图,也无法有效增加攻击者的成本投入。本文借鉴蜜罐的思想构思了一个融合了欺骗技术的WAF系统,目的是为现有的WAF提供一种设计思路。与传统WAF相比,本文介绍的WAF不仅具有传统WAF的功能,还可以识别和跟踪攻击者。如图1所示,WAF系统串联部署在业务系统前面,检测来自互联网的流量:当发现客户请求是正常流量时,会转发给部署的“真实业务流量”在商务服务区。系统”为普通用户提供所需的互联网服务;当发现客户的请求是恶意流量时,会唯一标记攻击源,并通过NGINX集群将客户的流量拉到镜像服务区。镜像业务系统”。图1WAF部署方式及运行流程1.业务服务区:部署“真实业务系统”,处理正常用户的访问请求。如果“潜在攻击者”不对该系统发起攻击,它的访问请求会被转发到真正的业务服务区,只是一旦它发起攻击,就会被WAF标记为“攻击源”,并进行唯一标记,那么它的当前和后续的访问请求就会被拉到镜像服务区,由于“镜像业务系统”的前端展示和业务功能与“真实业务系统”相同,所以整个拉取过程对攻击者是无感的。2、镜像服务区:a部署了“镜像业务系统”来处理攻击者的访问请求,如前所述,系统的前端展示和业务功能与“真实业务系统”无异,难以区分d使用中。同时做了数据脱敏,伪造了一些常见的漏洞点。另外,为防止攻击者获取镜像服务区的机器权限并以此为跳板对业务服务区发起攻击,部署时必须将镜像服务区与业务服务区完全隔离,最好在物理层面。3、欺骗服务区:在内网渗透猖獗的过程中,部署各种“欺骗系统”,引诱黑客攻击。“欺骗服务区”的本质是蜜网。其目的是在更长的时间内浪费攻击者的时间和精力,更多地了解攻击者的行为、手段和技巧,更大程度上使攻击者暴露自己的破绽。追查其身份。例如:在数据库中存储一些伪造的带有标记特征的“高价值客户数据”,一旦攻击者获取并在线销售,就可以进一步追踪攻击者;在系统中放置一些伪造的数据一旦具有木马功能的“敏感文件”被攻击者拖回并打开,就可以反向控制攻击者的客户端。备注:镜像服务区和欺骗服务区可以部署在阿里云、腾讯云等公有云平台(或其他隔离环境),本地IDC将识别到的攻击流量通过NGINX集群转发到这些区域。2.系统设计本文介绍的WAF核心功能包括五个模块,分别是:流量检测模块、终端标记模块、流量分发模块、漏洞配置模块、指纹采集模块。(仅个人想法,可根据实际情况进行扩展)图2WAF概要设计及核心模块1.流量检测模块:不仅具有常规WAF的一般功能,如:SQL注入检测、XSS漏洞检测、代码执行检测、文件上传检测等,同时还有“攻击源标记检测”功能,目的是判断请求流量中是否包含“终端标记模块”下发的攻击源标记字段。如果请求流量中有攻击源标记字段,说明该请求是由已标记为攻击源的客户端发起的,则该请求将通过NGINX集群直接拉取到“镜像服务系统”;如果没有攻击源标记,说明请求是普通客户端发起的,会继续判断是否有攻击特征。2、终端标记模块:用于标记发起恶意请求的客户端。当流量检测模块发现当前请求为恶意请求时,会调用终端标记模块在HTTP响应包中插入标记字段,以唯一标记发起请求的客户端。其中,插入tag字段的功能是通过set-cookie实现的,将特征字符串反向存储在攻击者的浏览器中。由于该cookie值的过期时间设置为永久,只要不手动清除,浏览器后续所有访问目标网站的请求都会携带该字段。(格式:trackid=32位随机字符串,如:trackid=92f4ac47-527b-11eb-ba1b-f45c89c42263)3、流量分配模块:用于根据“流量检测模块”和WAF系统路由信息中的配置判断结果信息,将访问请求分发到“真实业务系统”或“镜像业务系统”。其中,如果是“已知攻击源发起的请求”或者“客户端首次发起的恶意请求”,则会通过NGINX集群拉取到“镜像服务系统”;如果是“普通客户端发起的请求”,则将其绘制到“真实业务系统”。对于客户端来说,整个过程是完全透明的,需要攻击者通过浏览器发起请求。4、漏洞配置模块:用于在“镜像业务系统”中以“插件”的形式配置虚假的漏洞点,目的是让黑客发现并进行攻击。其中,在部署漏洞前,可以通过虚拟机镜像将业务系统从“业务服务区”克隆到“镜像服务区”,并做好数据脱敏工作。在配置漏洞点时,漏洞配置模块可以将预先构建的漏洞文件发送到“镜像业务系统”服务器。(该功能可以作为WAF的一部分使用,也可以独立于WAF部署)5、指纹采集模块:用于采集攻击者客户端设备、攻击者第三方平台账号、键盘记录器、访问过的网站等的指纹信息信息。其中,整个流程是通过在“镜像业务系统”的返回页面中插入溯源脚本(JavaScript代码)实现的。当溯源脚本反向到达攻击源客户端,被浏览器解析执行后,会将相关指纹信息回传给WAF系统。其中,收集信息的丰富程度在一定程度上取决于攻击者的操作。3、运行过程WAF在处理互联网边界流量的过程中。主要流程如图3所示,具体步骤如下:图3WAF对网络流量的处理流程1.基于“流量检测模块”,检查流量是否包含“攻击源标记”。如果不是,转步骤2;如果是,说明当前请求是由被标记为攻击源的客户端发起的,则跳转至步骤4。2、根据“流量检测模块”检测流量是否存在攻击行为特征。如果不是,则说明当前请求是由普通用户发起的,则跳至第5步;是,转步骤3。3、基于“终端标记模块”,标记当前网络请求,并添加到相应的响应报文中,以set-cookie的方式插入攻击源标签字符串。4、基于“分流模块”模块,将网络流量转发到“镜像服务系统”。其中,本步骤处理的流量为“已知攻击源”和“新攻击源”发起的网络请求。5、基于“流量分发模块”模块,将网络流量转发到“真实业务系统”。其中,本步骤处理的流量为普通用户使用的客户端发起的网络请求。备注:对于攻击源,一旦被WAF标记,其当前请求和后续网络请求都会被转发到“镜像服务系统”,无论是否恶意。4.小结总体而言,本文介绍的WAF弥补了传统WAF在“潜在攻击识别、溯源和取证分析”方面的不足,既保护了业务系统的安全,又具有一定的追溯和取证能力。其优点是:1.可以避免攻击者对业务系统的潜在攻击:WAF在识别出攻击流量后,可以根据“终端标记模块”唯一标记攻击源,然后对当前流量进行标记。相同的攻击源,并将后续流量引向“镜像业务系统”,从而避免攻击者对真实业务系统的潜在攻击。2.可以消耗攻击者的时间和精力:无论目的和手段如何,所有的攻击都需要时间和精力。由于攻击行为被识别并引向“镜像业务系统”,攻击者将时间和精力都花在了对“镜像业务系统”的攻击上。因此,整个攻击过程对真实的业务系统是无效的,相对降低了有效的攻击结果。备注:本文描述的思路需要一定的先决条件,即:攻击者使用浏览器(或配合Burp)对目标系统进行测试(目的是在cookie中设置trackingID)。除了根据trackingID来判断请求是否是攻击者发起的,还可以根据“时间、源IP、目标IP”来判断,这样就不用考虑是否使用浏览器了,但存在一定的误报。当然,没有任何技术是完美的,本文也只是描述了一种网页保护的思路。
