• 多级代理工具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

  • 相关阅读:
    Linux的常用目录学习笔记
    htm,html,xhtml,xml,xsl,dhtml,shtm和shtml的区分
    js中迭代元素特性与DOM中的DocumentFragment类型 笔记
    查找算法--线性结构的查找方法
    有关rand(),srand()产生随机数学习总结
    nodejs版本管理工具nvm使用说明
    解决微信端公众号网页获取短信验证码ajax重复调用两次的问题
    判断安卓苹果ipad,iphone,微信
    css的对号错号,也就是勾和叉
    flex的一些方法注释或者叫flex笔记
  • 原文地址:https://www.cnblogs.com/xuanlvsec/p/14206776.html
Copyright © 2020-2023  润新知