随笔|渗透测试中防火墙识别、负载均衡识别、WAF识别
防火墙识别
公司网络的边界一般都会有防火墙进行保护,防火墙上会有一些检测机制。防火墙识别的目的是尽量隐蔽地扫描出防火墙的规则,以及开放端口。
防火墙识别的原理主要是通过发送数据包,检查返回的数据包,可能识别端口是否经过防火墙过滤。
设备多种多样,安全防护机制也越来越完善,所以结果可能会存在一定误差,不能完全相信。
多数情况下可以根据下面四种方法来判断防火墙的过滤规则:
其中Unfiltered和Open一般是可以认为是等价的。
防火墙识别:scapy
用scapy来写一个用于识别防火墙的python脚本:
#!/usr/bin/python3
from scapy.all import *
import logging
logging.getLogger('scapy.runtime').setLevel(logging.ERROR)
import sys
if len(sys.argv) != 3:
print('Usage ./FW_detect.py [Target IP] [Target Port]')
print('Example ./FW_detect.py 172.18.14.1 223')
print('Example will determine if filtering exists on port 223 of host 172.18.14.1')
sys.exit()
ip = sys.argv[1]
port = int(sys.argv[2])
ACK_response = sr1(IP(dst = ip) / TCP(flags = "A", dport = port), timeout = 1, verbose = 0)
SYN_response = sr1(IP(dst = ip) / TCP(flags = "S", dport = port), timeout = 1, verbose = 0)
if (ACK_response == None) and (SYN_response == None):
print("Port is filtered or host is down!")
elif ((SYN_response[TCP].flags == "SA" or SYN_response[TCP].flags == "SR") and (ACK_response == None)) or ((SYN_response[TCP].flags == None) and ACK_response[TCP].flags == 'R'):
print("Port is filtered!")
elif (SYN_response[TCP].flags == "SA" or SYN_response[TCP].flags == "SR") and ACK_response[TCP].flags == 'R':
print ("Port is unfiltered and open" )
elif int(SYN_response[TCP].flags) == 20:
print ("Port is unfiltered and closed")
else:
print ("Port is Closed!")
基本就是对着前面的过滤规则的表写了一遍,也没用什么特别的模块或者语法,这里就不再解释了,有问题可以留言或者私信。
防火墙识别:nmap
nmap也能用来进行防火墙识别,不过需要自己人工判断,不能直接给出识别结果。nmap识别端口的时候不加指定参数,默认是使用SYN扫描,然后可以通过加参数-sA来进行ACK扫描,最后可以通过比较两者的结果来得出防火墙过滤规则。
负载均衡识别
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡)。
本地负载均衡是指对本地的服务器群做负载均衡;
全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。
针对web的服务负载均衡经常使用Nginx、Apache应用层负载均衡。
负载均衡识别:lbd
kali里有一个lbd可以用来扫描负载均衡:
WAF识别
WAF:Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
WAF识别:wafw00f
kali中有个预装的工具walw00f可以用来检测WAF,先来看一下这个工具可以用来检测哪些项目:
使用也比较简单:
WAF识别:nmap
nmap也可以用来进行WAF识别,是通过自带的脚本(http-waf-detect.nse)实现的。
虽然也扫描到了WAF,但是扫描结果没有wafw00f的详细。