| 关键词: 数据 Fragscapy 测试 端口 mod 防火墙 命令 结果 opts |
Fragscapy是什么? 在Amossys公司中,我们经常需要分析防火墙和IDS的功能及其配置,这往往很费时费力。自然,我们需要开发一些基本工具和脚本来进行自动化分析。而Fragscapy旨在对这些工具和脚本进行改进和整合,最终得到一个一个自动化、模块化、可扩展的Python 3项目。顾名思义,Fragscapy是基于Scapy来处理修改网络数据包的。 简而言之,Fragscapy是一个可以测试防火墙保护能力的工具。它背后的原理其实很简单: ![]() Fragscapy运行的流程是:
如何修改?好的,大家应该明白这个工具最有趣的部分发生在第3步的修改数据包。那么在这个阶段中到底发生了什么呢? 从技术上讲,修改操作可以看作一个函数,它接收数据包然后再返回不同的数据包。在这期间,任何事情都可能发生:数据包可以被修改、延迟、删除、替换、切分、重新分组……该工具目前包括一些基本的数据包修改,例如:
想要知道修改数据包的更多细节,可以在fragscapy/modificatons/中查看详细的python代码 如何使用这个很棒的工具? 示例1:如何发现Linux中的未知特性 先让我们看一个简单的例子。假设有以下场景,我们试图访问目标服务器80和8080端口(涉及web服务),但是iptables拦截了对8080端口的请求。 使用Fragscapy现在,先让我们尝试围绕IPv6分片进行fuzz测试。Fragscapy的所有配置都围绕以下两点:
其中JSON配置文件ipv6_frag.json定义了测试的3个方面: 1.运行的命令:通过curl来获取80和8080端口的连通性,只有当端口80可连通,8080端口被拦截,才说明防火墙正常工作 2.防火墙捕捉的特定数据包:无法确认,因此在默认情况下所有数据包都会被捕捉 3.修改方法:通过指定参数实现,输入和输出都可修改。 {我们计划将数据包进行分段,分段大小从10字节到3000字节,跨度为10。最后,启动下面的命令开始进行测试: fragscapy start fragment.json fragscapy命令有多个选项来指定输出哪些日志(标准输出和错误信息等)。这样我们就可以查看在测试中到底发生了什么。{i}和{j}只是python格式语法,会被数字所替代。 想了解命令的更多信息,可以通过以下方式了解: fragscapy --help “惊喜”的结果 有多种方法可以检验测试是否正确。首先,fragscapy start命令显示了测试结果(0 = pass, other = fail)。 100%|██████████████████████████████████████████████████████████████████|300/300 从以上进度条可以看出来,总共需要进行300次测试,结果包括三个部分:
其中174个通过的测试是指成功获取80端口的页面,但没能获取8080端口页面。我们可以轻易发现,前126个测试(片段大小在10到1270之间)未包含在内。这时我们就可以通过日志来了解到底发生了什么。 通过查看results/目录下的日志文件,我们可以看到8080端口的页面从未成功获取,但是80端口的页面在#1到#126的结果中也未能获取。到底发生了什么? 在run/pcap/目录中有我们所捕获的数据包。经过简短的研究,发现小于1280字节的片段都被拒绝了……同时,1280是IPv6数据包的下限,这可能不是一个巧合。 后来我们发现,只要小于1280字节的片段都会被拒绝,但没有任何文档记录了这一点。我们只能猜测是Linux内核丢弃了这些片段,而在Linux 5.0中这一现象已不存在。 这就是Fragscapy的使用方法:配置、测试、分析日志和结果。当然,在以上这个简单的例子中,我们没能绕过iptables,但是却意外发现了iptables的一个奇怪行为。 示例2:如何绕过防火墙 现在,让我们更深入地使用Fragscapy进行测试。以下示例来自一个真实的场景,情况如下: ![]() 我们将从“User”区域fuzz在DMZ中的web服务器。中间的防火墙已经配置好,会拦截带有特定参数的请求。让我们进行多种测试,看看会发生什么: fragment_ipv4.json: {segment_tcp.json: {相关命令如下: fragscapy start fragment_ipv4.json segment_tcp.json 基本上,我们运行Fragscapy的目的是为了能顺利获取带有参数azerty的index.html页面内容。除了IPv4数据包切片处理,还有其他很多混淆设置。在运行了144000个测试,数小时后,结果如下: 100%|██████████████████████████████████████████████████████████████|72000|72000 结果的上半部分显示了IPv4数据包分片测试的结果。没有什么特别的,全都失败了,这意味着要么防火墙拦截了数据包,要么传递的数据包对web服务来说无法解析。 但是,结果的下半部分,TCP分片测试则得到了一些成功的结果。从results/目录的内容上看,防火墙并没有很好地处理从大小1到46的片段,自然就没有触发拦截规则,但web服务可以完美地重构请求并响应。 没错,这个防火墙的缺陷被我找到了,通过使用较小的数据包片段就能绕过防火墙。 示例3:劫持Fragscapy以获取乐趣 让我们最后用一个有趣的例子来演示Fragscapy还可以做什么。我们现在知道它可以用于针对安全产品进行测试,但我们也可用其中的机制做其他的事。我们可以把Fragscapy配置为HTTP代理,只是看起像但不是。 相关配置文件如下: {以上这个配置文件只会运行一个无限循环的命令,它实际上不进行任何测试。它把8080端口接收到的数据包传递给80端口,再把80端口的响应传递给8080端口。 fragscapy start http_proxy.json 现在,你可以通过8080端口访问80端口,至少你本地的浏览器和工具是这样的。你可以尝试访问http://www.example.com:8080,应该会得到80端口的页面。 欢迎改进 如果你想深入了解Fragscap,并基于现有的模块进行改进,可以访问Amossys的Github。如果你有勇气对核心代码进行修改,我们也是欢迎的。 本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场 来源:https://nosec.org/home/detail/2976.html 原文:https://blog.amossys.fr/fragscapy-fuzzing-protocols-to-evade-firewalls.html 白帽汇从事信息安全,专注于安全大数据、企业威胁情报。 公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。 为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。 |
| 本文出处: https://www.toutiao.com/a6738703851806802439/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|