TCP Hijacking Proof of Concept
概述
这个Python脚本是一个TCP连接中断工具,使用Scapy库来操纵网络数据包。它定义了用于连接处理的自定义异常,并提供通过读取Linux系统的/proc/net/tcp文件来根据进程ID(PIDs)或TCP端口检索端点的功能。
核心功能
TCPBreaker类是功能的核心,允许过滤和拦截与指定本地和远程TCP端口相关的数据包,捕获TCP会话的序列号以发送重置(RST)数据包,从而有效终止连接。
该脚本还可以与ipset交互,添加或删除IP对以管理防火墙规则。它包含一个命令行界面供用户交互,支持指定PID、本地/远程端口以及选择数据包捕获方法(raw或nflog)等选项。
使用方法
|
|
选项
ipset_name:(可选)要临时插入本地IP的ipset名称--pid:(可选)要终止连接的进程ID--port:(可选)要关闭的连接的本地TCP端口-d, --remote-port:(可选)将端口参数视为远程端口而非本地端口-c, --capture:(可选)指定捕获方法,选项为"raw"或"nflog"--debug:(可选)启用详细操作模式用于调试
示例命令
|
|
注意事项
确保您有运行脚本的必要权限,因为它需要访问/proc/net/tcp,并且可能需要提升权限来修改ipset规则或终止连接。
代码实现
脚本使用Scapy库进行数据包操作,通过读取/proc/net/tcp文件获取当前TCP连接信息,并实现了以下核心类:
ConnMultipleMatches: 当找到多个匹配连接时抛出ConnNotFound: 当未找到连接时抛出get_endpoints(): 根据PID或端口获取端点信息TCPBreaker: 主要的连接中断自动化类
技术细节
脚本支持两种捕获模式:
- raw模式: 直接使用原始套接字捕获数据包
- nflog模式: 使用netfilter日志系统捕获数据包
通过精确匹配TCP端口对,脚本能够捕获特定会话的数据包,提取序列号并构造RST包强制终止TCP连接。
作者: ClumsyLulz aka SleepTheGod Taylor Christian Newsome