拓冰建站拓冰建站
首页 / 资讯中心 / 正文

防火墙8种绕过手法与防御:攻防演练视角下的边界安全反思

去年某次企业内网攻防演练我坐在监控大屏前看防火墙访问日志越看越沉默。不是日志量太大而是里面的攻击流量在防火墙眼里“正常得不能再正常”——攻击者没用任何0day也没爆破边界设备只是把C2通信混进HTTPS流量里防火墙策略全部放行。演练结束后复盘边界设备上几千条安全策略实际拦住的攻击几乎没有攻击者靠的全是“绕过”。很多人以为防火墙是边界安全的第一道门配好了就能高枕无忧。但真正做过攻防对抗的都知道防火墙能挡住的是“笨”的攻击挡不住的是“懂规则”的攻击。这篇文章我想认真盘点攻击者最常用的8种防火墙绕过方法从原理讲到防御。内容偏红队视角但最终目的还是帮安全运维和网络工程师看清你的防火墙到底在防什么又漏了什么。1. 为什么防火墙拦不住所有人先搞懂绕过的前提要理解防火墙怎么被绕过先得理解防火墙的信任模型。这不是理论问题而是所有绕过手法的出发点。1.1 防火墙的“信任模型”默认放行策略是最大的空子防火墙本质上是一个基于规则的信任控制器。它不关心流量是不是恶意只关心流量是否匹配某条策略。这个模型下有两个默认方向默认允许和默认拒绝。很多企业为了业务不中断把防火墙配置成“默认允许黑名单”模式这意味着只要攻击者的源IP、目的端口、协议不在黑名单里所有流量直接放行。黑名单模式的问题在于它永远在追着已知威胁跑。攻击者换一个源IP、换一个端口、换一种协议封装规则就失效了。我曾经在客户现场看到一个配置边界防火墙上有一条“内网到外网全协议放行”的策略理由是业务复杂逐条开端口太麻烦。结果攻击者从内网任意一台机器外联流量完全不受限制防火墙变成了一块昂贵的透明玻璃。更隐蔽的问题是策略冗余和冲突。设备跑了三五年策略积累了上千条没人梳理过。有些策略看起来是“仅允许特定IP访问特定端口”但前面有一条更宽泛的策略把它覆盖了实际效果等同于放行。这种场景在双机热备环境下更常见主备两台设备的策略不一致主设备拦截的流量备设备直接放过去了。1.2 从攻防对抗看防火墙的真正短板在哪防火墙的核心短板可以归纳为三点。第一检测维度太浅。传统防火墙主要看五元组源IP、目的IP、源端口、目的端口、协议再深一点做状态检测但对应用层内容、加密流量里的行为特征基本没有检测能力。第二性能限制了功能。很多防火墙的IPS、AV、URL过滤功能不是没有而是开了之后性能掉一半运维为了业务稳定直接关掉甚至部署时就根本没开。第三静态规则的天然滞后性。规则是人写的写规则的人永远预测不到攻击者的下一步变种。这三个短板叠加起来就形成了一个尴尬的事实防火墙在攻防演练中更多是“防君子不防小人”。不是说防火墙没用而是说它的作用边界很清晰——拦住那些不走脑子的大规模扫描和已知漏洞利用但对精心构造的绕过流量防火墙的检出率并不理想。2. 攻击者最常用的8种防火墙绕过方法下面进入正题。这8种方法是我在实际攻防项目中见过最多、也最有效的绕过思路按技术类型分类展开。2.1 隧道封装绕过不改协议只改“包装”隧道绕过的核心思路是不改变流量的内容只改变它的封装方式。攻击者把恶意流量封装进防火墙默认放行的协议里最常见的是GRE隧道、IPv6-in-IPv4隧道以及ICMP隧道。为什么有效因为很多防火墙对GRE协议、ICMP协议是默认放行的。运维通常认为这些协议是基础设施协议不会有问题结果攻击者就在ICMP的echo request里塞指令在GRE隧道里跑任意TCP流量。我在一次项目里遇到过内网挖矿木马用ICMP隧道做心跳通信每隔几秒发一个ping包包体里藏着加密指令防火墙日志完全正常因为ICMP本身的流量量也不大。防御思路也不复杂。一是禁止不必要协议的隧道封装比如内网到外网只允许明确的协议通过GRE、ESP这类隧道协议如果没有实际业务需求就全部拒绝。二是启用深度报文检测针对ICMP流量做包体大小和频率的基线分析正常ping的包体不会每次都超过100字节也不会每秒十几个包。2.2 加密流量伪装让安全设备“看不懂”HTTPS成为主流之后防火墙对443端口基本都是放行状态。攻击者抓住了这个心理直接把C2通道架在443端口上用合法的TLS加密一封防火墙看不到内容只能放行。更有意思的是现在很多攻击者连TLS指纹都开始伪装。他们会用浏览器常用的加密套件和TLS版本让安全设备在做TLS指纹识别时把流量判断成Chrome或Firefox的访问。我见过一个C2通信样本流量特征和正常访问Google Analytics几乎一致如果不是威胁情报平台标记了域名纯靠流量分析根本发现不了。应对加密流量伪装行业里没有银弹。务实的手段有两种一是对高危地区、高风险域名的访问做TLS拦截和证书重签名强制解密检查但这会带来隐私和合规问题需要评估二是用流量行为分析重点关注“加密流量持续时间异常长”“访问目标域名频繁更换IP”这类行为特征不依赖解密也能发现异常。2.3 端口跳跃与端口复用跟静态策略玩捉迷藏端口跳跃的原理很好理解攻击者的客户端和服务端约好一个时间窗口每隔一段时间自动切换通信端口。防火墙的封禁策略通常是静态的封了端口A攻击者几分钟后跳到端口B策略还没更新流量就已经过去了。端口复用则更“阴险”。攻击者复用防火墙已经放行的端口比如80端口。恶意程序绑定80端口后既能正常响应HTTP请求给防火墙看又能识别特定特征的请求并执行隐藏指令。运维看到80端口有流量以为是正常Web访问实际其中一部分是攻击者的控制信令。这两个手法给运维的提示是不要迷信端口封禁。防火墙策略必须结合应用层识别比如在策略里限定“只允许HTTP协议通过80端口”而不是“允许所有TCP流量通过80端口”。华三、华为、锐捷这些厂商的防火墙产品基本都支持应用识别功能问题是很多现场根本没有打开这个选项。2.4 域名前置与CDN中转把C2藏在知名域名后面域名前置Domain Fronting的原理是利用CDN和工作原理的差异。攻击者使用一个高信誉域名比如某个国际云厂商的域名作为TLS握手时的SNI字段但实际HTTP请求里的Host头指向自己的恶意域名。CDN节点看到SNI后把流量转发到自己的服务器但因为Host头的存在到达目标服务器时流量被路由到攻击者的C2服务。防火墙看到的是“主机访问了知名云厂商的域名”完全不会起疑。这种手法的杀伤力在于防火墙的域名过滤规则匹配的是SNI或IP而合法云厂商的域名和IP往往在白名单里。我见过不少企业的防火墙和DNS日志联动查询发现大量访问知名云厂商IP的流量一查全是C2通信。对这种绕过常规的域名黑名单已经不够了。需要做SNI和Host头的一致性校验以及基于TLS证书信息的关联分析。很多下一代防火墙已经有这个功能但需要额外开启证书校验策略。2.5 DNS隧道不起眼的“信鸽通道”DNS隧道是特别容易被人忽略的绕过方法。原因很简单DNS协议几乎不可能被防火墙阻断内网机器要解析域名就必须允许DNS查询流量出去。攻击者把数据编码进DNS查询和响应中通过DNS服务器作为中转通道。经典做法是把指令分片后编码成十六进制字符串拼在子域名里比如payload-id-xxx.attacker-domain.com目标DNS服务器收到查询后解析出指令再把响应结果同样编码在DNS应答里传回来。DNS隧道的检测其实不难难的是有人去看。典型特征包括某个域名的DNS查询频率极高、单个子域名长度异常长、查询的目标域名是近期注册的。ELK里面就能做这种检测把DNS日志接入之后按“域名客户端IP”聚合查询频率超过基线的自动告警。我在一个客户现场用这个方法找到过一条持续运行半年的DNS隧道攻击者每天就传几百字节的小指令量很小但完全没被发现。2.6 应用层协议伪装把恶意指令放进正常业务里这种方法是把恶意流量包装成正常应用的行为。比如攻击者用WebSocket在浏览器页面和服务端之间建立长连接然后在这个连接里传递控制指令。防火墙看到的是普通的WebSocket流量但如果进行深度分析会发现连接持续时间、心跳间隔、传输内容与其他正常页面完全不同。还有一种更隐蔽的方式是藏在合法协作软件里。前几年有不少攻击者用带有Webhook功能的在线文档、聊天工具作为C2中继恶意代码只负责往一个正常的文档地址POST数据防火墙策略放行了这些办公应用的域名攻击指令就顺着合法通道进来了。对这类手法的防御重点从“识别恶意流量”变成“识别异常行为”。同一个协作软件的API接口某个主机每天固定时间POST大量数据而其他主机都是偶发访问这种模式差异就是告警点。2.7 IP分片与碎片化攻击让规则“组装”出恶意流量IP分片绕过是历史比较久远但依然有效的方法。防火墙在做包过滤时对于分片报文的处理普遍比较弱——有些设备只检查第一个分片其他分片直接放行有些设备对分片不做深度检测只是按条目转发。攻击者把恶意payload分散到多个IP分片中第一个分片伪装成合法流量通过规则检查后面的分片设置成不可从组的标记有些防火墙甚至会直接放行所有分片不进行重组。在防护墙绕过测试中还有一个经典操作把所有分片都标记为“最后一个分片”让防火墙无法还原出完整的原始报文从而跳过检测。应对方案有两个方向。一是防火墙上开启严格的分片重组功能强制所有分片重组后再做规则匹配二是针对分片报文单独配置安全策略默认丢弃异常分片。不同厂商的配置项名称不太一样华为防火墙叫“分片攻击防范”锐捷和H3C也有类似开关关键是要确认它真的生效了而不是配了没开。2.8 利用合法服务中转站在白名单的肩膀上最后一类方法是“借力打力”。攻击者不主动建通道而是利用一些可被公网访问的合法服务作为中转比如GitHub仓库、云存储、网盘、在线剪贴板。常见的玩法是攻击者把恶意脚本上传到GitHub仓库通过一个比较可信的短链接让内网主机去下载执行。防火墙看到的是访问GitHub的合法流量域名和IP都在白名单里根本没有拦截的理由。还有攻击者用在线剪贴板的API作为C2数据的中转恶意代码定时去读取剪贴板内容作为指令再上传执行结果。这类手法的检测逻辑关键点是“访问模式”。内网主机正常不会频繁访问特定外部服务如果一台长期不访问GitHub的服务器突然高频拉取某个仓库或者访问在线剪贴板API的频率异常就应该触发告警。结合威胁情报把已知的恶意仓库和恶意文件哈希加入联动封禁能有效提升检出率。下面用一张表把这8种方法的核心逻辑整理一下方便对照排查。绕过方法核心原理典型特征防御优先级隧道封装绕过把恶意流量封装进放行的协议非标准GRE/ICMP流量激增高加密流量伪装用合法加密通道跑C2加密流量行为异常高端口跳跃/复用动态切换或复用放行端口端口访问模式多变中域名前置/CDN中转借知名域名隐藏真实C2SNI与Host头不一致高DNS隧道把数据编码进DNS查询DNS查询频率/长度异常高应用层协议伪装把指令藏在正常业务协议里WebSocket/API访问异常中IP分片绕过利用防火墙对分片的检测盲区大量分片报文到达边界中合法服务中转利用白名单服务做跳板访问模式突变高3. 结合企业真实部署绕过手法为什么能成方法讲完了接下来落到实际。很多绕过手法的成功不完全是技术新颖而是企业自身的部署存在结构性漏洞。这里结合常见的防火墙部署方式聊几个我实际踩过的坑。3.1 双机热备与VRRP切换瞬间的“隐身窗口”双机热备是保证业务连续性的标准配置H3C的RBMVRRP组合、华为的HRP都是常见方案。但很多运维没意识到主备切换的瞬间会形成一个短暂的检测空窗。原因有两方面。第一是会话表同步延迟。主设备故障后备设备接管流量但如果会话状态没有完全同步新主设备对已经建立的连接是“不认识”的此时有些流量会被丢弃有些则会被当作新建连接重新检测。第二是策略学习期间的瞬时丢包。攻击者如果持续探测目标服务有可能正好在切换窗口里打进来。我不建议因为这个问题就放弃双机热备而是建议在切换后做一次主动的流量验证。比如在备设备接管后用测试脚本模拟几笔正常业务流量和几笔测试攻击流量确认规则匹配正常后再恢复业务切流。网络攻防演练之前一定要提前做热备切换测试而不是演练当天才第一次切。3.2 旁挂防火墙流量根本没经过防火墙旁挂防火墙这个模式在国内企业里极其常见。原因很简单很多老旧网络改造时不想动核心交换机就把防火墙旁挂上去以为加了防火墙就安全了。但旁挂模式有一个致命前提——必须靠核心交换机上的策略路由把流量牵引到防火墙。如果引流策略只配置了一半或者配置了单向引流那就等于白装。我遇到过一个案例核心交换机上配了从内网到外网的策略路由把流量引到旁挂的深信服防火墙但回程流量没有配置反向引流直接从核心交换机出去了。结果就是防火墙只看到了请求看不到响应状态检测完全失效攻击者利用TCP乱序直接穿透。还有更极端的引流策略只在核心交换机上生效如果业务流量走了备链路防火墙根本看不见。如果你所在企业的防火墙是旁挂模式请一定去核对策略路由的完整性和双向性。华为的USG系列防火墙在虚拟化场景下也常用来做旁挂但无论是哪家的设备必须确认“业务流量进防火墙”和“回程流量进防火墙”这两个方向都通了否则防火墙就是一个只会发告警的旁观者。3.3 防火墙Web管理面攻击者眼中的“后门”前面讲的都是技术绕过还有一类更省事的管理面绕过。很多防火墙的管理界面默认在所有接口上开放HTTP/HTTPS服务运维为了方便把管理口IP直接暴露在办公网甚至公网。一旦默认密码没改或者存在已知漏洞攻击者登录防火墙管理界面后直接关闭防护策略所有绕过方法都不需要了。我曾在一次渗透测试中用弱口令进了一台边界防火墙的管理界面然后发现它还能通过console下发配置。当时心里挺不是滋味的——这家企业的安全设备配置堆了满满一屏但管理面防护就是一层窗户纸。所以每当我看到有人问“防火墙远程管理怎么开”这类问题时我的建议是管理面必须收敛到带外管理网段不要暴露在业务网能不开远程管理就不开必须开的加上双因素认证和登录IP白名单。4. 别再沉默了针对绕过的加固与自查方案聊完了攻击手法和部署缺陷最后给出一套务实的加固方案。这套方案不需要采购新的昂贵设备重点是把现有防火墙和日志平台的能力用起来。4.1 策略收敛把“默认放行”改成“默认拒绝”第一步永远是策略收敛。检查边界防火墙上所有“any to any”的策略逐条确认是否有实际业务依赖。没有依赖的全部删除。临时放行策略要设置有效期过期后自动回收。我在现场做策略梳理时习惯按“业务系统-端口-协议”三个维度重新整理把原来按IP段开的宽泛策略细化到具体的业务端口和应用。多说一句关闭防火墙本身是个危险操作。如果你遇到过“防火墙每次关机重启后都开启”这种问题说明设备或配置存在异常需要排查重启原因而不是一关了之。正确做法是用最小化策略集替代关闭防火墙通过日志验证业务流量是否正常逐步淘汰那些大而空的放行策略。4.2 全流量审计让绕过行为无处遁形光靠防火墙自身日志做攻击检测是远远不够的。建议把防火墙的日志、DNS日志、NetFlow数据统一接入ELK这类日志分析平台建立流量基线重点看三个维度访问频率突变、会话时长异常、DNS查询异常。在实践中最快见效的动作是把DNS日志接进来直接检测DNS隧道特征子域名长度超过40字符的查询、单个域名每秒查询次数超过阈值、高频查询近期注册的新域名这三类直接触发告警。安全运维可以把防火墙日志和DNS日志做关联分析比如某台服务器同时出现“访问境外IP”“DNS查询异常域名”两个告警事件基本可以判定主机已失陷。4.3 结合威胁情报与异常检测识别加密与DNS隧道如果预算允许把威胁情报接入防火墙是性价比很高的升级方式。威胁情报能弥补静态规则的不足把已经确认的恶意IP、恶意域名、恶意TLS证书指纹自动同步到防火墙的封锁列表里大幅缩短响应时间。还有一个免费但很多人没做的工作用抓包工具自己验证防火墙策略是否真的拦截了TCP 443端口上的非HTTPS流量。我习惯用飞塔防火墙实机抓包验证策略效果飞塔的抓包界面比较直观能看到流量是否命中了目标策略如果没命中就去查策略优先级和冗余规则。没有实机也可以先用ensp或者H3C模拟器把拓扑搭出来验证策略路由、会话表、热备切换这些基础逻辑再迁移到生产环境。针对DNS隧道和加密流量伪装有条件的企业可以部署一套流量审计设备重点检测TLS证书的“新鲜度”和“访问目的”。正常企业访问的域名证书基本都有较长的有效期和稳定的历史记录如果一台内网主机频繁访问新注册域名、新签发证书而且流量方向是主机主动外连需要立刻查。前面讲的8种方法归根结底是在利用防火墙的信任盲区。我现在做安全自查时一定会先问自己三个问题我是否知道哪些流量是默认放行的这些默认放行的流量里有没有攻击者可以藏身的地方如果真的出现绕过行为我的日志和告警链路能不能在1小时内发现把这三个问题落到实际配置和验证上比讨论任何高深的攻击手法都更有价值。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门