用 Ngrok 和树莓派绕过防火墙访问内网

绝大多数安全研究人员所面临的一个常见问题,就是如何在目标网络部署了严格的企业级防火墙或路由器时,如何访问目标企业网络内的办公计算机或者本地设备。在很多情况下,我们的办公室电脑会在防火墙的保护下接入互联网。那么问题就来了,在默认情况下,它并不会允许来自外部网络的流量进入内网。这也就意味着,你可以使用办公室电脑与互联网中的外部主机进行通信,但远程设备却无法与你的办公室电脑连接。

PS:本文仅用于技术讨论与分享,严禁用于任何非法用途

如果你想用家里的电脑访问办公室电脑中的文件或其他资料的话,这就非常令人头疼了。那现在该怎么办呢?我们有没有什么办法去访问路由器或防火墙背后的联网设备呢?

我们能想到的有如下四种方法:

1. 添加防火墙规则,并允许指定的远程IP绑定指定端口来访问办公室电脑

2. 端口转发

3. 反向SSH

4. Ngrok

Ngrok

Ngrok这种服务允许我们利用外部端口转发并通过任何网络来连接任意设备(LAN/WAN)。Ngrok最大的一个优势就在于,如果你想访问某个网络中的设备时,你并不需要让自己的设备同样处于同一本地网络之中。在Ngrok的帮助下,你可以通过SSH、FTP或Web服务器来访问目标设备。(Ngrok 参考资料)

既然我们已经了解了Ngrok的功能,那么接下来我们会使用Ngrok来设置办公室电脑来接受远程设备的SSH连接。我们会给大家提供一个简单的Ngrok使用样例,我会在公司内网的办公室电脑中开启一台SSH服务器(端口22),并设置Ngrok,然后使用Ngrok链接从外网访问这台办公室电脑。

第一步:设置账号

访问 ngrok.com 创建一个Ngrok账号。

完成了账号注册之后,你将会得到一个认证令牌,你需要使用这个令牌来连接你的树莓派和Ngrok账号,这个需要注意。

第二步:下载Ngrok

使用下列命令在你的树莓派上下载Ngrok:

sudo wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

接下来,使用下列命令提取文件:

unzip ngrok-stable-linux-amd64.zip

如果一切顺利的话,你将会看到一个名叫“ngrok”的文件:

第三步:创建你的账号

使用下列命令来设置你的认证令牌(authtoken):

./ngrok authtoken 4BSL861jeVz9wt7AM91QM_aksO43YvcKgmtC4pxv

第四步:运行Ngrok

现在你可以使用下列命令运行Ngrok(端口22):

./ngrok TCP 22

现在,你将会看到如下所示的信息:

Web Interface http://127.0.0.1:4040 Forwarding tcp://0.tcp.ngrok.io:36428 -> localhost:22

上面的数据表示,任何指向‘0.tcp.ngrok.io’(端口36428)的链接都将被重定向到目标设备(端口22)上。

第五步:使用远程PC访问你的办公室电脑

现在,你可以使用下列命令从远程PC上访问你的办公室设备了:

ssh user@0.tcp.ngrok.io -p 36428

没错,一切就是这么简单,你可以使用这种方法随时访问你的办公室电脑。

转自 freebuf.com,作者 Alpha_h4ck