TCP Hijacking Proof of Concept
概述
这个Python脚本是一个TCP连接中断工具,使用Scapy库来操作网络数据包。它定义了用于连接处理的自定义异常,并提供了通过读取Linux系统的/proc/net/tcp文件来根据进程ID(PID)或TCP端口获取端点的功能。
核心功能
TCPBreaker类是功能的核心,允许它过滤和拦截与指定本地和远程TCP端口相关的数据包,捕获TCP会话的序列号以发送重置(RST)数据包。这有效地终止了连接。
该脚本还可以与ipset交互,添加或删除IP对来管理防火墙规则。它包含一个命令行界面供用户交互,支持指定PID、本地/远程端口以及选择数据包捕获方法(raw或nflog)等选项。
使用方法
|
|
选项参数
ipset_name:(可选)要临时插入本地IP的ipset名称--pid:(可选)要终止连接的进程ID(PID)--port:(可选)要关闭连接的本地TCP端口-d, --remote-port:(可选)将端口参数视为远程端口而非本地端口-c, --capture:(可选)指定捕获方法,选项为"raw"或"nflog"--debug:(可选)启用详细操作模式用于调试
示例命令
通过PID终止连接
|
|
使用ipset终止连接
|
|
通过指定本地和远程端口终止连接
|
|
使用raw捕获方法而不使用ipset
|
|
技术实现
自定义异常类
|
|
端点获取功能
脚本提供了get_endpoints()函数,可以通过PID或端口号来获取TCP连接的端点信息。它通过解析/proc/net/tcp文件来获取当前的TCP连接状态。
TCPBreaker类
这个类继承自Scapy的Automaton,主要功能包括:
- 过滤指定端口的TCP数据包
- 捕获会话序列号
- 构造并发送RST数据包
- 支持超时处理
ipset集成
脚本提供了ipset_update()函数来管理防火墙规则,可以动态添加或删除IP和端口组合到指定的ipset中。
注意事项
确保具有运行脚本的必要权限,因为它需要访问/proc/net/tcp,并且可能需要提升权限来修改ipset规则或终止连接。
代码结构
脚本主要包含以下组成部分:
- 自定义异常定义
- 端点获取功能函数
- TCPBreaker自动化类
- ipset管理功能
- 命令行参数解析
- 主程序逻辑
该工具为程序化控制和中止不需要的TCP连接提供了一种有效手段。