FRP内网穿透及多级代理的使用

目录

0、前言

 1、场景介绍

2、环境准备

        2.1 下载frp

        2.2 配置一台VPS

        2.3 socks5客户端

        2.5 网络环境准备

3、Frp设置

        3.1 一层代理

        3.1 二层代理 

4、Frp总结


0、前言

        FRP是比较老牌的也是比较流行的反向代理、内网穿透软件。FRP用途和使用场景可以看官方文档,或下面的场景介绍。

        官网介绍:frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports TCP and UDP, as well as HTTP and HTTPS protocols, enabling requests to be forwarded to internal services via domain name.

        frp是一种快速反向代理,允许您将位于NAT或防火墙后面的本地服务器暴露给Internet。它目前支持TCP和UDP,以及HTTP和HTTPS协议,使请求能够通过域名转发到内部服务。
        

 1、场景介绍

        今天借着proxifier和一个复杂一点的场景测试一下frp的基础功能和多级代理功能。其实我在某视频网站发过一次视频,由于水平有限没多少播放量,而且时间长了自己都忘了某些细节,所以今天用文字记录一下。

        下图是测试场景,比如渗透测试过程中黑客利用了S1对外映射的某Web服务的漏洞,通过该漏洞上传了webshell,控制了S1。这时候就想通过其他方式连接该服务器,比如3389端口,或者把S1当成跳板来进行横向渗透S2。这种情况下就可以使用frp最基础的功内网穿透。

        这个功能可以想象成把内网中的端口通过隧道主动送到互联网拥有公网IP地址的服务器上,这时候连接这个VPS的某端口实际就是连接S1的某端口。

        socks代理的功能可以认为S1把自己的某个端口运行代理然后主动送到VPS上,把相关软件的代理设置为VPS的相应端口就可以进行内网的扫描和横向跳转。        

        再来点复杂的需求,根据上图,比如客户内部有一台S2, S2有双网卡,另一个网卡连接更为私密的网络。假如防火墙上对S2流量进行了双向阻断,也就是说S2没有对外映射也不能出网。我们想攻击S2并把S2当成跳板再去攻击S3,所以不能反向代理S2的端口,就需要用到多级代理,就是先通过一级代理S1连接到S2,再通过二级代理S2连接到S3。下面逐步实现这个需求。         

2、环境准备

        2.1 下载frp

         目前版本0.58.1,现在版本不再支持win7,而且配置文件由原来的ini变成了toml。

        linux 64位:

      https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz

        win 64位:

      https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_windows_amd64.zip

        2.2 配置一台VPS

        如果仅仅做实验可以不需要VPS,使用虚拟机的各种网卡模式搭配出来也能达到效果。

        如果想实际使用的话需要购买一台VPS。

        如果家里的宽带能获得公网IP的话也可以用路由器端口映射加DDNS的方式实现VPS的功能。我测试成功过。      

        VPS需要注意的是一般会有安全组,需要在规则里添加允许的端口。

        2.3 socks5客户端

        socks5客户端可以让不支持通过代理服务器工作的程序能通过HTTPS或SOCKS代理或代理链。我这里使用proxifier。

        在模拟黑客主机上运行该软件,理解代理服务器和规则的设置。

        2.5 网络环境准备

        我是用的是vmware workstation pro,现在也免费了不用担心版权问题了。

        运行S1、S2、S3,三台win10虚拟机,通过不同的网卡模式获得以上的网络结构。

        物理主机充当黑客主机。

        为了能贴近真实网络环境,我用pfsense模拟防火墙。pfsense安装完毕后接口设置没问题的情况下就自动生成源地址转化,内网主机自动就能上网。单独设置S2的阻断策略。

        设置正确的wan口、lan口和对应ip地址。        

         使用web登录以后停止DNS服务,启用DNS转发,设置dns服务器地址。        

        在lan口设置拒绝S2服务器安全策略。 源是192.168.100.12,目的是所有。

3、Frp设置

        3.1 一层代理

        首先在VPS上配置frps.toml文件,为了简单点不配置web服务、日志、密码验证等功能。        

        在S1上运行frpc.exe,指定配置文件。

        这时在黑客主机上使用远程桌面连接1.94.22.223:6000 

        可以看到成功连接。下一步开启S1的socks代理。

        停止隧道,编辑frpc.toml,增加socks代理内容。

        新版的frp配置和以前不一样,以前的socks代理:

[target1] 

type = tcp

remote_port = 1234 

