vlambda博客
学习文章列表

随笔|渗透测试中防火墙识别、负载均衡识别、WAF识别

防火墙识别

公司网络的边界一般都会有防火墙进行保护,防火墙上会有一些检测机制。防火墙识别的目的是尽量隐蔽地扫描出防火墙的规则,以及开放端口。

防火墙识别的原理主要是通过发送数据包,检查返回的数据包,可能识别端口是否经过防火墙过滤。

设备多种多样,安全防护机制也越来越完善,所以结果可能会存在一定误差,不能完全相信。

多数情况下可以根据下面四种方法来判断防火墙的过滤规则:

其中Unfiltered和Open一般是可以认为是等价的。

防火墙识别:scapy

用scapy来写一个用于识别防火墙的python脚本:

#!/usr/bin/python3
from scapy.all import *import logginglogging.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扫描,最后可以通过比较两者的结果来得出防火墙过滤规则。

随笔|渗透测试中防火墙识别、负载均衡识别、WAF识别

负载均衡识别

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡)。

  • 本地负载均衡是指对本地的服务器群做负载均衡;

  • 全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。

针对web的服务负载均衡经常使用Nginx、Apache应用层负载均衡。

负载均衡识别:lbd

kali里有一个lbd可以用来扫描负载均衡:

随笔|渗透测试中防火墙识别、负载均衡识别、WAF识别

WAF识别

WAF:Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

WAF识别:wafw00f

kali中有个预装的工具walw00f可以用来检测WAF,先来看一下这个工具可以用来检测哪些项目:

随笔|渗透测试中防火墙识别、负载均衡识别、WAF识别

使用也比较简单:

WAF识别:nmap

nmap也可以用来进行WAF识别,是通过自带的脚本(http-waf-detect.nse)实现的。

虽然也扫描到了WAF,但是扫描结果没有wafw00f的详细。