FCIS 2023白帽论坛议题:国产化渗透测试框架的思考与实践(Verkey)

2024-08-26 16:00:06 0 337


国产化渗透测试框架
思考与实践
无糖信息 - Verkey

当前国内安全从业者日常使用的安全测试软件大多是国外的产品。
国内一些公司或团队也为安全测试工具国产化而努力,也创造了不少优秀的工具和产品。
作为其中的一份子,我们也在积极的思考如何去设计和创造一款不亚于国外的渗透测试框架。

01 技术沉淀

2006 17年前,组建网络安全学习小组Pker - PKAV团队的前身
2010 经过4年的学习成长,团队扩大,2010年的一段时间,我们每天在新浪UC上免费分享技术
2010 13年前,在Tools论坛,发布了Pker多线程后台极速扫描器

自动采集各类错误页面,自动提取错误页面关键词,增加错误页面文本相似度过滤,解决需要手工输入错误页面关键词的问题
404错误页面 自定义错误页面 重定向的错误页面 WAF拦截页面 .....
最长公共子串 页面相似度比较算法 重定向可信检测 动态路由陷阱检测

使用数据库替代文本字典,提供了字典管理器对数据库字典进行管理,解决路径冗余和重复性扫描问题

给路径增加优先级属性,每被扫到一次则根据可信度提升优先级,到达设定的阈值后移动到最优先字典,自动整理出最佳的字典,根据优先级高低先后扫描

• 启发式扫描:针对已确认存在的目录,去数据库中检索与之相关联的路径,动态构造新的路径进行扫描,以弥补静态字典的不足。
• 陷阱检测机制:主动构造不存在的路径进行访问,以判断重定向或某些动态路径下的子路径是否可信
• 以字典组为单位根据需要组织多个字典进行扫描,根据条件筛选、过滤要扫描的路径
• 自动识别网站脚本语言类型,支持自定义请求头。
• 支持以Web服务独立部署,支持界面与服务分离的远程模式使用。

启发式扫描:
• 爬行站点目录结构作为后续扫描的参考,加快出结果的速度。
• 不论是爬取的还是暴力扫描到的路径,将目录拆分出来,去数据库字典中检索同名以及同功能的路径,动态拼接路径进行扫描,以弥补静态字典的不足。
• 将爬取、重定向、已扫描到的一些字典中不存在的路径,经陷阱检测机制检测通过后,加入到学习路径字典,下次再扫描到则移动到最优先字典。
增加启发式扫描功能,弥补暴力盲目扫描的不足,加快出结果的速度。最重要的是弥补了静态字典的不足

2015 8年前,将复刻的fuzz模块集成非验证码提取和验证码识别模块,在乌云社区,发布了Pkav HTTP Fuzzer
• 支持文本型验证码提取、Token提取。
• 集成tesseract验证码识别引擎,支持亦思、次世代验证码识别引擎识别库,支持四则运算的验证码。
• 支持重试规则,当触发指定条件时,重新执行当次测试流程:如验证码识别错误时,重新获取验证码再次尝试。
支持文本型验证码、Token的提取,支持图形验证码的识别和重试规则

• 支持Payload丢弃,当触发指定条件时,跳过该Payload后续的测试。如SQL盲注,已猜出某位的ASCII后,跳过该位后续的猜测。
• 支持每轮测试完成后,访问退出地址以注销成功登录的会话。
• 支持通过正则表达式提取数据存储到指定文件。
支持Payload跳过,触发指定条件时,跳过后续Payload的测试

02 厚积薄发

团队十多年的经验积累、技术沉淀
国产化趋势:国产操作系统、数据库、软件
对网络安全的热爱,对创新、创造的追求
06年到现在,虽然我们不再年轻了,但是我们有十多年的经验积累和技术沉淀,我们还有梦想

Wu Tang Go Language(糖果)测试平台
• 集成了40多种自研的跨平台测试工具,支持独立和界面使用。
• 支持团队协同测试,测试数据动态推送、实时同步,支持以插件的形式兼容第三方工具。
• 支持界面和工具分离的远程模式部署,支持环境共享,无缝切换办公场所。
• 集成无代码可视化快速开发框架,零编程基础的用户也能够玩转安全测试开发。
• 基于多年测试经验开发,针对测试中的一些难点和痛点进行了优化。
TanGo测试平台基于golang(后端)和react(前端界面)开发

