
前言
过去两年中出现的网络攻防对抗比赛是在实战中进行的. 这个措施非常好. 借助“便宜的对话,给我展示壳”,与会的公司将更加关注实际的安全威胁和减轻威胁的方法,从而客观地促进了安全行业的繁荣. 相关的安全服务和安全产品一直销售良好,特别是具有实时检测和阻止功能的IDS / IPS.
因此,大公司购买并部署了IDS,IPS和WAF等安全保护产品,这些产品压缩了攻击面,从而带来了两个问题: 1)是否有机会进行此方向的渗透测试?渗透测试人员还发布了一些热门帖子[1],它们引起了对未来的困惑; 2)如果部署了IDS / IPS设备,是否仍将修复在设备后端受保护的系统的安全漏洞?不要急于回答,以后再阅读.
IDS / IPS保护原则和绕过的想法
IDS在网络层工作,绕过部署,并通过捕获和分析网络流量来发现攻击; IPS通常在网络层也被绕过,这可以理解为具有阻止功能的IDS,它是IDS的升级版本(还具有IDS检测到攻击通知阻止设备执行阻止操作(设备链接模式))的功能. 覆盖网络层和应用程序层; WAF是一种在应用程序层上防范Web攻击的程序,通常与Web访问层对接,可绕过Serial,只能覆盖应用程序层,详细的技术原理和实践可参考此TSRC博客上的文章[2]. 在本文中,为了便于说明,将网络层旁路保护设备视为IPS.
许多安全专家已经在应用程序层中讨论了WAF的绕过问题[3]. TSRC博客还将在不久的将来发布WAF绕过文章,因此不会陷入陷阱. 我们将沉入网络层. 玩.
似乎IPS旁路保护的原理非常简单. 它的经典代表(例如开源Snort)分析网络上的流量,并找到符合规则的流量. 其目的是一种典型的链接劫持技术. 常见的情况是阻止网站(例如非法网站),篡改网页内容(操作员插入广告),阻止端口扫描和漏洞攻击(IPS). 那些实施链接劫持的人必须控制网络的特定部分.
旧作品“电子商务网站的流量劫持的分析和思考” [4]中的图片用于显示攻击者在嗅探符合特征的流量后伪造了响应. 在这里,HTTP响应是伪造的(为了篡改页面),如果仅被阻止,则它是伪造的第一个数据包,会干扰TCP握手过程或连接.

为什么大多数IPS被绕过而很少串行化?在大流量下进行串行处理是设备性能的巨大挑战,您可以尝试一下,我相信您会回来同意我的看法.
由于IPS是通过旁路部署的,因此干扰两方正常通信的目的只能通过发送伪造的数据包来实现. 正常的数据包实际上将到达客户端和服务器,但是具有相同序列号的数据包的操作系统已经存在. 经过处理,这些数据包将被视为错误的数据包并将被丢弃.
因此,从原理分析来看,绕过IPS可以从两个方向进行: 1)检测,如果IPS无法检测到流量中的攻击功能,则不会采取后续措施; 2)阻止,正常的数据包也将到达服务器,直到很晚,如果有一种方法可以使伪造的数据包失效,则不会发生阻塞.
IPS绕过示例
有四种常见的IPS阻止方案:
1)可以建立TCP连接以检查客户端发送的HTTP请求的特征. 如果匹配,它将发送第一个块或HTTP响应替换以禁止域名或保护Web攻击;

2)不允许建立TCP连接,也就是说,当客户端发送一个syn数据包时,IPS直接返回到第一个,如果有后续的ack数据包您当前的网络存在链路层劫持,它将返回到第一个块. 用于访问控制或端口阻止的两个方向;
3)DNS查询方案,伪造的DNS响应,劫持网站域名以进行禁令或网络钓鱼攻击;
4)在UDP传输方案中,伪造了ICMP响应以通知客户端UDP端口不可达.
对于1,您可以从两个方面开始: 在应用程序层,通常使用IPS和Web Server在理解HTTP语法方面的差异;在网络层,通常使用IPS处理TCP / IP和操作系统协议栈的区别. 对于2,裸露的表面相对较窄,绕过会更困难,但这并非不可能;对于3,更改DNS服务器就足够了. 业界也为DNS劫持提供了一个很好的解决方案,在此不再赘述. 这是为了阻止UDP访问,请参阅下文进行分析.
下面根据技术方法介绍一些常见的网络层旁路方法,所有这些方法均已进行了测量:
TCP碎片
某些IPS逐字节检查,并且未实现TCP片段重组的功能. 然后将关键字分成两个TCP数据包以使位置变暗. 以下是由Perl实现的TCP分段HTTP请求. 关键字为“”,它将被分为两个TCP数据包并发送.

