通过RouterOS建立WireGuard内网隧道

通过RouterOS建立WireGuard内网隧道

AabyssZG
2026-03-31 / 0 评论 / 3 阅读 / 正在检测是否收录...

0# 概述

在近期的实战渗透过程中,当我通过历史密码泄露或者爆破成功进入RouterOS系统后台后,应该如何搭建隧道进入目标内网,就成为了实际渗透过程中的问题。

title.jpg

RouterOS是一种路由操作系统,是基于Linux核心开发,兼容x86 PC的路由软件,通过该软件可以把标准PC电脑变成专业路由器,RouterOS软件的开发和应用不断的更新和发展,软件经历了多次更新和改进,其功能在不断增强和完善。特别在无线、认证、策略路由、带宽控制和防火墙过滤等功能上有着非常突出的功能,其极高的性价比,受到许多网络人士的青睐。

1.png

在日常针对内网渗透和外部打点的过程中,RouterOS是常见的网关系统和边缘资产,由于其部署方便且易用性较高,在非常多的企业级应用场景中能看到它的身影。

3.png

1# WireGuard功能介绍

WireGuard 是一个易于配置、快速且安全的开源 VPN程序。旨在获得比IPsec和OpenVPN更好的性能,后两者都是常见的隧道协议。WireGuard协议的流量经由UDP传输,它可以轻松地在树莓派这类低端设备到高端服务器上部署。

IPsec 和 OpenVPN 等大多数其他解决方案是几十年前开发的。安全研究人员和内核开发人员 Jason Donenfeld 意识到它们速度慢且难以正确配置和管理,这让他创建了一个新的开源 VPN 协议和解决方案,它更加快速、安全、易于部署和管理。

2.png

WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android,它仍在活跃开发中。

而上文提到的RouterOS路由操作系统,刚好支持创建和使用WireGuard VPN!这就能让我们能快速的配置WireGuard并连接VPN快速的进入对应的内网,实现跨网段访问内网敏感资源并进一步实施深度内网渗透的目的。

2# 内网渗透整体思路

常见开放端口分布情况:

  • RouterOS路由操作系统的Webfig服务默认端口为HTTP协议的80端口,常见的还有88端口和8088端口,在实战的时候可以尝试测绘一下这几个端口。
  • 而WireGuard VPN的默认端口是51820,采用 UDP 协议进行通信,在实战的时候可以尝试测绘一这个端口。

通过搜索引擎进行检索,发现互联网上已经有不少前辈写过如何配置WireGuard,但根据那些文章的步骤,要么找不到具体功能点在哪,要么是配置完成后无法正常连接VPN,于是便有写这篇文章的想法。

通过80端口访问Web,并输入账户密码进入后台后,找到IP功能点,点击Addresses,可以看到已经配置的IP地址,其中ether1是RouterOS路由操作系统分配的公网IP,而LAN是RouterOS路由操作系统管理的内网办公网段:

10.png

我们的目的是要通过建立WireGuard VPN,访问192.168.1.1/24这个网段,从而拿到关键运维机器的权限或者突破网段隔离,具体路径思维导图如下:

11.png

3# 配置WireGuard-服务端

那我们先要在服务端建一个WireGuard服务,在Web界面找到WireGuard功能点:

4.png

点击WireGuard功能点,找到WireGuard标签页,点击Add New:

5.png

在弹出的新界面中,Comment随便填(相当于昵称),然后Listen Port填的就是WireGuard的监听端口,我这里填的是5120,然后点击Apply:

6.png

点击完Apply后,会发现系统自动生成了Private Key和Public Key,也就是私钥和公钥,这里要将Public Key复制记录下来,而Private Key则不需要记录,记录完后点击OK:

7.png

我们还要建一个IP段,用来给WireGuard VPN来分配虚拟IP,找到IP功能点,点击Addresses,点击Add New,在弹出的新界面中,Address填写10.1.1.1/24,Network填写10.1.1.1,在Interface这里选择之前创建的WireGuard(如果有多个的话需要选择对应的选项,默认是wireguard1),然后点击OK:

