有时我们进行外部渗透测试,当攻陷远程目标后,我们希望探索其背后的内部网络,并进一步获取诸如控制Active Directory、访问共享文件、执行MITM攻击等成果。 现有许多技术,如端口转发、socks4等,但每种技术都有其优缺点。 这就是VPN pivoting技术应运而生的原因,它解决了上述两种技术所遇到的所有问题。它让您能够与防火墙、NAT等阻止访问的内部网络进行交互。
这是Linux中利用纯底层套接字在tap设备上实现 VPN pivoting 技术的实现。 它通过目标机器与攻击者之间的SSL/TLS创建了一个完全加密的隧道。
VPN Pivot通过TCP流套接字发送和接收完全加密的TCP/IP协议栈,然后对等端将其转发到目标设备/主机。 攻击者以本地IP地址(从DHCP服务器获取或静态配置)的方式探索内部网络,就像他属于该网络一样。
yaourt -S vpnpivot-git
安装非常简单,只需输入以下命令:
root@pwnies:~# git clone https://github.com/0x36/VPNPivot.git
root@pwnies:~# cd VPNPivot
root@pwnies:~/VPNPivot# ./autogen.sh
root@pwnies:~/VPNPivot# ./configure
root@pwnies:~/VPNPivot# make && make install
VPNPivot服务器必须在攻击者机器上运行,它会创建一个虚拟设备(tap),并支持更改MAC(对于欺骗和MAC切换很有用)、IP地址、MTU以及接口的所有者。 TAP设备与目标机器交互,发送/接收原始以太网帧。 一旦攻击者成功建立隧道连接,tap设备便可以与内部被黑网络的DHCP服务器交互,接收/发送广播数据包,并重用IP地址。
使用 pivots 非常简单,您只需要了解每个选项的用途:
root@pwnies:~/VPNPivot# ./src/pivots -h
__ _______ _ _ _____ _ _
\ \ / / __ \| \ | | __ (_) | |
\ \ / /| |__) | \| | |__) |__ _____ | |_
\ \/ / | ___/| . ` | ___/ \ \ / / _ \| __|
\ / | | | |\ | | | |\ V / (_) | |_
\/ |_| |_| \_|_| |_| \_/ \___/ \__|
VPNPivot server v1.0 by Simo36
-i --iface <device> 创建一个非持久化tap设备
-I --ifconf <ip/mask> 接口配置(IP/掩码)
-p --port <port> 服务器监听端口(默认:12345)
-m --mtu <size> 虚拟设备MTU大小(默认:1550)
-u --user <user> 设备所有者用户(可选)
-H --hw <MAC> 为接口设置MAC地址
-C --cert <server_cert> PEM证书文件名
-P --pkey <private_key> PEM私钥文件名
-v --verbose 详细模式
-d 作为守护进程运行
root@pwnies:~/VPNPivot#
上述所有选项都是可选的,但尽管它们的描述已不言自明,仍值得解释一下:
VPN Pivot客户端必须在目标机器上运行,它会创建两个套接字文件,一个作为隧道的客户端,另一个用于直接与设备网络交互。 它就像是创建了一个不易被检测的tap设备,使其更难被发现。
使用 pivotc 比服务器更简单,您只需在尝试让它连接到 pivots 时保持清晰即可:
root@pwnies:~/VPNPivot# ./src/pivotc
Usage :
./src/pivotc <server IP> <server port> <locale IP> [MTU]
root@pwnies:~/VPNPivot#
选项如下:
没有什么比现场演示更好的了,因此我制作了一个视频,解释了VPNPivot的基本用法,该视频位于 YouTube。
就是这样!尽情享受渗透吧 :-) 干杯