Hetty
Hetty是一款针对安全研究设计的HTTP工具套件,该工具的目标是成为一些商业软件(比如说BurpSuite Pro)的开源替代产品。该工具的功能十分强大,并且针对信息安全以及漏洞Hunter社区的需求进行了定制开发。
该工具目前提供了下列功能:
- 中间人攻击,提供了包含日志记录的HTTP/1.1代理;
- 基于项目的数据库存储(SQLite);
- Scope支持;
- 使用了GraphQL实现管理API;
- 嵌入式Web接口(js);
需要注意的是,当前版本的Hetty仍处于前期开发阶段,之后的版本还将添加更多的功能。
工具安装
Hetty会对自包含代码进行编译,其中包含嵌入式的SQLite数据库和一个基于Web实现的管理员接口。
安装预构建版本(建议)
广大研究人员可以直接访问该项目的【Releases页面】来下载对应操作系统平台(支持Linux、macOS和Windows)的Hetty。
从源码构建
依赖组件:
Hetty的功能实现依赖于SQLite(mattn/go-sqlite3),并且需要cgo来进行编译。除此之外,管理员面板(Next.js)的静态资源需要通过Yarn来生成,并且使用go.rice来嵌入到一个.go文件中。
接下来,使用下列命令将该项目源码克隆至本地,并使用build命令来创建出项目代码:
$ git clone git@github.com:dstotijn/hetty.git $ cd hetty $ make build
Docker安装
该工具还能够以Docker镜像来使用,该工具的Docker镜像目前已托管至Docker Hub上:dstotijn/hetty。
如果需要持久存储CA证书和项目数据库的话,我们还需要运行下列命令来加载卷宗:
$ mkdir -p $HOME/.hetty $ docker run -v $HOME/.hetty:/root/.hetty -p 8080:8080 dstotijn/hetty
工具使用
Hetty开始运行之后,默认会监听8080端口,并且可以通过http://localhost:8080来访问。根据传入的HTTP请求,该工具要么会以中间人(MITM)代理的身份运行,要么以API和Web接口的形式运行。
默认配置系啊,项目数据库和CA证书将存储在用户主目录下的.hetty目录之中。Linux/macOS对应的是$HOME,Windows对应的是%USERPROFILE%。
接下来,确保hetty路径已经设置在了$PATH环境变量中,然后运行下列命令:
$ hetty
下面给出的是工具的帮助文档和参数选项:
$ hetty -h Usage of ./hetty: -addr string TCP address to listen on, in the form "host:port" (default ":8080") -adminPath string File path to admin build -cert string CA certificate filepath. Creates a new CA certificate is file doesn't exist (default "~/.hetty/hetty_cert.pem") -key string CA private key filepath. Creates a new CA private key if file doesn't exist (default "~/.hetty/hetty_key.pem") -projects string Projects directory path (default "~/.hetty/projects")
此时我们将看到:
2020/11/01 14:47:10 [INFO] Running server on :8080 ...
接下来,访问http://localhost:8080即可。
证书配置和安装
为了让Hetty代理能够将请求顺利发送到HTTPS节点,我们需要为Hetty设置根CA证书。此外,可能需要将CA证书安装到主机上,以便浏览器信任这些证书。以下步骤将介绍如何生成证书,如何将其提供给Hetty,以及如何在本地CA存储中安装它们。
生成CA证书
可以用两种不同的方法生成CA密钥对。第一种方法直接与Hetty捆绑在一起,大大简化了流程。另一种方法是使用OpenSSL来生成它们,这样可以更好地控制过期时间和所使用的加密技术,但需要安装OpenSSL工具。我们建议初学者使用第一种方式。
使用Hetty生成CA证书
在Hetty首次通过命令行工具运行时,它会在~/.hetty/中生成默认密钥和证书。运行命令如下,不需要任何运行参数:
hetty
此时我们将得到~/.hetty/hetty_key.pem和~/.hetty/hetty_cert.pem,也就是对应的密钥和证书。
使用OpenSSL生成CA证书
我们可以生成一个新的密钥和CA证书,不过它们将在一个月后过期:
mkdir ~/.hetty openssl req -newkey rsa:2048 -new -nodes -x509 -days 31 -keyout ~/.hetty/hetty_key.pem -out ~/.hetty/hetty_cert.pem
默认配置下,Hetty将会检查~/.hetty/中的密钥以及CA证书,也就是对应的hetty_key.pem和hetty_cert.pem。我们可以手动将它们移动到这里,Hetty将会自动检测它们。
hetty -key key.pem -cert cert.pem
信任CA证书
为了让浏览器允许网络流量通过本地Hetty代理,我们还需要将这些证书安装在本地CA存储中。
在Ubuntu中,我们可以使用下列命令更新本地VA存储,并安装证书:
sudo cp ~/.hetty/hetty_cert.pem /usr/local/share/ca-certificates/hetty.crt sudo update-ca-certificates
在Windows中,需要使用证书管理器来添加证书:
certmgr.msc
在macOS下,我们需要使用钥匙串访问程序来添加证书:
Application/Utilities/Keychain Access.app
工具运行截图
许可证协议
该项目的开发与发布遵循MIT开源许可证协议。
项目地址
Hetty:【GitHub传送门】
参考资料
- https://github.com/dstotijn/hetty/projects/1
- https://hetty.xyz/
- https://github.com/dstotijn/hetty/releases
- https://github.com/dstotijn/hetty/blob/master/CONTRIBUTING.md
- https://discord.gg/3HVsj5pTFP