定义
“流量代理是一种网络通信技术,它充当网络通信的中间人,将流量从一个地方传递到另一个地方。通常用于实现网络隧道、网络加速、访问控制和隐私保护等功能。“
上面是来自chatGPT的回答。从这个回答中,我们不难看出,流量代理并不仅仅适用于网络安全,但是对于网络安全人员来说尤为重要:
-
通过流量代理,隐藏自己的真实IP,防止被溯源
-
将流量转发到内网,让我们访问到一些原本访问不到的业务或站点
-
构建私密隧道,防止一些敏感信息泄漏
流量代理的方式
在正式开始去讲一些代理方式的实现之前,我们需要了解几个概念:
-
正向代理
-
反向代理
-
隧道代理
-
透明代理
-
SSL/TLS代理
正向代理
客户端通过设置,流量发送到代理服务器,由代理服务器代为访问。
通过这样的方式,当我们再去访问目标时,目标记录的IP就来自代理服务器了。通过这样的方式就隐藏了自己的真实IP。
基于这样的形式一个访问形式,你们有没有想到什么实战环境?
这个和企业网络环境是不是有一个共通之处:
默认情况下我们是无法直接访问到企业内网的,但是我们能访问到企业的web服务器。在不考不考虑防火墙拦截的前提下,如果我们让上图中的服务器变成一台代理服务器,那我们是不是就可以借助它去访问到企业内网了呢?
再思考一下,我们现在是直接通过客户端去访问目标服务器,那么在目标服务器上的日志记录,是不是就直接记录下了你的IP?那么有什么方式让他记录下来的IP不是你的真实IP呢?
反向代理
服务器端通过设置,将某个服务映射到代理服务器上,当互联网上的用户去访问代理服务器时,服务器端提供服务
有发现和正向代理的区别吗?反向代理是在设置服务器端。通过服务器端的设置,将业务映射到互联网。这样大家都能进行访问了。那么,对于这种方式的代理,你们有想到什么场景吗?
由于是服务器主动向外发送数据请求建立连接的,所以在很大程度上绕过防火墙的限制,访问到原本不被允许访问到的内容。
从上面的原理来看,反向代理在实战中好像并没有得多大用处?当我能将服务器上的业务映射到代理服务器上时,通常也意味着我能控制目标服务器了,那我还有必要去构建反向代理吗?
理是这么个理,但是需要考虑一点:防火墙的防护针对墙外往墙内的流量更加严格,而墙内往墙外的流量相对会更宽松。
正向代理
想要实现正向代理,很显然,我们需要搭建一个代理服务器,同时需要借助一些工具,将客户端的流量给转发到代理服务器上。所以,我们需要使用到两个工具:
-
Neo-reGeorg 代理服务器搭建脚本
-
Proxifier 客户端流量代理工具
Neo-reGeorg使用
下载地址:https://github.com/L-codes/Neo-reGeorg
将文件下载解压之后,就可以获得Neo-reGeorg了
通过阅读他的说明文档,就能非常清晰明了的利用Neo-reGeorg搭建一个正向代理服务器。
首先设置代理服务器的密码,然后将生成的脚本,上传至对用的目标网站,最后利用neoreg.py脚本,就可以成功搭建代理服务器
通过文档中的说明,初始化密钥
然后将文件上传,成功之后访问,服务器返回空白内容
然后通过脚本启动代理服务
Proxifier使用
我使用的这个版本没有找到在线的下载地址,不过我再网上找到了一个4.05版本的。使用上应该都差不多。
下载地址:https://www.iculture.cc/software/pig=3876
双击运行,然后 配置文件 → 代理服务器 → 添加 → 地址、端口、协议等信息
配置完成之后保存,接下来就是去设置代理规则:
配置文件 → 代理规则 → 添加 → 应用程序、动作 等
我在这里为了演示,是将chrome浏览器设置到了proxifier代理中。然后通过使用chrome和edge分别访问ifconfig.me,来体现初流量代理是否成功
不难看出,edge获取到的是我当前的真实IP,而chrome则已经是使用了代理的IP地址。
拓展
除了使用proxifier进行终端流量代理之外,其他能够实现流量转发的工具也都可以使用哦。比如浏览器通过插件设置socks5代理,地址和端口为neoreg监听的地址即可
frp实现内网穿透、反向代理
从反向代理的原理不难看出,我们需要三样东西:
-
公网服务器
-
代理服务器端的工具
-
目标服务器端的工具
公网服务器
这个东西没有什么好讲的,自行购买就可以了。优先考虑国外的vps。
代理工具
frp具有服务器端脚本和客户端脚本我们需要做的事情有两件:
-
在自己的vps上配置和运行frp服务端脚本
-
在目标服务器上配置和运行frp客户端脚本
捋清了思路之后,就可以开始操作了。
下载地址:https://github.com/fatedier/frp
GitHub上的frp有两种方式可供选择:源码和已编译的应用程序
通常情况下我们下载编译好的应用程序就行,选择对应的平台,然后下载,之后上传一份到vps上,上传一份到目标服务器上。
将下在好的文件上传至你的vps,然后再vps中解压,此时你会发现,文件中中包含了frpc和frps两种类型的文件:
frpc表示客户端脚本,frps表示服务器端脚本。我们在自己的vps上是需要部署frps,所以先修改frps.ini文件,修改内容如下(极简风格):
配置完成之后,接下来就是运行frps,如果出现下面的内容就表明frps运行成功
接下来就是去目标服务器上搭建frpc了,我这里为了方便,就在使用本地windows笔记本电脑作为目标服务器。所以我需要下载windows的frp软件
此时我们是需要搭建frp的客户端,所以我们需要修改frpc相关的配置文件
目前frp支持的协议包括:tcp、udp、http、https、socks、forward-unix-domain-socket、p2p-mode等等的协议。我这里选了两种比较常用的的协议来进行映射:tcp 和 socks5
修改完配置文件之后,接下来就是去运行frpc应用,出现以下内容就表明代理设置成功了
然后我们就可以进行测试了:vps 的 tcp/8107 端口 映射了笔记本电脑的 tcp/8081 端口,首先在笔记本电脑本地访问 http://127.0.0.1:8081,不难确定运行的服务是 finecms 框架。
然后访问frp代理服务器的8107端口。服务一致,说明代理设置成功。
这是TCP端口的代理,除此之外还有 tcp/8108 的socks5代理。
socks协议相对来说比较特殊,我们想要通过socks协议来访问站点,需要进行一些特殊的设置:比如使用proxifier来设置代理、通过proxychains设置代理。
我刚好身边有一台mac mini,mac的终端是接受直接设置为代理的。所以我就直接通过mac的终端来测试socks是否成功映射:
不难看出,这个代理也是成功了的。不难看出,这个代理也是成功了的。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。
免费领取安全学习资料包!![](https://i-blog.csdnimg.cn/blog_migrate/d10efd4afc35842fd8e86723be17b238.png)
渗透工具
技术文档、书籍
面试题
帮助你在面试中脱颖而出
视频
基础到进阶
环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等
应急响应笔记
学习路线