13.png

12.png

接下来再回到WireGuard功能点,找到Peers标签页,点击Add New:

8.png

在弹出的新界面中,Comment随便填(相当于昵称),在Interface这里选择之前创建的WireGuard(如果有多个的话需要选择对应的选项,默认是wireguard1),将上面拿到的Public Key填入,Endpoint Port就和前面填的一样写5120,Allowed Address填10.1.1.1/24和192.168.1.1/24(分别是我们VPN分配的虚拟网段和目标核心网网段),其他选择auto即可,Client DNS如果内网有DNS服务器则填内网的DNS地址,如果没有就填1.1.1.1或者其他公共DNS服务器即可,然后点击OK:

9.png

保存后,在Peers标签页会多一行,双击即可查看详情,拉到最下面会看到有个配置文件内容,将其复制下来:

14.png

4# 配置WireGuard-客户端

在官网下载WireGuard的客户端,地址为https://www.wireguard.com/install/,选择自己的系统版本进行安装即可,然后打开WireGuard客户端,将之前获取的配置文件粘贴上去,注意以下内容:

  • 删掉ListenPort这一行
  • Address改为自己设置的虚拟IP端,且不能和自己的网关冲突(比如我之前设置10.1.1.1/24,那这里就得写10.1.1.2/24)
  • 新增Endpoint行,内容为服务器IP:监听端口(我前面设置的是5120)
  • 名称随便填即可

15.png

点击保存后,可以看到界面内已经有个标签页,点击连接:

16.png

弹出消息显示连接成功,且界面中流量有变化,然后我们ping内网的虚拟网关能通,说明之前的配置都是正确的:

17.png

18.png

19.png

5# 配置WireGuard-防火墙

但当我们尝试通过WireGuard VPN去连接192.168.1.1/24的网段时候,发现并不通,这是怎么回事呢?

20.png

因为RouterOS内置了防火墙,我们需要将WireGuard进行放行,才能和内网其他地址段进行通联。

重新打开服务端网页,找到右上角的Terminal,即可进入命令行配置界面:

21.png

5.1 开启防火墙放行 (Forward 链)

RouterOS默认可能会拦截非 LAN 接口发起的转发请求,以下这条规则用于允许来自 WireGuard 的流量进入 LAN 接口:

/ip firewall filter
add action=accept chain=forward in-interface=all-wireguard out-interface=LAN comment="WireGuardToLAN"

注:如果只有一个WireGuard接口,写具体的接口名(如wireguard1)也可以。

5.2 开启NAT Masquerade

可能还需要解决“回程路由”问题,以下这条规则用于让内网机器以为请求是路由器发的,从而能正常回包:

/ip firewall nat
add action=masquerade chain=srcnat src-address=10.1.1.1/24 out-interface=LAN comment="WireGuardNAT"

注意:请将 10.1.1.1/24 替换为你给 WireGuard 客户端分配的虚拟 IP 段。

5.3 检查Peer是否填写AllowedIPs

回到服务端,找到WireGuard功能点,找到Peers标签页:

AllowedIPs 必须包含:192.168.1.1/24和10.1.1.1/24(分别是我们VPN分配的虚拟网段和目标核心网网段)

做完以上三步之后,再去测试能否访问核心IP网段192.168.1.1/24,就会发现能够成功访问到了。

6# 总结

通过本文,我们能从0开始,了解并熟悉如何架设WireGuard VPN,并成功以此连接到内网环境,实现跨网段和深度内网渗透,同时使用该手段建立的内网隧道流量特征不明显,无文件落地,且在边缘网关主机当中运行,具有较高的隐蔽性和内网通信权限,有较高的渗透利用价值。

本文所有内容军来自于实战环境,且互联网相关资料多为残缺状态,本文具有重要的参考价值,同时也感谢各位师傅的关注和支持!

1

评论 (0)

取消