Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
BinProxy — BinProxy是一个代理,用于任意TCP连接。您可以使用BinData gem定义自定义消息格式。 | Kitploit
工具/GitHubGitHub/nccgroup/binproxy
数据包嗅探与分析Web代理与拦截网络安全渗透测试
GitHubnccgroup/binproxy

BinProxy

BinProxy是一个代理,用于任意TCP连接。您可以使用BinData gem定义自定义消息格式。

查看仓库网站
17644198年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

概述

BinProxy 是一个用于任意 TCP 连接的代理。你可以使用 BinData gem 定义自定义消息格式。

安装

前提条件

  • Ruby 2.3 或更高版本
  • 需要 C 编译器、Ruby 头文件等来编译多个依赖项。
    • 在 Ubuntu 上,运行 sudo apt install build-essential ruby-dev 即可。
    • 如果你安装了自定义 Ruby(例如使用 RVM),可能已经具备了所需条件。
  • 用于 --tls(未指定显式证书/密钥)的 openssl 二进制文件。
  • 构建 UI 需要 node.js 和 npm(运行时不需要)。

从 Rubygems 安装

root@kitploit:~
gem install binproxy

根据你的 Ruby 安装情况,可能需要使用 sudo。

从源码安装

root@kitploit:~
git clone https://github.com/nccgroup/BinProxy.git binproxy
cd binproxy

# 安装 ruby 依赖项。
# 根据你的环境,以下一个或两个命令可能需要 sudo。
gem install bundler && bundle

# UI 使用 webpack/babel 工具链构建:
(cd ui && npm install) \
  && rake build-ui

# 确认一切正常
# run.sh 设置环境并将所有参数传递给 binproxy
./run.sh --help

要构建并安装 gem 包:

root@kitploit:~
gem build binproxy.gemspec

# 同样,此处可能需要 sudo
gem install binproxy-1.0.0.gem

欢迎报告安装问题!

用法

基本用法

  1. 不带参数运行 binproxy。
  2. 在浏览器中打开 http://localhost:4567/
  3. 输入本地和远程主机名或 IP 地址及端口,然后点击“更新”
  4. 将客户端指向本地服务,观察数据包流动。

命令行标志

参见 --help 获取完整列表,但简要说明如下:

root@kitploit:~
binproxy -c <class> [<local-host>] <local-port> <remote-host> <remote-port>

如果省略 -c 参数,将显示简单的十六进制转储。

如果省略本地主机,binproxy 默认为 localhost。

使用 --socks-proxy 或 --http-proxy 选项时,远程主机和端口会动态确定,不应指定。

示例

root@kitploit:~
# 从 localhost:9000 代理到 example.com:9000
binproxy localhost 9000 example.com 9000

# 在 localhost:1080 上作为 SOCKS 代理运行
# MITM 并解开代理流量的 TLS 加密,使用自签名证书和密钥
binproxy -S --tls 1080

# “Burp 的廉价替代品”模式:
#
# HTTP 代理;使用预生成证书的 MITM TLS;简单的头部解析
# 注意:这只对 HTTPS 流量有效,对纯 HTTP 无效!
# 如果你使用源码仓库,可以通过以下命令生成证书:
#   rake makecert[example.com]
# 然后将 certs/ca-cert.pem 导入你的浏览器或操作系统的信任存储。
binproxy -H --tls \
  --tls-cert certs/example.com-cert.pem \
  --tls-key certs/example.com-key.pem \
  --class-name DumbHttp::Message \
  localhost 8080

自定义

默认情况下,代理使用内置的 RawMessage 类,该类仅提供每个消息的十六进制转储(假设消息与 TCP 数据包一一对应)。

你可以通过 --class 命令行参数指定一个 BinData::Record 子类†来查看解析后的协议信息。

你可能还希望在你的类中定义以下内容:

root@kitploit:~
def summary
  # 返回此记录的单行描述
end

# 目前支持的选项有
#   - nil : 使用默认显示
#   - "anon" : 对于结构体,直接显示内容
#   - "hex" : 对于数字,显示为 0x1234ABCD
#   - "hexdump" : 对于字符串,显示为 `hexdump -C` 格式
default_parameter display_as: "..."

# TODO: 记录状态相关内容
def self.initial_state
end

def current_state
end

def update_state
end

† 技术上,任何 BinData::Base 的子类都可以工作。

动态代理

默认情况下,BinProxy 将所有流量中继到静态的上游主机和端口。它也可以配置为通过 --socks-proxy 和 --http-proxy 标志分别充当 SOCKS(v4 或 v4a)或 HTTP 代理。

注意: 目前,HTTP 代理仅支持通过 HTTP CONNECT 动词建立的隧道连接;它无法代理原始的 HTTP GET、POST 等请求。实际上,这意味着 HTTPS 流量可以工作,但纯 HTTP 流量无法工作,除非客户端支持强制隧道的标志,如 curl -p。

TLS / SSL

使用 --tls 标志可以在处理消息之前解开 TLS 加密。默认情况下,BinProxy 会生成自签名证书。你可以使用 --tls-cert 和 --tls-key 指定包含证书和密钥的 PEM 文件。(如果你克隆了源码仓库,可以使用 rake makecert[example.com] 生成一个静态 CA 和一个带有适当主机名的证书。)

已知问题

  • HTTP 代理功能是临时拼凑的,不够健壮。

另请参阅 TODO 文件,其中包含随机的想法和愿望清单。

致谢

BinProxy 的核心 TCP 代理功能最初源于 Sean Devlin 编写的一个专用代理。Rusty Burchfield 为该代理贡献了 HTML UI。虽然代码已经发生了足够多的变化,他们不再对当前任何错误负责,但如果没有他们两人的工作,BinProxy 很可能不会存在。

下载工具