0# 概述
在近期的实战渗透过程中,当通过历史密码泄露或者爆破成功进入 RouterOS 系统后台后,如何搭建隧道进入目标内网,就成了实际渗透中必须解决的问题。 RouterOS 是一种路由操作系统,基于 Linux 核心开发,兼容 x86 PC 的路由软件。通过该软件可以把标准 PC 电脑变成专业路由器,其功能在无线、认证、策略路由、带宽控制和防火墙过滤等方面表现非常突出,再加上极高的性价比,深受不少网络管理人员的青睐。

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

1# WireGuard 功能介绍
WireGuard 是一个易于配置、快速且安全的开源 VPN 协议。它旨在获得比 IPsec 和 OpenVPN 更好的性能,后两者都是常见的隧道协议。 WireGuard 协议的流量经由 UDP 传输,可以轻松部署在树莓派这类低端设备乃至高端服务器上。
IPsec 和 OpenVPN 等大多数传统解决方案诞生于几十年前。安全研究人员、内核开发人员 Jason Donenfeld 意识到它们速度慢且难以正确配置和管理,于是创建了一个新的开源 VPN 协议和解决方案,它更加快速、安全、易于部署和管理。

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 管理的内网办公网段:

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

3# 配置 WireGuard —— 服务端
首先需要在服务端创建一个 WireGuard 服务。在 Web 界面找到 WireGuard 功能点:

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

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

点击 Apply 后,系统会自动生成 Private Key 和 Public Key,也就是私钥和公钥。这里将 Public Key 复制记录下来,Private Key 不需要专门记录,操作完成后点击 OK:

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


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

在弹出的新界面中,Comment 随便填,Interface 选择之前创建的 WireGuard 接口,将上面拿到的 Public Key 填入,Endpoint Port 和前面保持一致,填 5120。Allowed Address 填 10.1.1.1/24 和 192.168.1.1/24,分别对应 VPN 分配的虚拟网段和目标核心网段。其他选项选 auto 即可。Client DNS 如果内网有 DNS 服务器就填内网地址,否则填 1.1.1.1 或其他公共 DNS 服务器,然后点击 OK:

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

4# 配置 WireGuard —— 客户端
在官网 https://www.wireguard.com/install/ 下载 WireGuard 客户端,选择对应的系统版本安装即可。打开 WireGuard 客户端,将之前获取的配置文件粘贴上去,注意以下几点:
- 删除
ListenPort 这一行。
Address 改为自己规划的虚拟 IP,且不能和网关冲突。比如之前服务端设置为 10.1.1.1/24,这里就写 10.1.1.2/24。
- 新增
Endpoint 行,内容为服务器 IP:监听端口,本例是 5120。
- 名称随便填即可。

点击保存后,界面内会出现一个标签页,点击连接:

弹出消息显示连接成功,界面中的流量也开始变化。随后 ping 内网的虚拟网关可以通,说明前面的配置都是正确的:



5# 配置 WireGuard —— 防火墙
但当通过 WireGuard VPN 去连接 192.168.1.1/24 网段时,会发现并不通,这是怎么回事?

原因是 RouterOS 内置了防火墙,需要放行 WireGuard 的流量,才能与内网其他地址段通联。重新打开服务端网页,找到右上角的 Terminal,进入命令行配置界面:

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# 总结
通过本文,可以从零开始了解并掌握如何架设 WireGuard VPN,并成功连接目标内网环境,实现跨网段访问与深度渗透。借助这种手段建立的内网隧道,流量特征不明显,无文件落地,且运行在边缘网关主机当中,具有较高的隐蔽性和内网通信权限,具备不低的渗透利用价值。
本文内容均来自实战环境,而互联网上的相关资料大多残缺不全,希望这篇文章能为读者提供有价值的参考。如果你对这类网络隧道与内网渗透案例感兴趣,可以持续关注云栈社区。