Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PortForwarder — 基于C的TCP端口转发工具 | Kitploit
工具/GitHubGitHub/lsecqt/portforwarder
通用工具网络映射IDS/IPS规避横向移动渗透测试实用工具与框架红队
GitHublsecqt/portforwarder

PortForwarder

基于C的TCP端口转发工具

查看仓库
41112个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Windows TCP 端口转发器

一款高性能的 Windows TCP 端口转发工具,支持可选的 IP 白名单和详细日志功能。

功能特色

  • ✅ 将 TCP 流量从本地端口转发至任意远程主机:端口
  • ✅ 可选 IP 白名单,增强安全性
  • ✅ 端口 445 / SMB 接管模式(禁用 SMB 并释放端口 445 用于中继)
  • ✅ 支持最多 100 个并发连接
  • ✅ 双向数据转发,实时统计
  • ✅ 详细模式,用于调试被拒绝的连接
  • ✅ 激进 TCP 保活设置,检测死连接
  • ✅ 低延迟转发(已禁用 Nagle 算法)
  • ✅ 优雅关闭处理(Ctrl+C)
  • ✅ 线程安全的连接管理

系统要求

  • Windows 操作系统
  • Visual Studio(用于编译)或 MinGW-w64
  • Winsock2 库(随 Windows SDK 提供)

编译

使用 Visual Studio 开发者命令提示符:

root@kitploit:~
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib

使用 MinGW-w64:

root@kitploit:~
gcc PortForwarder.c -o PortForwarder.exe -lws2_32

使用方法

root@kitploit:~
PortForwarder.exe <local_port> <remote_host> <remote_port> [allowed_ip] [-v]

参数说明

  • <local_port> - 监听本地的端口(1-65535)
  • <remote_host> - 转发流量的远程主机名或 IP 地址
  • <remote_port> - 转发流量的远程端口(1-65535)
  • [allowed_ip] - 可选 - 仅接受来自此 IP 地址的连接
  • [-v] - 可选 - 启用详细模式(显示被拒绝的连接)

示例

基本端口转发(无 IP 过滤)

将本地端口 8080 转发至远程服务器 192.168.1.100 的端口 80:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80

带 IP 白名单的端口转发

仅接受来自 192.168.1.50 的连接:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50

带 IP 白名单和详细日志的端口转发

显示被拒绝的连接尝试:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50 -v

转发至远程主机名

root@kitploit:~
PortForwarder.exe 3306 database.example.com 3306

带 IP 限制的 SSH 端口转发

root@kitploit:~
PortForwarder.exe 2222 10.0.0.50 22 192.168.1.100

端口 445 / SMB 接管(仅限授权测试)

监听 SMB 端口 445 并转发至远程 SMB 端点。当本地端口为 445 时,工具会首先从 Windows 内置 SMB 服务器释放该端口:

root@kitploit:~
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100

当本地端口为 445 时,在绑定前工具会自动:

  1. 验证权限 — 确认进程以管理员权限运行。若非如此,则中止并显示明确信息。
  2. 显示当前占用者 — 识别当前绑定在端口 445 上的 PID/进程(通常为 System,PID 4,通过 srvnet 内核驱动)。
  3. 禁用 SMB 并释放端口 — 停止 LanmanServer 以及 srv2 / srvnet 驱动(递归停止所有依赖服务),并输出每一步以供查看。
  4. 验证并绑定 — 确认端口 445 已释放,然后正常绑定并转发。

示例输出:

root@kitploit:~
[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445]   service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445]   service 'srv2' stopped
[445] Stopping 'srvnet'...
[445]   service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)

⚠️ 停止这些服务将在测试期间禁用主机上的文件/打印机共享。之后使用 net start LanmanServer 恢复(驱动会在需要时或下次启动时重新启动)。仅在你获得授权测试的系统上使用。

使用场景

本地开发

  • 访问容器或虚拟机中运行的服务
  • 将 WSL2 的端口转发至 Windows 主机
  • 在本地测试 Webhook 端点

网络桥接

  • 桥接不同网段
  • 绕过防火墙限制(仅限授权使用)
  • 从 DMZ 访问内部服务

数据库访问

  • 通过 IP 白名单保护数据库连接
  • 通过跳板机隧道传输数据库流量
  • 为远程开发暴露本地数据库

