ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Hetty 安全研究 HTTP 工具包:开源 MITM 代理、流量拦截与重放全指南

Hetty 安全研究 HTTP 工具包:开源 MITM 代理、流量拦截与重放全指南 网络安全应用安全【免费下载链接】hettyAn HTTP toolkit for security research.项目地址https://gitcode.com/GitHub_Trending/he/hetty点击查看免费下载导读Hetty 是一款面向安全研究security research的 HTTP 工具包目标是成为 Burp Suite Pro 等商业软件的开源替代方案面向 infosec 与 bug bounty 社区的实际需求设计。它内置了带日志与高级搜索能力的中间人MITMHTTP 代理、可手动构造/编辑请求并回放代理流量的 HTTP 客户端、请求/响应拦截、Scope 作用域管理以及基于项目的数据库存储与 Web 管理界面。读完本文你将掌握 Hetty 的安装方式、全部 CLI 参数、MITM 与 CA 证书原理、代理日志搜索语法、拦截配置、Scope 规则与 Sender 重放流程并能在本地快速搭建一套完整的安全测试工作环境。Hetty 是什么核心特性一览Hetty 以单个可执行文件同时提供 HTTP 代理、GraphQL 服务与 Web 管理界面三部分能力。官方 README.md 列出的核心特性包括Machine-in-the-middleMITMHTTP 代理支持流量日志与高级搜索HTTP 客户端Sender用于手动创建/编辑请求并可回放代理捕获的请求请求与响应拦截供人工审查可编辑、发送/接收、取消Scope 作用域支持帮助保持工作有条理易用的 Web 管理界面基于项目Project的数据库存储帮助组织工作内容。从源码结构看这一整套能力由几个核心包协同完成代理与证书逻辑位于 pkg/proxy请求日志与搜索位于 pkg/reqlog拦截服务位于 pkg/proxy/interceptScope 规则位于 pkg/scopeSender 位于 pkg/sender数据库层则基于 bbolt 实现于 pkg/db/bolt。前端管理界面是位于 admin 目录下的 Next.js React MUI 应用构建产物会被嵌入 Go 二进制见 cmd/hetty/hetty.go 中的go:embed admin指令。安装 Hetty五种获取方式README 建议通过包管理器快速安装和更新 Hetty覆盖 macOS、Linux、Windows 三大平台另提供 Docker 与从源码编译两种方式。macOSbrew install hettysoft/tap/hettyLinuxsudo snap install hettyWindowsscoop bucket add hettysoft https://github.com/hettysoft/scoop-bucket.git scoop install hettysoft/hetty其他平台下载发布版二进制如果操作系统不在上述包管理器或 GitHub Releases 的覆盖范围内可以下载对应 OS 与架构的最新发布版将二进制放入$PATH中的某个目录即可运行也可从源码编译。DockerDocker 镜像通过 GitHub Container Registry 与 Docker Hub 分发。使用如下命令运行同时挂载数据卷用于数据库与证书存储并将 8080 端口映射到宿主机docker run -v $HOME/.hetty:/root/.hetty -p 8080:8080 \ ghcr.io/dstotijn/hetty:latest容器内部默认工作目录为/app入口即./hetty镜像暴露 8080 端口——这与 Dockerfile 中的EXPOSE 8080与ENTRYPOINT [./hetty]一致。宿主机的$HOME/.hetty目录对应容器内/root/.hetty其中保存着 CA 证书、私钥与数据库文件保证重启容器后数据不丢失。从源码编译仓库根目录的 Makefile 提供了完整构建流程make build会先执行build-admin在admin目录下yarn install --frozen-lockfile yarn run export将 Next.js 静态导出产物移动到cmd/hetty/admin再执行go build ./cmd/hetty产出可执行文件。构建时通过-ldflags-s -w -X main.version${HETTY_VERSION}注入版本号见 Dockerfile。如果只想构建后端而跳过前端可分别执行make build-admin与go build ./cmd/hetty。快速上手启动与 CLI 参数全解安装完成后直接在终端运行hetty服务启动后默认监听:8080同时提供代理端口、GraphQL API/api/graphql/与 Web 管理界面。命令行下可用hetty --help查看全部可用选项README 给出的完整输出如下$ hetty --help Usage: hetty [flags] [subcommand] [flags] Runs an HTTP server with (MITM) proxy, GraphQL service, and a web based admin interface. Options: --cert Path to root CA certificate. Creates file if it doesnt exist. (Default: ~/.hetty/hetty_cert.pem) --key Path to root CA private key. Creates file if it doesnt exist. (Default: ~/.hetty/hetty_key.pem) --db Database file path. Creates file if it doesnt exist. (Default: ~/.hetty/hetty.db) --addr TCP address for HTTP server to listen on, in the form \host:port\. (Default: :8080) --chrome Launch Chrome with proxy settings applied and certificate errors ignored. (Default: false) --verbose Enable verbose logging. --json Encode logs as JSON, instead of pretty/human readable output. --version, -v Output version. --help, -h Output this usage text. Subcommands: - cert Certificate management Run hetty subcommand --help for subcommand specific usage instructions. Visit https://hetty.xyz to learn more about Hetty.各参数的作用与底层行为各参数的解析与默认值定义在 cmd/hetty/hetty.go 中要点如下参数默认值说明--cert~/.hetty/hetty_cert.pem根 CA 证书路径文件不存在时自动创建--key~/.hetty/hetty_key.pem根 CA 私钥路径文件不存在时自动创建--db~/.hetty/hetty.dbBoltDB 数据库文件路径不存在时自动创建--addr:8080HTTP 服务监听地址格式为host:port--chromefalse启动 Chrome 并自动套用代理设置、忽略证书错误--verbosefalse开启详细日志--jsonfalse以 JSON 格式输出日志替代人类可读的格式化输出--version/-v-输出版本号--help/-h-输出帮助信息从实现上看--cert、--key、--db三个路径中的~会在启动时通过homedir.Expand展开为真实主目录见 cmd/hetty/hetty.go随后调用proxy.LoadOrCreateCA加载或生成 CA 密钥对再用bolt.OpenDatabase打开数据库HTTP 服务通过net.SplitHostPort解析监听地址若监听在localhost或本机回环地址管理界面访问地址会显示为http://localhost:port。cert 子命令证书管理hetty cert子命令用于管理系统信任库中的 CA 证书其下再分install与uninstall两个子命令实现在 cmd/hetty/cert.gohetty cert install将证书安装到系统信任库并可选安装到 Firefox 与 Java 信任库。参数包括--cert默认~/.hetty/hetty_cert.pem、--firefox默认 false、--java默认 false、--skip-system跳过系统信任库安装默认 false。hetty cert uninstall从系统信任库卸载证书参数与 install 相同。安装到系统信任库时可能会提示输入密码源码中会输出对应提示日志--skip-system可在只操作 Firefox/Java 信任库时跳过系统信任库。信任库操作底层依赖smallstep/truststore库完成跨平台集成。MITM 代理与 CA 证书机制作为安全研究工具Hetty 的核心能力是中间人代理客户端把流量指向 HettyHetty 在转发给目标服务器的同时记录、拦截和修改请求与响应。其中最关键的是 TLS 流量解密——这依赖于一套本地根 CA。CA 的生成与持久化首次启动时proxy.LoadOrCreateCA会尝试用tls.LoadX509KeyPair从--cert/--key指定的文件加载已有密钥对若文件不存在则调用NewCA生成新的根 CACommonName 为 Hetty组织为 Hetty CA有效期 365 天并把 PEM 格式的证书与 PKCS8 私钥写入磁盘见 pkg/proxy/cert.go。私钥文件以0600权限写入以限制其他用户读取。基于 SNI 的动态证书签发NewCertConfig为代理构建 MITM 用的 TLS 配置TLSConfig中的GetCertificate回调根据客户端 TLS ClientHello 中的 SNI 服务器名动态签发一张临时证书——使用根 CA 为其签名有效期 24 小时证书主体CommonName即为目标主机名见 pkg/proxy/cert.go。这样浏览器在访问任意 HTTPS 站点时都能收到一张看似可信的证书前提是根 CA 已被客户端信任。请求转发链路Proxy实现了http.Handlerpkg/proxy/proxy.go普通 HTTP 请求直接进入httputil.ReverseProxy转发CONNECT方法HTTPS 隧道则先Hijack连接用代理 CA 与客户端完成 TLS 握手再在隧道内继续转发。请求与响应在转发过程中会依次经过各中间件RequestModifier/ResponseModifier这正是日志记录与拦截功能挂载的钩子点。转发传输层默认关闭压缩DisableCompression: true并在modifyResponse中自动解压 gzip 响应体见 pkg/proxy/gzip.go确保后续日志与拦截看到的是明文内容。让客户端信任根 CA要使 HTTPS 流量被正确解密需要把根 CA 安装到浏览器或操作系统的信任库。最便捷的方式是使用上文提到的hetty cert install支持系统信任库及 Firefox、Java 信任库另外hetty --chrome参数会启动一个套用代理设置并忽略证书错误的 Chrome 实例基于 chromedp 实现见 cmd/hetty/hetty.go适合快速体验而无需手动配置浏览器。代理日志与高级搜索所有流经代理的 HTTP 请求/响应都会被记录前提是存在激活的项目并可在管理界面的日志页Logs进行高级搜索。日志数据结构RequestLog/ResponseLog定义于 pkg/reqlog/reqlog.go记录了 URL、方法、协议版本、头部、请求体与响应状态码、状态短语、响应体等信息。搜索表达式语法日志搜索采用一套自研的过滤表达式语言词法与语法分析器分别位于 pkg/filter/lexer.go 与 pkg/filter/parser.go支持以下操作符操作符含义等于!不等于大小比较当前按字符串比较~正则匹配!~正则不匹配ANDORNOT逻辑组合支持括号分组例如method GET OR url ~ /foobar。可搜索的字段键日志匹配逻辑实现在 pkg/reqlog/search.go支持请求侧与响应侧两类字段请求侧req.*req.id日志 ID、req.proto协议版本如 HTTP/1.1、req.url完整 URL、req.method方法、req.body请求体、req.timestamp时间戳响应侧res.*res.proto、res.statusCode状态码、res.statusReason状态短语、res.body响应体特殊键req.headers与res.headers用于对头部做匹配与、!、~、!~操作符配合匹配格式为Key: Value实现见 pkg/filter/http.go。此外输入一个裸字符串不带操作符时会执行全文子串匹配只要请求/响应的任意头部Key: Value形式或上述任意字段包含该字符串大小写不敏感即命中。解析器的行为由 pkg/filter/parser_test.go 中的测试用例覆盖验证。过滤与作用域联动日志页还提供仅显示作用域内请求Only show in-scope requests的开关前端实现见 admin/src/features/reqlog/components/Search.tsx配合 Scope 规则把注意力聚焦在目标范围内。后端FindRequestsFilter携带OnlyInScope与SearchExpr两个维度见 pkg/reqlog/reqlog.go。另外项目设置中若开启跳过作用域外请求的日志记录代理日志会在不匹配任何 Scope 规则时被旁路bypass不写入数据库。拦截请求与响应拦截功能允许在代理转发前冻结请求或响应供人工审查与修改后再放行。拦截服务实现于 pkg/proxy/intercept/intercept.go通过 Go channel 实现阻塞式等待代理管线中的InterceptRequest/InterceptResponse会把请求/响应登记进待处理队列并阻塞管理界面处理完后调用ModifyRequest/ModifyResponse把修改后的对象送回队列解除阻塞继续转发。拦截设置项拦截行为以项目为单位配置相关设置通过 GraphQL 变更updateInterceptSettings下发Schema 见 pkg/api/schema.graphql设置项包括requestsEnabled是否启用请求拦截responsesEnabled是否启用响应拦截requestFilter请求过滤表达式仅匹配的请求被拦截responseFilter响应过滤表达式仅匹配的响应被拦截。管理界面中的设置页admin/src/features/settings/components/Settings.tsx以开关与文本框形式暴露这些选项过滤表达式的占位示例为method GET OR url ~ /foobar请求与statusCode ~ ^2 OR body ~ foobar响应。请求/响应过滤表达式的可用字段键见 pkg/proxy/intercept/filter.go请求侧为proto、url、method、body、headers响应侧为proto、statusCode、statusReason、body、headers。拦截后的操作在拦截页/proxy/intercept对应 admin/src/pages/proxy/intercept/index.tsx中可以对被拦截的请求/响应执行编辑并发送Forward修改 URL、方法、协议、头、请求体响应侧则为状态码、状态短语、头、响应体后放行取消 / 丢弃Cancel中止请求不再向目标服务器发送后端返回ErrRequestAborted并取消请求上下文见 pkg/proxy/intercept/intercept.go。拦截页 UI 由上下两个面板组成上方是请求/响应编辑区下方是待处理请求列表且会自动选中列表中的第一个待处理请求以便快速连续处理见 admin/src/features/intercept/components/Intercept.tsx。左侧导航栏的 Intercept 入口还会显示待处理数量的角标见 admin/src/features/Layout.tsx。当请求拦截由启用切换为禁用时后端会自动清空所有待处理请求UpdateSettings中的清理逻辑。Scope 作用域规则Scope 用于界定当前关注的目标范围帮助把日志、拦截等操作聚焦在特定主机、路径或特征上。Scope 规则由三条可独立使用的正则维度构成实现见 pkg/scope/scope.goURL对请求的完整 URL 做正则匹配Header对请求头的 Key 与 Value 分别做正则匹配仅填其一则只匹配其一两者都填则需同时命中Body对请求体做正则匹配。只要请求命中任意一条规则的任意一个维度即视为在作用域内。规则可通过 GraphQLsetScope变更提交管理界面的 Scope 页admin/src/features/scope/components/AddRule.tsx目前暴露 URL 类型的规则添加输入框占位示例为^https:\/\/(.*)example.com(.*)即以正则表达目标站点。作用域同时被日志过滤onlyInScope、日志旁路bypass out-of-scope与拦截过滤共用。Sender手工构造请求与回放Sender 是 Hetty 内置的 HTTP 客户端用于手工创建/编辑请求并可回放代理日志中捕获的请求。前端入口为 admin/src/features/sender/components/Sender.tsx上方面板编辑请求、下方面板显示历史记录。请求编辑能力编辑区admin/src/features/sender/components/EditRequest.tsx支持选择 HTTP 方法GET/HEAD/POST/PUT/DELETE/CONNECT/OPTIONS/TRACE/PATCH与协议版本HTTP/1.0、HTTP/1.1、HTTP/2.0默认 HTTP/2编辑 URL修改 URL 时自动同步查询参数表格与请求头编辑请求体并支持从代理日志一键导入请求createSenderRequestFromHttpRequestLog。协议版本由 pkg/sender/transport.go 中的自定义HTTPTransport实现基于请求上下文中的协议值在http.DefaultTransport尝试 HTTP/2与禁用 HTTP/2 的 HTTP/1.1 专用 transport 之间切换。发送请求默认超时 30 秒。请求持久化与历史Sender 请求保存在数据库sender_requests桶每个请求可记录响应结果形成可复用的历史列表后续可直接从历史重新发送或再次编辑。发送流程通过 GraphQLcreateOrUpdateSenderRequestsendRequest完成Schema 见 pkg/api/schema.graphql。基于项目的数据库存储Hetty 使用 bbolt纯 Go 嵌入式 KV 数据库持久化所有数据默认数据库文件为~/.hetty/hetty.db。数据库层实现在 pkg/db/bolt顶层为projects桶每个项目对应一个嵌套桶桶内再分reqlogs请求日志与sender_requestsSender 请求子桶见 pkg/db/bolt/proj.go。项目与日志均以 ULID 作为 IDpkg/proxy/proxy.go 中每个请求生成一个 ULID 并注入上下文日志存储即复用该 ID。管理界面的 Projects 页用于创建/打开/删除项目只有激活打开项目后代理日志、拦截、Sender 等功能才可用导航栏中这些入口在无激活项目时处于禁用状态见 admin/src/features/Layout.tsx。新项目创建后会自动打开见 admin/src/features/projects/components/NewProject.tsx。请求日志存储逻辑见 pkg/reqlog/reqlog.go 的RequestModifier/ResponseModifier无激活项目时旁路记录请求按需读取完整请求体响应体以异步 goroutine 落库。其正确性由 pkg/reqlog/reqlog_test.go 中的TestRequestModifier等测试覆盖。Web 管理界面与整体架构管理界面是一个基于 Next.js静态导出 React Material UI 的 SPA源码位于 admin/src构建产物通过go:embed直接嵌入 Go 二进制因此单文件分发、无需单独部署前端。路由层面cmd/hetty/hetty.go 用gorilla/mux构建路由器当请求的 Host 是本机主机名、hetty.proxy、localhost:port或监听地址时命中管理界面与 GraphQL API 路由其余流量含CONNECT与带 scheme 的外部 URL则全部落入代理处理器。界面导航包含 Home、Logs代理日志、Intercept拦截、Sender、Scope、Projects、Settings 等页面。Settings 页目前提供项目级的 Intercept 设置请求/响应拦截开关与过滤表达式。社区、贡献与许可证项目处于活跃开发状态功能与路线图可关注官方文档hetty.xyz与 GitHub issues/discussions想要参与贡献的开发者可参考仓库内的 CONTRIBUTING.md 与 CODE_OF_CONDUCT.mdHetty 以 MIT 许可证开源版权归 Hetty Software© 2019–2025所有。小结从本文的梳理可以看到Hetty 以单二进制 内嵌前端 bbolt 存储的紧凑架构覆盖了安全研究中最常用的工作流配置 MITM 代理与 CA、浏览并搜索代理日志、按规则拦截和修改请求/响应、用 Scope 收敛目标范围、再用 Sender 手工构造与回放请求。所有核心行为都能在 pkg 与 cmd/hetty 的源码、pkg/api/schema.graphql 的 GraphQL Schema 以及各包对应的测试用例中找到确切依据方便进一步深入阅读与二次开发。赞分享网络安全应用安全【免费下载链接】hettyAn HTTP toolkit for security research.项目地址https://gitcode.com/GitHub_Trending/he/hetty点击查看免费下载相关推荐开源替代Burp SuiteHetty全能HTTP拦截工具开源替代Burp SuiteHetty全能HTTP拦截工具 痛点直击安全测试工程师的工具困境 你是否还在为Burp Suite的高昂授权费用而却步是否因商网络安全应用安全终极指南如何用Hetty成为HTTP安全研究高手终极指南如何用Hetty成为HTTP安全研究高手 Hetty是一款专为安全研究打造的HTTP工具包旨在成为Burp Suite Pro等商业软件的开源替代方网络安全应用安全Qwen3-30B-A3B-Thinking-2507-FP8模型配置详解从tokenizer到量化配置的完整指南Qwen3 30B A3B Thinking 2507 FP8模型配置详解从tokenizer到量化配置的完整指南 欢迎来到这篇关于Qwen3 30B A3B上一篇抖音批量下载工具技术解析从API调用到智能管理的完整解决方案下一篇抖音批量下载工具完整指南去水印、支持合集与用户主页的专业解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表