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

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

在日常针对内网渗透和外部打点的过程中,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:

我们还要建一个IP段,用来给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(如果有多个的话需要选择对应的选项,默认是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:

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

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)
- 名称随便填即可

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

弹出消息显示连接成功,且界面中流量有变化,然后我们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# 总结
通过本文,我们能从0开始,了解并熟悉如何架设WireGuard VPN,并成功以此连接到内网环境,实现跨网段和深度内网渗透,同时使用该手段建立的内网隧道流量特征不明显,无文件落地,且在边缘网关主机当中运行,具有较高的隐蔽性和内网通信权限,有较高的渗透利用价值。
本文所有内容军来自于实战环境,且互联网相关资料多为残缺状态,本文具有重要的参考价值,同时也感谢各位师傅的关注和支持!
评论 (0)