前言
Tailscale是一个内网穿透工具,通过将不同的机器在Tailscale控制台组成虚拟局域网,实现机器之间的互通。并且有多种的高级网络功能。
Tailscale 建立在安全网络结构之上,与传统VPN相比,可提供速度、稳定性和简单性。它使用开源WireGuard 协议进行加密的点对点连接,与通过中央网关服务器隧道传输所有网络流量的传统VPN不同,这意味着只有专用网络上的设备才能相互通信。
进入官网注册登录:https://tailscale.com/
登录后,点击Download下载对应的程序,以Windows为例。
下载完毕后对其进行安装。
安装完成后程序会出现在C:Program FilesTailscale文件夹中。通过点击tailscale-ipn.exe打开程序。当运行程序后,会以小图标的方式显示在状态栏下方。
1、基础使用
Windosw设备接入
点击状态栏的小图标,点击Log in会调用浏览器打开登录窗口,进行登录。登录后,点击连接,当前主机会被接入虚拟局域网。
连接后,主机被分配了一个虚拟局域网IP,右边的IP是当前主机在虚拟局域网的地址。
接下来接入第二台设备,第二台设备也是Windows。如下两台机器均已接入并连接到虚拟局域网。
分别测试两台机器相互的连通性:
自此两台设备成功进行了组网。当拥有一台虚拟局域网中的主机时,默认可以双向访问虚拟局域网中的其他所有主机。
Linux设备接入
也可以使用Linux机器接入,利用下面的一行命令即可完成对Tailscale的安装:
curl -fsSL https://tailscale.com/install.sh | sh
安装完毕后使用命令tailscale up启动,之后会弹出一个地址,在浏览器中打开地址,输入账户进行登录,跟windows一样。
2、内网渗透利用
通过上面的使用介绍,可以发现如果要在渗透测试中使用该程序会出现几个问题。
隐蔽性问题,是在程序的启动过程中,会在右下角状态栏显示出图标,同时一个正常的登录是通过在图标中右键点击log in来进行登录,这在后渗透过程中很难进行操作。另外就是当接入虚拟局域网后,其中的主机可以双向访问,而在渗透测试的过程中,我们仅希望能由安全测试人员,访问到目标主机,而不允许目标直接访问测试人员。最后还存在一个主机网段访问的问题,目前接入虚拟局域网的设备,仅能直接访问其中的设备,不能访问设备中所存在的上层网络。
接下来先介绍一下Tailscale所提供的功能,Tailscale的所有功能都显示在官方的说明文档中,接下来介绍能够解决上面问题的功能。
隐蔽性问题的解决:
通过观察安装目录,发现该程序仅由四个文件组成。Tailscale-ipn为主程序。如果了解过softether的使用,可以发现在其中是通过将核心的几个文件保存下来,之后利用命令行的方式进行启动,而规避了使用图形化进行操作。
tailscale-ipn主程序通过调用tailscale.exe来实现对应的功能。通过直接启动该程序发现,其中支持使用命令行进行操作。
当我们使用命令行进行启动后,会提示相关的服务没启动。通过查看计算机中的服务发现,该服务是通过tailscaled.exe文件进行启动的。因为该程序后面没有接参数,我们也直接启动。
之后出现下面的错误提示,发现是权限问题,需要用管理员权限来启动。
使用管理员权限之后,服务成功被启动。
接下来继续启动tailscale.exe 使用up命令启动,发现没有出现报错。tailscaled也在其中产生了一些连接的日志。
同时右下角托盘总也没有出现小图标,隐蔽性的问题解决了。
登录问题的解决:
当利用命令行启动的时候会出现一个问题,此时的账户是没有登录的,也就是没有接入到虚拟局域网中,而正常的登录又需要打开浏览器登录,这也是下面要解决的问题。
通过阅读官网提供的文档,发现官方提供了Auth keys的功能,通过使用生成的Auth keys可以直接将目标主机接入到该虚拟局域网中。这样就避免了利用浏览器登录的问题。而可以直接使用命令进行登录。
生成Auth keys:进入Settings标签,点击Generate auth key
进入生成Auth Key 页面,其中有一些内容可以进行设置
|
|
|
|
Expiration |
Key过期的时间 |
Ephemeral |
临时的设备,即设备如果离线,则从这个虚拟局域网中删除该设备 |
Tags |
标签用作标识一般配合ACL 策略表使用 |
复制下生成的Auth key
利用Auth key使机器接入虚拟局域网,后面的参数是为了防止程序自动退出。
tailscale up --authkey [authkey]--unattended
可以看到启动服务的窗口产生了一些连接日志。
设备成功上线,登录的问题也被解决了。
权限控制问题的解决:
由于Taliscale用于多地组网,所以机器之间的关系是相互的,当攻击机与一个设备进行连接的时候,它们之间可以进行相互通信。所以需要失陷仅能由攻击测试人员发起请求,被攻击的机器不能向发起请求。
通过查看文档,发现官方为这个问题提供了ACL策略表,通过这个表,我们可以为每台设备制定不同的访问策略。
这里简单进行一下设置,如果需要建立更复杂的ACL策略可以参考官方文档。
建立策略:允许desktop-mpf5vje(100.89.24.71)访问win10(100.84.52.52),但是不允许从win10主机访问desktop-mpf5vje主机。
ACLS设置:点击Access controls 标签,当前acls列表中的意思是允许所有用户访问所有主机的所有端口。
这里我们设置一条策略,只允许所有机器访问win10(100.84.52.52)以及它的所有端口,当点击保存时,这个策略会实时生效。
之后我们利用win10主机访问desktop-mpf5vje主机,可以发现已经不能访问了,而反之可以访问。因为上面的策略,只允许其他机器访问win10主机。到这里就解决了双向连接的问题。
主机网段问题的解决:
现在还存在最后一个问题,现在仅允许对目标主机进行访问,但是无法访问某主机中某个网段的其他主机。
这里接入了另一台主机NC04,这台主机中运行着一台虚拟机,其中的网络模式为nat,作为演示。
NC04的虚拟机网段为192.168.18.0/24,在虚拟机中通过python起了一个http服务,用来进行测试。
针对这种问题,官网允许将主机设置为Subnet routes(子网路由)。通过对其进行配置允许访问子网路由中的网段
配置子网路由
(1)windows
tailscale up --advertise-routes=192.168.18.0/24
将NC04设置为子网路由,并设置可以访问它的网段为192.168.18.0/24段
点击edit route settings,勾选上192.168.18.0/24段.
子网路由设置完毕后虚拟局域网中的其他主机就可以直接访问NC04机器中192.168.18.0/24网段的所有主机,将ALC策略改回默认之后(之前设置了只允许其他机器访问win10),使用win10机器来访问NC04的虚拟机192.168.18.133,已经能成功访问。
(2)Linux
Linux也可以设置为子网路由,只是相比较与windows需要多设置一个端口转发。具体操作可以参考官方文档。
3、攻击过程模拟
获取到shell或session后,通过上传Tailscale相关文件,之后利用命令行建立隧道。
上传tailscale.exe 、 tailscaled.exe 、wintun.dll 等文件。
生成auth keys:
启动tailscaled.exe
启动tailscale.exe 程序,在后面加上--unattended ,不然程序会自动退出。
tailscale.exe up --authkey [authkey] --unattended
目标机器ybts-4153成功进入虚拟局域网。
之后配置ACL禁止对方ybts-4153(100.93.230.231)访问攻击机器win10(100.84.52.52):
之后就可以使用与目标主机在同一虚拟局域网的攻击机进行进一步的内网渗透了,也可以判断是否有其他的网段,然后建立子网路由对目标主机的内网进行近一步的渗透。
原文始发于微信公众号(红蓝攻防研究实验室):Tailscale内网穿透利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论