plugin = socks5 

        新版的配置:

[[proxies]]
name = "socks5"
type = "tcp"
remotePort = 6001
[proxies.plugin]
type = "socks5"

        编辑好以后运行frpc.exe -c frpc.toml

        这时候需要用到proxifier,配置代理服务器。

        为了安全起见在实际使用中建议加上认证字段。配置好以后可以点击测试。下一步增加代理规则。         

        指定目标范围和使用的代理。运行mstsc。

        可以在proxifier看到代理中的流量:

         也可以看到登录S2的界面: 

       也可以通过浏览器代理访问S2上面的业务,提前在S2上面通过chfsgui运行一个简单的web页面。通过在proxifier添加代理规则可以测试。        

        可以在代理软件中看到相关流量,也能这正常打开页面。也可以直接使用浏览器代理功能或者SwitchyOmega插件,但是直接使用浏览器或浏览器插件的话不支持socks登录验证。所以还是使用代理软件方便和安全。

        3.1 二层代理 

        当以上功能实现后,如拓扑图所示,希望在S2上再运行一层代理,去攻击S3的情况下就需要二层代理。

        保持以上设置不变,在S1上运行一次frps,也就是服务端,在S2上运行一次frpc,也就是客户端。这样就把代理串联起来了,也叫代理链。

        S1上运行服务端:        

        这里的7000是S1上的7000,和VPS不冲突。

        S2上运行客户端:        

        由于可以通过S1的代理完全访问S2,所以不需要把S2的端口送出来,只开启S2上面的socks就可以。

        socks代理链已经准备好了,现在设置代理软件。

        增加代理服务器:               

        这里不能测试,因为需要通过第一代理才能通。

        这时候点击proxy chains,打开代理链设置,增加一个代理链。然后把上面的代理拖下来。注意顺序。        

        设置相关代理规则,目的地址是10.0.0.0的流量走代理链。在设置的时候不小心把2个代理的端口都设置成为6001了,本来以为会冲突,因为可能会在S1上冲突,实际发现并没有冲突。没有冲突的原因是S1在一层代理的时候并没有打开6001端口,而是在VPS上打开6001端口,通过7000端口的隧道到达S1,S1上开放的6001端口实际是S2的socks代理端口。

        使用远程桌面测试,可以在代理软件中看到流量,也从客户端看到登录验证信息。         

        这时候就实现通过代理连访问S3服务器的相关端口,当然也可以通过浏览器访问上面的业务系统。

4、Frp总结

         以上就是通过Frp实现多重代理(代理链)的过程,还是比较顺利的。现在网上好多frp配置都是基于老版本的,而且代理连的比较少。代理链能不能用在msf或者nmap上没有测试过,我印象当中msf可以设置代理,nmap官方文档中说三层的扫描流量可以走代理。 在linux中的proxychains是支持代理链的,这次没有测试,但是网上的资料确定是可以的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 预编译与执行机制解析

在深入探讨JavaScript预编译与执行机制之前,我们首先需要明确几个基本概念:声明提升、函数执行上下文、全局执行上下文以及调用栈。这些概念共同构成了JavaScript运行时环境的核心组成部分,对于理解代码的执行流程至关重要。本文将围绕这些核…

美团携手HarmonyOS SDK,开启便捷生活新篇章

华为开发者大会(HDC 2024)于6月21日在东莞松山湖拉开序幕,通过一系列精彩纷呈的主题演讲、峰会、专题论坛和互动体验,为开发者们带来了一场知识与技术的盛宴。6月23日,《HarmonyOS开放能力,使能应用原生易用…

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》 《文稿拾零》超厚的一本书(570),看得时间比较长,这本书是作者零散时间写的一些关于文学性质的笔记,读起来还是比较无趣的,非常零散,虽然有…

C++系列-String(二)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” #define _CRT_SECURE_NO_WARNINGS #include<string> #include<iostream> #include<list> #include<algorithm> using namespace std; void test_string…

Java启动jar设置内存分配详解

在微服务架构越来越盛行的情况下&#xff0c;我们通常一个系统都会拆成很多个小的服务&#xff0c;但是最终部署的时候又因为没有那么多服务器只能把多个服务部署在同一台服务器上&#xff0c;这个时候问题就来了&#xff0c;服务器内存不够&#xff0c;这个时候我们就需要对每…

【Python机器学习实战】 | 基于线性回归以及支持向量机对汽车MPG与自重进行回归预测

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

【Android面试八股文】请你描述一下JVM的内存模型