安全测试

  • 监控并分析 TCP 流量模式
  • 测试基于 IP 的访问控制
  • 通过详细模式审计连接尝试

输出信息

转发器提供详细日志:

root@kitploit:~
[INFO] Configuration:
  Local port:  8080
  Remote host: 192.168.1.100
  Remote port: 80
  Allowed IP:  192.168.1.50 (filtered mode)
  Verbose:     OFF

[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop

[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)

详细模式输出

当启用 -v 标志时,被拒绝的连接也会被记录:

root@kitploit:~
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)

技术细节

性能优化

  • 缓冲区大小:8KB 缓冲区,实现高效数据传输
  • TCP_NODELAY:禁用 Nagle 算法,降低延迟
  • 保活机制:激进设置(初始 10 秒,间隔 1 秒),检测死连接
  • 线程池:最多 100 个并发连接,每个连接有专用转发线程
  • 非阻塞 Accept:基于超时的 select(),实现响应式关闭

连接处理

每个连接会生成一个专用的转发线程,该线程:

  1. 建立到远程主机的连接
  2. 设置套接字选项(超时、保活、TCP_NODELAY)
  3. 使用 select() 进行双向转发
  4. 跟踪每个方向传输的字节数
  5. 在终止时优雅关闭两个套接字

错误处理

转发器能优雅处理常见网络错误:

  • WSAECONNRESET - 对端重置连接
  • WSAECONNABORTED - 连接中止
  • WSAENETRESET - 网络导致断开
  • WSAETIMEDOUT - 连接超时

线程安全

  • 临界区保护连接数组
  • 使用 volatile running 标志实现干净关闭
  • 清理期间的线程同步

安全注意事项

⚠️ 重要安全提示:

  1. IP 白名单:在生产环境中使用 [allowed_ip] 参数限制访问
  2. 无加密:此转发器不对流量加密。敏感数据请配合 SSH 隧道或 VPN 使用
  3. 身份验证:无内置身份验证。请确保远程服务具有适当安全措施
  4. 防火墙:配置 Windows 防火墙限制对监听端口的访问
  5. 日志:在生产环境中禁用详细模式,避免日志文件过大
  6. 资源限制:100 连接限制可防止资源耗尽

故障排除

端口已被占用

root@kitploit:~
[ERROR] bind() failed: 10048

解决方案:其他应用程序正在使用该端口。请选择不同的本地端口或停止冲突的服务。

无法连接到远程

root@kitploit:~
[ERROR] connect() to remote failed: 10061

解决方案:请确认远程主机可达,并且服务在指定端口上运行。

权限被拒绝

root@kitploit:~
[ERROR] bind() failed: 10013

解决方案:1024 以下端口可能需要管理员权限。请以管理员身份运行或使用更高端口号。

连接被拒绝

root@kitploit:~
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)

解决方案:启用详细模式(-v)查看被拒绝的 IP,或移除 IP 过滤。

停止转发器

按下 Ctrl+C 可优雅停止转发器。它将:

  1. 停止接受新连接
  2. 等待活动连接完成(最多 5 秒)
  3. 关闭所有套接字
  4. 清理资源
  5. 显示清理确认信息

限制

  • 仅 Windows:使用 Winsock2 API(不可移植到 Linux/macOS)
  • 仅 IPv4:当前仅支持 IPv4 地址
  • 单一 IP 过滤:只能指定一个允许的 IP 地址
  • 无负载均衡:流量转发至单个远程端点
  • 无流量检查:原始 TCP 转发,不分析内容
  • 无带宽限制:无内置节流或 QoS

未来增强

未来版本可能增加的功能:

  • IPv6 支持
  • 多 IP 白名单/黑名单
  • SSL/TLS 加密封装
  • 流量统计面板
  • 配置文件支持
  • 带宽限制
  • 轮询负载均衡
  • 连接速率限制
  • 跨平台支持(Linux/macOS)

许可证

本软件按“原样”提供,用于教育及合法的网络管理目的。请负责任地使用并遵守适用法律法规。

贡献

欢迎贡献!请确保:

  • 代码遵循现有风格
  • 在 Windows 上经过充分测试
  • 注释解释复杂逻辑
  • 新功能已更新 README

支持

如有问题、疑问或功能请求,请在项目仓库中提交 issue。

你也可以通过 Patreon 支持我的工作。


下载工具