PF_RING FT许可证初始化漏洞利用

栏目: C · 发布时间: 5年前

内容简介:github地址:PF_RING是一个Linux内核模块和用户空间框架,可以高速率处理网络数据包,同时为处理数据包的应用程序提供一套API。PF_RING FT实现了一个优化的流表,由于与nDPI的本机集成,可以用来跟踪流并提取包括7层协议的流元数据。使用PF_RING FT可以编写一个事件驱动的流处理应用程序,专注于实际的流处理而不是流表管理和性能,实际上它提供了许多钩子,可用于定制和扩展核心流表用来构建流分析的应用程序,包括探针、IDS和IPS。

0×00 PF_RING FT功能介绍

github地址: https://github.com/ntop/PF_RING

PF_RING是一个 Linux 内核模块和用户空间框架,可以高速率处理网络数据包,同时为处理数据包的应用程序提供一套API。

PF_RING FT实现了一个优化的流表,由于与nDPI的本机集成,可以用来跟踪流并提取包括7层协议的流元数据。使用PF_RING FT可以编写一个事件驱动的流处理应用程序,专注于实际的流处理而不是流表管理和性能,实际上它提供了许多钩子,可用于定制和扩展核心流表用来构建流分析的应用程序,包括探针、IDS和IPS。

其中详细的介绍及使用方法可参见文档: https://github.com/ntop/PF_RING/blob/dev/doc/ft.rst

PF_RING FT许可证初始化漏洞利用 由于FT是收费的模块,购买网址: https://shop.ntop.org/ ,售价为199.95欧元/年。

PF_RING FT许可证初始化漏洞利用

0×01 运行环境介绍

破解过程在CentOS7系统下,我们使用PF_RING中的pfcount命令读取网络数据,将PF_RING_FT_CONF=/usr/local/etc/ndpi/ndpi.conf环境变量导入到系统中后将自动启用FT功能。

如果系统中没有FT模块的license文件则会出现如下提示,并且五分钟后程序自动退出。

PF_RING FT许可证初始化漏洞利用

0×02 爆破许可过程

首先我们使用objdump工具将pfcount二进制文件反汇编并存放在pf.s文件中:

PF_RING FT许可证初始化漏洞利用

然后我们来查看根据上面ft.rst文件描述的,使用ft时首先调用pfring_ft_create_table函数,我们打开pf.s文件来查看这个函数的实现。

PF_RING FT许可证初始化漏洞利用

可以发现在pfring_ft_create_table函数中调用了license_init函数,并且调用的二进制指令为:”e8 36 e9 ff ff”,然后使用gdb动态调试pfcount命令。首先将断点设置在0x43fff5位置,然后单步执行,如下图所示:

PF_RING FT许可证初始化漏洞利用

可见license_init函数中对设备的license进行校验。我们跳过这个函数实验一下有可能直接绕过license限制,跳转思路如下图所示:

PF_RING FT许可证初始化漏洞利用

首先在gdb中0x43fff5处设置断点,然后修改rip寄存器指向下一个指令的地址0x43fffa,然后继续执行。

PF_RING FT许可证初始化漏洞利用

发现license的报错信息没有显示,我们继续等待五分钟限制,发现pfcount可以一直运行,至此我们破解点就寻找成功了,但是不能每次运行都进入调试模式修改寄存器,这样使用本不方便,我们可以修改二进制文件,将调用license_init指令删除。

前文在pf.s文件中可以查看到调用license_init函数的二进制指令为”e8 36 e9 ff ff”,我们通过hexdump查找调用license_init指令在二进制文件中的位置。

PF_RING FT许可证初始化漏洞利用

可以看出0003fff0处是调用license_init函数的行号。然后我们使用vim -b 参数打开pfcount二进制文件,然后输入:%!xxd,则可以看见文件的二进制形式,然后找到003fff0位置处,如下图所示。

PF_RING FT许可证初始化漏洞利用

将这5个字节修改为nop指令,nop指令的二进制码是0×90:

PF_RING FT许可证初始化漏洞利用

然后输入:%!xxd -r恢复二进制模式,并保存,然后我们使用objdump命令重新反汇编一下pfcount,发现0x43fff5地址处的指令变为nop跳过指令。

PF_RING FT许可证初始化漏洞利用

然后我们手动执行一下pfcount命令查看结果:

PF_RING FT许可证初始化漏洞利用

此时已经不提示license无效的信息,然后我们继续观察是否会在5分钟退出。

PF_RING FT许可证初始化漏洞利用

由上图可见对PF_RING FT模块的破解是成功的。

0×03 总结

本文主要介绍Linux系统下破解二进制文件的思路,本文并没有对汇编语指令进行分析,应该有助于刚刚进入破解门槛的小伙伴进一步学习,也为后续ntop注册机的实现做一些简单的铺垫。

这种暴力破解也存在缺陷,例如没有考虑到调用license_init函数返回后寄存器的值,有可能导致后续流程出现异常错误。

这个漏洞已向ntop官方反馈,后续版本应该会修复,此漏洞仅限学习交流,切勿用于非法用途。

*本文作者:小2黑hei,转载请注明来自FreeBuf.COM


以上所述就是小编给大家介绍的《PF_RING FT许可证初始化漏洞利用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

你不知道的JavaScript(上卷)

你不知道的JavaScript(上卷)

[美] Kyle Simpson / 赵望野、梁杰 / 人民邮电出版社 / 2015-4 / 49.00元

JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,JavaScript开发者无需理解语言内部的原理,就能编写出功能全面的程序;就像收音机一样,你无需理解里面的管子和线圈都是做什么用的,只要会操作收音机上的按键,就可以收听你喜欢的节目。然而,JavaScript的这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发者,如果没有认真学习也无......一起来看看 《你不知道的JavaScript(上卷)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试