文章目录 JVM内存模型1. 方法区(Method Area)运行时常量池(Runtime Constant Pool)2. 堆(Heap)3. 栈(Stack)4. 本地方法栈(Native Method Stack)5. 程序计数器(Program Counter Register)6. 直接内存(Direct Memory)JVM内存溢出的情况Java的口号是: “Write onc…

【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

文章目录 一. Registering metrics&#xff1a;向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System m…

tensorRT C++使用pt转engine模型进行推理

目录 1. 前言2. 模型转换3. 修改Binding4. 修改后处理 1. 前言 本文不讲tensorRT的推理流程&#xff0c;因为这种文章很多&#xff0c;这里着重讲从标准yolov5的tensort推理代码&#xff08;模型转pt->wts->engine&#xff09;改造成TPH-yolov5&#xff08;pt->onnx-…

如何关闭软件开机自启,提升电脑开机速度?

如何关闭软件开机自启&#xff0c;提升电脑开机速度&#xff1f;大家知道&#xff0c;很多软件在安装时默认都会设置为开机自动启动。但是&#xff0c;有很多软件在我们开机之后并不是马上需要用到的&#xff0c;开机启动的软件过多会导致电脑开机变慢。那么&#xff0c;如何关…

【break】大头哥哥做题

【break】大头哥哥做题 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int sum 0;//求和int day 0;//天数 while(1){int a;cin>>a;if(a-1){break;//结束当前循环 }sum sum a; …

[stm32]温湿度采集与OLED显示

一、I2C总线协议 I2C&#xff08;Inter-integrated circuit &#xff09;是一种允许从不同的芯片或电路与不同的主芯片通信的协议。它仅用于短距离通信&#xff0c;是一种用于两个或多个设备之间进行数据传输的串行总线技术&#xff0c;它可以让你在微处理器、传感器、存储器、…

6月20日(周四)A股行情总结:A股险守3000点,恒生科技指数跌1.6%

A股三大股指走弱&#xff0c;科创板逆势上扬&#xff0c;半导体板块走强&#xff0c;多股20CM涨停。中芯国际港股涨超1%。恒生科技指数跌超1%。离岸人民币对美元汇率小幅走低&#xff0c;20日盘中最低跌至7.2874&#xff0c;创下2023年11月中旬以来的新低&#xff0c;随后收复部…

287 寻找重复数-类似于环形链表II

题目 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums…

Linux应急响应——知攻善防应急靶场-Linux(1)

文章目录 查看history历史指令查看开机自启动项异常连接和端口异常进程定时任务异常服务日志分析账户排查总结 靶场出处是知攻善防 Linux应急响应靶机 1 前景需要&#xff1a; 小王急匆匆地找到小张&#xff0c;小王说"李哥&#xff0c;我dev服务器被黑了",快救救我&…

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发 专业版 插件版 手持弹幕小程序通常提供多种功能&#xff0c;以便用户在不同的场合如夜店、表白、接机等使用。以下是一些常见的功能列表&#xff1a; 文本输入&#xff1a; 输入要显示的文字内容&#xff0c;…

初中英语优秀作文分析-005How to Plan Our Life Wisely-如何明智地规划我们的生活

PDF格式公众号回复关键字:SHCZYF005 记忆树 1 The “double reduction policy” reduces the burden on students and offers us more spare time than before, but how to plan our life wisely? 翻译 “双减政策”减轻了学生的负担&#xff0c;给了我们比以前更多的业余…

Linux进程概念(二)

上期我们已经学习了进程的基础的内容&#xff0c;已经对进程的基本概念有了了解&#xff0c;知道了进程的组成&#xff0c; 本期我们将以操作为主进一步探讨进程的相关概念。 目录 查看进程 创建进程 查看进程 查看进程主要有两种方式。 ps ajx指令 在当前目录下有名为tes…

SpringBoot-注解@ImportResource引入自定义spring的配置xml文件和配置类

1、注解ImportResource 我们知道Spring的配置文件是可以有很多个的&#xff0c;我们在web.xml中如下配置就可以引入它们&#xff1a; SprongBoot默认已经给我们配置好了Spring&#xff0c;它的内部相当于已经有一个配置文件&#xff0c;那么我们想要添加新的配置文件怎么办&am…

SkyWalking 极简入门

1. 概述 1.1 概念 SkyWalking 是什么&#xff1f; FROM Apache SkyWalking 分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Docker、K8s、Mesos&#xff09;架构而设计。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体…