• 集成了Go语言开发的信息收集、漏洞扫描、漏洞测试、辅助工具等40多种测试工具。
• 自研,安全,跨平台,支持多种操作系统。
集成了40多种自研、跨平台的测试工具

• 提供跨平台的友好界面,界面使用更舒适。
• 各工具可脱离框架单独使用,如命令行下使用。
• 支持离线使用,内网测试更方便。
支持多种使用模式,支持框架界面使用、支持脱离框架独立使用、支持离线使用

• 支持部署多个远程服务节点,担任不同测试角色。
• 各节点轻松切换,可与团队成员共享使用。
• 需要长时间进行的扫描任务,不间断运行。
• 界面与工具分离,数据加密传输,更安全。
支持界面与工具分离的远程部署使用,实现分布式办公,办公场所无缝切换,长时间任务不中断

• 搭载协同测试平台,支持团队协作,协同测试。
• 协同测试平台数据加密传输,支持内网部署,满足安全级别要求高的企业需求。
• 多维度展示测试目标的各类数据,提供数据关系图、时序图等多种展示形式。
• 支持以插件的形式兼容第三方工具的数据推送与解析。
支持团队协同测试,搭载了协同测试平台和模块,实现了任务的管理、分配、跟进,团队和工具之间的数据交互和数据共享

• 搭载协同测试平台,支持团队协作,协同测试。
• 协同测试平台数据加密传输,支持内网部署,满足安全级别要求高的企业需求。
• 多维度展示测试目标的各类数据,提供数据关系图、时序图等多种展示形式。
• 支持以插件的形式兼容第三方工具的数据推送与解析。
TangGo各工具可以将数据推送到协同测试平台,由协同测试平台对数据进行清洗、分析和汇总,以多维度、多形式的方法展现

• 提供自定义界面设计模块,实现命令行工具的界面化。
• 支持将挂载的工具输出自动推送到协同测试平台,通过解析插件对数据进行清洗和展示。
• 支持将第三方工具挂载到快捷工具箱,便于工具的管理和快速启动。
TangGo支持第三方工具的挂载,还可以给命令行工具设计界面,变成界面工具,能够自动推送输出的数据,支持以插件的形式兼容第三方工具的数据解析

• 搭载协同测试平台,支持团队协作,协同测试。
• 协同测试平台数据加密传输,支持内网部署,满足安全级别要求高的企业需求。
• 多维度展示测试目标的各类数据,提供数据关系图、时序图等多种展示形式。
• 支持以插件的形式兼容第三方工具的数据推送与解析。
TangGo主框架、各工具及协同测试平台之间的数据加密传输,支持内网部署,满足安全级别要求高的企业需求

• 集成无代码可视化快速开发框架,通过简单界面配置即可实现复杂的测试流程。
• 内置丰富的测试流程和丰富的数据处理规则,轻松实现各流程的顺畅衔接和数据流转。
• 调试、测试环节透明可跟踪,轻松掌握各测试环节的工作情况、数据和变量变化。
• 支持测试流程导出以及将测试流程一键生成跨平台的独立的工具。
集成了无代码可视化快速开发框架,用户可以直接通过可视化界面的简单配置,快速定制各种测试流程,生成跨平台的独立测试工具

• 集成无代码可视化快速开发框架,通过简单界面配置即可实现复杂的测试流程。
• 内置丰富的测试流程和丰富的数据处理规则,轻松实现各流程的顺畅衔接和数据流转。
• 调试、测试环节透明可跟踪,轻松掌握各测试环节的工作情况、数据和变量变化。
• 支持测试流程导出以及将测试流程一键生成跨平台的独立的工具。
框架内置了常用和通用的多种测试流程,如http、tcp、udp数据测试、验证码识别、浏览器自动化测试、数据提取和数据处理,关键节点判断等流程

• 支持无头浏览器自动化测试。
• 支持通信劫持,对HTTP和Websocket通信数据进行拦截、修改和发送。
• 支持浏览器断点劫持,能够自动寻找断点位置,通过劫持代码修改断点上下文数据。
无头浏览器的自动化测试流程还支持通信数据劫持和修改,支持浏览器断点劫持和自动寻找断点位置,轻松修改浏览器上下文数据

• 支持多种自定义变量类型。
• 支持变量的循环引用检测。
• 自动剔除未使用的变量。
• 支持各流程的数据的提取与变量绑定。
框架支持多种自定义变量类型,各流程可以通过自定义变量绑定数据,并且通过变量完成流程间的数据流转和衔接

