基于追踪标记的WAF设计思路

news2024/11/24 9:39:53

一 相关背景

目前,市面上的WAF产品通常采用”发现即阻断“的策略,以防护针对业务系统的Web攻击行为。虽然该策略可及时阻断攻击,但形式上过于简单,并不能有效掌握攻击者进一步的攻击意图,也不能有效提高攻击者的成本投入。本文借鉴蜜罐的思想,构思一种融合欺骗技术的WAF系统,目的是为现有WAF提供一种设计思路。相对于传统WAF,本文所述WAF不仅具有传统WAF的功能,同时可识别并追踪攻击者。

如图1所示,WAF系统以串联方式部署在业务系统的前面,用于对来自互联网的流量进行检测:当发现客户请求为正常流量时,则将其转发给业务服务区部署的“真实业务系统”,从而为正常用户提供所需的互联网服务;当发现客户请求为恶意流量时,则会对攻击源进行唯一性标记,并把该客户端的流量通过NGINX集群牵引到镜像服务区部署的“镜像业务系统”。

1657272512_62c7f8c04e018348d0909.png!small?1657272535442

图1 WAF部署模式和运行流程

1 业务服务区:
部署有“真实业务系统”,用于处理正常用户的访问请求。如果“潜在攻击者”不对系统发起攻击,那么其访问请求会被转发到真实的业务服务区。只是一旦其发起攻击行为,便会被WAF标记为“攻击源”,并进行唯一性标记,那么其当前、及后续访问请求都会被牵引到镜像服务区。由于“镜像业务系统”的前端展示和业务功能与“真实业务系统”没有区别,所以整个牵引过程对攻击者是无感的。

2 镜像服务区:
部署有“镜像业务系统”,用于处理攻击者的访问请求。如前所述,该系统的前端展示和业务功能与“真实业务系统”没有区别,在使用过程中很难区分,同时做了数据脱敏处理、伪造了一些常见漏洞点。此外,为了防止攻击者在获取镜像服务区的机器权限后,以此为跳板,对业务服务区发起攻击,部署时要求镜像服务区与业务服务区需完全隔离,最好是物理层面的隔离。

3 欺骗服务区:
部署有各种“欺骗性系统”,用于引诱黑客在内网横行渗透过程中的攻击。“欺骗服务区”本质是一个蜜网,其目的是为了更长时间的浪费攻击者的时间与精力,更多的掌握攻击者的行为、手段、技能,更大程度上使攻击者漏出马脚、从而溯源其身份。比如:在数据库中存储一些伪造的、带有标记性特征的“高价值客户数据”,一旦被攻击者拿到并在网上售卖,则可对攻击者做进一步的溯源;在系统中放置一些伪造的、带有木马功能的“敏感文件”,一旦被攻击者拖回并打开,则可反向控制攻击者的客户端。

备注:镜像服务区、欺骗服务区可部署在阿里云、腾讯云等公有云平台上(或者其它隔离环境),本地IDC通过NGINX集群将识别到的攻击流量转发到这些区域。

二 系统设计

本文所述WAF的核心功能包括五个模块,分别是:流量检测模块、终端标记模块、流量分发模块、漏洞配置模块、指纹采集模块。(只是个人想法,可根据实际扩展)

1657272689_62c7f9715a43191a60414.png!small?1657272712245

图2 WAF概要设计和核心模块

1 流量检测模块:
不仅具备常规WAF的通用功能,如:SQL注入检测、XSS漏洞检测、代码执行检测、文件上传检测等,同时还具备“攻击源标记查验”功能,目的是判断请求流量中是否带有“终端标记模块”下发的攻击源标记字段。如果请求流量中带有攻击源标记字段,
表明该请求是“已被标记为攻击源”的客户端发起的,则直接将该请求经NGINX集群牵引至“镜像业务系统”;如果请求流量中没有攻击源标记,表明该请求是正常的客户端发起的,则会继续判断是否带有攻击特征。

2 终端标记模块:
用于对发起恶意请求的客户端进行标记。当流量检测模块发现当前请求为恶意请求时,便会调用终端标记模块在HTTP响应包中插入标记字段,以对发起该请求的客户端进行唯一性标记。其中,插入标记字段的功能是通过set-
cookie实现的,该特征字符串会反向到达、并存储在攻击者的浏览器中。由于该cookie值的过期时间设置为永久,因此只要不手动清除,浏览器随后访问目标网站的所有请求都会带上该字段。(格式:
trackid=32位随机字符串,形如:trackid =92f4ac47-527b-11eb-ba1b-f45c89c42263)

3 流量分发模块:
用于根据“流量检测模块”的判定结果信息、以及WAF系统中配置的路由信息,将访问请求分发到“真实业务系统”或“镜像业务系统”。其中,如果是“已知攻击源发起的请求”或“某客户端初次发起的恶意请求”,则将其经NGINX集群牵引到“镜像业务系统”;如果是
“正常客户端发起的请求”,则将其牵引到“真实业务系统”。对客户端而言,整个过程是完全透明的,且需要攻击者通过浏览器发起请求。

