文章目录
- Venom:渗透测试用的多级代理工具
- 功能覆盖渗透测试核心需求
- 工作机制
- 安装和使用
- 局限性
Venom:渗透测试用的多级代理工具
做渗透测试的人都知道,内网渗透最头疼的就是多层网络跳转。手动搭代理链,一层一层地转发流量,配置繁琐还容易出错。Venom 这个项目就是为了解决这个问题而生的。
Venom 是一款用 Go 语言开发的多级代理工具,专门为渗透测试场景设计。它能把多个节点串联起来,以节点为跳板构建多级代理,把网络流量一步步推进到深层内网。GitHub 上 Star 数 2,164,项目已经有一批稳定用户。
功能覆盖渗透测试核心需求
Venom 的功能设计很贴合实际渗透测试工作流:
- 可视化网络拓扑,一眼看清节点之间的连接关系
- 多级 socks5 代理,逐层深入内网
- 多级端口转发,支持本地和远程两个方向
- 端口复用,能在 Windows 上复用 apache、mysql 的端口,Linux 上可复用多数服务端口,被复用的端口还能正常提供原有服务
- SSH 隧道连接节点,支持密码和私钥两种认证方式
- 交互式 shell,直接在目标节点上执行命令
- 文件上传和下载
- 节点间通信加密,通过密码生成 AES 密钥
跨平台方面,Linux、Windows、MacOS 都支持,架构覆盖 x86、x64、arm、mips。针对 IoT 设备的 arm/mips 架构,项目还专门做了优化,缩减了二进制文件体积和内存占用,去掉了端口复用和 SSH 隧道两个功能来换取更小的资源消耗。
工作机制
Venom 的架构分 admin 节点和 agent 节点。有意思的是,两端都能主动发起连接,也都能监听等待连接。比如可以让 admin 监听端口等 agent 连上来,也可以反过来让 agent 监听,admin 主动去连。
admin 节点提供了一套完整的内置命令:show 查看网络拓扑,goto 切换到某个节点进行操作,connect/listen/sshconnect 建立节点间连接,shell 获取交互式终端,upload/download 传文件,socks 开启代理,lforward/rforward 做端口转发。
端口复用这块做得比较细致。Venom 提供两种方案:一种通过 SO_REUSEPORT 和 SO_REUSEADDR 系统选项,跨平台通用;另一种通过 iptables 规则,仅限 Linux 但适用范围更广。第二种方案还考虑了安全性,用 iptables -m recent 机制通过特殊 TCP 包来控制转发规则的开关,避免 agent 被意外杀掉后 iptables 规则残留导致正常服务不可用。
节点间的通信流量默认不加密,但可以通过 -passwd 参数指定密码,程序会用这个密码生成 AES 密钥来加密所有节点间的数据传输。在真实渗透测试环境中,这个功能很有必要。
安装和使用
可以直接从 GitHub Release 页面下载预编译好的二进制文件,省去编译步骤。如果想从源码编译,需要 Go 1.11 以上版本,clone 下来执行 build.sh 就行。
基本流程是:启动 admin 监听端口,然后在目标机器上运行 agent 连接上来。连上之后用 show 命令同步拓扑,goto 到目标节点,就可以执行 shell、传文件、开代理等操作了。整个过程比较直观,命令行的帮助信息也写得清楚。
局限性
现阶段只支持单个 admin 节点管理网络,不能多个 admin 同时操作。每次有新节点加入,都需要在 admin 上运行 show 命令手动同步拓扑。项目 TODO 列表里写了计划支持多 admin 节点、RESTful API、与 reGeorg 和 Meterpreter 联动等功能,但目前还是 1.0 阶段。
另外这个工具明确声明仅限安全研究和教学用途,使用者需要自行承担所有法律相关责任。这是渗透测试工具的常规声明,但使用时确实要注意授权问题。
使用者需要自行承担所有法律相关责任。这是渗透测试工具的常规声明,但使用时确实要注意授权问题。