互联互通,只要有靶场就一定会碰到,映射到现实环境同理,因此,有实战意义。
我曾在《经典:“红日三”服务器群靶机》中给出过这个问题的解决方案,但被淹没在文海中。今天专门整理出来单独成文,一是方便我自己的备查,二是给需要的人。这里引用原文的拓扑场景作阐述。
一、环境拓扑
目标:跨网段不通,正常;那如何打通呢?举例场景如下图,
1、拓扑:内外网分处于两/多个段,这里是1段和93段,中间有个双网卡的跳板机CentOS(分别对应着eth0:192.168.1.100、eth1:192.168.93.100两块网卡)。
现状是:(1)kali 攻击机 和 CentOS 跳板机 互连互通;即 A 和 B 通;
(2)CentOS 跳板机 和 win系列内网机 互连互通;即 B 和 C 通;
2、问题:我们如何让 kali攻击机 能够直接攻击到里面的win系列机器?即 A 和 C 怎么通?答:A-->B-->C,没错,就是这思路。
3、方向:这涉及到不同段的几个机器之间的转发互通。我们将在【 kali 攻击机 和 CentOS 跳板机 】(即 A 和 B)上 作配置转发。
二、转发
考虑到链路的稳定性,我们采用【iptables+路由】的自带方式,安全可靠且稳定。
1、kali 攻击机 A上配置下:
sudo ip route add 192.168.93.0/24 via 192.168.1.110 dev eth0
A。具体作用:
该命令的作用是添加一条路由规则,使得从当前主机发送到 192.168.93.0/24
网络的所有流量都通过网关(跳板机) 192.168.1.110(eth0)
,并使用 eth0
网络接口发送出去。
B。具体含义:
-
sudo
: 以超级用户权限运行该命令。 -
ip route add
: 使用ip
命令工具添加一条新的路由规则。 -
192.168.93.0/24
: 目标网络,这表示 192.168.93.0 到 192.168.93.255 的所有 IP 地址。 -
via 192.168.1.110
: 下一跳地址,表示通过 IP 地址 192.168.1.110 来访问目标网络。 -
dev eth0
: 指定通过哪个网络接口发送数据包,这里是eth0
。
C。结果:添加这条路由规则后,所有发往 192.168.93.0/24
网络的流量会被发送到 192.168.1.110
这个网关,然后由网关转发到 192.168.93.0/24
网络中的目标设备。
D。示例:
假设有以下网络结构:
-
你的计算机在
192.168.1.0/24
网络中,IP 地址为192.168.1.100
。 -
你的计算机需要访问
192.168.93.0/24
网络中的设备。 -
路由器或中间设备
192.168.1.110
连接了192.168.1.0/24
和192.168.93.0/24
两个网络。
E。应用场景:
-
多网段互通:在有多个子网的网络环境中,可以通过添加静态路由来实现不同子网之间的通信。
-
路由优化:指定特定的路径用于访问某个网络,可能是为了优化流量路径或为了安全策略。
-
网络分段:在复杂的网络环境中,通过路由规则来分段管理和控制流量。
2、跳板机 CentOS B上配置如下:
(1)设置转发:vi /etc/sysctl.conf
修改后,重启网卡 service network restart
(2)入站链配置:
内网机192.168.93.0/24,三台配置相同,均如下;以一台为例说明,
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.110 -p tcp -j DNAT --to 192.168.93.10
A。具体作用:
-
规则追加:这条规则将被追加到
PREROUTING
链,确保在其他规则之后处理。 -
网络接口:仅适用于通过
eth0
网络接口接收的包。 -
目标地址:目标地址是
192.168.1.110
的包。 -
协议类型:仅适用于 TCP 协议的包。
-
目标地址转换:匹配这些条件的包,其目标地址将被修改为
192.168.93.10
。
B。具体含义:
-
-t nat
:指定操作的表为 NAT 表,用于处理网络地址转换规则。 -
-A PREROUTING
:向 PREROUTING 链(入站链)添加规则,表示对入站数据包进行处理。 -
-i eth0
:指定输入接口为 eth0,即从 eth0 接口进入的数据包。 -
-d 192.168.1.110
:匹配目标地址为 192.168.1.110 的数据包。 -
-p tcp
:指定匹配的数据包协议为 TCP。 -
-j DNAT
:执行 DNAT(目标地址转换)操作,即修改数据包的目标地址。 -
--to 192.168.93.10
:将匹配的数据包目标地址修改为 192.168.93.10。
C。结果:通过这条规则,所有通过 eth0
接收并且目标地址是 192.168.1.110
的 TCP 包,其目标地址都会被修改为 192.168.93.10
。这样,外部网络访问 192.168.1.110
的请求实际上会被重定向到内部网络的 192.168.93.10
,实现了端口转发或透明代理功能。
D。示例:
假设你的网络拓扑如下:
-
外部网络:你有一个外部 IP 地址
192.168.1.110
。 -
内部网络:内部网络中有一台服务器,其 IP 地址是
192.168.93.10
。 -
路由器:有两个接口,
eth0
连接外部网络,eth1
连接内部网络。
你希望所有发往 192.168.1.110
的 TCP 流量都被重定向到内部网络的 192.168.93.10
。
E。应用场景:
-
端口转发:将某个特定 IP 和端口的流量重定向到内部网络的另一台主机。这对于内部网络的服务公开到外部网络非常有用。
-
负载均衡:将来自外部网络的流量分配到内部网络的不同服务器上。
-
透明代理:将流量重定向到代理服务器进行处理。
(3)出站链配置:
iptables -t nat -A POSTROUTING -o eth1 -d 192.168.93.0/24 -j SNAT --to 192.168.93.100
A。具体作用:
-
规则追加:这条规则将被追加到
POSTROUTING
链,确保在其他规则之后处理。 -
网络接口:仅适用于通过
eth1
网络接口发送的包。 -
目标地址:目标地址属于
192.168.93.0/24
子网范围内。 -
源地址转换:匹配这些条件的包,其源地址将被修改为
192.168.93.100
。
如kali攻击机192.168.1.4的包,发送给内网机192.168.93.0/24,两者本来不通,但将源地址1.4改成93.100,就能使两者相通了。
B。具体含义:
-
-t nat
:指定操作的表为 NAT 表,用于处理网络地址转换规则。 -
-A POSTROUTING
:向 POSTROUTING 链(出站链)添加规则,表示对出站数据包进行处理。 -
-o eth1
:指定输出接口为 eth1,即将匹配的数据包发送到 eth1 接口。 -
-d 192.168.93.0/24
:匹配目标地址为 192.168.93.0/24 的数据包。 -
-j SNAT
:执行 SNAT(源地址转换)操作,即修改数据包的源地址。 -
--to 192.168.93.100
:将匹配的数据包源地址修改为 192.168.93.100。
C。结果:通过这条规则,所有通过 eth1
接口发送并且目标地址属于 192.168.93.0/24
子网的包,其源地址都会被修改为 192.168.93.100
,实现 NAT 功能,使内部网络设备能够与外部网络通信。
D。示例:
假设你的网络拓扑如下:
-
内部网络:192.168.1.0/24
-
外部网络:192.168.93.0/24
-
路由器:有两个接口,
eth0
连接内部网络,eth1
连接外部网络
你希望内部网络的设备通过路由器访问外部网络,并且所有流量的源地址都显示为 192.168.93.100
。
E。应用场景:
-
私有网络到公共网络的转换:如果你有一个私有网络,并且希望所有从该网络发出的流量都显示为来自单个公共 IP 地址,这样可以隐藏内部网络结构,增强安全性。
-
负载均衡和多路径路由:在多路径路由中,你可能希望将来自不同网络接口或目标的流量显示为来自不同的源地址。
-
网络地址转换(NAT):这是一种常见的 NAT 使用方式,通过将私有 IP 地址转换为公共 IP 地址,便于内部网络设备访问外部网络。
三、测试链路
在 kali 攻击机 上扫描 内网机win机器,
图示,扫描内网机器的端口都出来了,说明链路互通了。
后记:跨网段有很多不同的方法,这里的方法不一定是最巧的,但一定是很稳的。这里跳板机是linux的,那如果是windows的呢?在 Windows 上,可以使用 Windows 防火墙、netsh
命令、PowerShell、Windows Server 特性或第三方工具来实现类似于 Linux iptables
的网络包过滤和地址转换功能。
原文始发于微信公众号(MicroPest):靶场中跨网段的互联互通
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论