4 漏洞配置模块:
用于在“镜像业务系统中”中以“插件化”形式配置伪造的漏洞点,目的就是让黑客发现并对其攻击。其中,在部署漏洞前,可通过虚拟机镜像手段将业务系统从“业务服务区”克隆到了“镜像服务区”,并做好数据脱敏工作。在配置漏洞点的时候,漏洞配置模块可将事先构建好的漏洞文件下发到“镜像业务系统”服务器。(该功能可作为WAF的一部分,或者独立于WAF部署)

5 指纹采集模块:
用于采集攻击者的客户端设备指纹信息,攻击者的第三方平台账号、键盘记录、访问过的网站等信息。其中,整个过程是通过在“镜像业务系统”的返回页面中插入溯源脚步(JavaScript代码)实现的。当溯源脚本反向到达攻击源客户端、并被浏览器解析执行后,便会将相关的指纹信息回送给WAF系统。其中,采集信息的丰富度一定程度上依赖于攻击者的操作。

三 运行流程

WAF在对互联网边界流量处理的过程,其主要流程如图3所示,具体步骤如下:

1657272819_62c7f9f353226d7384cf5.png!small?1657272842555

图3 WAF对网络流量处理流程

1 基于“流量检测模块”查验流量中是否带有“攻击源标记”。如果没有,则进入步骤2;如果有,则表明当前请求是已被标记为攻击源的客户端发起的,则跳转到步骤4。

2 基于“流量检测模块”检测流量中是否带有攻击行为特征。如果没有,则表明当前请求是正常用户发起的,则跳转至步骤5;如果有,则进入步骤3。

3 基于“终端标记模块”对当前网络请求进行标记,并在对应的响应报文中通过set-cookie的方式插入攻击源标记字符串。

4 基于“流量分发模块”模块将网络流量转发至“镜像业务系统”。其中,该步骤处理的流量为“已知攻击源”与“新的攻击源”发起的网络请求。

5
基于“流量分发模块”模块将网络流量转发至“真实业务系统”。其中,该步骤处理的流量为正常用户使用的客户端发起的网络请求。备注:对于攻击源而言,一旦被WAF标记,其当前请求以及后续发起的网络请求,无论是否带有恶意特征,都会被转发到“镜像业务系统”。

四 总结归纳

整体而言,本文所述WAF从“潜在攻击识别、溯源取证分析"等方面弥补了传统WAF的不足,即保护了业务系统的安全性,又具备一定的溯源取证的能力。其优点在于:

1
可以避免攻击者对业务系统的潜在攻击:当识别到攻击流量后,WAF可基于“终端标记模块”对攻击源进行唯一性标记,进而将同一攻击源的当前流量、以及后续流量牵引到“镜像业务系统”,从而避免攻击者对真实业务系统的潜在攻击行为。

2
可消耗攻击者的时间以及攻击者的精力:无论何种目的、何种手段,所有的攻击行为都是需要投入时间和精力的。由于攻击行为被识别、牵引到了“镜像业务系统”,使得攻击者将时间、精力消耗在对“镜像业务系统”的攻击上,因此整个攻击过程对真实的业务系统是无效的,相对降低了黑客的有效攻击成果。

备注:本文所描述的思路需要一定的先验条件,即:攻击者使用浏览器(或配合Burp)对目标系统进行测试(目的是在Cookie中设置追踪ID)。除了基于追踪ID来判断请求是否由攻击者发起之外,也可基于“时间、源IP、目标IP”的方式进行判断,这样就不用考虑是否使用浏览器的问题了,只是有一定的误报。当然,没有一种技术是完美的,本文只是描述一种Web防护的思路。

、源IP、目标IP”的方式进行判断,这样就不用考虑是否使用浏览器的问题了,只是有一定的误报。当然,没有一种技术是完美的,本文只是描述一种Web防护的思路。

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】时间复杂度

🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…

关于数据分析和数据指标,企业还需要做什么?

数据虽然已经成为了各行各业对未来的共识,也切实成为了各领域企业的重要资产。但真正谈到发挥数据的价值,就必须从规模庞大的数据中找出需求的数据,然后进行利用。这个过程光是想想就知道很麻烦,更别提很多数据都是经常会用到的&a…

【STL】模拟实现vector

目录 1、基本成员变量 2、默认成员函数 构造函数 析构函数 拷贝构造函数 赋值运算符重载函数 3、容器访问相关函数接口 operator [ ]运算符重载 迭代器 范围for 4、vector容量和大小相关函数 size和capacity reserve扩容 resize swap交换数据 empty 5、修…

leaflet 设置右键菜单,配置相应的功能(090)

第090个 点击查看专栏目录 本示例的目的是介绍如何在vue+leaflet中设置右键菜单,配置相应的功能。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共109行)安装插件相关API参考:专栏目标示例效果 配置方式 1)…

华为OD机试 C++ 实现 - 租车骑绿岛

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

