IPS\IDS 如何检测 SQLi\XSS(或其他应用层)攻击?

信息安全 网络 身份证 sql注入
2021-09-09 14:50:18

我一直在思考 IPS 是如何工作的,据我所知,它会检查 TCP\IP 层上的数据包。

它如何在不损害用户体验的情况下检测更高级别的攻击?它如何解决信息丢失和重新传输的事实?

最后,可能会有一个长请求拆分为几个 TCP 数据包。它是否构建信息然后对请求进行检查?

我想知道从网络级别和转发会发生什么。

谢谢。

2个回答

IPS 只是与两端的堆栈进行相同的 TCP 重组。

重传不是问题。当流量中出现漏洞(由于数据包丢失)时,IPS 会在该漏洞之后转发数据包,但也会保留它们的副本。因为它正在转发这些数据包,所以用户体验没有损失。

当重新传输的数据包填满整个数据包(完成拼图)时,IPS 会按顺序分析所有存储的数据包。它将这些组合成一个流,因此跨数据包拆分的请求没有问题。如果这些数据包中的任何一个触发了签名,则 IPS 会阻止重新传输的数据包,并终止与 RST 数据包的 TCP 连接。这导致目标受害者在它正在缓冲的洞之后丢弃碎片。

因此,数据包以基本零延迟通过 IPS 流传输,但同时,TCP 可以毫无问题地重新组装。

在过去的十年中,黑客已经开发出攻击该系统的方法,例如重新传输具有不同数据的 TCP 段。同样,IPS 供应商已经开发了防御,例如将他们的重组算法与目标系统相匹配,以便它可以选择正确的段进行分析。

另请注意,IPS 也会进行完整的 HTTP 处理。也有破坏 HTTP 请求的方法,以逃避 IPS 供应商所防御的 IPS。

结果是 IPS 只为 Web 请求引入了大约 100 微秒(或 0.1 毫秒)的延迟,同时仍然可以毫无问题地处理诸如 TCP 重组之类的事情。

我认为您正在寻找的是 Web 应用程序防火墙 (WAF) [OWASP 在此处讨论此问题] IPS\IDS 在堆栈中进一步工作以查看流量​​,而不是在应用程序层传递的内容。

WAF 在堆栈中的更高级别工作,以过滤掉符合被认为有害的模式的对话,包括 SQLi 和 XSS。

在 *nix 环境中,有标准的ModSecurityCisco、Checkpoint、F5、Fortinet、SonicWall 等也提供多种商用设备。