流量穿透

513 阅读5分钟

本文已参与「新人创作礼」活动.一起开启掘金创作之路。


theme: orange

0x1正向代理和反向代理

正向代理

简单来说,就是客户端主动向代理发送一个请求,然后代理向服务器请求并将获取的内容返回给客户端。(也就是说web服务器的流量只进不出)

在渗透测试过程中我们在获得外网服务器的一定权限后发现这台服务器可以直接或者间接的访问内网 (一般情况下,内网中的其他机器是不允许来自外网机器的访问的),这时候我们可以将这台外网服务器设置成为代理,使得我们自己的攻击机可以直接访问与操作内网中其他机器。

反向代理

反向代理与正向代理相反,一般是代理服务器主动将获取到的资源流量转发给客户端,让客户端接收。

客户端只向proxy发送普通的请求,具体让他转到哪里,proxy自己判断,然后将返回的数据递交回来。

我们在内网渗透的时候,我们不知道内网中机器的IP地址,经常需要配置反向代理来探测内网
反向代理可以为用户访问Web服务器进行加速。

0x02 端口转发

端口转发就是将一个端口(这个端口可以访问本地的端口也可以是访问到任意主机的端口),转发到任意一台可以访问的IP上,通常这个IP是公网IP。

举个例子:

hacker位于主机A,主机A是hacker控制的主机。

hacker通过发送恶意邮件的方式给主机B,主机B的用户点开邮件,运行恶意木马导致主机B被感染,就成了我们俗称的“肉鸡”。虽然已经有木马运行在主机B中,但是由于主机B不在公网中,hacker无法访问到主机B

主机B运行着ssh服务,开放着22端口,hacker如果想在主机A上直接连接主机B的22端口,执行shell命令,这就需要端口转发。

这就需要一台主机C,一台公网的VPS

木马的服务端运行在主机C,同时监听两个端口 port1 与port2

木马的客户端运行在主机B,分别主动连接主机B的22端口和主机C的port2

hacker只需要主动连接主机C的port1,这样就打通了到主机B 22端口的线路

0x03 端口映射

端口映射就是将内网的端口映射到公网的某个端口,就是将这个端口的流量转发到公网主机上的某个端口。当别人访问这个被转发到公网上的端口,那么公网主机的被转发端口流量将发回给内网主机。

举个例子:

Hacker通过扫描暴露到公网中的主机A ,控制了主机A,接着Hacker发现了主机B,但是主机B只能由主机A进行访问,开放了80端口,而且没有公网IP。

如果Hacker想直接访问主机B的 80端口,对主机B的Web服务进行继续渗透,这就需要进行端口映射,让Hacker可以远程连接到80端口。


Tips: 端口映射和端口转发其实是一回事,原理是一样的,由于应用场景不同,才产生了不同的含义。

0x04 使用NPS搭建socks5隧道

1、nps下载地址

https://github.com/ehang-io/nps

2、安装

根据GitHub上的文档选择安装即可(这里我选择使用安装包进行安装)
https://ehang-io.github.io/nps/#/?id=nps

3、安装完成后启动nps服务端即可

sudo nps start

访问xxx.xxx.xxx.xxx:8080/即可

4、输入账户密码进入即可(admin/123 正常使用时请注意修改密码)

5、我们使用NPS去搭建socks5隧道,在客户端选择新增客户端,按照实际情况填入相关的信息即可(这里因为我是测试所以全部都是默认)

6、添加之后我们就可以在客户端列表中看到我们新增的客户端

7、在我们新增的客户端后面点击隧道来搭建我们的Socks5隧道

8、在隧道列表新增一个隧道,选择我们的Socks代理,服务端端口可以根据自己的情况去设定

9、所有信息添加成功之后返回到我们的客户端列表,点击ID号前面的+即可看到我们设置的信息以及连接客户端的命令

10、这里我使用kali做为靶机,在kali上开启一个web服务,然后执行nps的客户端命令(在此之前我们需要将nps的客户端上传到kali当中,只需上传二进制文件即可)

在kali上开启一个http服务

python -m http.server 9999

在kali中执行nps的客户端命令

./npc -server=192.168.189.128:8024 -vkey=9zei2hn90qubw1fi -type=tcp

11、回到我们的客户端可以发现我们的连接已经建立成功了

12、但是现在我们在本地只能通过kali.IP:9999访问我们开启的web服务

如果我们在本地通过访问http://127.0.0.1:9999是不行的

13、我们通过Proxifier在本地开启socks代理

添加一个代理服务器(地址为nps服务端的地址,端口为我们之前设置的端口)

添加代理规则

14、在Proxifier中设置完上述代理之后我们就可以在本地访问kali当中的web服务了

kali当中的流量也表示我们是使用127.0.0.1这个地址去访问的

至此,我们的Socks5隧道已经搭建成功了。