• 内置丰富的数据处理规则,可对数据进行各类加工处理。
• 支持通过执行js脚本或调用第三方工具对数据进行外部处理。
框架支持数据提取和丰富的数据处理规则,可对数据进行各类加工处理,支持通过执行js脚本或调用第三方工具对数据进行外部处理

• 支持各流程数据与变量的可视化调试、测试。
• 各流程可独立测试,也可以进行总体测试。
框架支持各流程数据与变量的可视化调试和测试,轻松查看每个流程发送和接收、提取或处理的数据,跟踪变量的变化,生成测试报告

• 支持各流程数据与变量的可视化调试、测试。
• 各流程可独立测试,也可以进行总体测试。
支持详细的测试报告生成。
• 支持流程配置的导入和导出。
• 将测试流程一键生成跨平台的独立的工具。
设计和编排好的测试流程后,可一键生成跨平台的测试工具。生成的工具支持批量任务测试、支持代理服务器,支持详细测试报告的生成。

• 支持自定义模糊测试流程,可以通过可视化界面制定模糊测试数据包发送前和发送后执行哪些流程,可以设置各流程的执行时机。
• 支持AI验证码识别引擎,支持干扰型较强的图形验证码识别,支持验证码矫正规则。
• 扩充部分赋值模式,如根据选定的文件夹目录,遍历文件夹生成路径字Payload典。
• 扩充部Payload数据处理规则,如执行脚本或调用外部程序对Payload进行处理等。
• 支持界面与服务分离的远程模式使用,进行长时间模糊测试任务时,可随时随地连接管理任务。

新版的模糊测试工具上也集成了无代码可视化快速开发框架的部分功能,实现了Fuzz数据包发送前和发送后的流程自定义

• 支持HTTP、HTTPS、WebSocket数据拦截、修改、重放的测试;支持畸形数据包及二进制文件的处理;
支持数据包的过滤、筛选、替换和修正。
• 支持全局及局部环境变量。集成内置浏览器,集成Cookie-Editor插件。
• 集成HTTP测试数据收藏夹和Socket测试数据收藏夹以及Payload收藏夹。
• 集成高性能代理池,支持代理轮换使用,支持各测试任务标签页的独立代理切换。
• 支持远程使用模式,支持不同用户共享HTTP抓包测试工具,支持只关闭界面不关闭服务模式。
HTTP抓包测试工具上也集成了无代码可视化快速开发框架的部分功能,比如通过流程自动获取token或验证码并以变量的形式插入到数据包中

为什么要设计和使用这样的一个开发框架?
这是我们经历过一系列尝试之后的做出的选择....
• 基于google开源的cel-go项目,实现了基于yaml语法的一门“语言”,封装了很多我们的函数、模块和方法。
• 支持多种数据类型,array、list等。
• 实现了function函数封装,函数返回值,以及call函数调用。
• 实现了嵌套的if-else、while-loop循环等语法。

对于新手小白,门槛还是高了啊
Yaml的缩进和转义实在是让人难受
我都会编程了,为什么我还要额外学习你们的语法、函数、规范?
既然这么麻烦,为什么不用我自己擅长的语言自己写?
当chatxxx出来后:还不如让AI帮我写...
不好学习、不好编写、不好调试,不快速、不高效、不易于维护....

为了解决编写yaml文件进行编程的复杂性问题,我们基于开源的BlocklyCode项目,设计和开发了类scratch的编程模式,通过无代码的块组件拖拽拼接方式编程。
通过组件组合,实时生成对应的json,然后转换成yaml的脚本。

我不是小孩子,不爱堆积木...
累这么一堆组件,好像堆一座shi山啊...
报错的时候,能不能显示一下是哪些积木块有问题啊?
当chatxxx出来后:AI会不会堆积木?
我其实挺喜欢,但就是手抖,有时候跟拖滑块验证码一样,能不能优化下?
不好学习、不好编写、不好调试,不快速、不高效、不易于维护....

03 新的篇章

AI技术的发展,让网络安全迎来更多的机遇和挑战。
• 让AI辅助测试,生成测试向量、测试用例,提供测试指导和建议。
• 让AI记录和分析测试数据,编写测试报告。
• 让AI调用框架中的工具,实现更简单的交互式测试。
• 让AI编写测试脚本,衔接测试流程。
• 让AI......
官网地址: https://tanggo.nosugar.tech/


关于作者

whoami98篇文章143篇回复

勤快的搬运工。

评论0次

要评论?请先  登录  或  注册