查看图片,绕过TCP碎片并返回200(如果未实现TCP碎片,它将返回302).
慢!如果IPS实现TCP片段重组,该怎么办?这个问题很好问. 仔细看一下代码. 里面睡着了. 这不是小菜一碟: 尽管某些IPS具有重组TCP片段的能力,但它们不会无限期地等待. 会有时间. 已选中,因此请将此睡眠时间设置为超过IPS片段重组超时值,而未达到操作系统和Web服务器的超时值,则可以绕过它.
IP碎片
IP数据包也支持分段,原理相似,但是您需要使用Python下的Scapy组件来构造IP数据包. 经过三个TCP握手后,Scapy分片功能用于将IP分片的数据包拆分并发送600个字节(当然,syn包也可以分为几部分),代码如下:

看看效果:
IP片段重组超时旁路的原理与TCP相同,无需多说. 需要说明的是,TCP分段的用途更加广泛,IP分段受链路上网络设备的影响,并且可能在网关中途被重组或丢弃,从而无法达到预期的效果.

著名的扫描仪nmap具有规避固件/ IDS的功能. 它使用IP分片来扫描端口. 参数是-f. 您可以使用-mtu设置片段大小. 最小值为8,但是会测量一些路径. 丢弃具有较小MTU的IP数据包.
程序错误/性能问题
程序始终是错误的,尤其是这种流量处理程序,它将立即同时处理大量数据包. 在各种特殊情况下,稍有疏忽都会导致异常. 为了确保业务连续性,保护设备必须在发生异常时确保业务连续性,因此也可以通过制作异常数据包来实现绕过目的,从而使IPS无法响应. 过去,当我们的DDoS保护系统(宙斯盾)处理流量时,在经过一番漫不经心之后就丢弃了核心.
在测试IPS时,建立TCP连接后,将发送大量序列号错误的ack数据包,然后发送正确的数据包. 结果,IPS出现错误,并返回序列号错误的第一个数据包,从而导致绕过.
您还可以发送许多无效的数据包,这会消耗IPS性能. 一旦IPS速度变慢,他的数据包将比正常数据包晚到达,并且还有绕过的机会.
可以通过协议绒毛[5]找到该异常. Scapy还是很好的协议模糊生成工具,可以尝试一下.
此外,链接上的许多网络设备具有不同的TCP / IP协议实现,这也可能导致旁路或其他问题. 例如,操作系统现在判断即使在滑动窗口中,第一个数据包也将精确到序列号,但是某些NAT设备仍然存在忽略序列号的rstblood问题.
伪造的TCP状态
在测试IPS时,发现它是一个久经考验的系统. 上述各种方法无法绕开您当前的网络存在链路层劫持,并且应用程序层的各种绕过也不起作用,甚至无法模糊错误,因此它不是软件包. 过滤,但是基于状态跟踪-简单测试检测模式,如果没有响应,则IPS是数据包过滤,否则是状态跟踪,而不建立TCP连接来直接发送HTTP请求.
结果是小荷和小荷. 缺陷恰恰在于状态跟踪: 建立TCP连接后,我们可以发送带有自定义TTL值的第一个数据包. 此TTL值可以通过IPS,但不会到达服务器. IPS将基于状态跟踪认为此TCP连接已断开,并且后续的数据包将不会被检测到,但是服务器不会受到影响,并将继续等待ack数据包.
经过测试,在当前环境中,TTL设置为大约12 rst数据包将通过IPS但不会到达服务器,因此我们的密钥代码如下所示:
完美旁路:
这个绕过TTL值构造的问题(我称之为“假TTL”攻击)对于某些具有状态跟踪功能的网络设备来说可能是一个常见问题.
防止三向握手的缺陷
对于直接防止TCP三向握手的情况,让我们仔细看看.

