多级代理工具Venom使用

前言

Venom是一款由go语言开发的多平台多级代理工具,渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点

下载地址:https://github.com/Dliv3/Venom/releases

如果想通过源码进行编译安装则下载https://github.com/Dliv3/Venom

环境准备

准备三台虚拟机

主机A    192.168.2.131     CentOS
主机B    192.168.2.135     CentOS
主机C 192.168.2.136 windows server 2008

Venom分为admin节点及agent节点,本次实验主要以主机A做为admin节点,特殊场景下也会有其他内网主机作admin节点。

admin/agent 连接

admin节点监听端口,agent节点连接

admin节点(主机A)执行 

./admin_linux_x64 -lport 6666

agent节点(主机B)执行

./agent_linux_x64 -rhost 192.168.2.131 -rport 6666

 

 

 agent节点监听端口,admin节点连接

 agent节点主机B)执行

./agent_linux_x64 -lport 6666

 admin节点(主机A)执行

./admin_linux_x64 -rhost 192.168.2.135 -rport 6666

 

 

 端口复用

通过venom提供的端口复用功能,在windows上可以复用apache、mysql等服务的端口,暂时无法复用RDP、IIS等服务端口,在linux上可以复用多数服务端口。被复用的端口仍可正常对外提供其原有服务。

 方法一

windows服务器(主机C)开启apache服务,开放80端口,该主机做为agent节点

agent节点(主机C)执行

agent.exe -lhost 192.168.2.136 -reuse-port 80      #注意这里lhost的ip地址写本机地址,但不要写0.0.0.0

 

admin节点(主机A)执行

./admin_linux_x64 -rhost 192.168.2.136 -rport 80

 

 

 

 

 

 访问主机C的80端口,apache服务正常使用

 

 

 

 方法二

与方法一不同,方法二主要是通过iptables进行转发,所以仅在linux使用,并且需要root权限,另外这里参考了其他大佬的文章,了解到如果通过sigtermsigint信号结束程序(kill或ctrl-c),程序可以自动清理iptables规则。如果agent被kill -9杀掉则无法自动清理iptables规则,需要手动清理,因为agent程序无法处理sigkill信号,为了避免iptables规则不能自动被清理导致无法访问80端口服务,所以第二种端口复用方法采用了iptables -m recent通过特殊的tcp包控制iptables转发规则是否开启。至于如何操作,则需要使用Venom自带的python脚本

主机A做agent节点,开启apache服务

主机B做admin节点

agent节点(主机A)执行

./agent_linux_x64 -lport 8080 -reuse-port 80

admin节点(主机B)执行

python port_reuse.py --start --rhost 192.168.2.131 --rport 80
#当回显出现“[+]Done!”时再执行
./admin_linux_x64 -rhost 192.168.2.131 -rport 80

 

 

 

 

 

 在admin中使用connect/listen/sshconnect实现节点间互连

 使用connect互连

 主机A作admin节点,主机C作agent节点1,主机B做agent节点2,实现节点2与节点1互连

 agent节点1(主机C)执行

agent.exe -lport 8080

admin节点(主机A)执行

./admin_linux_x64 -rhost 192.168.2.136 -rport 8080

连接完成后,在admin端使用show命令查看节点信息

确认节点1成功连接

 

 

 agent节点2(主机B)监听本地端口8080,执行

./agent_linux_x64 -lport 8080

在admin节点(主机A)执行

goto 1    #进入节点1
connect 192.168.2.135 8080  #使用节点1连接节点2

 

 

 

使用listen互连

connect是在节点2监听8080端口后,使用节点1连接节点2,listen是节点1监听本地端口,让节点2来连接节点1

节点1的配置与connect一样,主要后面的listen操作

admin节点和节点1配置好后,在admin节点(主机A)执行

goto 1
listen 8081

agent节点2(主机B)执行

./agent -rhost 192.168.2.136 -rport 8081

 

 

 

 

 

 使用sshconnect实现节点互连

在节点1中使用ssh登陆的方式,连接节点2

节点1的配置与connect一样,主要后面的ssh登陆操作

 agent节点2(主机B)监听本地端口8080,执行

./agent_linux_x64 -lport 8080

在admin节点(主机A)执行

goto 1 #进入节点1
sshconnect root@192.168.2.135 8080 #注意这里是连接节点2监听的端口不是22端口

执行完成后,会出现选项,1为密码登陆,2为密钥登陆,视情况自行选择

 

 

 upload/download向节点上传/下载文件

比较好理解,admin节点和agent节点建立连接后,使用goto进入要操作的节点,然后输入文件名上传和下载就可以了

goto 1
upload  [file_path]  [upload_path]  #上传文件
download [file_path]  [download_path]  #下载文件

 

 

 节点启用socks代理

admin节点和agent节点建立好连接后,使用goto进入节点,开启socks代理

socks 777

开启代理后会在admin节点本地开启777端口,使用代理工具连接就可以用了

交互式shell建立

admin节点和agent节点建立好连接后,使用goto进入节点,在输入shell就可与节点建立交互式shell

 

 

 lforward/rforward 

lforward

将admin本地端口转发到节点端口

admin与agent建立连接后,使用lforward进行转发

将admin节点(主机A)的80端口转发至节点1(主机B)的8090端口

lforward  127.0.0.1 80 8090

 

 

 访问节点1的8090端口

 

 

 rforward

 将节点的端口远程转发到admin

admin与agent建立连接后,使用lforward进行转发

将节点1(主机B)的80端口转发至admin(主机B)的8070端口

rforward 192.168.2.135 80 8070

 

 

 访问admin节点8070端口(主机B上部了个zabbix所以访问是301)

 

 参考文献

 https://xz.aliyun.com/t/4058

youtobe视频教程:https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI

 

posted @ 2020-12-29 15:22  xuanlv、  阅读(2943)  评论(0编辑  收藏  举报