SpringMVC——基本操作

获取url中的参数 一般来说get请求中参数是这样的 127.0.0.1:8080/login?usernamesan&password123可以获取到下面两个参数 keyvalueusernamesanpassword123 但是事实上,还有一种url的参数的写法 127.0.0.1:8080/login/san/123这样的写法更像是一个直接获取网…

【蓝桥杯集训·每日一题】AcWing 2058. 笨拙的手指

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴哈希表秦九韶算法一、题目 1、原题链接 2058. 笨拙的手指 2、题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字。 但是她总是犯错误,因为她无法轻易的用两…

求职一个月,收割12家offer,想给大家总结一下面试软件测试岗,一般问什么问题?

前言 下面是我根据工作这几年来的面试经验,加上之前收集的资料,整理出来350道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有 提到。 虽然这篇文章很长,但是绝对值得你…

【2023】Prometheus-相关知识点(面试点)

目录1.Prometheus1.1.什么是Prometheus1.2.Prometheus的工作流程1.3.Prometheus的组件有哪些1.4.Prometheus有什么特点1.5.Metric的几种类型?分别是什么?1.6.Prometheus的优点和缺点1.7.Prometheus怎么采集数据1.8.Prometheus怎么获取采集对象1.9.Promet…

产业安全公开课:2023年DDoS攻击趋势研判与企业防护新思路

2023年,全球数字化正在加速发展,网络安全是数字化发展的重要保障。与此同时,网络威胁日益加剧。其中,DDoS攻击作为网络安全的主要威胁之一,呈现出连年增长的态势,给企业业务稳定带来巨大挑战。2月21日&…

【数据结构与算法】顺序表增删查改的实现(动态版本+文件操作)附源码

目录 一.前言 二.顺序表 1.概念及结构 2.顺序表结构体的定义 3.初始化顺序表,销毁顺序表和打印 3.接口 a.尾插 SepListpushback 头插 SepListpushfront b.尾删 SepListpopback 头删 SepListpopfront c.查询 SepListsearch d.修改 SepListmodify 三…

搜索引擎 Elasticsearch 的三大坑

搜索引擎的坑 ES 搜索引擎系列文章汇总: 一、别只会搜日志了,求你懂点原理吧 二、ES 终于可以搜到”悟空哥“了! 三、1W字|40 图|硬核 ES 实战 本文主要内容如下: 搜索引擎现在是用得越来越多了&#…

赛宁网安“网络安全卓越中心”:立足科技创新 推动网安产业高质量发展

​​2月22日上午,网络安全卓越中心CPCOE——圆桌论坛活动在南京召开。本次论坛由南京未来科技城主办,南京赛宁信息技术有限公司承办。论坛上,江苏省科协副主席、南京理工大学教授李千目,江苏省互联网协会副理事长兼秘书长刘湘生&a…

【Pytorch学习】获取当前的学习率Learning Rate(lr)

optimizer.state_dict()[param_groups][0][lr]from: https://blog.csdn.net/ftimes/article/details/120975402 PyTorch可视化动态调整学习率lr_scheduler:https://blog.csdn.net/ayiya_Oese/article/details/120704261 或者:scheduler.get_…

谷歌留痕代发技术指南_谷歌留痕怎么霸屏的?

本文主要分享谷歌留痕技术的一些常见问题,霸屏的原理是什么。 本文由光算创作,有可能会被修改和剽窃,我们佛系对待这种行为吧。 谷歌留痕也叫谷歌搜索留痕,那么谷歌搜索留痕的霸屏原理是什么? 答案是:利…

如何做好APP性能测试?

随着智能化生活的推进,我们生活中不可避免的要用到很多程序app。有的APP性能使用感很好,用户都愿意下载使用,而有的APP总是出现卡顿或网络延迟的情况,那必然就降低了用户的好感。所以APP性能测试对于软件开发方来说至关重要&#…

【Android视频号④ 问题总结】

这节坑比较多~ 差点没把我给整死!!! 环境介绍 首先我调试都是root过的真机,但是生产环境都是没有Root的云机,属于自己改的Rom框架也不是XP或LSP 是技术人员利用Xposed源码改的框架 问题&解决 模块源码更改 这…

Leetcode第235题二叉搜索树的最近公共祖先|C语言

struct TreeNode* lowestCommonAncestor(struct TreeNode* root, struct TreeNode* p, struct TreeNode* q) {if(root->val>p->val&&root->val<q->val)return root;//若p结点的值<q结点的值&#xff0c;而根节点的值位于两者之间&#xff0c;说明…

Java StringBuffer StringBuilder,超详细整理,适合新手入门

目录 一、StringBuffer和StringBuilder的区别是什么&#xff1f; 二、StringBuffer的示例 三、StringBuilder的示例 四、为什么StringBuffer和StringBuilder比String更适合在循环中使用&#xff1f; 五、如何将String对象转换为StringBuilder或StringBuffer对象&#xff1…

论文投稿指南——中文核心期刊推荐(综合性经济科学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…