防火墙深入总结

2020-04-23 约 358 字 预计阅读 2 分钟

声明:本文 【防火墙深入总结】 由作者 星盟安全团队 于 2020-04-23 09:16:34 首发 先知社区 曾经 浏览数 33 次

感谢 星盟安全团队 的辛苦付出!

作者:百顺@星盟

前言

之前在安全客上看到一篇关于流量出网的文章,这里我进行深入总结一下。

利用过程

探测出站规则未禁用的端口:(在没用权限使用防火墙命令的情况下)

powershell -c "1..65535 | % {echo ((new-object Net.Sockets.TcpClient).Connect('allports.exposed',$_)) $_ } 2>$null"

这里我们配置出站规则禁止特定端口出站,以下为效果图:

如果想使用msf连接的话,可以通过服务端设置这些端口连接。

ICMP(Internet Control Message Protocol):没有目的端口与源端口,属于Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

如果防火墙的出站规则配置了禁用端口,那么可能会造成不能出网的状况,但是此时如果没有单独配置禁用icmp协议,是可以通过icmp协议出网的。

此时是可以ping通外网的

所以我们可以通过icmp通道进行连接,是可以出网的

但是如果禁用了icmp出站协议,就只能通过关闭防火墙出网了。

防火墙配置

netsh advfirewall show allprofiles    查看防火墙状态

netsh firewall set opmode mode=disable            开启防火墙
netsh advfirewall set publicprofile state on

netsh firewall set opmode mode=disable            关闭防火墙
netsh advfirewall set publicprofile state off 

netsh firewall show logging                防火墙日志目录
netsh advfirewall set currentprofile logging filename "C:\windows\temp\test.log"    自定义防火墙日志位置


netsh advfirewall firewall show rule name=all      查看防火墙配置的所有规则(可查看防火墙的出站与入站端口)
netsh advfirewall firewall delete rule name="rule name"       删除规则

如果配置了入站规则,需要连接3389时可以通过转发和添加规则的的方式连接
第一种方法:添加出站端口
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow     添加出站规则允许3389端口
第二种方法:流量转发    
netsh advfirewall firewall add rule name="test" dir=in action=allow protocol=TCP localport=8888     添加防火墙出站端口,也可以查看配置
netsh interface portproxy add v4tov4 listenport=8888 connectaddress=本机ip connectport=3389     添加转发规则(connectaddress这里如果要访问本地端口不要填127.0.0.1,要填网卡ip,也可以填内网中别的机器的ip,可作为跳板机)
netsh interface portproxy show all          查看转发规则所有配置
netsh interface portproxy delete v4tov4 listenport=8888 protocol=tcp    删除转发规则

Linux配置防火墙:

参数 作用
-P  设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F  清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num  删除某一条规则
-s  匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d  匹配目标地址
-i 网卡名称  匹配从这块网卡流入的数据
-o 网卡名称  匹配从这块网卡流出的数据
-p   匹配协议,如tcp,udp,icmp
dport:目的端口       出站规则
sport:来源端口        入站规则
-p 协议(protocol)
-s 源地址(source)
-d 目的地址(destination)
-j 执行目标(jump to target)
 常用的ACTION:
 DROP:丢弃
 REJECT:明示拒绝
 ACCEPT:接受
 REDIRECT:重定向:主要用于实现端口重定向
 RETURN:返回

PREROUTING: 在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTING: 在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)

iptables -L -n --line-number    列出所有规则并且添加相应的序号
iptables -A INPUT -p tcp --dport 22 -j ACCEPT             允许别人访问22端口
iptables -A OUTPUT -p udp --dport 53 -j DROP               禁止自己访问53端口
iptables -A OUTPUT -p tcp --dport 1:65535 -j DROP         禁用出站多个端口
multiport参数配置不连续端口
iptables -A INPUT -p tcp -m multiport --dport 21:25,135:139 -j DROP
iptables -I INPUT -s 192.168.60.1 -j DROP       屏蔽单个IP
iptables -D OUTPUT 1            删除规则
service iptables save      保存
iptables-save > /etc/iptables.rules    保存

linux禁止icmp协议

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

允许ping

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

linux探测防火墙出网

找一台公网服务器,开启防火墙,将所有端口绑定至8888端口
iptables -A INPUT -p tcp --dport 1:65535 -j ACCEPT    (允许1-65535端口入站)
iptables -A PREROUTING -t nat -p tcp -m multiport --dport 1:21,23:65535 -j REDIRECT --to-port 8888 (记得把ssh留出来,不然自己连不上了)
nc -lvp 8888           nc监听本机8888端口

iptables -t nat -F   清空nat表的所有链 
iptables -t nat -F PREROUTING    清空PREROUTING表 
iptables -t nat -L   查看nat表所有规则

for i in {50..80}; do timeout 1 bash -c "echo > /dev/tcp/192.168.60.129/$i" && echo "$i open" || echo "$i closed"; done

这样就能通过自己的服务器探测对方出站还存留了哪些端口了

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now