客户端启动一个syn软件包,并且IPS假装服务器将rst发送回客户端,并假装端口已关闭,但实际上,如果端口是开放的,则服务器的synack数据包可以到达客户端,但先出现相同的序号rst,然后是操作系统丢弃的synack. 简单来说,客户端将丢弃伪造的rst数据包,接受synack数据包,然后将ack数据包发送到服务器以建立三向握手. 这时,IPS将双向恢复到第一个方向(如果您的IPS没有采取任何措施,建议您考虑更改IPS的品牌……). 请注意,您的ack软件包必须在IPS RST之前到达服务器并由应用程序执行-我们可以发送此ack软件包中的所有内容,这是一次性的盲目命中,适用于漏洞检测和使用.
如果要完美地绕过它,则必须找到一种方法来使第二个rst无效;为了获得完美的保护,您必须首先使它生效. 仔细研究TCP / IP,分析具体情况,或尝试模糊测试.
IPv6
随着IPv6的普及,越来越多的设备将支持IPv6(过渡期为IPv4 / 6双栈),但是服务中的IDS / IPS / WAF可能不支持它,因此可以不受阻碍.
浏览器以这种方式支持直接访问IPv6地址: [IPv6地址] / xxxx

当前的Windows操作系统默认都支持IPv6,但是Windows防火墙的规则可能仍仅配备IPv4,并且使用IPv6地址就像进入无人区. 以下演示机的防火墙限制了对IPv4所有端口的访问,并且所有端口都可以与IPv6地址连接. 登录到远程桌面以查看:

推断,每个人都必须检查各种安全系统是否已启用IPv6支持.
加密协议
IPS通常无法解密SSL流量,因此无法检测到SSL加密的流量,因此尝试通过HTTPS访问是一种绕过检查的方法-在这种情况下,基于应用程序层的WAF的优势得以展现. 同样,新一代的Web浏览协议(例如HTTP / 2,QUIC和WebSocket)也可以规避IPS.
由于这些协议可以绕过IPS,因此可以通过在服务器端支持这些协议来防止链接劫持,这不仅可以保护通信过程免遭篡改,还可以防止黑客窃取网络中的敏感用户信息[5] ]. 最佳实践是部署HTTPS以防止链接劫持. 尽管并非不可能继续劫持HTTPS,但攻击的难度却增加了几个数量级. 引起业界关注的github劫持事件是不正确的SSL证书导致该劫持被发现并公开[6].
阻止UDP
UDP通信是一种无连接通信,更难以阻止.
IPS通过将端口不可访问的ICMP数据包发送到客户端来实现UDP阻止. 但是效果是有限的: 首先是客户端是否识别与应用程序代码有关的ICMP包[8]. 此外,ICMP软件包可能无法通过链接上的各种路由和防火墙存在.

维修计划
了解具体的技术手段后,相对容易得出优化计划,读者可以自己总结一下,即“以攻防攻”. 当然,如果您有问题,请不要害怕. 您担心自己不知道自己是否有问题,无视它,甚至拒绝面对它.
后记
我相信经过以上讨论,序言中的问题已经得到解答. 根据纵深防御的原则,无论是否装有防护装备,都必须及时修复安全漏洞.
当然,本文并不是要表达IPS的许多问题,而是要告诉您安全性是一个动态过程,防御并不总是有效的,我们必须不断优化操作,我们必须注意其有效性红色和蓝色的安全保护系统不仅要关注渗透目标,还要关注整个安全防御系统. 感谢Aegis的球形负责人Niu Chang测试了这个代号为“ 007”的项目,他将在以后进行流量分析.
最后,老规矩,招人,各个领域的基本安全,特别是交通安全分析的方向,有兴趣的同志可以提交简历. 无需提供联系信息,您肯定可以找到我.
附录
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-179857-1.html
你唱歌好听吗
特么不小心插上电源
执政党拥有军权是最正常的